CentOS 防火墙与其他安全工具的集成实践
一、集成思路与前提
二、与 Fail2ban 联动防暴力破解与 CC 攻击
firewall-cmd --state;放行业务端口(示例:firewall-cmd --zone=public --add-port=22/tcp --permanent && firewall-cmd --reload)。yum -y install epel-release && yum -y install fail2ban-firewalld。/etc/fail2ban/jail.d/jail.local:[DEFAULT]
ignoreip = 127.0.0.1/8
bantime = 86400
findtime = 600
maxretry = 5
banaction = firewallcmd-ipset
action = %(action_mwl)s
[sshd]
enabled = true
filter = sshd
port = 22
logpath = /var/log/secure
systemctl enable --now fail2ban
fail2ban-client status sshd
fail2ban-client set sshd unbanip 1.2.3.4 # 解封示例
/etc/fail2ban/jail.d/00-firewalld.conf 中设置:[DEFAULT]
banaction = firewallcmd-rich-rules[actiontype=<multiport>]
banaction_allports = firewallcmd-rich-rules[actiontype=<allports>]
nginx-limit-req 或自写 nginx-cc.conf),在 jail 中启用并指向对应日志路径,实现对短时高频请求的自动封禁。三、与 SELinux 的协同
getenforce、setenforce、/etc/selinux/config 管理状态与策略类型。semanage port 将端口与正确的类型关联(如:semanage port -a -t http_port_t -p tcp 8080),避免被 SELinux 拒绝。ausearch/sealert 分析)。四、日志、审计与合规输出
firewall-cmd --permanent --set-log-denied=all && firewall-cmd --reload;实时查看:journalctl -u firewalld -f。五、进阶方案与运维要点
firewall-cmd --permanent --new-ipset=blacklist --type=hash:ipfirewall-cmd --permanent --add-rich-rule='rule family="ipv4" source ipset=blacklist port port=22 protocol="tcp" drop'/var/log/secure 中失败次数),firewall-cmd --reload 生效;适合轻量场景或作为 fail2ban 的补充。