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拓展

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]$

results matching ""

    No results matching ""