口令生存周期的配置文件为 /etc/login.defs

vim 打开该文件,命令模式下输入 /PASS_MAX_DAYS 找到该配置信息的位置

我的Linux操作系统默认显示的是99999,说明我当前用户密码的生存周期为99999天

默认配置如图:

PASS_MAX_DAYS为密码最长使用时间,多少天后会有提醒

PASS_MIN_DAYS为密码最短使用时间,意思是多少天内不能修改密码

PASS_WARN_AGE密码过期后会提醒多少天,这些天内还没有修改密码的用户,账户会被冻结

我们可以输入 cat /etc/shadow 查看当前用户的这些信息

0为PASS_MIN_DAYS, 99999为PASS_MAX_DAYS, 7为PASS_WARN_AGE

和配置的信息一样。

现在我们的安全检查要求用户的Linux系统的口令生存周期时间应该小于等于标准值90,

请编写一个脚本测试该Linux系统是否满足该安全条件:

 #!/usr/bin/env python3

 import re

 def piv(filename):
with open(filename, "r") as f:
text = f.read()
result = re.search("PASS_MAX_DAYS\s*(\d+)",text).group(1)
if int(result) <= 90:
return True
return False if __name__ == "__main__":
filename = "/etc/login.defs"
print(piv(filename))

打开文件/etc/login.defs并对其内容进行读取,在使用正则表达式匹配文中的PASS_MAX_DAYS 99999,

以此得到后面的数字,再对其进行判断即可。只要它小于等于90,则满足安全的条件。

这里的正则表达式为  "PASS_MAX_DAYS\s*(\d+)",

意思就是PASS_MAX_DAYS后跟0个或多个空白字符,再跟1个或多个数字。将数字子组话(加括号),方便提取。

同样PASS_WARN_AGE的要求值>=30的检测方法是相同的。

 #!/usr/bin/env python3

 import re

 def pass_warn_age(filename):
with open(filename) as f:
text = f.read()
result = re.search("PASS_WARN_AGE\s*(\d+)",text).group(1)
if int(result) >= 30:
return True
return False if __name__ == "__main__":
filename = "/etc/login.defs"
print(pass_warn_age(filename))

重新做了一遍(Python版)

 #!/usr/bin/env python
# -*- coding:utf-8 -*- import os
import re filename = "/etc/login.defs" #如果文件存在
if os.path.exists(filename):
with open(filename) as f:
text = f.read()
try:
ret = re.search("PASS_MAX_DAYS\s+(\d+)",text).group(1)
except AttributeError:
print("The file's PASS_MAX_DAYS configuration is wrong! Please check it")
else:
#如何PASS_MAX_DAYS的值大于0小于等于90,则合规
if 0< int(ret) <= 90:
print("PASS_MAX_DAYS ok")
else:
print("PASS_MAX_DAYS fail")
else:
print("The file '/etc/login.defs' is not found!!!")

bash

file="/etc/login.defs";
#如果文件存在,grep -v过滤掉有#的行,在grep PASS_MAX_DAYS,
if [ -s ${file} ];then
ret=`cat ${file} | grep -v "#" | grep PASS_MAX_DAYS | awk -F ' ' '{print $2}'`;fi if [ -ne $ret -a -ge $ret ];then
echo "PASS_MAX_DAYS ok";
else
echo "PASS_MAX_DAYS fail";fi

