在Nagios的官方网站上有提供一个用于监控iptables的状态的脚本,但是官方提供的脚本直接是不能使用的需要修改才能使用,在这里就大致所以下,因为Nagios的中命令机制是使用Nagios用户运行的,所以在官网上提供的脚本没有做出调整前是无法正常使用的,官网提供的iptables监控脚本很简单,是使用iptables的指令统计出INPUT上实时的条数的有多少,如果条数-1小于0就告警。但是在普通用户是无法正常使用iptables的命令,如果没有做出调整在Nagios中会出现NRPE:Unable to read output的错误,所以就需要在系统中调整一下,需要给Nagios添加一条使用iptables命令的sudo免密的sudo权限:
[root@localhost ~]# visudo …略… nagios ALL=(ALL) NOPASSWD:/sbin/iptables …略…
在这里要注意一下,在之前部署安装Nagios的时候一定要注意创建Nagios的用户为不可登录的useradd -s的参数,这样添加完sudo权限就不会有安全风险,最后在修改下官方的脚本就可以了:
#!/bin/bash #You must add Nagios permission to iptables in / etc / sudoers STATE_OK=0 STATE_WARNING=1 STATE_CRITICALLL=2 STATE_UNKNOWN=3 CHAINS=$(sudo iptables -nvL | grep ‘Chain‘ | awk ‘{ print $2 }‘) for CHAIN in $CHAINS ; do if [ "$CHAIN" != ‘FORWARD‘ ] && [ "$CHAIN" != ‘OUTPUT‘ ] && [ $(expr substr $CHAIN 1 4) != "LOG_" ] ; then CNT=$(expr $(sudo iptables -S $CHAIN | wc -l) ‘-‘ 1) if [ $CNT -eq 0 ] ; then OUTPUT="${OUTPUT}ERROR $CHAIN $CNT rules!" echo $OUTPUT exit $STATE_CRITICALL else OUTPUT="${OUTPUT}OK $CHAIN $CNT rules" echo $OUTPUT exit $STATE_OK fi fi done
本文出自 “技术随笔” 博客,谢绝转载!
原文地址:http://jim123.blog.51cto.com/4763600/1955235