zabbix监控iptables防火墙状态之是否有丢弃的包(攻-击)

栏目: 服务器 · 发布时间: 6年前

内容简介:之前有介绍方法:由于iptables防火墙会记录被drop的数量,同时可以记录防火墙的日志;所以我们可以通过获取被阻止包的数量统计来粗略的知道是否有被拒绝的请求,并查看日志,来确定是否是误伤或是***,加强处理;

概述

之前有介绍 通过saltstack统一管理线上防火墙规则 ,并且是在默认规则为DROP策略下,即意味着,如果没有明确允许开放或允许出去访问,则防火墙会拒绝请求;特别是在线上防火墙改造时,可能由于历史原因不知道开放了那些服务,也不知道机器上的服务是否有出去请求的情况下,此时需要记录防火墙访问日志,并查看是否有合法的请求被阻止了,这样会影响业务的,你懂滴,另外如果我们的机器被扫描,被***时,也会有大量的拒绝,因此不管出于什么目的,我们需要对防火墙是否有被阻止的请求做监控;做到有点放矢;有问题报警;做到心中有数;不是吗?

方法:

由于iptables防火墙会记录被drop的数量,同时可以记录防火墙的日志;所以我们可以通过获取被阻止包的数量统计来粗略的知道是否有被拒绝的请求,并查看日志,来确定是否是误伤或是***,加强处理;

示例:

先在防火墙头的INPUT OUPUT中添加记录日志:

/etc/sysconfig/iptables文件中添加如下两条:
-A INPUT -j LOG --log-prefix "iptables-IN-DROP:"
-A OUTPUT -j LOG --log-prefix "iptables-OUT-DROP:"

这样防火墙就会记录被阻止的日志(/var/log/message);

查看防火墙状态,是否有被阻止的请求:

$ sudo iptables -vnL |grep "Chain $1"|grep "DROP"

zabbix监控iptables防火墙状态之是否有丢弃的包(攻-击)

如图所示,INPUT OUTPUT规则中有被DROP

查看被阻止的日志:

为了查清楚,我先清除防火墙日志

$ sudo iptables -Z
$ telnet 115.182.6.91 60122

由于我没有允许出去访问115.182.6.91 这台机器的60122端口;

因此查看防火墙日志如下:

Oct 21 10:15:48 app-backend-29 kernel: iptables-out-DROP:IN= OUT=eth0 SRC=10.8.51.29 DST=115.182.6.91 LEN=52 TOS=0x10 PREC=0x00 TTL=64 ID=13822 DF PROTO=TCP SPT=4020 DPT=60122 WINDOW=14600 RES=0x00 SYN URGP=0 
Oct 21 10:15:49 app-backend-29 kernel: iptables-out-DROP:IN= OUT=eth0 SRC=10.8.51.29 DST=115.182.6.91 LEN=52 TOS=0x10 PREC=0x00 TTL=64 ID=13823 DF PROTO=TCP SPT=4020 DPT=60122 WINDOW=14600 RES=0x00 SYN URGP=0 
Oct 21 10:15:49 app-backend-29 san: [euid=san]:san pts/1 2018-10-21 10:09 (172.188.103.253):[/usr/local/zabbix-3.4.4/scripts]2018-10-21 10:15:48 san telnet 115.182.6.91 60122

基于以上基础我们来添加zabbix监控;

zabbix监控防火墙状态之DROP

实现的方法上面已经描述过了,思路就是脚本监控防火墙状态上有没有被阻止的包,有就输出,没有就是0;

触发器报警条件就是大于0时并且一分钟内多于100时触发报警(这个阀值可按业务自行调);一般重点关注OUTPUT

上;因为业务可能会调用外面的接口,当然也有可能有不明程序出去请求;而INPUPT上多时,可能是有开放的服务被防火墙阻止或有***;总之得分析处理啦!

1、zabbix脚本

[app-backend-29 scripts]$ cat iptables_droped_status.sh 
#!/bin/bash
check(){
  sudo iptables -vnL |grep "Chain $1"|grep "DROP"|awk '{print $2,":",$5}'|awk -F":" '{if($2>0) {print $2} else {print "0"}}'
}

case $1 in 
     INPUT)
     check $1
     ;;
     OUTPUT)
     check $1
     ;;
     FORWARD)
     check $1
     ;;
     *)
     check
     ;;
esac

脚本执行效果如下:

zabbix监控iptables防火墙状态之是否有丢弃的包(攻-击)

2、zabbix监控项

有了脚本获取数据,同时要有监控项;

cat /usr/local/zabbix-3.4.4/zabbix_agentd.conf.d/iptables.conf
# iptables Drop status
UserParameter=iptables.droped[*],/bin/bash /usr/local/zabbix-3.4.4/scripts/iptables_droped_status.sh $1

这里的监控项是iptables.droped,web上添加监控项,触发器时需要;先记住;

3、zabbix web配置

由于之前的文章已经反复有记录添加监控项和触发器的示例,这里只简单的描述下

配置-->模板--> 找到之前的某一个基础监控的模板,如下:

zabbix监控iptables防火墙状态之是否有丢弃的包(攻-击)

其他的添加类似;

效果如图:

zabbix监控iptables防火墙状态之是否有丢弃的包(攻-击)

添加触发器:

({Ickey Basic Status:iptables.droped[INPUT].last()}>0) and  ({Ickey Basic Status:iptables.droped[INPUT].count(60)}>100)

最后值大于0(即有被阻止的请求)同时满足一分钟内阻止大于100说明有业务一直被阻止,再大点可能就是***类,因此需要查看日志分析分析啦!

zabbix监控iptables防火墙状态之是否有丢弃的包(攻-击)

到这里添加完成!

效果如下:

查看主机的最新数据:

zabbix监控iptables防火墙状态之是否有丢弃的包(攻-击)

报警信息如下:

zabbix监控iptables防火墙状态之是否有丢弃的包(攻-击)

以上是基于生产中对防火墙安全方面的规则订制和监控;以最快确认问题,分析问题~如有不当之处欢迎留言,另外如果你觉得对你有用,记得点个赞哈~


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

程序员的英语

程序员的英语

[韩]朴栽浒、[韩]李海永 / 颜廷连 / 人民邮电出版社 / 2018-2 / 49.00元

高考以后就把英语都还给老师了? 写代码特顺溜,一到英语就卡壳? 常见的语法书太枯燥,单词书又太宽泛? 不用急,快来加入针对开发人员的英语读解能力训练项目! - 安全与黑客攻击、无人机与机器人、大数据、物联网、云计算,顺应新技术潮流! - 语法、单词、完形填空、阅读理解、翻译,多角度提升读解能力! - 英语母语技术人员审校,提供“语言和技术”双保险!一起来看看 《程序员的英语》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试