BVS安全检测之检查Linux是否口令生存周期的更多相关文章

  1. linux用户管理,linux用户口令管理,linux用户组管理,linux用户权限管理详解

    linux用户管理 http://www.qq210.com/shoutu/android 用户账号的添加(新加用户需添加用户口令) :增加用户账号就是在/etc/passwd文件中为新用户增加一条记 ...

  2. FreeRadius+GoogleAuthenticator实现linux动态口令认证

    简介 在运维管理中,服务器的密码管理十分重要.服务器数量少的时候还好说,可以定时来改密码.一旦数量多了,再来改密码就不现实了. 前提 我们假定运维访问服务器是这样的: 创建一个普通用户用于登录服务器, ...

  3. 浅谈如何检查Linux中开放端口列表

    给大家分享一篇关于如何检查Linux中的开放端口列表的详细介绍,首先如果你想检查远程Linux系统上的端口是否打开请点击链接浏览.如果你想检查多个远程Linux系统上的端口是否打开请点击链接浏览.如果 ...

  4. 检查 Linux 服务器性能

    如何用十条命令在一分钟内检查 Linux 服务器性能 如果你的Linux服务器突然负载暴增,报警短信快发爆你的手机,如何在最短时间内找出Linux性能问题所在?来看Netflix性能工程团队的这篇博文 ...

  5. 检查Linux服务器性能的关键十条命令

    检查Linux服务器性能的关键十条命令 概述 通过执行以下命令,可以在1分钟内对系统资源使用情况有个大致的了解. uptime dmesg | tail vmstat 1 mpstat -P ALL ...

  6. Linux有问必答:如何检查Linux的内存使用状况

    -1. /proc/meminfo11% -2. atop20% -3. free29% -4. GNOME System Monitor35% -5. htop41% -6. KDE System ...

  7. [转帖]如何用十条命令在一分钟内检查 Linux 服务器性能

    如何用十条命令在一分钟内检查 Linux 服务器性能 时间:2016-09-28   作者:admin 分类:新手入门 阅读:246次 http://embeddedlinux.org.cn/emb- ...

  8. 检查linux是否安装java、tomcat、mysql

    linux下,查看安装软件 1.linux下的java Java -version 如果出现java版本,证明java安装成功. 2.linux下的tomcat 2.1.检查linux是否安装tomc ...

  9. 我们通常这样使用Linux弱口令检测!

    在Internet环境中,过于简单的口令是服务器面临的最大风险,对于管理员来说,即使找出这些弱口令账号是非常必要的,这样便于采取进一步的安全措施. 这里的话,弱口令检测需要用到一款密码破译软件--Jo ...

随机推荐

  1. Jquery练习1

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  2. java 多线程小记

    /*java里面实现多线程一般有两种方式 * 1,继承Thread类,实现run方法 * 2,实现Runnable接口,实现run方法 * start方法可以新建一个线程,创建多线程必须调用此方法 * ...

  3. centos7的网络管理(参考使用)

    How to Setup network on centos 7 Posted krizna Centos, Centos 7   After installing Centos 7, You may ...

  4. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 排版:标题

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  5. 最优矩阵连乘问题 区间DP

    最优矩阵连乘积 Accepted: 10 Total Submit: 18Time Limit: 1000ms Memony Limit: 32768KB Description 在科学计算中经常要计 ...

  6. 【原】简单shell练习(四)

    1.查看已开启端口信息 #ss -ln 2.列出谁在使用某个端口(如:80) #lsof -i:80 3.显示文件夹下文件信息 #find /home/root -type f#find -type ...

  7. C++ STL之动态数组vector(⽮量)的使⽤

    写再最前面:摘录于柳神的笔记:   之前C语⾔⾥⾯⽤ int arr[] 定义数组,它的缺点是数组的⻓度不能随⼼所欲的改变,⽽C++⾥⾯有⼀个能完全替代数组的动态数组 vector (有的书⾥⾯把它翻 ...

  8. aws-ec2-upload

    EC2上建立文件夹并开放权限 $ mkdir /home/upload$ chmod 777 /home/upload 本机文件 上传 到EC2服务器$ scp -i awsub01.pem noip ...

  9. ie9下浏览器 cosole.log()会阻止j下面的s加载

    ie9下浏览器 cosole.log()会阻止j下面的s加载,删掉多余的console.log().

  10. redhat 7.6 密码破解(无光盘)

    开机,在下面界面按e 找到linux16  在最尾输入 rd.break 按 Ctrl+x 输入 mount -o remount,rw /sysroot 输入chroot   /sysroot sh ...