文章目录
- 一、用户账号安全管理
- 1.1 系统账号的清理
- 1.2 对用户账号的操作
- 1.2.1 锁定和解锁用户
- 1.2.2 删除无用账号
- 1.3 对重要文件进行锁定
- 1.4 密码安全控制
- 1.4.1 新建用户
- 1.4.2 已有用户
- 二、历史命令管理
- 2.1 历史命令限制
- 2.2 自动清空历史命令
- 三、设置终端登录的安全管理
- 3.1 设置终端登录超时
- 3.2 禁止普通用户登录
- 四、对用户切换进行限制
- 4.1 su命令
- 4.2 限制普通用户使用`su`
- 4.2.1 wheel组
- 4.2.2 PAM安全认证
- 五、授权用户管理
- 5.1 sudo命令配置
- 5.2 使用别名批量设置普通用户权限
- 六、其他
- 6.1 开关机安全控制
- 6.2 弱口令扫描工具
- 七、总结
- 你会做哪些系统加固?
一、用户账号安全管理
1.1 系统账号的清理
将不需要登录的用户的登录shell设置为/sbin/nologin。
usermod -s /sbin/nologin 用户 //需要管理员权限
1.2 对用户账号的操作
1.2.1 锁定和解锁用户
usermod -L 用户 //锁定用户
passwd -l 用户 //锁定用户
usermod -U 用户 //解锁用户
passwd -u 用户 //解锁用户
1.2.2 删除无用账号
userdel -r 用户 //删除用户及家目录
1.3 对重要文件进行锁定
如:passwd shadow fstab ifcfg-ens33等文件
lsattr 文件 //查看文件状态锁定(全- 表示没有状态,有i表示被锁定)
chattr +i 文件 //锁定文件,可多个
chattr -i 文件 //解锁文件
1.4 密码安全控制
1.4.1 新建用户
在/etc/login.defs
文件中修改新建用户配置
在第25行,可以改变密码有效期,只对新建用户有效
1.4.2 已有用户
chage -M 30 用户 //改变已有用户密码有效期为30天
chage -d 0 用户 //使用户密码失效,下次登录时需要重设密码
二、历史命令管理
2.1 历史命令限制
history //查看历史命令
history -c //临时清空历史命令
永久限制历史命令数量:编辑 /etc/profile
进行全局配置,第46行,HISTSIZE
设置为60-80条,保存退出并source
,使立即生效
2.2 自动清空历史命令
vim ~/.bash_logout
echo "" > ~/.bash_history //注销时自动清空历史命令
vim ~/.bashrc
echo "" > ~/.bash_history //登录时自动清空历史命令
三、设置终端登录的安全管理
3.1 设置终端登录超时
vim /etc/profile
,键入行
TMOUT=600
(默认单位:秒):10分钟无操作,终端自动断开。
3.2 禁止普通用户登录
root用户 touch /etc/nologin
,可禁止普通用户登录
root用户 rm -rf /etc/nologin
,恢复普通用户登录
四、对用户切换进行限制
4.1 su命令
su 用户名
:在终端中切换已知密码的用户,root用户切换到普通用户默认不需要密码,普通用户发起的切换需要目标账户的密码。su
切换用户不会改变环境变量,用的还是之前用户的shell,是不完全切换。
su - 用户名
:登录式切换,读取目标用户的配置文件,切换到家目录。
如果在root用户下,su
相当于刷新;如果是普通用户,就是切换回root。
4.2 限制普通用户使用su
4.2.1 wheel组
wheel :wheel组,这个在组文件中查不到,属于特殊组,用来控制系统管理员的权限。专为管理员服务。
如果普通用户加入到wheel组,就能拥有管理员才能执行的一些权限。需要用sudo
命令执行wheel组的特殊权限。
vim /etc/pam.d/su //进入存放wheel组和默认root切换权限的配置
解除注释,保存退出后,可以发现除了wheel组用户和root用户,其他用户都不能切换用户。
wheel组默认是空的,没有任何成员,需要管理员账号手动添加。
gpasswd -a 用户 wheel
将用户添加到wheel组,用户即可获得切换用户的权限。
wheel组的权限很大,配置的时候要以最小权限的原则来进行配置。
4.2.2 PAM安全认证
PAM安全认证:Linux系统身份认证的一个架构,提供了一种标准的身份认证的接口,允许管理员定制化地管理认证方式和方法。
PAM认证是一个可插拔式的模块。所谓可插拔,是因为PAM认证的配置文件里,启用和停用只需要改变相应命令行开头的#号即可。
PAM的认证类型:
- 认证模块:验证用户的身份,基于密码的认证。
- 授权模块:控制用户对系统资源的访问,文件访问、进程权限等。
- 账户管理模块:管理用户账户的信息,密码过期策略,账户锁定策略等等。
- 会话管理模块:管理用户会话,注销用户等。
PAM认证:确定服务Service----> 加载/etc/pam.d下的PAM配置文件 ---->调用/lib64/security下的认证文件进行认证。
PAM安全认证流程:
控制位:
required:只有成功才能通过认证,验证失败也不会立刻结束,只有所有的要素验证完整才会最终返回结果。必要条件。
requisite:只有成功才能通过认证,但是一旦失败,其他要素不再验证,立刻结束。必要条件。
sufficient:一票通过,成功了之后就是满足条件,但是失败了也可忽略。成功了执行验证成功的结果,失败则返回验证失败的结果,是最终的结果。充分条件。
optional:选项,反馈给用户的提示或结果。
4.2.1中提到的su
命令配置就是在/etc/pam.d
目录下的su
文件中进行配置。/etc/pam.d
文件夹中的每个文件对应着一个应用程序或服务,用于指定该程序或服务的身份验证和授权规则。
五、授权用户管理
5.1 sudo命令配置
sudo:相当于给普通用户赋权
配置sudo需要对/etc/sudoers
进行编辑
vim /etc/sudoers //该文档是只读文档,需要wq!强制保存退出
visudo //快捷打开/etc/sudoers
进入配置,注释掉图中两行
再到100行,下行插入
test2 ALL=(root) /usr/bin/passwd //(多个赋权“,”隔开)
用户名 主机名=(用户) 命令
为test2用户赋权可以调用passwd命令,命令前加NOPASSWD
可免密码sudo
test2用户使用授权命令:
sudo passwd test2
test2可以给所有用户设置密码(包括root),这种行为很危险。所以sudo的配置一般仅给予需要的最小权限。
注意:第一次执行需要验证密码,默认超时时长为5分钟,在此期间不再重复验证密码
5.2 使用别名批量设置普通用户权限
还是在/etc/sudoers
文件里编辑:
Host_Alias MYHOSTS = localhost //设置主机名,可不设,用ALL匹配
User_Alias MYUSERS = test1,test2 //设置限制的用户,可批量
Cmnd_Alias MYCMNDS = /usr/sbin/*,!/usr/sbin/reboot,!/usr/sbin/poweroff,!/usr/sbin/init,!/usr/bin/rm //批量设置命令
// 注意:所有别名必须是全部大写
MYUSERS MYHOSTS=MYCMNDS //启用配置
命令授权部分,定义了主机localhost,开放给test1和test2这两个用户/sbin下面所有的命令( *表示全部),除了(!表示取反,即不给权限)重启,关机,改变运行级别和删除。
六、其他
6.1 开关机安全控制
grub2 -setpassword :给grub菜单设置密码,要修改菜单需要此密码
6.2 弱口令扫描工具
弱口令扫描工具:检测过于简单的密码
使用john-1.8.0
工具
yum -y install gcc gcc-c++ make
//安装依赖环境
cd /opt/john-1.8.0/src
//工具解压在/opt目录下
make clean linux-x86-64
cp /etc/shadow /opt/shadow.txt
//复制密码文件到/opt下,
cd ../run
./john /opt/shadow.txt
//扫描密码
./john --show /opt/shadow.txt
//查看扫描情况
七、总结
你会做哪些系统加固?
- 锁定重要文件
- 修改history,命令历史记录
- 禁止普通用户切换
- 设置sudo权限,给普通用户
- 设置grub菜单加密
- 把一些默认的端口号改掉
- 内核参数调整:vim /etc/sysctl.conf,内核参数的配置文件。