我已经设置了集中式 Syslog(centOS + rsys)服务器,该服务器运行 LogAnalyzer 以便更好地呈现日志。最近有人要求我提供所有 IP 防火墙的日志,用于特定防火墙声明,并计算列表中出现的特定 IP 数量。
到目前为止,我知道如何显示特定防火墙语句的所有日志,但不知道如何从消息列中检索源 IP 并计算特定 IP 的出现次数。
是否有任何附加软件可以做到这一点,或者我需要创建自己的日志解析器来完成这一点?
谢谢
答案1
我们使用 AWK。
Feb 25 12:18:50 host.example.come kernel: LOGPREFIX: IN=eth0 OUT= MAC=00:aa:aa:bb:cc:dd:00:ee:00:aa:dc:00:aa:00 SRC=x.x.x.x DST=y.y.y.y LEN=40 TOS=0x00 PREC=0x00 TTL=95 ID=256 PROTO=TCP SPT=6000 DPT=22 WINDOW=16384 RES=0x00 SYN URGP=0
- awk 取出 SRC 地址
- 按数字排序列表(uniq 的前提条件)
- 使用带有 -c 标志的 uniq 来获取每个源的计数
- 可选:再次按数字排序以查看最严重的违规者。
[[email protected] faculty]# grep LOGPREFIX /var/log/messages | \
awk '{print $10}' | sort -n | uniq -c | sort -n
输出:
5 SRC=x.174.x.x
6 SRC=61.y.y.y
6 SRC=z.z.z.196
17 SRC=a.a.246.a
最后:AWK 入门:http://www.grymoire.com/Unix/Awk.html