CentOS 虚拟机防火墙配置指南
一 版本选择与准备
sudo firewall-cmd --statesudo systemctl start firewalld && sudo systemctl enable firewalldsudo systemctl stop firewalld && sudo systemctl disable firewalldsudo yum install -y firewalld。二 firewalld 快速上手
--permanent 为永久生效;不加为运行时生效,变更后需 firewall-cmd --reload 使永久配置生效。sudo firewall-cmd --get-default-zone、sudo firewall-cmd --set-default-zone=publicsudo firewall-cmd --zone=public --add-interface=eth0sudo firewall-cmd --zone=public --add-port=80/tcp --permanent && sudo firewall-cmd --reloadsudo firewall-cmd --zone=public --add-service=http --permanent && sudo firewall-cmd --reloadsudo firewall-cmd --zone=public --query-port=80/tcpsudo firewall-cmd --zone=public --remove-port=80/tcp --permanent && sudo firewall-cmd --reloadsudo firewall-cmd --list-allsudo firewall-cmd --zone=public --add-icmp-block=echo-request --permanent && sudo firewall-cmd --reload三 常见场景与命令示例
场景一 Web 服务器(HTTP/HTTPS)
sudo firewall-cmd --zone=public --add-service=http --permanentsudo firewall-cmd --zone=public --add-service=https --permanentsudo firewall-cmd --zone=public --add-port=80/tcp --permanent、sudo firewall-cmd --zone=public --add-port=443/tcp --permanentsudo firewall-cmd --reload场景二 仅允许指定网段访问某端口(白名单)
sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="8080" accept' --permanentsudo firewall-cmd --reload场景三 端口转发与 NAT(虚拟机网关/路由场景)
sudo firewall-cmd --zone=public --add-masquerade --permanent && sudo firewall-cmd --reloadsudo firewall-cmd --zone=public --add-forward-port=port=8080:proto=tcp:toport=80:toaddr=192.168.100.10 --permanentsudo firewall-cmd --reloadecho 1 > /proc/sys/net/ipv4/ip_forwardecho "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf && sysctl -p四 从 firewalld 切换到 iptables(可选)
sudo systemctl stop firewalld && sudo systemctl disable firewalld && sudo systemctl mask firewalldsudo yum install -y iptables-servicessudo systemctl enable iptables && sudo systemctl start iptablessudo iptables -A INPUT -p tcp --dport 22 -j ACCEPTsudo iptables -A INPUT -p tcp --dport 80 -j ACCEPTsudo iptables -A INPUT -p tcp --dport 443 -j ACCEPTsudo iptables -P INPUT DROPsudo service iptables save(规则持久化到 /etc/sysconfig/iptables)五 运维与安全建议
firewall-cmd --reload 生效,并定期 firewall-cmd --list-all 审计。firewall-cmd --panic-on(紧急阻断),以免锁定远程会话。