CentOS Stream 8防火墙配置技巧(基于firewalld)
sudo dnf install firewalld命令安装。sudo systemctl start firewalld,设置开机自启用sudo systemctl enable firewalld。sudo firewall-cmd --state可快速查看防火墙是否运行(显示“running”为正常)。sudo firewall-cmd --reload重新加载(不中断现有连接);若需彻底重载(如修复配置冲突),用sudo firewall-cmd --complete-reload(会中断连接)。区域是firewalld的核心概念,用于定义不同网络环境的安全级别(如public、home、internal等)。
sudo firewall-cmd --get-default-zone(默认多为“public”)。sudo firewall-cmd --set-default-zone=public(将默认区域改为public,适用于公网服务器)。sudo firewall-cmd --get-active-zones(显示当前网络接口绑定的区域,如eth0绑定public)。sudo firewall-cmd --zone=public --change-interface=eth0(将eth0接口绑定到public区域)。sudo firewall-cmd --list-ports(查看当前区域开放的TCP/UDP端口)。sudo firewall-cmd --permanent --add-port=80/tcp(开放80端口,TCP协议);sudo firewall-cmd --add-port=8080/tcp。sudo firewall-cmd --permanent --remove-port=80/tcp(永久关闭),sudo firewall-cmd --remove-port=8080/tcp(临时关闭)。sudo firewall-cmd --permanent --add-service=http(开放HTTP服务,默认80端口),sudo firewall-cmd --reload使更改生效。富规则用于更精细的访问控制(如允许/拒绝特定IP、端口范围、协议等)。
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port port="22" protocol="tcp" accept'(允许192.168.1.100访问22端口,TCP协议)。sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.200" reject'(拒绝192.168.1.200的所有访问)。sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" port port="20000-65535" protocol="tcp" accept'(允许20000-65535端口的TCP流量,适用于P2P等场景)。sudo firewall-cmd --list-rich-rules(查看当前所有富规则)。sudo firewall-cmd --runtime-to-permanent(将运行时规则转为永久规则),或手动复制/etc/firewalld/下的配置文件;恢复时替换文件后重载即可。sudo firewall-cmd --list-all(显示当前区域的完整规则,包括服务、端口、富规则等)。sudo systemctl stop firewalld(临时关闭),若需永久关闭,用sudo systemctl disable firewalld(不推荐,会增加系统风险)。