iptables 日志分析
2017-05-15 本文已影响1646人
imsilence
用途
防火墙除了进行有效的网络访问控制之外,还可以清晰记录网络上的访问,并自动生成日志进行保存. 在防火墙日志中主要记录消息发送源IP、消息目的IP、消息流向、消息内容以及应用几个方面.管理员可以按照不同的需求查找日志、审计日志,还可以分析网络带宽利用,各种协议和端口的使用情况,防火墙产生的安全告警对网络安全管理提供帮助信息
配置iptables 日志(ubuntu 16.04)
-
配置 /etc/rsyslog.d/30-iptables.conf文件内容,将消息内容包含iptables: 的日志写入到 /var/log/iptables.log中
:msg,contains,"iptables:" /var/log/iptables.log
-
重启rsyslog服务
/etc/init.d/rsyslog restart
-
配置记录日志规则
iptables -N SILENCE_INPUT_LOG iptables -I INPUT 1 -j SILENCE_INPUT_LOG iptables -A SILENCE_INPUT_LOG -p tcp --dport 8080 -j LOG --log-prefix "iptables:" iptables -A SILENCE_INPUT_LOG -p icmp -j LOG --log-prefix "iptables:" iptables -A SILENCE_INPUT_LOG -p tcp --dport 8081 -j LOG --log-prefix "iptables:" iptables -A SILENCE_INPUT_LOG -p udp --dport 8082 -j LOG --log-prefix "iptables:"
-
tail 查看 iptables.log 文件
tail -n 0 -f /var/log/iptables.log
-
测试
web测试
a. 使用curl命令访问目标的8080端口, 查看iptables.log:curl -XGET "192.168.1.116:8080" 产生日志: May 14 17:57:53 silence kernel: [80156.647246] iptables:IN=wlp6s0 OUT= MAC=00:26:c6:54:89:be:ec:0e:c4:3e:e3:e9:08:00 SRC=192.168.1.105 DST=192.168.1.116 LEN=52 TOS=0x00 PREC=0x00 TTL=64 ID=10065 DF PROTO=TCP SPT=39548 DPT=8080 WINDOW=8192 RES=0x00 SYN URGP=0 May 14 17:57:54 silence kernel: [80157.157241] iptables:IN=wlp6s0 OUT= MAC=00:26:c6:54:89:be:ec:0e:c4:3e:e3:e9:08:00 SRC=192.168.1.105 DST=192.168.1.116 LEN=52 TOS=0x00 PREC=0x00 TTL=64 ID=10067 DF PROTO=TCP SPT=39548 DPT=8080 WINDOW=8192 RES=0x00 SYN URGP=0 May 14 17:57:54 silence kernel: [80157.663905] iptables:IN=wlp6s0 OUT= MAC=00:26:c6:54:89:be:ec:0e:c4:3e:e3:e9:08:00 SRC=192.168.1.105 DST=192.168.1.116 LEN=48 TOS=0x00 PREC=0x00 TTL=64 ID=10069 DF PROTO=TCP SPT=39548 DPT=8080 WINDOW=8192 RES=0x00 SYN URGP=0 c. 启动web服务器: python3 -mhttp.server --bind 0.0.0.0 8080 d. 再次使用curl命令访问目标的8080端口, 查看iptables.log: curl -XGET "192.168.1.116:8080" 产生日志: May 14 17:58:41 silence kernel: [80204.153519] iptables:IN=wlp6s0 OUT= MAC=00:26:c6:54:89:be:ec:0e:c4:3e:e3:e9:08:00 SRC=192.168.1.105 DST=192.168.1.116 LEN=52 TOS=0x00 PREC=0x00 TTL=64 ID=10313 DF PROTO=TCP SPT=39609 DPT=8080 WINDOW=8192 RES=0x00 SYN URGP=0 May 14 17:58:41 silence kernel: [80204.522080] iptables:IN=wlp6s0 OUT= MAC=00:26:c6:54:89:be:ec:0e:c4:3e:e3:e9:08:00 SRC=192.168.1.105 DST=192.168.1.116 LEN=40 TOS=0x00 PREC=0x00 TTL=64 ID=10314 DF PROTO=TCP SPT=39609 DPT=8080 WINDOW=16425 RES=0x00 ACK URGP=0 May 14 17:58:41 silence kernel: [80204.522164] iptables:IN=wlp6s0 OUT= MAC=00:26:c6:54:89:be:ec:0e:c4:3e:e3:e9:08:00 SRC=192.168.1.105 DST=192.168.1.116 LEN=122 TOS=0x00 PREC=0x00 TTL=64 ID=10315 DF PROTO=TCP SPT=39609 DPT=8080 WINDOW=16425 RES=0x00 ACK PSH URGP=0 May 14 17:58:41 silence kernel: [80204.535677] iptables:IN=wlp6s0 OUT= MAC=00:26:c6:54:89:be:ec:0e:c4:3e:e3:e9:08:00 SRC=192.168.1.105 DST=192.168.1.116 LEN=40 TOS=0x00 PREC=0x00 TTL=64 ID=10317 DF PROTO=TCP SPT=39609 DPT=8080 WINDOW=16425 RES=0x00 ACK URGP=0 May 14 17:58:41 silence kernel: [80204.544903] iptables:IN=wlp6s0 OUT= MAC=00:26:c6:54:89:be:ec:0e:c4:3e:e3:e9:08:00 SRC=192.168.1.105 DST=192.168.1.116 LEN=40 TOS=0x00 PREC=0x00 TTL=64 ID=10318 DF PROTO=TCP SPT=39609 DPT=8080 WINDOW=16425 RES=0x00 ACK URGP=0 May 14 17:58:41 silence kernel: [80204.553159] iptables:IN=wlp6s0 OUT= MAC=00:26:c6:54:89:be:ec:0e:c4:3e:e3:e9:08:00 SRC=192.168.1.105 DST=192.168.1.116 LEN=40 TOS=0x00 PREC=0x00 TTL=64 ID=10320 DF PROTO=TCP SPT=39609 DPT=8080 WINDOW=16425 RES=0x00 ACK FIN URGP=0
icmp测试
a. 使用ping命令访问目标, 查看iptables.log: ping 192.168.1.116 -c 1 产生日志: May 14 18:11:29 silence kernel: [80972.571111] iptables:IN=wlp6s0 OUT= MAC=00:26:c6:54:89:be:ec:0e:c4:3e:e3:e9:08:00 SRC=192.168.1.105 DST=192.168.1.116 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=12568 PROTO=ICMP TYPE=8 CODE=0 ID=1 SEQ=106
TCP测试
a. 使用nc命令创建服务 nc -l 0.0.0.0 8081 b. 使用nc命令访问目标的8081端口, 查看iptables.log echo "hello world" | nc 192.168.1.116 8081 产生日志: May 14 18:27:37 silence kernel: [81940.888216] iptables:IN=wlp6s0 OUT= MAC=00:26:c6:54:89:be:ec:0e:c4:3e:e3:e9:08:00 SRC=192.168.1.105 DST=192.168.1.116 LEN=52 TOS=0x00 PREC=0x00 TTL=64 ID=19910 DF PROTO=TCP SPT=42178 DPT=8081 WINDOW=8192 RES=0x00 SYN URGP=0 May 14 18:27:37 silence kernel: [81940.891373] iptables:IN=wlp6s0 OUT= MAC=00:26:c6:54:89:be:ec:0e:c4:3e:e3:e9:08:00 SRC=192.168.1.105 DST=192.168.1.116 LEN=40 TOS=0x00 PREC=0x00 TTL=64 ID=19911 DF PROTO=TCP SPT=42178 DPT=8081 WINDOW=16425 RES=0x00 ACK URGP=0 May 14 18:27:37 silence kernel: [81940.894137] iptables:IN=wlp6s0 OUT= MAC=00:26:c6:54:89:be:ec:0e:c4:3e:e3:e9:08:00 SRC=192.168.1.105 DST=192.168.1.116 LEN=56 TOS=0x00 PREC=0x00 TTL=64 ID=19912 DF PROTO=TCP SPT=42178 DPT=8081 WINDOW=16425 RES=0x00 ACK PSH URGP=0 May 14 18:27:40 silence kernel: [81943.873860] iptables:IN=wlp6s0 OUT= MAC=00:26:c6:54:89:be:ec:0e:c4:3e:e3:e9:08:00 SRC=192.168.1.105 DST=192.168.1.116 LEN=40 TOS=0x00 PREC=0x00 TTL=64 ID=19919 DF PROTO=TCP SPT=42178 DPT=8081 WINDOW=0 RES=0x00 ACK RST URGP=0
UDP测试
a. 使用nc命令创建服务
nc -l -u 0.0.0.0 8082
b. 使用nc命令访问目标的8081端口, 查看iptables.log
echo "hello world" | nc -u 192.168.1.116 8082 产生日志: May 14 18:30:10 silence kernel: [82093.478533] iptables:IN=wlp6s0 OUT= MAC=00:26:c6:54:89:be:ec:0e:c4:3e:e3:e9:08:00 SRC=192.168.1.105 DST=192.168.1.116 LEN=44 TOS=0x00 PREC=0x00 TTL=64 ID=23082 PROTO=UDP SPT=57747 DPT=8082 LEN=24
日志格式
字段 | 含义 |
---|---|
May 14 17:57:53 | 日志时间, 由syslog产生 |
silence | 主机名 |
kernel | 进程名称,说明netfilter由内核运行 |
80156.647246 | |
iptables: | 日志前缀, 通过--log-prefix配置 |
IN=wlp6s0 | 数据包进入的接口,若为表示本地产生 |
OUT= | 数据包离开的接口,若为空表示本地接收 |
MAC=00:26:c6:54:89:be:ec:0e:c4:3e:e3:e9:08:00 | 00:26:c6:54:89:be为目的MAC地址, ec:0e:c4:3e:e3:e9为源MAC地址 |
08:00 | 表示上层协议代码, IP协议 |
SRC=192.168.1.105 | 源IP地址 |
DST=192.168.1.116 | 目的IP地址 |
LEN=52 | IP头长度,字节(MTU) |
TOS=0x00 | 服务字段 |
PREC=0x00 | 服务类型的优先级字段 |
TTL=64 | IP数据包的生存时间 |
ID=10065 | IP数据包标识 |
DF | 标识不分段 |
PROTO=TCP | 传输层协议类型, 其他ICMP, UDP |
SPT=39548 | 源端口 |
DPT=8080 | 目的端口 |
LEN=24 | 传输层协议头长度 |
WINDOW=8192 | 窗口大小 |
RES=0x00 | 保留值 |
SYN | TCP标志位, 其他CWR, ECE, URG, ACK, PSH, RST, FIN |
URGP=0 | 紧急指针起点 |
TYPE=8 CODE=0 ID=1 SEQ=106 | ICMP协议出现 |