CentOS虚拟机防火墙配置技巧
防火墙是虚拟机安全的第一道防线,首先需要确保其正确运行。使用以下命令管理服务:
sudo systemctl start firewalldsudo systemctl enable firewalld(避免重启后失效)sudo systemctl status firewalld(确认服务处于“active (running)”状态)sudo firewall-cmd --state(快速确认防火墙是否激活)firewalld通过区域(Zone)实现不同网络环境的差异化策略,默认区域为public(适用于公共网络)。常用操作:
sudo firewall-cmd --list-all-zones(了解区域特性,如trusted允许所有流量,drop拒绝所有流量)sudo firewall-cmd --set-default-zone=public(新接口默认使用该区域,降低未明确配置的接口风险)sudo firewall-cmd --get-zone-of-interface=eth0(确认虚拟机网络接口的区域归属)sudo firewall-cmd --permanent --zone=public --add-port=80/tcp(--permanent确保重启后规则保留)sudo firewall-cmd --permanent --zone=public --add-port=53/udpsudo firewall-cmd --zone=public --list-ports(查看当前区域所有开放端口)firewalld内置常见服务(如http、https、ssh)的规则,直接添加服务更便捷:
sudo firewall-cmd --permanent --zone=public --add-service=httpsudo firewall-cmd --permanent --zone=public --add-service=httpssudo firewall-cmd --permanent --zone=public --add-service=sshsudo firewall-cmd --reload(使永久规则生效,无需重启服务)对于复杂需求(如限制特定IP访问、基于时间段控制),可使用富规则:
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="22" accept'(仅允许192.168.1.100访问SSH)sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.200" reject'(拒绝该IP的所有流量)sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port port="80" protocol="tcp" reject time start="00:00:00" end="06:00:00"'(禁止该IP在0:00-6:00访问HTTP)sudo firewall-cmd --list-rich-rules(确认规则是否正确添加)日志是排查安全问题的关键,可通过以下命令开启防火墙日志:
sudo firewall-cmd --set-log-denied=xml(将拒绝的流量记录到系统日志,便于分析恶意访问)journalctl -u firewalld或tail -f /var/log/messages(实时查看防火墙日志)sudo firewall-cmd --set-default-zone=drop(默认拒绝所有未明确允许的流量,提升安全性)