Zabbix 配置SSH登录报警
配置
cd /etc/zabbix/zabbix_agentd.d
vim ssh.conf
UserParameter=ssh[*],python /home/python/ssh.py $1
#重启
systemctl restart zabbix-agent
脚本
# -*- coding:utf-8 -*-
#1.收集服务器上登录的IP
#2.删除收集到的白名单IP
#3.如果收集到的IP为空,则将白名单IP写入收集里面
import os
import sys
#获取ip
ip=os.popen("who -u | grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}' |sort -t'.' -k1,1nr -k2,2nr -k3,3nr -k4,4nr |uniq").read().split("\n")
#判断是否要删除ip
newip=ip
Whitelist=[]
for num in range(1,len(sys.argv)):
newip=' '.join(newip).replace(sys.argv[num], "").split()
Whitelist.append(sys.argv[num])
#判断newip是否为空,为空代表服务器没有被非其他ip登录,则显示当前正常ip登录的账号
#避免误报,如果newip为空就将传入的参数写入newip里面
nulll=0
if len(newip) == 0:
newip=Whitelist
nulll=1
#获取登录信息
data=[]
if nulll == 0:
for i in newip:
if i != '':
#执行获取信息的命令,分割后添加到数组
datatmp=os.popen("who -u | grep '%s' "%i).read().split('\n')
for ii in os.popen("who -u | grep '%s' "%i).read().split('\n'):
if ii != '':
data.append(ii.replace('\n',""))
else:
data.append(os.popen("who -u ").read())
#监控的信息
print "%s\n"%' '.join(newip)
#显示登录信息
print '\n'.join(data)
下载
#脚本
wget https://aalrl.com/upload/2021/07/ssh-34980bbbba834fb6948c1170c2c634be.py
#模板
wget https://aalrl.com/upload/2021/07/ssh_zbx_export_templates-59d6bf5050a245739188276203233915.xml