通過nagios實現MD5實時監控iptables狀態

功能】:

  nagios 實現通過MD5實時監控 iptables 狀態,實時監控Iptables,防止人爲關閉後,忘了開啓,或者監控規則是否有增刪。

說明】:

 實現方式是:通過獲取iptables狀態的MD5值,校驗比對判斷iptables是否被修改。

 實現流程是:首先獲取被監控服務器的iptables狀態MD5值,保存到nagios服務端配置文件中,服務端通過遠程獲取被監控端iptables狀態MD5值進行比對,如果不一致則發出報警。

  很久以前發表過通過監控iptables規則條數《nagios 實時監控 iptables 狀態》,來達到監控目的,本文也是幾年前做的了,此法比前一種更嚴謹,當時說要公開,今天沒事把幾年前的東西發出來,也算是兌現承諾,方法算不上好,但是提供一種思路。

【實現】

首先在nrpe被監控端

#編輯nrpe.cfg文件,定義檢測命令。

command[check_iptables]=echo $(/usr/bin/sudo iptables -L -n | md5sum | awk '{print $1}')

#獲取被監控服務器的iptables狀態 md5值備用,這個命令是實時的,如果不修改iptables規則,則不會變。

echo $(/usr/bin/sudo iptables -L -n | md5sum | awk '{print $1}')

-----------------------------------------------------------------------------------

在nagios監控端

#定義檢測命令check_iptables

define command{
    command_name  check_iptables
    command_line $USER1$/check_iptables.sh $HOSTADDRESS$ $ARG1$
}

#定義服務,這裏的check_command 裏面的那串字符就是前面獲取的MD5值,這裏寫死到nagios服務器端,這種方法有優點也有缺點,缺點就是不適合批量和大量服務器,每次發現iptables變化都要重新獲取值新的MD5值並修改這個值,否則就一直報警,但是安全,這只是一種思路,之前是對遊戲服務器充值服務器做監控數量較少,當然也可以把MD5值放到被監控服務器上,比對2次值是否一致,不一致就報警,但是這樣只能報一次。

define service {                                    
    use                   web-service                                 
    host_name             xx-xx-xx
    service_description   iptables_status
    check_command          check_iptables!a7b1e263a467008dade82c873dcc0db8 #對應主
機iptablesMD5
}

#腳本check_iptables.sh (這個腳本放到nagios服務器的插件目錄並給執行權限,默認是/usr/local/nagios/libexec)

#!/bin/bash
prefix=/usr/local/nagios/libexec;
check_iptab_md5=$($prefix/check_nrpe -H $1 -p port -c check_iptables);
 iptab_md5="$2"
if [ $check_iptab_md5 == $iptab_md5 ];then
    echo "OK - Iptables are OK"
    exit 0
else
    echo " CRITICAL - Iptables are CRITICAL"
    exit 2
fi
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章