一、账号安全控制
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 用户名
![](https://i-blog.csdnimg.cn/direct/f7290b7f3d7c476492ac72514ae53863.png)
![](https://i-blog.csdnimg.cn/direct/a340bfc2fbd74184a8aab543bba40ecd.png)
![](https://i-blog.csdnimg.cn/direct/2eacd8cfe7cd4c5ca7bf47e02ee89c4f.png)
改回去
![](https://i-blog.csdnimg.cn/direct/936ccbd3ff694135b4ffc56aa1e6830c.png)
1.1.1.2、实验2
账号锁住
usermod -L wangwu #锁定账号
或passwd -l wangwu锁定用户账户
passwd -S wangwu# 查看账号状态
![](https://i-blog.csdnimg.cn/direct/f3e3c16fa92c43329593449c08a08158.png)
解锁(需要有密码不然要加p)
usermod -U wangwu
passwd -u wangwu
![](https://i-blog.csdnimg.cn/direct/e84542923c7c4ef7bd6e66fea7aacdda.png)
1.1.1.3、实验3
删除无用账号
![](https://i-blog.csdnimg.cn/direct/7366a2d23140491cbab0ae82cdce23b4.png)
1.1.1.4、锁定文件
attr 属性名
如果服务器中的用户账号已经固定,不再进行更改,还可以采取锁定账号配置文件的方法。使用 chattr 命令,分别结合"+i""-i"选项来锁定、解锁文件,使用 lsattr 命令可以查看文件锁定情况
锁 chattr +i /etc/passwd /etc/shadow
![](https://i-blog.csdnimg.cn/direct/d67c6a9c2a7b4b03bf5f122762b33892.png)
测试添加一个用户
![](https://i-blog.csdnimg.cn/direct/28456fbb1d2248a4ba02a58305b7c34f.png)
查 lsattr /etc/passwd /etc/shadow
![](https://i-blog.csdnimg.cn/direct/08b17ee8ea224149917315b2dda845b6.png)
解 chattr -i /etc/passwd /etc/shadow
![](https://i-blog.csdnimg.cn/direct/673d891b01a241c2ac46ab71c4b2263e.png)
1.1.2、密码安全控制
- 设置密码有效期
- 要求用户下次登录时修改密码
1.1.2.1、实验1
vim /etc/login.defs
对新建的用户有效
![](https://i-blog.csdnimg.cn/direct/82acc43e000744c2ba23ca3d233e3837.png)
其中PASS_MIN_LEN:指定密码的最小长度,默认不小于 5 位,但是现在用户登录时验证已经被 PAM 模块取代,所以这个选项并不生效。
企业会把密码有效期改为30 60 90 天这样
1.1.2.1、实验2
密码失效时间M m是需要修改密码的最小间隔,也就是几天可以修改一次密码(0表示随时可以修改)
![](https://i-blog.csdnimg.cn/direct/0a1174abec4d47b2a48e5430213749a5.png)
![](https://i-blog.csdnimg.cn/direct/e0fc581e4fbf46a3a4f28c7050d0defa.png)
当使用 -d 0 的时候,下一次登录需要强制修改密码(d本身代表密码最近一次被更改的日期)
![](https://i-blog.csdnimg.cn/direct/46f4f8b32a0941098117bcbcba5502ff.png)
![](https://i-blog.csdnimg.cn/direct/cf5400fb26f5498fbb8b97b6e0d16f76.png)
1.1.3、命令历史限制
历史命令会翻到诸如密码或其他操作,我们要减少历史记录的数量
- 减少记录的命令条数
- 注销时自动清空命令历史
- 终端自动注销
- 闲置600秒后自动注销
history -c 临时的清除
1.1.3.1、实验1
用于将来的新登录的用户
在vim /etc/profile
![](https://i-blog.csdnimg.cn/direct/ad830379e904418d82b49bcd2762b476.png)
改成10
![](https://i-blog.csdnimg.cn/direct/f3de5998b80c428b8a7fb3a303decebc.png)
需要重启后生效
![](https://i-blog.csdnimg.cn/direct/a588a59b7a6c476caf2a956fb22c3956.png)
1.1.3.2、实验2
在.bash_history删除
![](https://i-blog.csdnimg.cn/direct/3b3c6f36951540edb70bf0d57220163e.png)
或者
echo " " > .bash_history #清空记录
这个记录不影响然当前 shell 会话中 history
命令的输出,因为 history
命令显示的是当前 shell 会话中存储的历史记录,而不是从 .bash_history
文件中读取的内容。
并且当 shell 会话结束时,这些记录会被追加到 .bash_history
文件中,但是还是要清。
其他办法
如果需要每个用户登出时都清除输入的命令历史记录,可以在/etc/skel/.bash_logout文件中添加下面这行rm -f $HOME/.bash_history 。这样,当用户每次注销时,.bash_history文件都会被删除
![](https://i-blog.csdnimg.cn/direct/a728342d483f4e6cbfcb15173f7207fe.png)
1.1.3.3、实验3
![](https://i-blog.csdnimg.cn/direct/2329509892a74cd3aba627aa9930bd88.png)
或者写在其他.bash_profile或者.bashrc 下
关于环境变量的读取顺序:
/etc/profile --> .bash_profile --> .bashrc --> /bin/bash
![](https://i-blog.csdnimg.cn/direct/bc607da51e1e4214afcfd4f36db15b97.png)
修改/etc/profile
文件需要管理员权限
1.1.4、终端自动注销
需要注意的是,当正在执行程序代码编译、修改系统配置等耗时较长的操作时,应避免设置 TMOUT 变量。必要时可以执行"unset TMOUT"命令取消 TMOUT 变量设置
![](https://i-blog.csdnimg.cn/direct/71d2fee286ff419ca292aa355959e7d1.png)
1.1.4.1、实验1
将后面新登录用户都有这个设置
vim /etc/profile
![](https://i-blog.csdnimg.cn/direct/32e5b9aa9eaa42b19d8957bb8b645732.png)
G到最后一行补充
![](https://i-blog.csdnimg.cn/direct/534d9941435348c39bae80b943dc4e89.png)
1.1.5、权限的限制
限制su命令用户
默认情况下,任何用户都允许使用 su 命令,从而有机会反复尝试其他用户(如 root) 的登录密码,这样带来了安全风险。为了加强 su 命令的使用控制,可以借助于 pam_wheel 认证模块,只允许极个别用户使用 su 命令进行切换。
1.1.5.1、实验1
在/etc/pam.d/su文件里设置禁止用户使用su命令
![](https://i-blog.csdnimg.cn/direct/25b71212f826445c8ca2f71364139f44.png)
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是一款开源的密码破解工具,可使用密码字典(包含各种密码组合的列表文件)来进行暴力破解。
![](https://i-blog.csdnimg.cn/direct/2f99ea52d8f84e37884b0b7e555fb19e.png)
切换到 /opt目录下
1.解压工具包
![](https://i-blog.csdnimg.cn/direct/c826e109f7c44943a0c27049d3525f7b.png)
2.安装软件编译工具
![](https://i-blog.csdnimg.cn/direct/6a2359aad02a43d3b0d42a5706a02aad.png)
3.切换到src子目录,进行编译安装
![](https://i-blog.csdnimg.cn/direct/05ecd3f64184425faa4819d507f7334b.png)
4.准备待破解的密码文件
![](https://i-blog.csdnimg.cn/direct/f06c3b44ca584eb5a736675d5b2db44e.png)
5.执行暴力破解
![](https://i-blog.csdnimg.cn/direct/17aaf90c6eee45049898b47957daf68c.png)
6.查看已破解出的账户列表
![](https://i-blog.csdnimg.cn/direct/11836ba3a4a54d699f5129210240378c.png)
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