为了服务器的安全,需要知道是否有异常的IP通过SSH登录到我们的服务器,以便我们及时防御入侵。

一、配置脚本

1.在被监控的服务器上创建自动异常登录脚本,存放在/etc/zabbix/script下:

#!/bin/bash
export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

[[ $(grep -iE 'ubuntu|debin|elementary' /etc/issue) ]] \
     && logs='/var/log/auth.log' \
     || logs='/var/log/secure'

## $1: Accepted OR Failed

#portarray=( $(awk "/$1/ {print \$(NF-3)}" $logs |sort |uniq) )
count=$2
count=${count:=0}
portarray=( $(grep 'sshd' $logs |awk "/$1/ {print \$(NF-3)}" $logs |sort |uniq -c |awk "{if (\$1 >= $count) print \$NF }") )

length=${#portarray[@]}

function zabbix_json(){
    printf "{\n"
    printf '\t'"\"data\":["
    for ((i=0;i<$length;i++))
    do
        printf '\n\t\t{'
        printf "\"{#ACCESS_IP}\":\"${portarray[$i]}\"}"
        if [ $i -lt $[$length-1] ];then
            printf ','
        fi
    done
    printf "\n\t]\n"
    printf "}\n"
}

function check(){
    awk "/$1/ {print \$(NF-3)}" $logs |grep $2 |sort |uniq -c |awk '{print $1}'
}

[[ $1 = check ]] \
    && $* \
    || zabbix_json

[root@centos6 script]# chown zabbix.zabbix discovery_access.sh 
[root@centos6 script]# chmod +x discovery_access.sh 

2.修改配置文件,增加参数

[root@centos6 zabbix_agentd.d]# vim /etc/zabbix/zabbix_agentd.d/userparameter_sa_linux.conf

UserParameter=discovery.access[*],/etc/zabbix/script/discovery_access.sh $1 $2 $3

3.重启zabbix客户端

[root@centos6 script]# service zabbix-agent restart
Shutting down Zabbix agent:                                [  OK  ]
Starting Zabbix agent:                                     [  OK  ]

二、测试脚本连通

在zabbix-server端,使用zabbix_get命令来获取agent端的脚本参数:

[root@centos6 conf.d]# zabbix_get -s 192.168.10.137 -k discovery.access[Accepted]
{
        "data":[
                {"{#ACCESS_IP}":"192.168.10.138"},
                {"{#ACCESS_IP}":"192.168.9.135"}
        ]
} 

 提示报错:

[root@centos6 conf.d]# zabbix_get -s 192.168.10.137 -k discovery.access[Accepted]
awk: cmd. line:1: fatal: cannot open file `/var/log/secure' for reading (Permission denied)
grep: /var/log/secure: Permission denied

{
        "data":[
        ]
}

 解决办法:

设置日志文件的权限 
/var/log/secure的权限一般是600,zabbix agent对此文件没有权限。zabbix用户是agent的启动用户,所以我们要设置zabbix用户对/var/log/secure有可读权限,这样agent才能监控。 
执行下面的命令,追加zabbix的可读权限:

setfacl -m u:zabbix:r-- /var/log/secure

 三、配置自动发现规则

1.创建发现规则

在自建或已有模板中创建自动发现规则:

2.配置发现规则名称

3.配置监控项原型

4.配置触发器类型

创建完成

四、进行测试

一旦有新的IP登录到服务器即会报警:

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