我的路由器通过syslog将“DROP”数据包发送到我的服务器,以下列方式记录到文件中:
Oct 30 13:01:02 192.168.1.1内核:DROP IN = vlan2 OUT = MAC = XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX SRC = 93.108.197.92 DST = 192.168.2.10 LEN = 60 TOS = 0x00 PREC = 0x00 TTL = 51 ID = 44828 DF PROTO = TCP SPT = 55552 DPT = 33248 WINDOW = 7300 RES = 0x00 SYN URGP = 0 OPT(020405840402080A0035BAC40000000001030300)
10月30日13:01:06 192.168.1.1内核:DROP IN = vlan2 OUT = MAC = xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx SRC = 93.108.197.92 DST = 192.168.2.10 LEN = 60 TOS = 0x00 PREC = 0x00 TTL = 51 ID = 44829 DF PROTO = TCP SPT = 55552 DPT = 33248 WINDOW = 7300 RES = 0x00 SYN URGP = 0 OPT(020405840402080A0035BEAE0000000001030300) 10月30日13:01:07 192.168.1.1内核:DROP IN = vlan2 OUT = MAC = xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx SRC = 189.175.171.76 DST = 192.168.2.10 LEN = 44 TOS = 0x00 PREC = 0x00 TTL = 53 ID = 260 PROTO = TCP SPT = 14779 DPT = 23 WINDOW = 50523 RES = 0x00 SYN URGP = 0 OPT (020405AC)Oct 30 13:01:09 192.168.1.1内核: DROP IN = vlan2 OUT = MAC = XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX SRC = 125.211.218.39 DST = 192.168.1.1 LEN = 88 TOS = 0x00 PREC = 0x00 TTL = 48 ID = 39896 DF PROTO = ICMP TYPE = 8 CODE = 0 ID = 29389 SEQ = 1
Oct 30 13:01:14 192.168.1.1内核:DROP IN = vlan2 OUT = MAC = XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX SRC = 93.108.197.92 DST = 192.168.2.10 LEN = 60 TOS = 0x00 PREC = 0x00 TTL = 51 ID = 44830 DF PROTO = TCP SPT = 55552 DPT = 33248 WINDOW = 7300 RES = 0x00 SYN URGP = 0 OPT(020405840402080A0035C6800000000001030300)
我想将每个字段放入一个mysql数据库中,以便稍后查看和分析。我正在考虑解析/过滤/执行此操作的最佳方法。我想在bash中这样做,但如果能让它变得更有效或更容易,我会对其他替代品/ langs开放。
我的iptables日志文件经常被轮换,我打算创建一个bash / sed / awk脚本来查看日志的每一行并创建一个sql文件,这样我就可以使用'LOAD DATA INFILE '命令将所有数据加载到一个INSERT语句中。
如上所示,ICMP和TCP类型的数据包与写入文件的方式不同(ID后的字段数)
我有几种不同的方法可以完成此任务:
到目前为止,我已经(我知道这是基本的,但我想知道在投入更多时间之前我是否应该以不同的方式处理它):
cat "$fw_file" | while read line; do
type=$(grep -oP 'PROTO=\w+\s' | cut -d= -f2)
df=$(grep -oP 'ID=\w+\sDF\s' | cut -d' ' -f2)
# continuing on for all fields....
# ......
done
如果有更好,更有效的方式让我这样做而不只是抓住所有领域?
答案 0 :(得分:0)
在开始处理脚本之前(重新发明轮子),对于解析日志和分析日志数据,有opensource
个工具可以有效地完成工作。请考虑一下!
对于确切的用例,您最好使用Elasticsearch
,Logstash
,Kibana
(ELK Stack
)。
ELK Stack
与脚本和关系数据库方法相比的一些优点:
kibana
。Elasticsearch
有REST API
,所以你的开发人员也可以做自己的事情!网上有很多教程可以让你快速前进。