3-PAM安全认证
2016.6.23
Linux中的PAM安全认证概述
- su命令的安全隐患
- 默认情况下,任何用户都允许使用su命令,从而有机会反复尝试其他用户(如root)的登录密码,带来安全风险
- 为了加强su命令的使用控制,可以借助于PAM认证模块,只允许极个别用户使用su命令进行切换
- PAM(Pluggable Authentication Modules)可插拔式认证模块,它是一种高效而且灵活便利的用户级别认证方式,它也是当前linux服务器普遍使用的认证方式
- PAM提供了对所有服务进行认证的中央机制,适用于login,远程登录(telnet,rlogin,fsh,ftp),su 等应用程序中
- 系统管理员通过PAM配置文件来指定不同应用程序的不同认证策略
PAM认证原理
- PAM认证一般遵循的顺序:Service(服务)→PAM(配置文件)→pam_*.so
- PAM认证首先要确定哪一项服务,然后加载相应的PAM配置文件(位于
/etc/pam.d
下),最后调用认证文件(位于/lib/security
下)进行安全认证 - 用户访问服务器的时候,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证。不同的应用程序对应的PAM模块也是不同的
- 如果想查看某个程序是否支持PAM认证,可以ls命令进行查看,例如查看su是否支持PAM模块认证
ls /etc/pam.d | grep su
PAM认证的构成
例如查看su
的PAM配置文件:cat /etc/pam.d/su
- 每一行都是一个独立地认证过程
- 每一行都可以区分为三个字段:
- 认证类型
- 控制类型
- PAM模块机器参数
常见的认证类型
1.认证管理(authentication management)
接受用户名和密码,进而对该用户的密码进行认证
2.账户管理(account management)
检查账户是否被允许登录系统,账号是否已经过期,账号的登录是否有时间段的限制等
3.密码管理(password management)
主要是用来修改用户的密码
4.会话管理(session management)
主要是提供对绘画的管理和记账(accounting)
控制类型也可以称做Control Flags,用于PAM验证类型的返回结果,具体有以下四种:
1.required 验证失败时仍然继续,但返回fail
2.requisite验证失败则立即结束整个验证过程,返回Fail
3.sufficient验证成功则立即返回,不再继续,否则忽略结果并继续
4.optional不用于验证,知识显示信息(通常用于session类型)
requisite [req·ui·site || 'rekwɪzɪt]
n. 必需品, 必要物品, 要素
adj. 需要的, 必备的, 必不可少的
requisite
requisite /ˈrek.wɪ.zɪt/
adjective [before noun] FORMAL
necessary; needed for a particular purpose:
PAM验证流程图
PAM Stacking: Effect of Control Flags
PAM Stacking: How Integrated Value Is Determined
PAM流程图
PAM验证示例
user1 | user2 | user3 | |||
---|---|---|---|---|---|
Auth | required | module1 | Pass | Fail | Pass |
Auth | sufficient | module2 | Pass | Pass | Fail |
Auth | required | moudele3 | N/A | N/A | Pass |
Result | Pass | Fail | Pass |
vi /etc/pam.d/su
[jason@test2 ~]$ vi /etc/pam.d/su
#%PAM-1.0
auth sufficient pam_rootok.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth sufficient pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
#auth required pam_wheel.so use_uid
auth required pam_wheel.so use_uid
auth include system-auth
account sufficient pam_succeed_if.so uid = 0 use_uid quiet
account include system-auth
password include system-auth
session include system-auth
session optional pam_xauth.so
~
~
~
~
~
~
~
~
~
~
~
~
~
~
:wq
限制其他用户登录到root
[root@test2 jason]# gpasswd -a xiao wheel
Adding user xiao to group wheel
[root@test2 jason]# grep /etc/group
^C
[root@test2 jason]# grep wheel /etc/group
wheel:x:10:xiao
[root@test2 jason]# su xiao
[xiao@test2 jason]$ su -root
su: invalid option -- 'r'
Try `su --help' for more information.
[xiao@test2 jason]$ su - root
Password:
[root@test2 ~]# su jason
[jason@test2 root]$ su
Password:
su: incorrect password
[jason@test2 root]$ sudo - root
[sudo] password for jason:
sudo: -: command not found
[jason@test2 root]$ sudo su
[sudo] password for jason:
Sorry, user jason is not allowed to execute '/bin/su' as root on test2.
[jason@test2 root]$
只有xiao用户可以登录到root.
去xiao用户也不行
[jason@test2 root]$ su xiao
Password:
su: incorrect password
[jason@test2 root]$ su xiao
Password:
su: incorrect password
[jason@test2 root]$