使用iptables -j LOG 记录关键网络信息

Posted by backup@lfo.cc; tagged with none

-j LOG 是非终止性动作。

iptables的 -j LOG 动作是一个非终止性动作,在记录日志之后依然会匹配下一条规则,不会对现有规则造成影响。

-j LOG 的选项

选项说明
--log-prefix "字符串 "日志前缀(必须以空格结尾),用于区分不同规则的日志,例如 --log-prefix "INPUT DROP: "
--log-level 级别指定日志级别(0-7,数值越小级别越高),常用级别:0(emerg)、1(alert)、2(crit)、3(err)、4(warning)、5(notice)、6(info)、7(debug)默认通常为 6(info)
--log-ip-options记录 IP 头部的选项信息(如源路由、时间戳等)
--log-tcp-options记录 TCP 头部的选项信息(如 MSS、窗口大小、SYN/ACK 标志等)
--log-uid记录产生数据包的用户 ID(仅对 OUTPUT 链有效,因为输入包通常来自外部,无本地 UID)
--log-mark记录数据包的标记(mark)值(用于连接跟踪或 QoS 标记的场景)
--log-macdecode解析并记录 MAC 地址相关信息(如以太网类型)
--log-length 长度限制日志中包含的数据包载荷长度(默认记录前 64 字节)

常用例子

1.记录所有SSH访问记录

记录详细的SSH访问被DROP的日志

iptables -A INPUT -p tcp --dport 22 -j LOG \
  --log-prefix "SSH DROPPED: " \
  --log-level 6 \
  --log-tcp-options \
  --log-ip-options