1、 确保配置了bootloader配置的权限
chown root:root /boot/grub2/grub.cfg
chmod og-rwx /boot/grub2/grub.cfg
2、 确保设置了引导程序密码
使用以下命令创建加密的密码grub2-setpassword:
grub2-setpassword
Enter password:
Confirm password:
3、 确保单用户模式需要身份验证
编辑/usr/lib/systemd/system/rescue.service 及/usr/lib/systemd/system/emergency.service 设置ExecStart
ExecStart=-/bin/sh -c "/sbin/sulogin; /usr/bin/systemctl --fail --no-block default"
4、 确保核心转储受到限制
将以下行添加到/etc/security/limits.conf或/etc/security/limits.d/*文件中:
* hard core 0
在/etc/sysctl.conf或/etc/sysctl.d/*文件中设置以下参数:
fs.suid_dumpable = 0
运行以下命令来设置活动内核参数
sysctl -w fs.suid_dumpable=0
5、 确保启用了地址空间布局随机化(ASLR)
在/etc/sysctl.conf或/etc/sysctl.d/*文件中设置以下参数:
kernel.randomize_va_space = 2
运行以下命令来设置内核参数:
sysctl -w kernel.randomize_va_space=2
6、 确保已配置SSH空闲超时间隔
编辑/etc/ssh/sshd_config文件以设置参数:
ClientAliveInterval 300
ClientAliveCountMax 0
7、 确保SSH MaxAuthTries设置为4或更低
编辑/etc/ssh/sshd_config文件以设置参数,如下所示:
MaxAuthTries 4
8、 确保已禁用SSH空密码登录
编辑/etc/ssh/sshd_config文件以设置参数:
PermitEmptyPasswords no
9、 确保配置了密码尝试失败的锁定
编辑/etc/pam.d/password-auth 和/etc/pam.d/system-auth 文件:
auth required pam_faillock.so preauth audit silent deny=5 unlock_time=900
auth [success=1 default=bad] pam_unix.so
auth [default=die] pam_faillock.so authfail audit deny=5 unlock_time=900
auth sufficient pam_faillock.so authsucc audit deny=5 unlock_time=900
10、 确保默认用户umask限制为027或更高
编辑/etc/bash.bashrc、/etc/profile和/etc/profile.d/*.sh文件(以及系统上支持的任何其他Shell的适当文件),并添加或编辑umask参数,如下所示:
备注(修复完后运行以下命令以确保是否已完全修复)
grep "umask" /etc/bashrc
grep "umask" /etc/profile
grep "umask" /etc/profile.d/*.sh
11、Linux策略部分
a) 要求至少8位,并且由3种类型组成大小写,数字,字符组成
在RHEL 6的 “/etc/pam.d/passwd”文件中添加如下这一行直接添加约束条件:
~]# vi /etc/pam.d/passwd
password required pam_cracklib.so retry=3 minlen=8 minclass=4 maxsequence=3 maxrepeat=3
RHEL 7在“/etc/security/pwquality.conf”文件中添加以下4行约束条件:
~]# vi /etc/security/pwquality.conf
minlen=8
minclass=4
maxsequence=3
maxrepeat=3
retry=3 定义登录/修改密码失败时,可以重试的次数;
type=xxx 当添加/修改密码时,系统给出的缺省提示符是什么,用来修改缺省的密码提示文本。默认是不修改的,如上例。
minlen=8 定义用户密码的最小长度为8位
ucredit=-2 定义用户密码中最少有2个大写字母 (数字为负数,表示至少有多少个大写字母;数字为正数,表示至多有多少个大写字母;下面同理)
lcredit=-4 定义用户密码中最少有4个小写字母
dcredit=-1 定义用户密码中最少有1个数字
ocredit=-1 定义用户密码中最少有1个特殊字符(除数字、字母之外)
remember=5 修改用户密码时最近5次用过的旧密码就不能重用了
b) 不能与前10次密码重复
~]# vi /etc/pam.d/system-auth
use_authtok 后面添加 remember=5
RHEL7
~]# sed -i "s/remember=5/remember=10/g" /etc/pam.d/system-auth
RHEL6 and RHEL 7.1/7.2
~]# sed -i 's/\(use_authtok\).*/\1 remember=10/' /etc/pam.d/system-auth
c) 每90天修改一次
全局配置
~]# vi /etc/login.defs #更改
PASS_MAX_DAYS 90 #密码的最大有效期, 99999:永久有期
PASS_MIN_DAYS 0 #是否可修改密码,0可修改,非0多少天后可修改
PASS_MIN_LEN 8 #密码最小长度,使用pam_cracklib module,该参数不再有效
PASS_WARN_AGE 7 #密码失效前多少天在用户登录时通知用户修改密码
之前已经创建的用户需要单独修改有效期
~]# chage -M 90 -W 7 osa
d) 自动Session锁定:10分钟空闲
~]# vim /etc/ssh/sshd_config #SSH 会话用户在10分钟内不活动后自动登出。
ClientAliveInterval 600
ClientAliveCountMax 0
测试生效的配置
~]# cat /etc/profile
export TMOUT=600
readonly TMOUT
~]# source /etc/profile
e) 账号自动锁定:5次失败后lock
~]# vi /etc/pam.d/sshd #第一行配置
auth required pam_tally2.so deny=5 unlock_time=1800
f) 禁止ROOT登录
禁止root登录
~]# vi /etc/sshd/sshd_config
PermitRootLogin no
~]# systemctl restart sshd