温馨提示×

centos防火墙如何进行入侵检测

小樊
46
2025-11-17 19:36:39
栏目: 网络安全

CentOS 防火墙入侵检测与响应

一、总体思路

  • firewalld/iptables 负责“阻断与放行”,本身不是入侵检测系统(IDS)。要做“入侵检测”,应叠加日志、主动封禁与主机/网络检测三层能力:
    1. 让防火墙输出“被拒绝”的日志;2) 用 Fail2ban 基于日志自动封禁恶意来源;3) 部署 Snort/Suricata(网络层 IDS/IPS)或 AIDE/Tripwire/OSSEC(主机文件完整性/主机 IDS/HIDS)做深度检测与告警。

二、基于防火墙日志的入侵检测

  • 启用并记录被拒绝流量(firewalld)
    • 记录被拒绝的数据包:sudo firewall-cmd --set-log-denied=xml
    • 如需记录所有经过防火墙的数据包:sudo firewall-cmd --set-all-log-packets=on
    • 使配置生效:sudo firewall-cmd --reload
  • 查看与分析日志
    • 实时查看 firewalld 拒绝日志:journalctl -u firewalld -f
    • 或:tail -f /var/log/journal/syslog | grep “firewalld”
    • 若使用 iptables,可添加日志规则并观察系统日志(如 /var/log/messages 或 /var/log/syslog):
      iptables -A INPUT -j LOG --log-prefix "iptables_INPUT: "
  • 日志轮转(避免日志过大)
    • 为系统日志配置 logrotate(示例对 /var/log/journal/syslog 按日轮转保留 7 天):
      echo “/var/log/journal/syslog { daily; rotate 7; compress; missingok; notifempty; }” | sudo tee /etc/logrotate.d/firewalld
    • 确保服务运行:sudo systemctl start logrotate && sudo systemctl enable logrotate
  • 说明
    • 以上做法让“防火墙的拒绝行为”可被观测,是进行入侵检测的必要基础;真正的“检测”仍需配合日志分析工具或联动封禁组件完成。

三、联动 Fail2ban 做自动封禁

  • 安装与启动
    • 安装:sudo yum install -y fail2ban
    • 启动并设为开机自启:sudo systemctl enable --now fail2ban
  • 典型配置(SSH 暴力破解示例)
    • 编辑 /etc/fail2ban/jail.local 或 /etc/fail2ban/jail.d/sshd.local,加入:
      [sshd]
      enabled = true
      port = ssh
      filter = sshd
      logpath = /var/log/secure
      maxretry = 3
      findtime = 600
      bantime = 3600
    • 说明:在 10 分钟内失败 3 次的源 IP 将被封禁 1 小时
  • 常用运维命令
    • 查看服务状态:sudo systemctl status fail2ban
    • 查看监狱与封禁情况:fail2ban-client status;fail2ban-client status sshd
    • 手动解封:fail2ban-client set sshd unbanip
  • 要点
    • 仅记录日志不足以阻止攻击,Fail2ban 能基于日志触发防火墙规则,实现“检测 + 自动响应”。

四、进阶 IDS/IPS 与主机入侵检测

  • 网络层 IDS/IPS(Snort / Suricata)
    • 适合对有明确网段与流量镜像/旁路的环境进行深度包检测与(可选)内联阻断;部署复杂度与资源占用高于 Fail2ban,但检测能力更强。
  • 主机层 HIDS/FIM(AIDE / Tripwire / OSSEC)
    • 监控关键系统文件与配置的完整性,发现篡改即告警;可与邮件/消息通道联动,适合作为防火墙与网络 IDS 的补充。
  • 实践建议
    • 结合业务选择组合:对外暴露面大时优先“firewalld + Fail2ban”;对合规与内部威胁要求高的环境叠加“Snort/Suricata + AIDE/Tripwire/OSSEC”。

五、快速加固清单

  • 最小化开放端口(示例仅放行 SSH/HTTP/HTTPS
    • sudo firewall-cmd --zone=public --add-service=ssh --permanent
    • sudo firewall-cmd --zone=public --add-service=http --permanent
    • sudo firewall-cmd --zone=public --add-service=https --permanent
    • sudo firewall-cmd --reload
  • 开启防火墙拒绝日志并接入分析
    • sudo firewall-cmd --set-log-denied=xml && sudo firewall-cmd --reload
    • journalctl -u firewalld -f 实时观测
  • 启用 Fail2ban 保护 SSH
    • 使用上文 [sshd] 配置,设置合理的 maxretry/findtime/bantime
  • 持续运维
    • 定期审查规则与日志、更新系统与软件包、验证备份可用性,形成闭环改进。

0