CentOS防火墙保障网络安全的核心措施
Firewalld是CentOS 7及以上版本的默认防火墙管理工具,具备动态规则调整、区域划分等特性。首先通过sudo yum install firewalld
安装,然后启动服务并设置开机自启:sudo systemctl start firewalld
、sudo systemctl enable firewalld
,确保防火墙随系统启动自动运行。
Firewalld通过“区域”划分网络信任级别(如public
公共区域、internal
内部区域、dmz
DMZ区域),默认使用public
区域(严格拒绝未明确允许的流量)。可通过sudo firewall-cmd --set-default-zone=<区域名称>
修改默认区域(如内部网络可设为internal
),并根据区域特性设置默认访问策略(如public
区域默认拒绝所有输入流量)。
仅开放业务必需的网络端口,关闭所有不必要的端口以减少攻击面。常用命令:
sudo firewall-cmd --permanent --add-port=80/tcp
、sudo firewall-cmd --permanent --add-port=443/tcp
、sudo firewall-cmd --permanent --add-service=ssh
(--permanent
表示永久生效);sudo firewall-cmd --permanent --remove-port=9001/tcp
;sudo firewall-cmd --reload
。根据网络环境将接口分配到不同区域,实现差异化访问控制。例如:
eth0
)绑定到public
区域:sudo firewall-cmd --zone=public --add-interface=eth0
;eth1
)绑定到internal
区域,允许更宽松的访问规则(如允许内部设备互相通信);Rich规则支持更复杂的访问控制逻辑(如源IP限制、端口转发、时间限制),进一步提升安全性。常见用法:
sudo firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.1.100' port protocol='tcp' port='22' accept"
;sudo firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='10.0.0.0/8' drop"
;sudo firewall-cmd --permanent --add-rich-rule="rule family='ipv4' port port='80' protocol='tcp' time='Mon-Fri 09:00-18:00' accept"
;sudo firewall-cmd --permanent --add-forward-port=port=8080:proto=tcp:toaddr=192.168.1.100:toport=80
;sudo firewall-cmd --reload
。开启日志功能可监控防火墙活动,及时发现异常行为(如大量连接尝试、非法端口访问)。默认日志位于/var/log/messages
,可通过sudo tail -f /var/log/messages | grep firewalld
实时查看。如需更详细的日志,可修改/etc/firewalld/firewalld.conf
文件,调整log-denied=all
(记录所有拒绝的流量)和log-level=debug
(调试级别日志)参数,修改后重载配置。
SELinux(安全增强Linux)是CentOS的内核级安全模块,通过强制访问控制(MAC)限制进程权限,弥补防火墙的不足。检查SELinux状态:sestatus
(若显示Enforcing
则表示启用);若未启用,临时启用:sudo setenforce 1
,永久启用需修改/etc/selinux/config
文件,将SELINUX=enforcing
(强制模式,推荐)或SELINUX=permissive
(宽容模式,仅记录不阻止)。
防火墙无法应对所有攻击(如暴力破解、零日漏洞),需结合入侵检测/防御系统(IDS/IPS)提升防护能力:
/var/log/secure
),自动封禁多次登录失败的IP。示例配置(/etc/fail2ban/jail.local
):[ssh]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/secure
maxretry = 3 # 允许的最大失败次数
findtime = 600 # 时间窗口(秒)
bantime = 3600 # 封禁时间(秒)
重启Fail2ban使配置生效:sudo systemctl restart fail2ban
;保持系统和防火墙规则的最新状态是防范已知漏洞的关键:
sudo yum update
,及时安装安全补丁;sudo firewall-cmd --list-all
查看当前规则,删除不再需要的端口或服务;yum-cron
设置定时更新,避免因未及时更新导致漏洞暴露。SSH是远程管理的主要方式,易成为攻击目标,需通过以下配置增强安全性:
/etc/ssh/sshd_config
,修改Port 22
为其他端口(如Port 2222
);PermitRootLogin no
;PasswordAuthentication no
,使用SSH密钥对代替密码登录;sudo systemctl restart sshd
。