PAM认证机制

(PAM架构){E:\博客图片\PAM架构.PNG}

认证库:文本文件,MySQL,NIS,LDAP等
Sun公司于1995年开发的一种于认证相关的通用框架机制
PAM是关注如何为服务验证用户的API,通过提供一些动态链接库和一套同一的API,将系统提供的服务和该服务的认证方式分开
使得系统管理员可以灵活的根据需要给不同的服务配置不同的认证方式而无需更改服务程序
一种认证框架,自身不做认证

PAM相关文件

1
2
3
4
模块文件:/lib64/security/*.so
环境相关的配置:/etc/security/
主配置文件:/etc/pam.conf,默认不存在而是为每种应用模块提供一个专用的配置文件:/etc/pam.d/APP_NAME
注意:如果/etc/pam.d/文件夹存在,则/etc/pam.conf将失效

pam_shells模块简介

此模块用于控制那些用户可以登录,即只有用户所使用的shell是/etc/shells文件中的一种时,才可登陆。

查看哪些程序调用了该模块

1
2
$ cd /etc/pam.d/
$ grep pam_shells *

实验:利用pam_shells模块控制用户使用su时的限制
默认su命令不调用pam_shells模块,需增加对此模块的调用后才能使用,调用方法为:

1
$ sed -i '2aauth	required	pam_shells.so' /etc/pam.d/su

将/etc/shells文件中的/bin/csh注释掉,并将用户msq的shell类型改为/bin/csh

1
2
$  sed -i '/csh/s/.*/#&/' /etc/shells
$ chsh -s /bin/csh msq

然后用su命令切换到msq用户,会发现无法正常切换:

1
2
3
$su - msq
Password:
su: Authentication failure

pam_securetty模块简介

此模块用于控制root只能在安全的终端登录,即只有终端是/etc/securetty文件中的一种时才能用root在该终端登录

实验:设置Telnet远程登录允许root用户登录
修改/etc/pam.d/remote文件,使远程登录不调用pam.securetty模块

1
$ sed -i '/pam.securetty/s/.*/#.*/' /etc/pam.d/remote

此时,Telnet等远程命令即可使用使用root账号直接登录,但是由于Telnet协议不加密,所以要慎用。

pam.nologin模块简介

此模块的作用为,当/var/run/nologin或/etc/nologin文件存在时,禁止普通用户使用任何方式登录系统。
一般在系统维护时比较实用。

pam_limits模块简介

功能:在用户级别实现对其可使用的资源的限制,例如:可打开的文件数量,可运行的进程数量,可用内存空间。

修改限制的实现方式:

1
2
3
4
5
ulimit命令修改,立即生效,但是无法保存
-n 每个进程最多打开的文件描述符个数
-u 最大用户进程数
-S 使用soft(软)资源限制
-H 使用hard(硬)资源限制
1
修改配置文件:/etc/security/limits.conf,/etc/security/limits.d/*.conf