CentOS虚拟机防火墙规则设置指南(以firewalld为主,兼顾iptables)
firewalld是CentOS 7及以上版本的默认防火墙管理工具,基于区域(Zone)和服务(Service)的概念,支持动态更新规则,无需重启服务即可应用大部分变更。
sudo systemctl start firewalld
sudo systemctl enable firewalld
sudo systemctl status firewalld # 查看是否运行
sudo firewall-cmd --state # 查看防火墙状态(running表示开启)
sudo firewall-cmd --list-all
sudo firewall-cmd --get-default-zone
sudo firewall-cmd --get-zones
sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
sudo firewall-cmd --reload # 应用变更
sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --zone=public --add-source=192.168.1.100 --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --zone=public --remove-port=80/tcp --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --zone=public --add-forward-port=port=8080:proto=tcp:toport=80 --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --zone=public --add-masquerade --permanent
sudo firewall-cmd --reload
CentOS 6及以下版本默认使用iptables作为防火墙管理工具,需手动配置规则并保存。
sudo iptables -L -n -v # -L列出规则,-n以数字显示端口/IP,-v显示详细信息
sudo iptables -F # 清空所有链的规则
sudo iptables -X # 清空自定义链
sudo iptables -P INPUT DROP # 拒绝所有入站流量(默认拒绝)
sudo iptables -P OUTPUT ACCEPT # 允许所有出站流量(默认允许)
sudo iptables -P FORWARD DROP # 拒绝所有转发流量
sudo iptables -A INPUT -s 192.168.1.100 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 80 -j DROP
sudo service iptables save # 保存到/etc/sysconfig/iptables
sudo systemctl restart iptables # CentOS 7及以上
sudo service iptables restart # CentOS 6及以下
sudo systemctl stop iptables
sudo systemctl disable iptables # 禁止开机启动
ACCEPT,建议修改为DROP(需提前开放必要端口):sudo firewall-cmd --set-default-zone=drop # 不推荐新手直接使用
/etc/firewalld/目录,iptables备份/etc/sysconfig/iptables文件)。ping、telnet或curl测试连通性,避免误操作导致无法访问。--log选项记录拒绝的流量(如iptables -A INPUT -j LOG --log-prefix "IPTABLES-DROP: "),便于排查问题。以上步骤覆盖了CentOS虚拟机防火墙的基本配置需求,根据系统版本选择对应工具即可。firewalld更适合新手(动态管理、预定义服务),iptables更适合高级用户(精细化控制)。