编辑
2025-12-29
Zabbix6.0
00
请注意,本文编写于 54 天前,最后修改于 54 天前,其中某些信息可能已经过时。

目录

一、用shell脚本的方式监控linux用户是否异地登录

一、用shell脚本的方式监控linux用户是否异地登录

创建一个脚本目录

js
mkdir -p /etc/zabbix/scripts

创建一个脚本

js
vi /etc/zabbix/scripts/check_login_ip.sh

脚本内容

js
#!/bin/bash # 基于lastlog命令检测用户异地登录(适配root用户,可扩展其他用户) # ========== 配置项 ========== TARGET_USER="root" WHITELIST_IPS=( "192.168.201.101" "192.168.201.1" "192.168.201.0/24" ) TMP_DETAIL="/tmp/login_ip_detail.log" # =========================== # 初始化临时文件 > $TMP_DETAIL # 步骤1:提取登录IP LOGIN_IP=$(lastlog | grep "^${TARGET_USER}" | awk '{print $3}') # 步骤2:处理特殊情况 if [ -z "$LOGIN_IP" ] || [ "$LOGIN_IP" = "*" ] || [ "$LOGIN_IP" = "localhost" ]; then echo "0" echo "用户${TARGET_USER}无有效登录IP:IP=${LOGIN_IP}" > $TMP_DETAIL exit 0 fi # 步骤3:对比白名单(核心修复:区分单个IP和网段) ABNORMAL_FLAG=1 # 默认异常 for WHITELIST_IP in "${WHITELIST_IPS[@]}"; do # 判定是否是网段(包含/) if echo "$WHITELIST_IP" | grep -q "/"; then # 网段:用ipcalc匹配 if ipcalc -s "$LOGIN_IP" "$WHITELIST_IP" >/dev/null 2>&1; then ABNORMAL_FLAG=0 break fi else # 单个IP:直接字符串精准匹配(避开ipcalc坑) if [ "$LOGIN_IP" = "$WHITELIST_IP" ]; then ABNORMAL_FLAG=0 break fi fi done # 步骤4:记录详细信息 if [ $ABNORMAL_FLAG -eq 1 ]; then DETAIL_MSG="【异地登录告警】用户=${TARGET_USER}, 登录IP=${LOGIN_IP}, 白名单IP=${WHITELIST_IPS[*]}" else DETAIL_MSG="【正常】用户=${TARGET_USER}, 登录IP=${LOGIN_IP}(在白名单内)" fi echo "$DETAIL_MSG" > $TMP_DETAIL # 步骤5:返回状态 echo $ABNORMAL_FLAG
js
# 1. 脚本赋权 chmod +x /etc/zabbix/scripts/check_login_ip.sh chown zabbix:zabbix /etc/zabbix/scripts/check_login_ip.sh # 2. 测试脚本(切换zabbix用户,验证输出) su - zabbix -s /bin/bash -c "/etc/zabbix/scripts/check_login_ip.sh" # 预期输出: # 情况1IP在白名单):0 # 情况2IP异地):1

创建一个配置文件

js
vi /etc/zabbix/zabbix_agent2.d/login_ip_monitor.conf
js
# 监控项1:异地登录状态(0=正常,1=异常)- 数值型,用于触发器 UserParameter=system.login.ip.abnormal,/etc/zabbix/scripts/check_login_ip.sh # 监控项2:登录IP详细信息 - 字符型,用于告警文案 UserParameter=system.login.ip.detail,cat /tmp/login_ip_detail.log 2>/dev/null || echo "无登录信息"

重启 Agent 生效

js
systemctl restart zabbix-agent # 验证监控项(Agent本地测试) zabbix_agentd -t system.login.ip.abnormal # 应返回0/1 zabbix_agentd -t system.login.ip.detail # 应返回详细信息

web页面进行配置

image.png

第一个监控项 image.png 第二个监控项

image.png

创建触发器

image.png

验证是否触发,把脚本的网段改别的ip

改了后立马触发,异常为1,正常为0 image.png

本文作者:松轩(^U^)

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!

Document