1、删除或停用多余用户:
#删除默认账号
userdel -r 用户名
#查看用户状态
passwd -S 用户名
#锁定无关用户:这个方法修改之后虽然不能直接登录,但是可以su登录
passwd -l 用户名 或usermod -L 用户名
#禁用无用账号、修改用户的shell为/sbin/nologin:这个方法修改之后不再能登录,修改之后可以去/etc/passwd查看$7
usermod -s /sbin/nologin 用户名
2、修改默认账号和口令:
usermod -l 新用户 旧用户
sudo pkill -9 -u 旧用户名 杀掉旧用户进程
sudo usermod -d /home/新用户名 -m 新用户名
修改口令:
passwd 用户名
3、账号配置锁定阈值
1、执行命令 vim /etc/pam.d/system-auth或vim /etc/pam.d/ login
2、执行命令 vim /etc/pam.d/sshd
3、在上面2行编辑中添加配置
auth required pam_tally2.so onerr=fail deny=3 unlock_time=30 even_deny_root root_unlock_time=100
设置为密码连续错误3次锁定,锁定时间30秒,root密码连续错误3次锁定,时间为 100秒
4、禁止root账户登录
vim /etc/ssh/sshd_config
找到这一行,并将其改为 no
重启sshd服务
systemctl restart sshd
5、限制能够su为root的用户(因为禁止root登录之后,其他用户还是可以su到root的)
操作目的:检查是否使用pam认证模块禁止wheel组之外的用户su为root
检查方法:cat /etc/pam.d/su,查看是否有auth required /lib/security/pam_wheel.so这样的配置条目
加固方法:vim /etc/pam.d/su
在头部添加 a
uth required
/lib/security/pam_wheel
.so group=wheel
6、使用非root账户,并授权root权限
useradd sss #新增用户sss
passwd sss #设置sss用户密码
chmod -v u+w /etc/sudoers #增加 sudoers 文件的写的权限,默认为只读
vim /etc/sudoers #修改sudoers,增加下面一行后,保存退出
chmod -v u-w /etc/sudoers #删除 sudoers 的写的权限
7、超时自动断开ssh连接
vim /etc/profile在末尾加上TMOUT=100 (单位秒)
source /etc/profile 使修改生效
表示100秒内不操作,自动退出登录
8、禁用无关的组
vim /etc/group
在需要禁用的组前面加上#
7、口令定期修改
方法一:chage -M 30 test
表示设置test这个用户的密码有效期30天
方法二:
vim /etc/login.defs 修改配置文件
PASS_MAX_DAYS 60 新建用户的密码最长使用天数
PASS_MIN_DAYS 0 新建用户的密码最短使用天数
PASS_WARN_AGE 7 新建用户的密码到期提前提醒天数
8、口令的复杂度设置
vim /etc/pam.d/system-auth
找到 password requisite pam_cracklib.so这么一行替换成如下(没有就直接新增一行吧):
password requisite pam_cracklib.so retry=5 difok=3 minlen=10 ucredit=-1 lcredit=-3 dcredit=-3 dictpath=/usr/share/cracklib/pw_dict
参数含义:
尝试次数:5
新旧密码最少不同字符:3
最小密码长度:10
最少大写字母:1
最少小写字母:3
最少数字:3
9、查看linux账号锁定情况:
cat /etc/shadow
文件中字段主要含义为:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
- “登录名”是与/etc/passwd文件中的登录名相一致的用户账号
-
“口令”字段存放的是加密后的用户口令字:
- 如果为空,则对应用户没有口令,登录时不需要口令;
- 星号代表帐号被锁定;
- 双叹号表示这个密码已经过期了;
$6$
开头的,表明是用SHA-512加密;$1$
表明是用MD5加密;$2$
是用Blowfish加密;$5$
是用 SHA-256加密;
查看linux用户禁用情况:/etc/passwd
awk -F: '{if($7=="/sbin/nologin") {printf " 33[1;31m%s'、' 33[0;39m",$1}}' /etc/passwd可以查看出禁用的账号
因为需要用shell脚本去直接显示出禁用和启用的账号,所以整理出shell脚本,执行之后可以展示启禁用的账号
10、检查特殊账号:查看空口令和root权限的账号
查看root权限账号:通过判断uid是否为0来查找系统是否存在特权用户,使用命令awk即可查出
awk -F: '$3==0 {print $1}' /etc/passwd
查看是否存在空口令用户:通过使用命令来查找是否存在该字段长度为0的用户
awk -F: 'length($2)==0 {print $1}' /etc/shadow
awk -F: '($2 == "") { print $1 }' /etc/shadow
检查是否存在空口令用户,如果存在则设置密码
passwd 用户名
11、bash历史命令、设置bash保留历史命令的条数(上下键只能显示你设置的历史命令条数)
vim /etc/profile 修改配置文件
HISTSIZE=5 即保留5条命令
12、锁定关键文件/etc/passwd、/etc/shadow、/etc/group、/etc/gshadow、/etc/inittab,锁定关键的系统文件可以防止服务器提权后被篡改
1、对关键文件进行加锁,任何用户都不能对这些文件进行修改和删除,包括root用户,除非解锁后才可修改
chattr +i 文件名
比如chattr +i /etc/shadow
2、解锁
chattr -i 文件名
3、查看加锁状态,显示了就表示加锁
lsattr 文件名
13、设置history命令时间戳
vim /etc/profile
在文件的末尾添加参数
export HISTTIMEFORMAT="%F %T `whoami` "
source /etc/profile 使配置生效
在ssh中输入history显示情况如下:
![](https://img2020.cnblogs.com/blog/1633316/202007/1633316-20200709095250918-1961454816.png)
14、防止IP Spoof
IP spoof即IP地址欺骗,是一台主机设备冒充另外一台主机的IP地址,与其它设备通信,从而达到某种目的技术
vim /etc/host.conf添加nospoof on