1. 程式人生 > >zabbix監控iptables時遇到的問題

zabbix監控iptables時遇到的問題

背景:由於外包人員或者自己有時候關閉iptables,就忘記啟用,會造成系統的安全問題,如果被***攻入一臺主機,它就能登陸你的其它主機,一般除了跳板機,iptables是不讓內網機直接互相登陸;iptables裡面的內容,預設一般只開用到的埠。因此監控iptables的啟停就很重要。

原理:我用的監控方法是根據網路上借鑑的簡單的方法,通過iptables -nL命令來判斷命令的行數,iptables關閉時候行數為8,來設定zabbix的觸發器報警,zabbix專案和觸發器怎麼設定在這就不多說了。當然我認為還是有很多別的方法的。

我想說的問題,是在我用指令碼執行iptables -nL命令的時候,在客戶端取值都沒有問題,但服務端取值總是不正確,在這個問題困擾了我許久之後,終於查詢網路資料,學習到了,在這記錄下來,主要是問題是zabbix使用者沒有許可權執行iptables這個命令,導致我最後一步總是出錯。用visudo命令,為zabbix使用者執行iptables命令提權,在這不要給太大許可權,只給需要的。
visudo
zabbix ALL=NOPASSWD: /sbin/iptables -L -n
然而手工 su 到 zabbix 的使用者,執行 sudo iptables -L -n 是能夠正常獲得結果的,但在監控那邊還是隻能得到0。之後查詢資料發現了兩個方法,其實是一個意思,因為預設sudo遠端不讓執行
visudo後註釋掉這個
#Defaults requiretty #這行註釋就可以了
或者加上這一行
Defaults:zabbix !requiretty

感謝前人的資料
首先,在 zabbix 中新建一個 item,比如命名為 iptables.lines,型別選擇 zabbix agent,其他保持預設就好了
然後,在被監控的主機上,填寫自定義配置,vi zabbix_agentd.conf,在最後新增一行:
UserParameter=iptables.lines, sudo /sbin/iptables -L -n | wc -l
最後重啟zabbix_agentd