口令生存周期的配置文件为 /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. scp 远程文件拷贝命令

    Linux scp命令用于Linux之间复制文件和目录. scp是 secure copy的缩写, scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令. 1.从本地复制到远程 命令格式: ...

  2. mybatis=<>的写法

    第一种写法(1): 原符号 < <= > >= & ' "替换符号 < <= > >= & &apos; " ...

  3. 关于PGSQL连接问题

    今天把运维管理服务移植在Linux下测试,但又不想在Linux中安装PGSQL的服务器,就想让运维管理服务在虚拟机中连接windows的PG服务,却发现PG服务器一直拒绝连接,检查了网络端口之后都没问 ...

  4. Scrapy 分布式爬取

    由于受到计算机能力和网络带宽的限制,单台计算机运行的爬虫咋爬取数据量较大时,需要耗费很长时间.分布式爬取的思想是“人多力量大”,在网络中的多台计算机同时运行程序,公童完成一个大型爬取任务, Scrap ...

  5. hadoop3.1.1高可用集群web端口9870

  6. 微信小程序加密解密 C# 以及 填充无效,无法被移除错误的解决方案 Padding is invalid and cannot be removed

    解密加密源码 using System; using System.Security.Cryptography; using System.Text; namespace Wechat { publi ...

  7. ubuntu13.10更新sources.list

    步骤: 1>设置网络连接方式,NAT 2>自动获取ip address 10.0.2.15 3>更新源soureces.list soureces.list deb http://m ...

  8. nginx的preaccess 阶段的limit_req模块与limit_conn模块

    limit_conn 模块限制并发连接数 [root@python vhast]# vim limit_conn.conf limit_conn_zone $binary_remote_addr zo ...

  9. 吴裕雄--天生自然ORACLE数据库学习笔记:数据表对象

    create table students( stuno ) not null, --学号 stuname ), --姓名 sex ), --性别 age int, --年龄 departno ) n ...

  10. SpringMvc 返回json的三种方式

    参考:https://blog.csdn.net/fupengyao/article/details/62220886