Zabbix 监控Linux 下用户登录密码的有效期

时间:2021-6-7 作者:qvyue

一、chage命令科普

chage命令 是用来修改帐号和密码的有效期限。

1.1语法

chage [选项] 用户名

1.2选项

-m:密码可更改的最小天数。为零时代表任何时候都可以更改密码。
-M:密码保持有效的最大天数。
-w:用户密码到期前,提前收到警告信息的天数。
-E:帐号到期的日期。过了这天,此帐号将不可用。
-d:上一次更改的日期。
-i:停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。
-l:例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期。

1.3实例

可以编辑`/etc/login.defs`来设定几个参数,以后设置口令默认就按照参数设定为准:

PASS_MAX_DAYS   99999
PASS_MIN_DAYS   0
PASS_MIN_LEN    5
PASS_WARN_AGE   7

当然在/etc/default/useradd可以找到如下2个参数进行设置:

# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes

通过修改配置文件,能对之后新建用户起作用,而目前系统已经存在的用户,则直接用chage来配置。

我的服务器root帐户密码策略信息如下:

[root@linuxde ~]# chage -l root
最近一次密码修改时间                    : 3月 12, 2019
密码过期时间                            :从不
密码失效时间                           :从不
帐户过期时间                           :从不
两次改变密码之间相距的最小天数          :0
两次改变密码之间相距的最大天数          :99999
在密码过期之前警告的天数                :7

我可以通过chage -M 天数 用户命令修改我的密码过期时间:

[root@linuxde ~]# chage -M 60 root
[root@linuxde ~]# chage -l root
最近一次密码修改时间                          : 3月 12, 2019
密码过期时间                                       : 5月 11, 2019
密码失效时间                                       :从不
帐户过期时间                                       :从不
两次改变密码之间相距的最小天数          :0
两次改变密码之间相距的最大天数          :60
在密码过期之前警告的天数                    :9

然后通过chage -I 天数 用户命令设置密码失效时间:

[root@linuxde ~]# chage -I 10 root
[root@linuxde ~]# chage -l root
最近一次密码修改时间                          : 3月 12, 2019
密码过期时间                                  : 5月 11, 2019
密码失效时间                                  : 5月 21, 2019
帐户过期时间                                  :从不
两次改变密码之间相距的最小天数          :0
两次改变密码之间相距的最大天数          :60
在密码过期之前警告的天数                 :9

从上述命令可以看到,在密码过期后10天,密码自动失效,这个用户将无法登陆系统了。

二、编写监控脚本和配置文件

2.1 监控脚本

[root@master alertscripts]# pwd
/usr/local/zabbix/share/zabbix/alertscripts
[root@master alertscripts]# cat ./chageUser.sh
#!/bin/bash
 
user_name=$1

end_year=`sudo chage -l ${user_name} | head -2| tail -1 | awk -F: '{print $2}'| awk -F',' '{print $2}'| awk '{print $1}'`
if [ "${end_year}" == "" ];then
    echo "99999"
    exit 0
fi
 
    end_mounth=`chage -l ${user_name} | head -2| tail -1 | awk -F: '{print $2}'| awk -F',' '{print $1}'| awk '{print $1}'`
 
    case ${end_mounth} in
        'Jan') end_mounth=1;;
        'Feb') end_mounth=2;;
        'Mar') end_mounth=3;;
        'Apr') end_mounth=4;;
        'May') end_mounth=5;;
        'Jun') end_mounth=6;;
        'Jul') end_mounth=7;;
        'Aug') end_mounth=8;;
        'Sep') end_mounth=9;;
        'Oct') end_mounth=10;;
        'Nov') end_mounth=11;;
        'Dec') end_mounth=12;;
    esac
 
    end_day=`chage -l ${user_name} | head -2| tail -1 | awk -F: '{print $2}'| awk -F',' '{print $1}'| awk '{print $2}'`
    end_date_s=`/bin/date -d "${end_year}"-"${end_mounth}"-"${end_day}" +%s`
    star_date_s=`/bin/date +%s`
    let diffday=(${end_date_s}-${star_date_s})/86400
    echo ${diffday}

2.2配置文件

[root@master zabbix_agentd.conf.d]# pwd
/usr/local/zabbix/etc/zabbix_agentd.conf.d
[root@master zabbix_agentd.conf.d]# cat ./chageUser.conf 
UnsafeUserParameters=1
UserParameter=chageUser[*],sudo /usr/local/zabbix/share/zabbix/alertscripts/chageUser.sh $1

[root@master zabbix_agentd.conf.d]# 

2.3 sudo 权限

命令行输入visudo,或者打开/etc/sudoers文件,加入如下的内容

Zabbix 监控Linux 下用户登录密码的有效期
image.png

或者:echo 'zabbix ALL=(ALL) NOPASSWD: /usr/bin/chage' >> /etc/sudoers.d/zabbix

2.4去掉允许接收远程命令的注释

Zabbix 监控Linux 下用户登录密码的有效期
image.png

三、测试一下能不能获取数据

Zabbix 监控Linux 下用户登录密码的有效期
image.png

能正常获取数据

四、创建监控模板

Zabbix 监控Linux 下用户登录密码的有效期
image.png
Zabbix 监控Linux 下用户登录密码的有效期
image.png

然后主机链接模板,给宏赋值(用户名),查看监控项是否支持以及查看最新数据

Zabbix 监控Linux 下用户登录密码的有效期
Zabbix 监控Linux 下用户登录密码的有效期
image.png

———————————–完成—————————————

声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:qvyue@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。