CentOS 8防火墙相关命令
在CentOS系统中,防火墙管理主要通过firewalld和iptables两个工具来实现。以下是一些常用的CentOS防火墙相关命令,包括防火墙的关闭与开启。
使用 firewalld
查看
firewalld状态sudo systemctl status firewalld启动
firewalldsudo systemctl start firewalld启用
firewalld开机自启sudo systemctl enable firewalld停止
firewalldsudo 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禁用
iptablessudo systemctl stop iptables启用
iptablessudo 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


