一.账号安全基本措施
1.系统账号清理
- 将非登录用户的Shell设为/sbin/nologin
usermod -s /sbin/nologin 用户名
- 锁定长期不使用的账号
usermod -L 用户名
passwd -l 用户名
passwd -S 用户名
- 删除无用的账号
userdel [-r] 用户名
- 锁定账号文件passwd、shadow
chattr +i /etc/passwd /etc/shadow
- 解锁文件并查看状态
lsattr /etc/passwd /etc/shadow
chattr -i /etc/passwd /etc/shadow
二.账号安全基本措施
1.密码安全控制
- 设置密码有效期
- 要求用户下次登录时修改密码
适用于新建用户
vim /etc/login.defs
- “30”代表最长有效天数,99999代表永久有效
- “0”代表最短有限天数
- “5”密码长度
- “7”警告密码过期时间
适用于已有用户
chage -M 时间 用户名
强行在下次登录时更改密码:
chage -d 0 xxx
2.命令历史限制
- 临时清空历史命令
history -c 临时清空
- 减少记录的命令条数(最大1000条)
vim /etc/profile
进入/etc/profile进行修改,注意须在histsize前加上export,表示开启全局
- 登录时自动清空命令历史
执行vim .bashrc命令,
将echo " " > ~/.bash_history添加在末尾
- 终端自动注销
执行vim /etc/profile
命令
三.使用su命令切换用户
1.用途及用法
- 用途:Substitute User,切换用户
- 格式:su_目标用户
2.密码验证
- root→任意用户,不验证密码
- 普通用户→其他用户,验证目标用户的密码
3.限制使用su命令的用户
- 将允许使用su命令的用户加入wheel组
- 启用pam_wheel认证模块
gpasswd -a 【用户名】 wheel
#将用户加入wheel组
vi /etc/pam.d/su
#进入设置su使用命令
进入设置su使用命令
☝ 小说明:
对于 /etc/pam.d/su
文件中的配置:
- 默认是开启第2行,注释第6行,这种状态下是允许所有用户间使用su命令进行切换的。 如果第2行不注释,pam rootok.so模块的主要作用是使uid为0的用户,即root用户能够直接通过认证切换普通用户不需要输入密码;
- 两行都注释也是运行所有用户都能使用su命令,但root下使用su切换到其他普通用户需要输入密码;
- 如果开启第6行,表示只有root用户和wheel组内的用户才可以使用su命令。
- 如果注释第1行,开启第6行,表示只有wheel组内的用户才能使用su命令,root用户也被禁用su命令
- 查看su操作记录
日志文件:/var/log/secure,新执行的操作信息会新增在末尾
四.Linux中的PAM安全认证
1.su命令的安全隐患
- 默认情况下,任何用户都允许使用su命令,有机会反复尝试其他用户(如root)的登录密码,带来安全风险
- 为了加强su命令的使用控制,可借助于PAM认证模块,只允许极个别用户使用su命令进行切换
2.PAM(Pluggable Authentication Modules)可插拔式认证模块
- 是一种高效而且灵活便利的用户级别的认证方式
- 也是当前Linux服务器普遍使用的认证方式
3.PAM认证原理:
① .PAM认证一般遵循的顺序:Service (服务)–> PAM(配置文件)–> pam_*.so;
② .PAM认证首先要确定哪一项应用服务,然后加载相应的PAM的配置文件(位于/etc/pam.d
下),最后调用认证模块(位于/ lib64/ security/
下)进行安全认证。
③ .用户访问服务器的时候,服务器的某一个服务程序把用户的请求发送到Pw模块进行认证。不同的应用程序所对应的PA模块也是不同的。
☞ 如果想查看某个程序是否支持 PAM认证,可以用ls命令进行看/etc/pam.d/。
☛ PAM的配置文件中的每一行都是一个独立的认证过程,它们按从上往下的顺序依次由PAM模块调用
◆ 在PAM的su配置文件 /etc/pam.d/su
文件中
- 第一列代表 PAM认证模块类型(auth、account、password、session)
- 第二列代表 PAM控制标记(required、requisite、sufficient、optional、include)
- 第三列代表 PAM模块,默认是在 /lib64/security/目录下,如果不在此默认路径下,要填写绝对路径。
- 第四列代表 PAM模块的参数,这个需要根据所使用的模块来添加。
◆ PAM安全认证流程
控制类型也称做Control Flags,用于PAM验证类型的返回结果
- required验证失败时仍然继续,但返回Fail
- requisite验证失败则立即结束整个验证过程,返回Fail
- sufficient验证成功则立即返回,不再继续,否则忽略结果并继续
- optional不用于验证,只显示信息(通常用于session类型)
五.使用sudo机制提升权限
1.sudo命令的用途及用法
● 用途:以其他用户身份(如root)执行授权的命令
● 用法:sudo 授权命令
2.配置stdo授权
● visudo或者vim /etc/sudoers——(此文件的默认权限为440,保存退出时必须执行":wq!"命令来强制操作)
● 记录格式:用户 主机名=(用户)命令程序列表
语法解析:
用户:直接授权指定的用户名,或采用"%组名"的形式(授权一个组的所有用户)
主机名:使用此规则的主机名。没配置过主机名时可用localhost,有配过主机名则用实际的主机名,A.L则代表所有主机
(用户):用户能够以何种身份来执行命令。此项可省略,缺省时以root用户的身份来运行命令
命令程序列表:允许授权的用户通过sudo方式执行的特权命令,需填写命令程序的完整路径,多个命令之间以逗号" "进行分隔。ALL则代表系统中的所有命令
可使用which命令查看命令程序的完整路径
例子:
Tom ALL=/ sbin/ifconfig
Jerry localhost=/sbin/*,! / sbin/reboot, ! / sbin/poweroff
#通配符"*"表示所有、取反符号"!"表示排除
%wheel ALL=NOPASSwD:ALL
#表示wheel组成员无需验证密码即可使用sudo执行任何命令
Mike ALL=(root)NOPASSwD:/bin/kill,/usr/bin/killall
实验:
比如用普通用户 haha创建网卡,结果无操作权限:
此时用 root 用户登录,执行 visudo,在末尾添加 haha ALL=/sbin/ifconfig,wq保存,再看 /etc/sudoers 文件,发现也增加了:
切换到haha用户,执行 sudo 命令,输入一次登录密码,就能执行 ifconfig 命令成功新增网卡 ens33:1,因为已经授权了/sbin/ifconfig 命令了。
3.sudo 设置别名
使用关键字User_Alias、Host_Alias、Cmnd_Alias来进行设置别名(别名必须为大写)
User_Alias USERS=Tom, Jerry, Mike
Host_Alias HOSTS=localhost, bogon
Cmnd_Alias CMNDS=/ sbin/ ifconfig, /usr/ sbin/useradd,/usr/sbin/ userdel
USERS HOSTS=CMNDS
USERS HOSTS=NOPASSWD:CMNDS
#执行过程不需要验证密码
4.启动sudo操作日志
在 /etc/sudoers 中新增一行代码Defaults logfile = /var/log/sudo
,启动sudo操作日志
5.查看授权的sudo操作
sudo -l 查询当前用户可使用哪些授权命令