禁用或删除无用账号
减少系统无用账号,降低安全风险。
操作步骤
- 使用命令
userdel <用户名>
删除不必要的账号 - 使用命令
passwd -l <用户名>
锁定不必要的账号 - 使用命令
passwd -u <用户名>
解锁必要的账号
检查特殊账号
检查是否存在空口令和root权限的账号。
操作步骤
- 查看空口令和root权限账号,确认是否存在异常账号:
- 使用命令
awk -F: '($2=="")' /etc/shadow
查看空口令账号。 - 使用命令
awk -F: '($3==0)' /etc/passwd
查看UID为零的账号。
- 加固空口令账号:
- 使用命令
passwd <用户名>
为空口令账号设定密码。 - 确认UID为零的账号只有root账号。
添加口令策略
修改配置文件/etc/login.defs
PASS_MAX_DAYS 90 #新建用户的密码最长使用天数
PASS_MIN_DAYS 0 #两次密码修改之间最小的间隔天数
PASS_MIN_LEN 8 #密码最小长度
PASS_WARN_AGE 7 #口令失效前多少天开始通知用户修改密码
也可以通过下列命令来对某个用户进行设置
#表示将此用户的密码最长使用天数设为30,最短使用天数设为0,密码2000年1月1日过期,过期前七天警告用户
chage -m 0 -M 30 -E 2000-01-01 -W 7 <用户名>
设置账户锁定策略
设置连续输错三次密码,账号锁定五分钟
vi /etc/pam.d/common-auth
#新增该项
auth required pam_tally.so onerr=fail deny=3 unlock_time=300
用户修改密码时的策略
#修改配置文件/etc/pam.d/system-auth
#它表示禁止使用最近用过的5个密码
password sufficient pamunix.so sha512 shadow nullok tryfirstpass useauthtok remember=5
#这个参数表示密码的最小长度。当用户设置新密码时,系统会检查这个参数,如果新设的密码长度小于这个参数设置的值,会收到警告提示。我设置最小密码长度为 12,try_first_pass retry=3代表在密码设置交互界面,用户有3次机会重设密码
password requisite pam_cracklib.so try_first_pass retry=3 minlen=12
#这个参数表示密码中至少需要的大写字母的个数,这里设置密码(中的大写字母)的最小长度为 1 个字母
password requisite pam_cracklib.so try_first_pass retry=3 minlen=12 ucredit=-1
#这个参数表示密码中至少需要的小写字母的个数,这里设置密码(中的小写字母)的最小长度为 1 个字母
password requisite pam_cracklib.so try_first_pass retry=3 minlen=12 lcredit=-1
#这个参数表示设置密码中最少的数字个数,这里设置密码(中的小写字母)的最小长度为 1 个数字
password requisite pam_cracklib.so try_first_pass retry=3 minlen=12 dcredit=-1
#这个参数表示设置密码中最少的符号,这里设置密码(中的其他符号)的最小长度为 1 个字符
password requisite pam_cracklib.so try_first_pass retry=3 minlen=12 ocredit=-1
禁止用户su到root
vi /etc/pam.d/su
#下列配置表示只允许test组用户su到root
auth required pam_wheel.so group=test
禁止root直连
允许root用户登录是很不安全的,所以一般在我们生产环境中都会选择禁止root直连。
修改配置文件
vi /etc/ssh/sshd_config
#PermitRootLogin yes //将前面的“#”去掉,短尾“Yes”改为“No”,并保存文件
重启sshd服务生效
Centos6:service sshd restart
Centos7:systemctl restart sshd.service
设置登录超时
vi /etc/profile
将以 TMOUT= 开头的行注释,设置为TMOUT=180,即超时时间为三分钟
设置文件的umask值
vi /etc/profile
添加行 umask 027, 即新创建的文件属主拥有读写执行权限,同组用户拥有读和执行权限,其他用户无权限
记录所有用户的登录和操作日志
运行 [root@xxx /]# vim /etc/profile
打开配置文件
# 在配置文件中新增以下内容
history
USER=`whoami`
USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`
if [ "$USER_IP" = "" ]; then
USER_IP=`hostname`
fi
if [ ! -d /var/log/history ]; then
mkdir /var/log/history
chmod 777 /var/log/history
fi
if [ ! -d /var/log/history/${LOGNAME} ]; then
mkdir /var/log/history/${LOGNAME}
chmod 300 /var/log/history/${LOGNAME}
fi
export HISTSIZE=4096
DT=`date +"%Y%m%d_%H:%M:%S"`
export HISTFILE="/var/log/history/${LOGNAME}/${USER}@${USER_IP}_$DT"
chmod 600 /var/log/history/${LOGNAME}/*history* 2>/dev/null
运行 [root@xxx /]# source /etc/profile
加载配置生效
注意: /var/log/history 是记录日志的存放位置,可以自定义
通过上述步骤,可以在 /var/log/history 目录下以每个用户为名新建一个文件夹,每次用户退出后都会产生以用户名、登录IP、时间的日志文件,包含此用户本次的所有操作(root用户除外)