1. 程式人生 > >zabbix監控iptables防火墻狀態之是否有丟棄的包(攻-擊)

zabbix監控iptables防火墻狀態之是否有丟棄的包(攻-擊)

output shadow rip ssa var 圖片 模板 找到 大量

概述

之前有介紹通過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"
技術分享圖片
如圖所示,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

腳本執行效果如下:
技術分享圖片

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配置
由於之前的文章已經反復有記錄添加監控項和觸發器的示例,這裏只簡單的描述下
配置-->模板--> 找到之前的某一個基礎監控的模板,如下:
技術分享圖片
其他的添加類似;
效果如圖:
技術分享圖片

添加觸發器:

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

最後值大於0(即有被阻止的請求)同時滿足一分鐘內阻止大於100說明有業務一直被阻止,再大點可能就是***類,因此需要查看日誌分析分析啦!
技術分享圖片

到這裏添加完成!

效果如下:
查看主機的最新數據:
技術分享圖片
報警信息如下:
技術分享圖片

以上是基於生產中對防火墻安全方面的規則訂制和監控;以最快確認問題,分析問題~如有不當之處歡迎留言,另外如果你覺得對你有用,記得點個贊哈~

zabbix監控iptables防火墻狀態之是否有丟棄的包(攻-擊)