本次实验使用的centos 7 版本

 

一、查找系统中是否存在空密码账户

1、使用命令: awk -F: '($2==""){print $1}' /etc/shadow 直接查看。可以看到系统中没有空密码账户

2、验证一下。添加一个账户qwe, 命令:useradd qwe(此时qwe虽然没有密码但是他还不能使用空密码登录)

3、使用root账户清除qwe密码,passwd -d qwe

 

4、再次使用 awk -F: '($2==""){print $1}' /etc/shadow 命令查看系统中空密码账户

 

二、查找uid值为0的用户。

如果passwd文件中uid值为0的话,那么这个用户就拥有root权限。

1、查找uid为0账户: awk -F: '($3==0){print $1}' /etc/passwd 可以看到当前系统只有root账户拥有root权限。

 

2、修改权限的话,以root用户权限修改passwd文件中的uid为0,保存退出。

在root用户下使用su - lu切换lu用户

此时切换lu用户是,依然显示的是root的状态,但是查看history明显是lu用户,而且lu已经获取到了root的权限,使用该用户可以做root用户的操作

查看uid为0命令 awk -F: '($3==0){print $1}' /etc/passwd 

  

 

 

接下来我想到,用lu用户修改/etc/passwd文件中root用户uid为1000,保存退出

然后切换回root用户,以此时uid为1000的root查看passwd时,文件已变为只读

 

三、安全加固的一些方案

1、密码策略

修改 /etc/login.defs文件中相应参数

PASS_MAX_DAYS 密码有效期

PASS_MIN_DAYS 修改密码的最短期限

PASS_MIN_LEN 密码最短长度

PASS_WARN_AGE 密码过期提醒

 

2、修改密码策略

修改vi /etc/pam.d/system-auth文件,将password    requisite     pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type= 注释并在其下面新增1行 password requisite pam_cracklib.so try_first_pass minlen=8 difok=5 dcredit=-1 lcredit=-1 ocredit=-1 retry=1 type= 

备注:

try_first_pass而当pam_unix验证模块与password验证类型一起使用时,该选项主要用来防止用户新设定的密码与以前的旧密码相同。

minlen=8:最小长度8位

difok=5:新、旧密码最少5个字符不同

dcredit=-1:最少1个数字

lcredit=-1:最少1个小写字符,(ucredit=-1:最少1个大写字符)

ocredit=-1:最少1个特殊字符

retry=1:1次错误后返回错误信息

type=xxx:此选项用来修改缺省的密码提示文本

 

3、新口令不能与10个最近使用的相同

修改vi /etc/pam.d/system-auth文件,在password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok 所在行的后面添加 remember=11

 

 

4、设置会话超时

修改vi /etc/profile文件在最后添加参数export TMOUT=600。(600秒  十分钟)

 

5、账户锁定策略(终端登录)

修改vi /etc/pam.d/system-auth文件,在# User changes will be destroyed the next time authconfig is run.行的下面,添加 auth required pam_tally2.so deny=5 unlock_time=1800 even_deny_root root_unlock_time=1800(终端登录失败5次,锁定半小时)

 

6、禁止root通过ssh远程登录

修改vi /etc/ssh/sshd_config文件,将配置参数#PermitRootLogin yes改成PermitRootLogin no