禁用或删除无用账号

减少系统无用账号,降低安全风险。

操作步骤

  • 使用命令 userdel <用户名> 删除不必要的账号
  • 使用命令 passwd -l <用户名> 锁定不必要的账号
  • 使用命令 passwd -u <用户名> 解锁必要的账号

检查特殊账号

检查是否存在空口令和root权限的账号。

操作步骤

  1. 查看空口令和root权限账号,确认是否存在异常账号:
  • 使用命令 awk -F: '($2=="")' /etc/shadow 查看空口令账号。
  • 使用命令 awk -F: '($3==0)' /etc/passwd 查看UID为零的账号。
  1. 加固空口令账号:
  • 使用命令 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用户除外)