gol*_*lem 12 linux redhat iptables centos firewalld
RHEL7/CentOS7 提供了一个新的firewalld防火墙服务,它取代了iptables service(两者都使用iptables工具与内核的 Netfilter 进行交互)。
firewalld可以轻松调整以阻止传入流量,但正如 Thomas Woerner 1,5 年前指出的那样, “目前,firewalld 无法以简单的方式限制传出流量”。据我所知,情况从那时起就没有改变。或者有吗?有没有办法阻止传出流量firewalld?如果没有,除了通过iptables工具手动添加规则之外,还有其他“标准”方式(在 RHEL7 发行版上)阻止传出流量吗?
小智 14
我在那个漂亮的 GUI 中没有找到任何选项,但可以通过直接界面
仅启用传出端口 80:
firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 0 -p tcp -m tcp --dport=80 -j ACCEPT
firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 1 -j DROP
Run Code Online (Sandbox Code Playgroud)
这会将它添加到永久规则,而不是运行时规则。
您将需要重新加载永久规则,以便它们成为运行时规则。
firewall-cmd --reload
Run Code Online (Sandbox Code Playgroud)
显示永久规则
firewall-cmd --permanent --direct --get-all-rules
Run Code Online (Sandbox Code Playgroud)
显示运行时规则
firewall-cmd --direct --get-all-rules
Run Code Online (Sandbox Code Playgroud)
小智 7
在我自己问了同样的问题之后,经过一些修补,我收集了一些很好的规则来限制 HTTP/HTTPS 和 DNS 查询的传出流量:
允许建立的连接:
# firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 0 -m state --state ESTABLISHED,RELATED -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
允许 HTTP:
# firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 1 -p tcp -m tcp --dport 80 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
允许 HTTPS:
# firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 1 -p tcp -m tcp --dport 443 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
允许 DNS 查询:
# firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 1 -p tcp -m tcp --dport 53 -j ACCEPT
# firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 1 -p udp --dport 53 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
拒绝一切:
# firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 2 -j DROP
Run Code Online (Sandbox Code Playgroud)
首先通过省略“--permanent”参数进行测试可能是个好主意。
我绝不是专家,但这对我来说似乎很好用:)
| 归档时间: |
|
| 查看次数: |
69924 次 |
| 最近记录: |