口令生存周期的配置文件为 /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. jmeter download historyList

    https://archive.apache.org/dist/jmeter/binaries/ 反馈,问题和评论应发送到Apache JMeter Users 邮件列表. 有关更多信息, 请访问Ap ...

  2. laravel nginx下 css 和js 加载 重写规则

    server { listen 80; server_name test.hanwen.com; #charset koi8-r; #access_log logs/host.access.log m ...

  3. python 可视化 pyecharts

    github搜索pyecharts https://github.com/pyecharts/pyecharts echarts : https://www.echartsjs.com/zh/inde ...

  4. spark实验(一)--spark安装(1)

    一.实验目的 (1)掌握 Linux 虚拟机的安装方法.Spark 和 Hadoop 等大数据软件在 Linux 操作系统 上运行可以发挥最佳性能,因此,本教程中,Spark 都是在 Linux 系统 ...

  5. 小白笔记:Git入门之常见命令

    安装 这里就不介绍安装了,度娘一大堆,找不到可以去找谷爹(前提是你能找到).安装好就跟着笔记进行下一步 准备工作 首先我们需要一个可以 git 的东西,所以我们需要一个文件夹和一个文件 创建文件夹 t ...

  6. git add 添加错文件 撤销

    git status 先看一下add 中的文件 git reset HEAD 如果后面什么都不跟的话 就是上一次add 里面的全部撤销了 git reset HEAD XXX/XXX/XXX.java ...

  7. Spring boot 启动图片

    生成工具:http://patorjk.com/software/taag/#p=testall&h=0&v=0&f=Graffiti&t=Type%20Somethi ...

  8. shell脚本中执行shell脚本(2)

    (a.sh)读取用户输入参数,并在脚本(b.sh)中使用 1.a.sh #!/bin/sh read -p "please input name value: " name ./b ...

  9. 【转】Python中*args和**kwargs的区别

    一.*args的使用方法 *args 用来将参数打包成tuple给函数体调用 例子一: 输出结果以元组的形式展示 def function(*args): print(args, type(args) ...

  10. SD-WAN基本介绍

    SD-WAN是什么? SD-WAN,即软件定义广域网络,是将SDN技术应用到广域网场景中所形成的一种服务.这种服务用于连接广阔地理范围的企业网络.数据中心.互联网应用及云服务,旨在帮助用户降低广域网的 ...