加固操作

1 修改帐号和密码的有效期限

已有用户修改 — 使用chage命令:
语法 chage “选项” “参数” “账号名”
选项参数
-E :后面接日期,(账号停用日期),格式 YYYY-MM-DD
-I :后面接天数,(密码失效日期)
-m :后面接天数,(密码可更改的最小天数。为零时代表任何时候都可以更改密码)
-M :后面接天数,(密码多久需要进行变更)
-W :后面接天数,(密码过期前警告日期)
e.g chage -M 30 test #test账号在30天后需要修改密码
Note:需要root权限执行,实质为修改 /etc/shadow

创建新用户时遵守有效期规则 修改 /etc/login.defs 配置文件:

设置项 含义
PASS_MAX_DAYS 99999 密码有效期,99999 是自 1970 年 1 月 1 日起密码有效的天数,相当于 273 年,可理解为密码始终有效。
PASS_MIN_DAYS 0 表示自上次修改密码以来,最少隔多少天后用户才能再次修改密码,默认值是 0。
PASS_WARN_AGE 7 指定在密码到期前多少天,系统就开始通过用户密码即将到期,默认为 7 天。
ENCRYPT_METHOD SHA512 指定用户密码采用的加密规则,默认采用 SHA512

2 修改密码复杂性

使用pam_pwquality(pam_cracklib)模块

CentOS下文件为/etc/pam.d/system-auth (已安装pam_pwquality模块)
Ubuntu下文件为/etc/pam.d/common-password (需额外安装 sudo apt-get install libpam-pwquality)
添加 password requisite pam_cracklib.so 或 password requisite pam_pwquality.so
密码长度计算方式:
minlen = 长度积分+类型积分
长度积分:多少位密码为多少分
类型积分:密码中含有多少种类型(大小写、数字、其它字符)就有多少分 [默认情况下]
类型参数:lcredit小写字母; ucredit大写字母; dcredit数字; ocredit其他符号
默认情况下,lcredit、ucredit、dcredit、ocredit = 1(默认值);即为每个类型的类型积分为1分
当lcredit、ucredit、dcredit、ocredit = N小于0时,代表密码需要包含|N|位该类型
当lcredit、ucredit、dcredit、ocredit = N大于0时,代表该类型如果包含位数大于等于N,则该类型积分值为N;如果包含位数小于N,则该类型积分仍为默认值1
注意: 无论minlen设置为多少,也无论怎么更改类型积分,pam_cracklib都不会允许用户选择少于六个字符的密码—这是模块内置的最小值。

例子:
Password requisite pam_pwquality.so lcredit=2 ucredit=2 minlen=9
该参数需满足最小积分9分,如果小写字母个数大于等于2则积2分,大写同理
密码 Ao3746评分:长度积分6 + 小写积分1 + 大写积分1 + 数字积分1 =9满足要求(小写数量和大写数量均少于2,只能各积一分)
密码 AO3746评分:长度积分6 + 大写积分2 + 数字积分1 =9满足要求
其它密码复杂性:retry=N:定义登录/修改密码失败时,可以重试的次数;
difok=N:定义新密码中必须有几个字符要与旧密码不同。但是如果新密码中有1/2以上的字符与旧密码不同时,该新密码将被接受。模块默认会记录最近5次的密码;
minclass=N:定义新密码所需的最小类型数;
maxrepeat=N:定义拒绝包含超过N个连续相同字符的密码
enforce_for_root:启动该参数后Root用户修改密码时也需遵守密码检查,否则模块仅做提醒。注意,Root用户不会要求输入旧密码,因此不会执行比较旧密码和新密码的检查。

加固检查

  1. 查看/etc/shadow配置文件

shadow 以『:』作为分隔符,共有九个字段
1. 账号名称
2. 加密后的密码
3. 密码最后一次的修改时间:数字的含义是从 1970 年 1 月 1 日到现在的天数
4. 最小修改时间间隔天数:表示从变更密码的日期算起,多少天内无法再次修改密码,如果是 0 的话,则没有限制
5. 密码有效天数:默认值为 99999
6. 密码需要变更前的警告天数:默认值为 7
7. 密码过期后的宽限天数:在此字段规定的宽限天数内,用户仍可以登录系统;如果过了宽限天数,系统将不再让此账户登陆,完全禁用。数值为0时代表密码过期后立即失效;数值为-1时代表密码永不失效
8. 账号失效日期:过了这个日期账号禁用。使用自1970年1月1日以来的总天数作为账户的失效时间。
Linux账号加固手册 - 图1

  1. 使用命令 chage -l 账号 e.g chage -l lam #查看lam账号配置

Linux账号加固手册 - 图2