温馨提示×

debian防火墙怎么监控

小樊
41
2025-12-23 00:55:43
栏目: 智能运维

Debian 防火墙监控实操指南

一、先确认正在使用的防火墙

  • 查看常见防火墙服务状态:
    sudo systemctl is-active ufw
    sudo systemctl is-active firewalld
    sudo systemctl is-active nftables
    sudo systemctl is-active iptables
  • 快速探测工具与规则集:
    sudo ufw --version
    sudo nft list ruleset
    sudo iptables -L -n -v
  • 若不确定,可列出相关包:
    dpkg -l | grep -E ‘ufw|firewalld|nftables|iptables’
    说明:Debian 常见为 UFW 或直接用 iptables/nftables;firewalld 并非默认

二、实时监控防火墙规则与流量

  • UFW

    • 状态与规则:sudo ufw status verbose;按编号管理:sudo ufw status numbered
    • 实时日志:sudo tail -f /var/log/ufw.log(如未生成,可用 sudo tail -f /var/log/syslog | grep ufw)
    • 调整日志级别:sudo ufw logging medium(级别:off/low/medium/high/full)
  • iptables

    • 查看规则与计数器:sudo iptables -L -n -v(关注 pkts/bytes 的增长)
    • 按链查看:sudo iptables -L INPUT -n -v;OUTPUT/FORWARD 同理
    • 实时写日志(示例:记录访问 80/tcp):
      sudo iptables -I INPUT -p tcp --dport 80 -j LOG --log-prefix "HTTP_IN: " --log-level 4
      实时查看:sudo tail -f /var/log/kern.log | grep HTTP_IN
    • 保存/恢复(持久化):
      sudo iptables-save > /etc/iptables/rules.v4
      sudo iptables-restore < /etc/iptables/rules.v4
  • nftables

    • 查看规则集:sudo nft list ruleset
    • 实时监控事件:sudo nft monitor(适合观察规则匹配与动态变更)

三、连接与会话监控

  • 查看连接跟踪表(谁在连、什么状态):
    sudo conntrack -L
    按协议过滤:sudo conntrack -L -p tcp
  • 辅助工具(与防火墙配合定位“被放行/被拒绝”的实际流量):
    sudo ss -tulpen(查看监听端口与进程)
    sudo iftop -i eth0(按连接实时带宽)
    sudo nload(接口实时速率)
    sudo vnstat -i eth0(按日/月统计历史流量)

四、日志集中、告警与自动化

  • 将防火墙日志统一到 rsyslog 并集中存储/转发:
    • 编辑 /etc/rsyslog.conf 或 /etc/rsyslog.d/50-default.conf,添加:
      . @remote_syslog_server_ip:514
    • 重启:sudo systemctl restart rsyslog
  • UFW 日志与 Syslog 集成(便于按“ufw”关键字归档与告警):
    • 确保 /etc/default/ufw 中:LOG_TARGET=syslog
    • 在 rsyslog 配置中分离 ufw 日志:
      :msg, contains, “ufw” /var/log/ufw.log
      & stop
    • 重启 rsyslog:sudo systemctl restart rsyslog
  • 简单告警与自动封禁示例(基于日志触发):
    • 检测频繁触发的来源 IP 并自动封禁(示例思路,需按实际日志格式微调):
      #!/usr/bin/env bash
      LOG=“/var/log/ufw.log”
      BLACKLIST=“/etc/ufw/blocked_ips.list”
      IP=$(grep “UFW BLOCK” “$LOG” | tail -n 100 | awk ‘{print $8}’ | sort | uniq -c | sort -nr | head -n1 | awk ‘{print $2}’)
      if [ -n “$IP” ] && ! grep -q “^$IP$” “$BLACKLIST”; then
      echo “$IP” | sudo tee -a “$BLACKLIST”
      sudo ufw insert 1 deny from “$IP” to any
      echo “Blocked IP: $IP”
      fi
    • 加入定时任务:*/5 * * * * /path/to/script.sh
  • 入侵迹象检测与联动:
    • 记录异常 SYN 洪泛(限速避免日志风暴):
      sudo iptables -A INPUT -p tcp --syn -m limit --limit 1/min -j LOG --log-prefix "SYN_FLOOD: "
    • 结合 Fail2Ban 自动封禁暴力破解来源(与 UFW/iptables 联动)。

0