目录
一.账号安全基本措施
1.系统账号清理
将用户设置为无法登录
锁定账户
删除账户
锁定账户密码 本质锁定
1.1 将用户设置为无法登录
usermod -s /sbin/nologin 用户名
1.2 锁定用户
usermod -L 用户名
passwd -l 用户名
passwd -S 用户名
1.3 删除用户
userdel -r 用户名
1.4锁定账户密码
chattr +i /etc/passwd /etc/shadow
lsattr /etc/passwd /etc/shadow(锁定文件并查看状态)
chattr -i /etc/passwd /etc/shadow(解锁)
md5sum /etc/password 校验和
2.密码安全控制
2.1对于新建用户
可以修改 /etc/login.defs 文件里的内容来设置密码规则
[root@localhost ~]# vim /etc/login.defs #适用于修改后生效后修改的用户 -------------------------------- 25 PASS_MAX_DAYS 99999 26 PASS_MIN_DAYS 0 27 PASS_MIN_LEN 5 28 PASS_WARN_AGE 7 [root@localhost ~]# tail -5 /etc/shadow #修改密码有效期限
2.2 对于已有用户
可以使用chage命令
格式:chage [选项] 用户名
常用选项:
-m:密码可更改的最小天数。为零时代表任何时候都可以更改密码。
-M:密码保持有效的最大天数。
-w:用户密码到期前,提前收到警告信息的天数。
-E:帐号到期的日期。过了这天,此帐号将不可用。
-d:上一次更改的日期。
-i:停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。
-l:例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期。
3.命令历史
history(查看历史命令)
vim /etc/profile --> export HISTSIZE=XX --> source /etc/profile(限制历史命令数量)
history -c(临时清空历史命令)
vim /etc/profile --> > ~/.bash_history
4.切换用户
切换用户的方式:
su UserName:非登录式切换,即不会读取目标用户的配置文件,不改变当前工作目录,即不完全切换
su - UserName:登录式切换,会读取目标用户的配置文件,切换至自已的家目录,即完全切换
说明:root su至其他用户无须密码;非root用户切换时需要密码
注意:su 切换新用户后,使用 exit 退回至旧的用户身份,而不要再用 su 切换至旧用户,否则会生成很多的bash子进程,环境可能会混乱。
限制使用su命令的用户:
- 将允许使用su命令的用户加入wheel组
gpasswd wheel -a 用户名
- 启用pam_wheel认证模块
vim /etc/pam.d/su -> 开启 auth required pam_wheel.so use_uid 的配置
二.pam安全认证
1.PAM相关文件
包名: pam
模块文件目录:/lib64/security/*.so
特定模块相关的设置文件:/etc/security/ 功能比较强大的模块 才有特定的配置文件
man 8 加模块名 可以查看帮助
应用程序调用PAM模块的配置文件
主配置文件:/etc/pam.conf,默认不存在,一般不使用主配置
为每种应用模块提供一个专用的配置文件:/etc/pam.d/ APP_NAME
注意:如/etc/pam.d存在,/etc/pam.conf将失效
2.PAM工作原理
PAM认证一般遵循这样的顺序:Service(服务)→PAM(配置文件)→pam_*.so
PAM认证首先要确定那一项服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证文件(位于/lib64/security下)进行安全认证
PAM认证过程示例:
1.使用者执行/usr/bin/passwd 程序,并输入密码
2.passwd开始调用PAM模块,PAM模块会搜寻passwd程序的PAM相关设置文件,这个设置文件一般是在/etc/pam.d/里边的与程序同名的文件,即PAM会搜寻/etc/pam.d/passwd此设置文件
3.经由/etc/pam.d/passwd设定文件的数据,取用PAM所提供的相关模块来进行验证
4.将验证结果回传给passwd这个程序,而passwd这个程序会根据PAM回传的结果决定下一个动作(重新输入密码或者通过验证)
3.sudo
3.1.sudo组成
包:sudo
配置文件:/etc/sudo.conf
执行授权命令:/usr/bin/sudo
时间戳文件:/var/db/sudo
日志文件:/var/log/secure
授权规则配置文件:/etc/sudoers #修改文件
/etc/sudoers.d/*.conf 子配置
3.2sudo命令
ls -l /usr/bin/sudo
sudo -i -u wang 切换身份功能和 su 相似,但不一样,sudo必须提前授权,而且要输入自已的密码
sudo [ -u user] COMMAND
-V 显示版本信息等配置信息
-u user 默认为root
-l,ll 列出用户在主机上可用的和被禁止的命令
-v 再延长密码有效期限5分钟,更新时间戳
-k 清除时间戳(1970-01-01),下次需要重新输密码
-K 与-k类似,还要删除时间戳文件
-b 在后台执行指令
-p 改变询问密码的提示符号
示例:-p "password on %h for user %p: "
3.3 sudo设置
vi /etc/sudoers(此文件的默认权限为 440,保存退出时必须执行“:wq!”命令来强制操作)
用户 主机名=命令程序列表 //可以使用通配符*全部,!取反符号
别名创建
User_Alias 大写别名=用户1,用户2,……
Host_Alias 大写别名=主机名1,主机名2,……
Cmnd_Alias 大写别名=程序1,程序2,……
模块 | 含义 |
---|---|
user(用户名或群组名) | 表示系统中的那个用户或群组,可以使用 sudo 这个命令。 |
host (被管理主机的地址) | 用户可以管理指定 IP 地址的服务器。这里如果写 ALL,则代表用户可以管理任何主机;如果写固定 IP,则代表用户可以管理指定的服务器。如果我们在这里写本机的 IP 地址,不代表只允许本机的用户使用指定命令,而是代表指定的用户可以从任何 IP 地址来管理当前服务器。 |
runas(以谁的身份运行) | 就是把来源用户切换成什么身份使用,(ALL)代表可以切换成任意身份。这个字段可以省略。 |
授权命令 | 表示 root 把什么命令命令授权给用户,换句话说,可以用切换的身份执行什么命令。需要注意的是,此命令必须使用绝对路径写。默认值是 ALL,表示可以执行任何命令。 |