CentOS防火墙可通过firewalld工具定制化规则集,以下是关键操作:
基础规则管理
sudo firewall-cmd --permanent --zone=public --add-port=80/tcp(开放TCP端口80)sudo firewall-cmd --permanent --zone=public --remove-port=80/tcp(删除规则)sudo firewall-cmd --permanent --zone=public --add-service=http(允许HTTP服务)定制化富规则(Rich Rules)
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule source address="192.168.1.100" port protocol="tcp" port="3306" accept'(允许特定IP访问MySQL端口)sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule source address="10.0.0.0/8" service name="ssh" reject'(拒绝内网SSH访问)sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule source address="192.168.1.100" port protocol="tcp" port="80" accept time start="08:00" end="18:00"'(仅限工作时间访问)sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule source address="0.0.0.0/0" port protocol="tcp" port="80" rate-limit burst="50"'(限制HTTP连接速率)高级配置
sudo firewall-cmd --set-log-denied=all(记录被拒绝的流量)sudo firewall-cmd --set-default-zone=drop(默认拒绝所有流量,需手动添加允许规则)sudo firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 0 -s 192.168.1.100 -p tcp --dport 22 -j ACCEPT(直接使用iptables规则语法)验证与生效
sudo firewall-cmd --list-all(查看所有规则)sudo firewall-cmd --reload(使永久规则生效)注意:操作需root权限,建议先通过--permanent参数保存规则,再通过--reload应用,避免临时规则丢失。