BVS安全检测之检查Linux是否⼝令⽣存周期⼝令⽣存周期的配置⽂件为 /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系统是否满⾜该安全条件:
1#!/usr/bin/env python3
2
3import re
4
5def piv(filename):
6 with open(filename, "r") as f:
7 text = f.read()
8 result = re.search("PASS_MAX_DAYS\s*(\d+)",text).group(1)
9if int(result) <= 90:
10return True
access窗体11return False
12
13if__name__ == "__main__":
14 filename = "/etc/login.defs"
15print(piv(filename))
打开⽂件/etc/login.defs并对其内容进⾏读取,在使⽤正则表达式匹配⽂中的PASS_MAX_DAYS 99999,
以此得到后⾯的数字,再对其进⾏判断即可。只要它⼩于等于90,则满⾜安全的条件。
这⾥的正则表达式为 "PASS_MAX_DAYS\s*(\d+)",
意思就是PASS_MAX_DAYS后跟0个或多个空⽩字符,再跟1个或多个数字。将数字⼦组话(加括号),⽅便提取。
同样PASS_WARN_AGE的要求值>=30的检测⽅法是相同的。
1#!/usr/bin/env python3
2
3import re
4
5def pass_warn_age(filename):
6 with open(filename) as f:
7 text = f.read()
8 result = re.search("PASS_WARN_AGE\s*(\d+)",text).group(1)
9if int(result) >= 30:
10return True
11return False
12
13if__name__ == "__main__":
14 filename = "/etc/login.defs"
15print(pass_warn_age(filename))
重新做了⼀遍(Python版)
浏览器的跨域1#!/usr/bin/env python
2# -*- coding:utf-8 -*-
手机accessibility是什么权限3
4import os
5import re
6
7 filename = "/etc/login.defs"
8
9#如果⽂件存在
10if ists(filename):
11 with open(filename) as f:
12 text = f.read()
13try:
14 ret = re.search("PASS_MAX_DAYS\s+(\d+)",text).group(1)
15except AttributeError:
16print("The file's PASS_MAX_DAYS configuration is wrong! Please check it") 17else:
18#如何PASS_MAX_DAYS的值⼤于0⼩于等于90,则合规
19if 0< int(ret) <= 90:
20print("PASS_MAX_DAYS ok")
21else:
22print("PASS_MAX_DAYS fail")
linux修改口令的命令objectivec基础教程 pdf23else:
24print("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 [ 0 -ne $ret -a 90 -ge $ret ];then
echo"PASS_MAX_DAYS ok";
else
echo"PASS_MAX_DAYS fail";fijson格式化有哪些方法
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论