商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > centos防火墙如何集成其他安全工具

centos防火墙如何集成其他安全工具

  发布于2026-07-12 阅读(0)

扫一扫,手机访问

在生产环境中,防火墙从来都不是孤立存在的——它需要与入侵检测、访问控制、日志审计等各种安全工具协同作战,才能构建起真正的纵深防御体系。今天,我们就来聊聊CentOS环境中,如何将firewalld与常见的几种安全工具进行集成实操。

centos防火墙如何集成其他安全工具

一、集成思路与前提

开始实际操作之前,我们先理清楚整体的集成思路,这样后面实施起来才不会跑偏。

首先是策略编排中心的问题。我强烈建议以 firewalld 作为统一的策略编排中心,核心逻辑很简单:优先使用它的 zones、rich rules 和 ipset 能力来处理动态封禁与业务放行。这么做的好处是避免直接去操作底层的 iptables 链表,复杂度能降低不少,风险也小得多。

然后是自动化威胁处置。这里需要引入 fail2ban,把它当作自动化处置引擎。它的工作模式是:扫描日志中的异常事件,然后通过 firewalld 的专用动作(比如 firewallcmd-ipset 或 firewallcmd-rich-rules)来触发封禁,形成“检测→处置”的闭环。

接下来是与 SELinux 的协同。这两个东西分工很明确:SELinux 管的是进程和资源的强制访问控制,防火墙管的则是网络层的边界控制。它们一内一外,形成互补。排查问题时也别乱,记得同时检查 /var/log/audit/audit.log 和防火墙日志。

最后是日志层面。启动防火墙的拒绝日志,然后通过 rsyslog 或 journald 输出到 SIEM 系统(比如 Splunk、ELK),实现集中分析与审计。

二、与 Fail2ban 联动:防暴力破解与CC攻击

这部分是日常运维中最常见的需求——防暴力破解,FTP和SSH这两块尤其高频。

前置准备

先确认 firewalld 已经在正常运行,直接检查状态:

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

推荐做法:用 ipset 做高效封禁

新建 jail 配置 /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  # 解封示例

可选做法:用 rich rules 方式

如果想用 rich rules 替代 ipset,可以在 /etc/fail2ban/jail.d/00-firewalld.conf 中设置:

[DEFAULT]
banaction = firewallcmd-rich-rules[actiontype=]
banaction_allports = firewallcmd-rich-rules[actiontype=]

防护扩展:对付 Nginx CC 攻击

如果被 CC 攻击搞得头疼,可以用内置或自定义的 filter(比如 nginx-limit-req 或者自己写 nginx-cc.conf),在 jail 中启用并指向对应的日志路径,就能实现对短时高频请求的自动封禁。操作很灵活,完全取决于你的业务日志格式。

三、与 SELinux 的协同

很多人在这个环节容易翻车——防火墙明明配好了,但服务就是访问不了,最后发现是 SELinux 在背后悄悄拦着。

基本策略是:保持 SELinux 的 Enforcing 状态,只对确有需要的服务做最小限度的策略放宽。管理状态就用这几个命令:getenforcesetenforce/etc/selinux/config

当你要新增服务端口或协议时,记住用 semanage port 把端口和正确的类型关联起来。比如你想用8080端口跑HTTP服务,这样做:

semanage port -a -t http_port_t -p tcp 8080

排查问题时,区分是什么层面的拒绝很关键:网络层被拒就看 firewalld 和系统日志;权限被拒就看 /var/log/audit/audit.log,必要时用 ausearchsealert 进行分析,不要瞎猜。

四、日志、审计与合规输出

日志是安全审计的基础,也是合规的必要条件。

先启用防火墙拒绝日志,这个操作非常简单:

firewall-cmd --permanent --set-log-denied=all && firewall-cmd --reload

实时查看的话,可以用 journalctl -u firewalld -f

接下来,把 firewalld 和系统日志统一接入 rsyslog,再由 Logstash 或 Filebeat 送到 Elasticsearch/Kibana 或者 Splunk 做集中分析与告警。这套方案非常成熟,和 SIEM 集成完全没问题。

五、进阶方案与运维要点

无侵入式黑名单:脚本 + firewalld ipset

如果不想用 fail2ban,或者想作为它的补充,可以尝试轻量级的 ipset 方案:

先定义一个 ipset:

firewall-cmd --permanent --new-ipset=blacklist --type=hash:ip

然后关联丢弃规则:

firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source ipset=blacklist port port=22 protocol="tcp" drop'

最后通过脚本定时解析 /var/log/secure 里登录失败的 IP,写入 ipset,再执行 firewall-cmd --reload 生效——搞定。这种方式适合轻量场景,可以对 fail2ban 做个补充,或者用在资源有限的机器上。

运维与安全建议

最后说几点实操层面的提醒。定期更新 firewalld、fail2ban、SELinux 以及规则和病毒库,这是在安全这条路上不能偷懒的底线。封禁策略一定要设置合理的阈值和白名单,误封业务可比漏封更让人头疼。

规则变更前一定要备份,最好先在测试环境验证再去生产落地。对于关键业务端口和服务,遵循最小暴露面原则——不用的端口一个都不要开,能不开的绝对不开,这是最基本的安全意识。

本文转载于:https://www.yisu.com/ask/43149792.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注