请教一个 centos7 默认防火墙问题

2021-06-02 11:10:20 +08:00
 davoola
各位大佬 ,请教个问题
Centos7 默认防火墙是 firewalld,防火墙开启后,只开放了 80 端口和 SSH 端口,用 firewall-cmd --list-all 也只能看到 80 和 SSH 端口,但服务器上装了 PHP-FPM ( 9000 端口),9000 端口没允许通过防火墙,为什么在外面机器上还是能 telnet 通呢?怎样让 9000 端口在外面机器上 telnet 不通呢
1546 次点击
所在节点    Linux
14 条回复
AoEiuV020
2021-06-02 11:17:09 +08:00
firewalld 也是用的 iptables,可以直接 iptables -vnL 检查一下当前实际使用中的配置,是不是默认放行了或者其他问题,
julyclyde
2021-06-02 11:18:34 +08:00
用 iptables-save 查看配置比较好
-L 显示的形式比较奇怪
dzdh
2021-06-02 12:01:50 +08:00
要看有没有接管接口

如果没有 firewall-cmd --zone=X --add-interface=ethX
davoola
2021-06-02 12:04:38 +08:00
@AoEiuV020 用 iptables-vnL 显示如下结果:
http://www.filedropper.com/firewall_1
davoola
2021-06-02 12:05:32 +08:00
@julyclyde 执行报错
iptables v1.4.21: no command specified
davoola
2021-06-02 12:12:13 +08:00
@dzdh 执行 firewall-cmd --get-active-zones 显示如下结果:
docker
interfaces: br-25239aa44ec6 docker0
public
interfaces: ens160
这是不是有接管接口?
在 iptables -vnL 中有 9000 接口
4 200 ACCEPT tcp -- !br-25239aa44ec6 br-25239aa44ec6 0.0.0.0/0 172.18.0.2 tcp dpt:9000
dzdh
2021-06-02 12:14:31 +08:00
@davoola public 接管了 ens160 。
davoola
2021-06-02 12:23:52 +08:00
@dzdh 现在执行 firewall-cmd --zone=public --add-interface=eth160 吗?
raysonx
2021-06-02 12:37:46 +08:00
br-25239aa44ec6 这个 bridge 名看起来像是 docker 创建的。
Docker 默认情况下会自己插入防火墙规则放行-p 参数指定的端口。
davoola
2021-06-02 12:51:27 +08:00
@raysonx 对,服务器装好后,后面上线的产品都是商业公司部署的,刚刚发现在他们装了三个容器( PHP,mysql 和 nginx),分别开放了三个端口 9000,3306 和 80.查看端口映射时显示结果是

9000/tcp -> 0.0.0.0:9000
9000/tcp -> :::9000

3306/tcp -> 0.0.0.0:3306
3306/tcp -> :::3306

80/tcp -> 0.0.0.0:80
80/tcp -> :::80

是不是映射时,把 9000 和 3306 这两个端口的地址 0.0.0.0 改成本地 localhost 或者 127.0.0.1 ?除了 80 需要对外服务,这两个端口应该都是容器与服务器本身之间的通讯吧。
davoola
2021-06-02 13:07:25 +08:00
在网上看到一段话:
>>> 默认情况下, docker 启动后参数中如果加了端口映射, 就会自动将端口开放给所有网络设备访问,并且这种情况下即使在本机的系统防火墙中加规则也无效, 因为 docker 会自动添加一个优先级最高的针对这个映射端口全开放规则

参考:
1.https://www.fullstackmemo.com/2019/01/10/standalone-docker-firewall-set/

2.https://www.binss.me/blog/docker-pass-through-system-firewall/
julyclyde
2021-06-02 13:20:52 +08:00
@davoola 我早就猜到你会多加一个空格
davoola
2021-06-02 13:24:51 +08:00
@julyclyde 呵呵,恭喜你猜对了。:)
davoola
2021-06-02 14:48:18 +08:00
问题解决,谢谢各位
参考: https://blog.csdn.net/Jailman/article/details/111591811

禁止 docker 管理防火墙
修改 /etc/docker/daemon.json

{
“iptables”:false
}

重启 docker

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/780812

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX