CentOS 8防火墙相关命令
在CentOS系统中,防火墙管理主要通过firewalld
和iptables
两个工具来实现。以下是一些常用的CentOS防火墙相关命令,包括防火墙的关闭与开启。
使用 firewalld
查看
firewalld
状态sudo systemctl status firewalld启动
firewalld
sudo systemctl start firewalld启用
firewalld
开机自启sudo systemctl enable firewalld停止
firewalld
sudo systemctl stop firewalld禁用
firewalld
开机自启sudo systemctl disable firewalld查看当前防火墙区域和规则sudo firewall-cmd --list-all
添加端口到防火墙规则sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
重新加载防火墙配置sudo firewall-cmd --reload
移除端口从防火墙规则sudo firewall-cmd --zone=public --remove-port=80/tcp --permanent
使用 iptables
查看当前
iptables
规则sudo iptables -L -v -n清除所有
iptables
规则sudo iptables -F设置默认策略sudo iptables -P INPUT ACCEPT sudo iptables -P FORWARD ACCEPT sudo iptables -P OUTPUT ACCEPT
添加规则允许特定端口sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
保存
iptables
规则(CentOS 7 及以上)sudo service iptables save禁用
iptables
sudo systemctl stop iptables启用
iptables
sudo systemctl start iptables
注意事项
在生产环境中修改防火墙规则时要非常小心,确保不会意外阻止必要的网络流量。
使用
firewalld
和iptables
时,建议先了解相关文档和最佳实践。
通过以上命令,你可以方便地管理CentOS系统的防火墙,包括开启、关闭以及规则的添加和删除。
Firewalld 规则集示例
让我们看看默认区域的一些常见的 firewalld 示例。
如何将服务添加到您的区域
添加 dns 服务(TCP/UDP 53 端口):
sudo firewall-cmd --zone=public --add-service=dns --permanent
如何从您的区域中移除(删除)服务
删除 vnc 服务器服务(TCP 端口范围 5900-5903):
sudo firewall-cmd --zone=public --remove-service=vnc-server --permanent
如何允许/打开 TCP/UDP 端口/协议
打开 TCP 端口 9009 :
sudo firewall-cmd --zone=public --add-port=9009/tcp --permanent
要查看添加的端口,请运行:
$ sudo firewall-cmd --zone=internal --list-ports
如何拒绝/阻止 TCP/UDP 端口/协议
打开 TCP 端口 23:
sudo firewall-cmd --zone=public --remove-port=23/tcp --permanent
如何编写端口转发 firewalld 规则
在同一台服务器上将 443 TCP 端口转发到 8080:
$ sudo firewall-cmd --zone=public --add-forward-port=port=80:proto=tcp:toport=8080 --permanent
要删除上述的端口转发,请运行
$ sudo firewall-cmd --zone=public --remove-forward-port=port=80:proto=tcp:toport=8080
如果您需要将流量(端口 443)转发到托管在 192.168.2.42 的 lxd 服务器/容器的 443 端口,请开启伪装:
$ sudo firewall-cmd --zone=public --add-masquerade$ sudo firewall-cmd --zone=public --add-forward-port=port=443:proto=tcp:toport=443:toaddr=192.168.2.42 --permanent
要删除上述伪装规则,请运行
$ sudo firewall-cmd --zone=public --remove-masquerade$ firewall-cmd --zone=public --remove-forward-port=port=443:proto=tcp:toport=443:toaddr=192.168.2.42 --permanent
像往常一样使用以下命令列出规则:
$ firewall-cmd --zone=public --list-all --permanent
Rich 规则示例
假设您只想允许从 10.8.0.8 IP 地址访问 SSH 端口 22,请运行:
sudo firewall-cmd --permanent --zone=public --add-rich-rule 'rule family="ipv4" source address="10.8.0.8" port port=22 protocol=tcp accept'
要验证新规则,请运行:
$ sudo firewall-cmd --list-rich-rules --permanent
在以下示例中,允许 192.168.1.0/24 子网访问 tcp 端口 11211:
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4"source address="192.168.1.0/24"port protocol="tcp" port="11211" accept'
再次验证它:
$ sudo firewall-cmd --list-rich-rules --permanent
输出示例:
rule family="ipv4" source address="10.8.0.8" port port="22" protocol="tcp" accept rule family="ipv4" source address="192.168.1.0/24" port port="11211" protocol="tcp" accept
您可以按照如下所示删除 rich 规则:
$ sudo firewall-cmd --remove-rich-rule 'rule family="ipv4" source address="10.8.0.8" port port=22 protocol=tcp accept' --permanent $ sudo firewall-cmd --remove-rich-rule 'rule family="ipv4" source address="192.168.1.0/24" port port="11211" protocol="tcp" accept' --permanent