一.账号安全基本措施
系统账号清理
1.将非登录用户的shell改为/sbin/nologin (修改后该用户无法登录系统)
格式:usermod -s /sbin/nologin 用户名
2.锁定长期不使用的账号
方法一:
passwd -l 用户名 //锁定用户
passwd -u 用户名 //解锁用户
方法二:
usermod -L 用户名 //锁定用户
usermod -U 用户名 //解锁用户
passwd -S 用户名 //查看用户密码状态
3.删除无用的账号
userdel -r 用户名 #删除用户及其家目录
4.锁定账号文件passwd,shadow
锁定后将不能对文件进行更改,删除,重命名
chattr +i /etc/passwd /etc/shadow #锁定文件
chattr -i /etc/passwd /etc/shadow #解锁文件
lsattr /etc/passwd /etc/shadow #查看状态
密码安全控制
设置密码有效期
对于新建的用户---修改/etc/login.defs文件
vim /etc/login.defs
PASS_MAX_DAYS #密码最大有效期
修改密码最大有效期
对于已有的用户---chage
格式:chage -M 时间 用户名
例: chage -M 20 mzs #将用户mzs密码有效期设置为50天
chage -l mzs #查看当前设置
格式:chage -d 0 mzs #强制要求mzs在下次登录时修改密码
命令历史限制
1. 临时修改历史命令条数。只针对当前用户,退出登录后失效。
[root@localhost ~]# export HISTSIZE=200
2. 永久修改历史命令条数。编辑配置文件,设置历史命令条数。
[root@localhost ~]# vim /etc/profile //设置历史命令条数记录为200条
HISTSIZE=200
[root@localhost ~]# source /etc/profile //刷新配置文件,使文件立即生效
3. 注销时自动清空历史命令
[root@localhost ~]# vim ~/.bash_logout
echo "" > ~/.bash_history
4. 登录时自动清空历史命令
[root@localhost ~]# vim ~/.bashrc
echo "" > ~/.bash_history
二.su命令 切换用户
su 用户名 #非登录式切换,即不会读取目标用户的配置文件,不改变当前工作目录,即不完全切换。
su - 用户名 #登录式切换,会读取目标用户的配置文件,切换至自已的家目录,即完全切换。
密码验证
- root 切换到任意用户,不验证密码。
- 普通用户切换到其他用户,需要验证目标用户的密码。
exit 退回至旧的用户身份
限制使用su命令的用户
- 默认情况下,任何用户都允许使用su命令,有机会反复尝试其他用户(如root)的登录密码,带来安全风险。
- 为了加强su 命令的使用控制,可借助于PAM认证模块,只允许极个别用户使用su 命令进行切换。
通过修改/etc/pam.d/su 文件
- 将允许使用su命令的用户加入wheel组。
- 启用pam_wheel认证模块。则只有wheel组内的用户可以使用su命令切换用户
开启第二行和第六行,去掉#为开启
将用户加入wheel组
格式:gpasswd -a 用户名 wheel
查看某个程序是否支持pam模块
可使用ls命令
例:查看su
ls /etc/pam.d | grep su
sudo 用户提权
sudo 的作用:默认是以 root 身份去执行授权的命令
sudo 命令 #第一次执行需要验证密码,默认超时时长为5分钟,在此期间不再重复验证密码 sudo -l 可以查看当前用户获得那些 sudo 权限
sudo -u 用户名 命令 #-u 以哪个用户的身份运行
sudo -v #查看相关配置信息
通过编辑 /etc/sudoers 文件
例:
mzs ALL=(ALL) ALL
用户 从哪个主机登录以哪个身份 允许运行哪些命令
sudo 别名
sudo别名有四种类型:
- User_Alias(用户)
- Runas_Alias(代表用户)
- Host_Alias(登录主机)
- Cmnd_Alias(命令)
例:创建用户别名MYUSERS=lucy,mike
User_Alias MYUSERS = lucy,mike
允许这两个用户使用/sbin/下的所有命令,除了reboot、poweroff、init、rm这四个命令。 (! 表示取反。! /sbin/reboot 表示不允许使用reboot命令。)
Cmnd_Alias MYCMNDS = /sbin/*,!/sbin/reboot,!/sbin/poweroff,!/sbin/init,!/usr/bin/rm
sudo 子目录
如果对所有用户进行提权都放在/etc/sudoers 一个文件中,非常不便于管理。这时可以在/etc/sudoers.d/ 下创建子目录。例如针对 测试部门的员工进行授权,可以创建/etc/sudoers.d/test;针对hr部门的员工进行授权,可以创建/etc/sudoers.d/hr。便于分类管理。
[root@localhost ~]# vim /etc/sudoers.d/test //创建子目录
zhangsan ALL=(root) /bin/mount
[root@localhost ~]# chmod 440 /etc/sudoers.d/test //设置权限,加固安全
[root@localhost ~]# ll /etc/sudoers.d/test
-r--r----- 1 root root 33 3月 7 17:51 /etc/sudoers.d/test
启用sudo日志
-
需要启用 Default logfile 配置
-
默认日志文件:/var/log/sudo
[root@localhost log]# visudo //修改配置文件
Default logfile="/var/log/sudo" //在最后一行添加 Default logfile 配置
三.终端登录安全控制
限制root只在安全终端登录
安全终端配置文件:/etc/securetty
将tty2 tty3用#注释掉 禁止root从tty2 tty3终端登录
禁止普通用户登录
- 建立/etc/nologin文件
- 删除nologin文件或者重启后即恢复正常
touch /etc/nologin #禁止普通用户登录
rm -rf /etc/nologin #取消登录用户登录限制
网络端口扫描
netstat命令是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。