一、账号安全基本措施
1.系统账号清理
将非登录用户的 Shell 设为 /sbin/nologin,有效地防止这些用户登录到系统。
(使用 usermod 命令来修改用户的 Shell👇)
usermod -s /sbin/nologin 用户名
锁定长期不使用的账号
usermod -L 用户名: 锁定指定用户的账号,使其无法登录
passwd -l 用户名: 也是用于锁定用户账号,类似于 usermod 命令
passwd -S 用户名:用于显示指定用户的密码状态
删除无用的账号
userdel -r 用户名
-r 表示连同用户的主目录一起删除。这样可以确保相关文件和目录也被删除 👆
锁定账号文件passwd、shadow
chattr +i /etc/passwd /etc/shadow
使用 chattr 命令,并使用 +i 选项来将文件设置为不可修改(即使是 root 用户也无法修改这两个文件。)
查看账号文件的锁定状态
lsattr /etc/passwd /etc/shadow
用于查看指定文件的属性,可以使用这个命令来确认文件是否被成功锁定。
解锁账号文件 passwd
和 shadow
chattr -i /etc/passwd /etc/shadow
使用 chattr 命令,并使用 -i 选项来取消文件的不可修改属性,从而解锁文件
2.密码安全控制
设置密码有效期
-m <天数>:指定密码可更改的最小天数。如果设置为 0,表示用户可以随时修改密码。
-M <天数>:指定密码保持有效的最大天数,即密码的有效期。
-w <天数>:指定用户密码到期前,提前收到警告信息的天数。
-E <日期>:指定账号的到期日期。
-d <日期>:指定用户密码上一次更改的日期。
-i <天数>:指定停滞时期,即密码过期后多少天内账号仍可用。
[root@localhost ~]# useradd laoliu
[root@localhost ~]# echo 123456 | passwd --stdin laoliu
更改用户 laoliu 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@localhost ~]# chage -M 60 laoliu #密码有效期为60天
[root@localhost ~]#
[root@localhost ~]# chage -M 99999 laoliu #99999代表密码永不过期
[root@localhost ~]#
[root@localhost ~]# chage -d 0 laoliu #用户下次登录修改密码
3.历史命令安全管理
查看历史命令 history
限制历史命令数量 vim /etc/profile --> export HISTSIZE=XX --> source /etc/profile清空历史命令 history -c #临时清空
vim /etc/profile --> > ~/.bash_history
也可以自己在下面手动添加 👆
最后用这条 source /etc/profile 进行刷新👆
4.限制su切换用户
将信任的用户加入到wheel组中
gpasswd wheel -a 用户名
用于将指定用户添加到 wheel
组中,从而赋予该用户sudo权限 👆
[root@localhost ~]# useradd laoliu
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# gpasswd wheel -a laoliu
正在将用户“laoliu”加入到“wheel”组中
[root@localhost ~]# su laoliu
[laoliu@localhost root]$ su root
密码:
[root@localhost ~]#
修改su的PAM认证配置文件
vim /etc/pam.d/su -> 开启 auth required pam_wheel.so use_uid 的配置
二、Linux中的PAM安全认证
1.PAM简介
PAM(Pluggable Authentication Modules)可拔插式认证模块
允许系统管理员通过配置文件来定义系统的认证策略,从而实现灵活的用户认证方式。
使PAM成为一种高效而且灵活便利的用户级别的认证方式
也是当前Linux服务器普遍使用的认证方式
2.PAM认证原理
一般遵循的顺序:Service(服务)–> PAM(配置文件)–> pam_*.so;
首先要确定哪一项应用服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证模块(位于 /lib64/security/下)进行安全认证。用户访问服务器的时候,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证。不同的应用程序所对应的PAM 模块也是不同的。
如果想查看某个程序是否支持 PAM 认证,可以用 ls 命令进行查看/etc/pam.d/。
3.PAM的配置文件
PAM的配置文件中的每一行都是一个独立的认证过程,它们按从上往下顺序依次由PAM模块调用
第一列代表PAM认证模块类型
auth:认证模块接口,如验证用户身份、检查密码是否可以通过,并设置用户凭据
account:账户模块接口,检查指定账户是否满足当前验证条件,如用户是否有权访问所请求的服务,检查账户是否到期
password:密码模块接口,用于更改用户密码,以及强制使用强密码配置
session:会话模块接口,用于管理和配置用户会话。会话在用户成功认证之后启动生效
第二列代表PAM控制标记
required:模块结果必须成功才能继续认证,如果在此处测试失败,则继续测试引用在该模块接口的下一个模块,直到所有的模块测试完成,才将结果通知给用户。
requisite:模块结果必须成功才能继续认证,如果在此处测试失败,则会立即将失败结果通知给用户。
sufficient:模块结果如果测试失败,将被忽略。如果sufficient模块测试成功,并且之前的required模块没有发生故障,PAM会向应用程序返回通过的结果,不会再调用堆栈中其他模块。
optional:该模块返回的通过/失败结果被忽略。一般不用于验证,只是显示信息(通常用于 session 类型)。
include:与其他控制标志不同,include与模块结果的处理方式无关。该标志用于直接引用其他PAM模块的配置参数
第三列代表PAM模块
默认是在/lib64/security/目录下,如果不在此默认路径下,要填写绝对路径。
同一个模块,可以出现在不同的模块类型中,它在不同的类型中所执行的操作都不相同,这是由于每个模块针对不同的模块类型编制了不同的执行函数。
第四列代表PAM模块的参数
这个需要根据所使用的模块来添加。
传递给模块的参数。参数可以有多个,之间用空格分隔开
三、使用sudo提权
1.使用sudo
用途:以其他用户身份(通常是超级用户,如 root)执行授权的命令
用法:sudo 授权命令
2.配置之sudo授权
visudo或者vi /etc/sudoersc
记录格式:用户主机名=命令程序列表
输入vim /etc/sudoers
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数网络安全工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点!真正的体系化!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
.(img-w1zw5h5G-1715530555955)]
[外链图片转存中…(img-Baidsjpx-1715530555955)]
[外链图片转存中…(img-i5QznRgJ-1715530555955)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点!真正的体系化!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!