1.1.1、系统账号清理
系统账号清理
将非登录用户的shell设为/sbin/nologin
锁定长期不使用的账号
删除无用的账号
锁定账号文件passwd、shadow
chattr命令
更改文件属性
参数 | 解释 |
---|---|
a | 让文件或目录仅供附加用途 |
i | 不得任意更改文件或目录 |
+ | 开启文件或目录的该项属性 |
- | 关闭文件或目录的该项属性 |
示例:
[root@localhost ~]# chattr +i /etc/passwd /etc/shadow 锁定passwd和shadow文件,不能更改
[root@localhost ~]# ls /etc/passwd /etc/shadow
/etc/passwd /etc/shadow
[root@localhost ~]# ls -l /etc/passwd /etc/shadow 这样看不出来
-rw-r--r--. 1 root root 2116 2月 23 23:07 /etc/passwd
----------. 1 root root 1200 2月 23 23:07 /etc/shadow
[root@localhost ~]# lsattr /etc/passwd /etc/shadow lsattr为显示文件隐藏属性
----i----------- /etc/passwd
----i----------- /etc/shadow
[root@localhost ~]# chattr -i /etc/passwd /etc/shadow 解锁passwd和shadow文件
[root@localhost ~]# lsattr /etc/passwd /etc/shadow lsattr查看文件隐藏属性
---------------- /etc/passwd
---------------- /etc/shadow
1.1.2、密码安全控制
设置密码有效期 chage -M 天数 用户
要求用户下次登录时修改密码 chage -d 0 用户
法一、设置密码有效期 chage -M 天数 用户
[root@localhost ~]# useradd kervin25 创建一个用户kervin25
[root@localhost ~]# id kervin25
uid=1001(kervin25) gid=1001(kervin25) 组=1001(kervin25)
[root@localhost ~]# passwd kervin25
更改用户 kervin25 的密码 。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@localhost ~]# chage -M 60 kervin25 改变kervin25用户密码有效期为60天
[root@localhost ~]# tail -5 /etc/shadow 查看末尾5行
postfix:!!:19046::::::
sshd:!!:19046::::::
tcpdump:!!:19046::::::
kervin24:$6$Gh97wz0PuTt2po5B$okFQpMNjwA1HYBeMpRQM6Dfx830jNq5rAeK.t4uW1yPZ2bCbqD7hrCT0vi4n9syT0KIieAAUe2nZCEY4SfN.V/::0:99999:7:::
kervin25:$6$Pk29zg3n$xA11jMiQipSiMVSlNyaitGB4oEB4Vbq.SFe5/Feo3AF/1Co8GiN10wRZ76BljNgVLp3aBVIhL25XBVmq0hH381:19058:0:60:7:::
法二、设置密码有效期
创建用户的默认设置文件 /etc/login.defs,修改PASS_MAX_DAYS
法三、要求用户下次登录时修改密码
chage -d 0 用户
[root@localhost ~]# chage -d 0 kervin2
1.1.3、命令历史
减少记录的命令条数
注销时自动清空命令历史
法一、减少记录的命令条数
主要是为了防止黑客从命令中找到含密码的记录
主要通过 /etc/Profile 文件 来修改
该文件是每个用户登录时,操作系统首先执行的文件,然后再将控制权交给用户主目录下的.profile文件
[root@localhost ~]# source /etc/profile source用法->重新执行刚修改的初始化文件,使之生效
法二、减少记录的命令条数
[root@localhost ~]# export HISTSIZE=200 将当前环境里的HISTSIZE改为200
注意:该命令只要当前登录用户或当前环境生效
法三、注销时自动清空命令历史
主要通过ls -a找到.bash.logout 文件来修改 (注:该文件为用户账号的初始配置文件,每次退出登录时执行)
[root@localhost ~]# vim .bash_logout
history -c -c为清空历史
clear
注:以后只要注销后,就可以清空历史命令,其他用户的.bash.logout文件位于/home下
1.1.4、终端自动注销
闲置600秒后自动注销
方法一、主要通过 /etc/Profile 文件 来修改
export TMOUT=600 表示闲置600秒后自动注销,export表示声明为全局变量
[root@localhost ~]# source /etc/profile source用法->重新执行刚修改的初始化文件,使之生效
方法二、
[root@localhost ~]# export TMOUT=200 闲置600秒后自动注销
注意:该命令只要当前登录用户或当前环境生效
1.2.1、su命令切换用户
用途及用法
用途:Substitute User,切换用户
格式:su - 目标用户 -等价于--login(带-表示使用目标用户的登录shell环境)
查看su操作记录
安全日志文件:/var/log/secure
缺点
用过su命令可以非常方便的切换为另一个用户,但前提条件是必须知道目标用户的登录密码 对于生产环境中的Linux服务器,每多一个人知道特权密码,其安全风险也就增加一分
解决方案:
法一、借助pam_wheel认证模块,只允许极个别的用户使用su命令进行切换
授权使用su命令的用户添加到wheel组,修改/etc/pam.d/su认证配置,启用pam_wheel认证
[root@localhost ~]# gpasswd -a kervin24 wheel 添加授权用户kervin24
正在将用户“kervin24”加入到“wheel”组中
[root@localhost ~]# grep wheel /etc/group 确认wheel组成员
wheel:x:10:kervin24
[root@localhost ~]# vi /etc/pam.d/su
[root@localhost ~]# id kervin24
uid=1000(kervin24) gid=1000(kervin24) 组=1000(kervin24),10(wheel)
1.2.2、使用sudo机制提升权限
sudo命令的用途及用法
用途:以其他用户身份(如root)执行授权的命令
用法:sudo授权命令
配置sudo授权
visudo或者vi /etc/sudoers
[root@localhost ~]# visudo
配置sudo授权
visudo 或者 vim /etc/sudoers
记录格式:
用户 主机名列表=命令程序列表
可以使用通配符“ * ”号任意值和“ !”号进行取反操作。
权限生效后,输入密码后5分钟可以不用重新输入密码。
示例:为普通用户提升权限,进行管理任务
su命令的安全隐患
默认情况下,任何用户都允许使用su命令,有机会反复尝试其他用户(如root) 的登录密码,带来安全风险;
为了加强su命令的使用控制,可借助于PAM认证模块,只允许极个别用户使用su命令进行切换。
什么是PAM?
PAM(Pluggable Authentication Modules)可插拔式认证模块
是一种高效而且灵活便利的用户级别的认证方式;
也是当前Linux服务器普遍使用的认证方式。
PAM提供了对所有服务进行认证的中央机制,适用于login,远程登陆,su等应用
系统管理员通过PAM配置文件来制定不同的应用程序的不同认证策略
PAM认证原理
PAM认证一般遵循的顺序: Service (服务) --> PAM (配置文件) --> pam_*.so;,
PAM认证首先要确定哪一项应用服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认 模块(位于/lib64/security/下)进行安全认证。
用户访问服务器的时候,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证。不同的应用程序所对应的PAM模块也是不同的。
如果想查看某个程序是否支持PAM认证,可以用ls命令进行查看/etc/pam.d/。
ls /etc/pam.d/ | grep su
PAM的配置文件中的每一行都是一个独立的认证过程,它们按从上往下的顺序依次由PAM模块调用。