一、账号安全控制
1.1、账号安全基本措施
1.1.1、系统账号清理
- 将非登录用户的shell设为/sbin/nologin
- 锁定长期不使用的账号
- 删除无用的账号
1.1.1.1、实验1
用于匹配以/sbin/nologin结尾的字符串,$
表示行的末尾。
(一般是程序用户改为nologin)
grep "/sbin/nologin$" /etc/passwd
usermod -s /sbin/nologin 用户名
改回去
1.1.1.2、实验2
账号锁住
usermod -L wangwu #锁定账号
或passwd -l wangwu锁定用户账户
passwd -S wangwu# 查看账号状态
解锁(需要有密码不然要加p)
usermod -U wangwu
passwd -u wangwu
1.1.1.3、实验3
删除无用账号
1.1.1.4、锁定文件
attr 属性名
如果服务器中的用户账号已经固定,不再进行更改,还可以采取锁定账号配置文件的方法。使用 chattr 命令,分别结合"+i""-i"选项来锁定、解锁文件,使用 lsattr 命令可以查看文件锁定情况
锁 chattr +i /etc/passwd /etc/shadow
测试添加一个用户
查 lsattr /etc/passwd /etc/shadow
解 chattr -i /etc/passwd /etc/shadow
1.1.2、密码安全控制
- 设置密码有效期
- 要求用户下次登录时修改密码
1.1.2.1、实验1
vim /etc/login.defs
对新建的用户有效
其中PASS_MIN_LEN:指定密码的最小长度,默认不小于 5 位,但是现在用户登录时验证已经被 PAM 模块取代,所以这个选项并不生效。
企业会把密码有效期改为30 60 90 天这样
1.1.2.1、实验2
密码失效时间M m是需要修改密码的最小间隔,也就是几天可以修改一次密码(0表示随时可以修改)
当使用 -d 0 的时候,下一次登录需要强制修改密码(d本身代表密码最近一次被更改的日期)
1.1.3、命令历史限制
历史命令会翻到诸如密码或其他操作,我们要减少历史记录的数量
- 减少记录的命令条数
- 注销时自动清空命令历史
- 终端自动注销
- 闲置600秒后自动注销
history -c 临时的清除
1.1.3.1、实验1
用于将来的新登录的用户
在vim /etc/profile
改成10
需要重启后生效
1.1.3.2、实验2
在.bash_history删除
或者
echo " " > .bash_history #清空记录
这个记录不影响然当前 shell 会话中 history
命令的输出,因为 history
命令显示的是当前 shell 会话中存储的历史记录,而不是从 .bash_history
文件中读取的内容。
并且当 shell 会话结束时,这些记录会被追加到 .bash_history
文件中,但是还是要清。
其他办法
如果需要每个用户登出时都清除输入的命令历史记录,可以在/etc/skel/.bash_logout文件中添加下面这行rm -f $HOME/.bash_history 。这样,当用户每次注销时,.bash_history文件都会被删除
1.1.3.3、实验3
或者写在其他.bash_profile或者.bashrc 下
关于环境变量的读取顺序:
/etc/profile --> .bash_profile --> .bashrc --> /bin/bash
修改/etc/profile
文件需要管理员权限
1.1.4、终端自动注销
需要注意的是,当正在执行程序代码编译、修改系统配置等耗时较长的操作时,应避免设置 TMOUT 变量。必要时可以执行"unset TMOUT"命令取消 TMOUT 变量设置
1.1.4.1、实验1
将后面新登录用户都有这个设置
vim /etc/profile
G到最后一行补充
1.1.5、权限的限制
限制su命令用户
默认情况下,任何用户都允许使用 su 命令,从而有机会反复尝试其他用户(如 root) 的登录密码,这样带来了安全风险。为了加强 su 命令的使用控制,可以借助于 pam_wheel 认证模块,只允许极个别用户使用 su 命令进行切换。
1.1.5.1、实验1
在/etc/pam.d/su文件里设置禁止用户使用su命令
a、以上两行是默认状态(即开启第一行,注释第二行),这种状态下是允许所有用户间使用su命令进行切换的。
b、两行都注释也是运行所有用户都能使用su命令,但root下使用su切换到其他普通用户需要输入密码;如果第一行不注释,则root使用su切换普通用户就不需要输入密码(pam rootok. so模块的主要作用是使uid为0的用户,即root用户能够直接通过认证而不用输入密码。)
c、如果开启第二行,表示只有root用户和wheel组内的用户才可以使用su命令
d、如果注释第一行,开启第二行,表示只有whee1组内的用户才能使用su命令,root用户也被禁用su命令。
实现过程如下:将授权使用 su 命令 的用户添加到 wheel 组,修改/etc/pam.d/su 认证配置以启用 pam_wheel 认证。
锁定文件
二、系统引导和登录控制
三、弱口令检测
JohntheRipper是一款开源的密码破解工具,可使用密码字典(包含各种密码组合的列表文件)来进行暴力破解。
切换到 /opt目录下
1.解压工具包
2.安装软件编译工具
3.切换到src子目录,进行编译安装
4.准备待破解的密码文件
5.执行暴力破解
6.查看已破解出的账户列表
bash
#使用程序前的一些准备
tar -zxvf john-1.8.0.tar.gz
yum install -y gcc gcc-c++ make
cd /opt/john-1.8.0/src
make clean linux-x86-64
#准备文件
cp /etc/shadow /opt/shadow.txt
#运行破解
cd /opt/john-1.8.0/run
./john /opt/shadow.txt
#查看
./john --show /opt/shadow.txt
#指定的字典
/john --wordlist=./password.lst /opt/shadow.txt