温馨提示×

centos iptables如何日志

小樊
41
2026-09-21 00:00:31
栏目: 智能运维

在 CentOS 中使用 iptables 记录日志(LOG),一般步骤如下(以 CentOS 6 / 7 传统 iptables 为例,CentOS 8+ 默认是 nftables,但也可用 iptables 兼容层)。


一、基本 iptables 日志方法

1. 添加 LOG 规则

例如,记录所有进入的 TCP 流量:

iptables -I INPUT -p tcp -j LOG --log-prefix "IPTABLES-TCP-IN: "

说明:

  • -j LOG:使用 LOG 目标
  • --log-prefix:日志前缀,方便后面过滤
  • 默认日志会写入 /var/log/messages(CentOS 6)或 /var/log/syslog / journal

2. 限制日志频率(推荐)

防止日志爆炸:

iptables -I INPUT -p tcp -m limit --limit 5/min -j LOG --log-prefix "IPTABLES-TCP-IN: "

3. 日志查看方式

CentOS 6

tail -f /var/log/messages

CentOS 7+

journalctl -f | grep IPTABLES

或

dmesg | grep IPTABLES

二、把 iptables 日志单独存文件(推荐)

1. 使用 rsyslog

编辑:

vi /etc/rsyslog.conf

添加:

:msg, contains, "IPTABLES-TCP-IN" /var/log/iptables.log
& stop

重启 rsyslog:

systemctl restart rsyslog

查看:

tail -f /var/log/iptables.log

三、典型完整示例

# 拒绝并记录 SSH 暴力破解
iptables -A INPUT -p tcp --dport 22 -m limit --limit 3/min -j LOG --log-prefix "SSH-ATTACK: "
iptables -A INPUT -p tcp --dport 22 -j DROP

四、CentOS 8+ 注意事项(nftables)

CentOS 8 默认是 nftables:

nft add rule inet filter input tcp dport 22 log prefix "NFT-SSH: "

如果你坚持用 iptables:

yum install iptables-services
systemctl stop nftables
systemctl start iptables

五、常见排查

  • 看不到日志?
    • 检查规则顺序(LOG 要在 DROP/ACCEPT 前)
    • 检查 rsyslog / journald 是否运行
  • 日志太多?
    • 一定加 -m limit

如果你愿意,我可以:

  • 给你一套 生产环境 iptables 日志模板
  • 或帮你写 firewalld + LOG 方案
  • 或做 攻击溯源日志格式

你用的是 CentOS 几?

0 踩