1.系统账户清理
(1):将非登录用户的shell设置为/sbin/nologin
/sbin/nologin禁止普通用户登录
vim /etc/passwd
reboot重启后发现zhangsan用户无法登录
输入正确的密码发现仍然无法登录
(2):锁定长期不用的账户
锁定账户的方法: passwd -l 用户名 或 usermod -L 用户名
解锁账户的方法: passwd -u 用户名 或 usermod -U 用户名
使用lisi账户无法登录
此时,可以使用lisi账户登录了
(3):删除无用的账户
userdel 用户名 或者 userdel -r 用户名
userdel 用户名只删除用户,userdel -r 用户名会删除用户及用户的家目录
(4):锁定文件passwd和shadow
锁定/etc/passwd和/etc/shadow文件: chattr +i /etc/passwd /etc/shadow
查看/etc/passwd和/etc/shadow文件状态: lsattr /etc/passwd /etc/shadow
此时无法修改passwd和shadow文件
解锁/etc/passwd和/etc/shadow文件: chattr -i /etc/passwd /etc/shadow
查看/etc/passwd和/etc/shadow文件状态: lsattr /etc/passwd /etc/shadow
此时就可以修改passwd和shadow文件了(没有只读标志)
2.秘密安全控制
(1):设置密码有效期
- 新用户
vim /etc/login.defs
修改该文件中的PASS_MAX_DAYS的值,默认PASS_MAX_DAYS的值为99999(默认永不失效),可以将PASS_MAX_DAYS的值设为42,因为Windows中默认的密码失效日期为42天。
- 老用户
chage -M 密码有效天数 用户名(用户必须要事先存在)
(2):强制用户在下次登录时修改密码
chage -d 0 用户名
使用lisi账户登录时发现必须修改密码
3.历史命令限制
(1):减少记录的命令条数
vim /etc/profile
默认历史条数为1000条,修改HISTSIZE的值来修改历史命令条数
(2):注销时自动清空历史命令(使用普通用户进行尝试,不要使用root用户去测试)
vim ~/.bash_logout (~/.bash_logout文件,账户每次退出时执行)
在Linux中,所有执行过的历史命令都会存放在~/.bash_history文件中,而且每次登录上来之后都可以通过查看~/.bash_history这个文件或者按上键或者在命令行输入history都可以查看之前的历史命令,这就存在一个很大的安全隐患,因此应该在注销时自动清空历史命令。
然后关闭计算机,再次启动登录后在命令行输入history,发现无法查询之前的历史命令
4.终端自动注销(使用普通用户进行尝试,不要使用root用户去测试)
(1):修改配置文件
vim ~/.bash_profile
(2):在里面添加内容如下
这个数值不要给的太小,如果数值给的是1,那么这个计算机就会在一瞬间关机,只要你有一秒没有进行操作,那么计算机就会关机。建议测试完成后去掉这条语句。
(3):等待两分钟(但是我似乎等的时间大于两分钟,尽量多等会),然后会出现如下页面,系统自动注销了终端
5.使用su命令切换用户
(1):用途及用法
- 用途:Substitute User 切换用户
- 格式:su - 目标用户
(2):密码验证
- root ---> 任意用户,不需要验证密码
- 普通用户 ---> 其他用户,需要验证目标用户的密码
但这仍然存在安全问题,试想一下,任意一个普通用户都可以切换到root用户,那么如果被攻击者拿到一个普通用户的账户和口令,那么入侵者就有机会可以切换到root用户(当然了,入侵者必须要知道root的密码,这里说的是入侵者最起码有资格可以切换到root用户),其实,在一般的企业中,管理员会创建一个普通用户,一般情况下管理员都是以普通用户身份进行登录,如果需要进行一些只要root用户才可以进行的操作的话,才会切换到root用户,这样可以防止错误操作对系统造成破坏(例如以root用户进行rm -rf *)。因此,只要个别普通用户才可以有权利切换到root用户,其余的普通用户没有权利切换到root用户。这就需要启用pam_wheel认证模块。
(3):限制使用su命令的用户
- 启用pam_wheel认证模块
- 将允许使用su命令的用户加入到wheel组
1>:修改配置文件
vim /etc/pam.d/su
2>:修改内容如下
将红色方框中的内容前面的注释去掉
3>: 将zhangsan用户加入到wheel组中(wheel组与生俱来就存在,wheel组存在于/etc/group中)
gpasswd -a zhangsan wheel
4>:验证
"su -"是以目标用户的shell登录,"su"是以当前用户的shell登录。
当启用了pam_wheel认证之后,root用户可以切换到任意其他普通用户,但是只要加入到wheel组的用户才可以切换到root用户。如上图,zhangsan用户加入到了wheel组中,因此可以使用su命令切换到root用户,但是,lisi用户并没有加入到wheel组,因此无法切换到root用户。
(4):查看su操作记录
- 查看安全日志文件:/var/log/secure
tail /var/log/secure
6.使用sudo机制提升权限
(1):sudo命令的用途及用法
- 用途:以其他用户身份(root)执行授权的命令
- 用法:sudo 授权命令
(2):配置sudo授权
- visudo 或者 vim /etc/sudoers
- 记录格式:用户 主机名列表=命令程序列
1>:测试zhangsan用户的权限
2>:修改配置文件
visudo
3>:修改内容如下
zhangsan localhost=/usr/sbin/useradd
4>:验证(使用zhangsan用户去添加用户)
如图,zhangsan用户成功创建了wangwu用户。但是,此时wangwu用户并没有设置密码,如果zhangsan用户去为wangwu用户设置密码会报错,因为在刚才只授予了zhangsan用户添加用户的权力,没有授予zhangsan用户为新用户设置密码的权力。
(3):查看sudo操作记录
- 需要启用Defaults logfile配置
- 默认日志文件:/var/log/sudo
1>:修改配置文件
visudo
2>:修改内容如下
3>:查看日志文件(在执行这一步之前,一定要先使用su命令进行用户的切换,这样才能生成/var/log/sudo文件,否则文件不存在)
(4):查看授权的sudo操作
sudo -l
7.调整BIOS引导设置
(1):将第一引导设备设为当前系统所在硬盘
(2):禁止从其他设备(光盘、U盘、网络)引导系统
将对应的项设为“Disabled”
(3):将安全级别设为setup,并设置管理员密码
1>:设置超级账户密码
2>:确认要设置超级账户密码
3>:将passwd on boot设置为Enablesd(启用状态),这样每次进入到BIOS之前都要先输入密码才能进去。
4>:验证:重新进入BIOS时需要先输入密码才能进去
8.禁用重启热键Ctrl+Alt+Del功能
(1):打开配置文件
vim /etc/init/control-alt-delete.conf
(2):修改配置文件如下
(3):重启计算机
reboot
重启计算机之后发现热键不能使用。
9.grub菜单限制
通过grub引导可以来修改root密码,这样对我们造成了便利,如果密码遗忘,我们可以通过grub引导来修改密码(详细内容和方法可以看本人之前的博客常见系统故障修复(三)——root密码遗忘),但是这也为入侵者提供了方便,入侵者通过grub引导就可以进入系统并且修改root密码,这是十分严重的危险。因此需要设置密码来限制grub菜单。
grub密码记录的位置:
未经授权禁止修改启动参数(全局部分(第一个“title”之前))
未经授权禁止进入指定系统(系统引导部分(每个“title”部分之后))
(1):生成md5加密的密码串
(2):修改grub的配置文件
vim /boot/grub/grub.conf
修改内容如下
password --md5 $1$4INbR0$xDd1ZcDm5wFZ2oMslOePl. ----在第一个title之前添加这样一句话。
(3):重启计算机,进入grub引导模式需要输入密码(可以看本人之前的博客常见系统故障修复(三)——root密码遗忘)
reboot
10.终端登录安全控制
(1):减少终端数量
Linux默认开放6个终端,这样可能会引起一些安全性问题,所以可以关闭一些终端来提高安全性。
1>:修改配置文件
vim /etc/init/start-ttys.conf
修改内容如下
2>:重启计算机
reboot
3>:验证:按Ctrl+Alt+F1、Ctrl+Alt+F2、Ctrl+Alt+F3(有些计算机还需要按住Fn)来检测是否禁用了tty1、tty2、tty3。
(2):限制root只能在安全端登录
1>:修改配置文件
vim /etc/securetty
修改内容如下
2>:进入tty5,然后使用root进行登录,登录失败,使用其他普通用户登录,登录成功。
(3):禁止普通用户登录
1>:新建一个文件/etc/nologin
touch /etc/nologin(新建的文件里面没有任何内容,相当于禁止所有普通用户)
2>:重启计算机
reboot
3>:使用普通用户进行登录(无法登录)
4>:删除/etc/nologin文件
rm -f /etc/nologin
5>:重启计算机
reboot
6>:重新使用普通用户进行登录(此时可以成功登录)