PAM(Pluggable Authentication Modules )
介绍
通过提供一些动态链接库和一套统一的API,将系统提供的服务 和该服务的认证方式分开
使得系统管理员可以灵活地根据需要给不同的服务配置不同的认证方式而无需更改服务程序,同时也便于向系统中添加新的认证手段
流程图说明:
1、系统官理员通过PAM配置文件来制定不同应用程序的不同认证策略;
2、应用程序开发者通过在服务程序中使用PAM API(文件名格式pam_xxx)来实现对认证方法的调用;
3、PAM服务模块的开发者则利用PAM SPI来编写模块(主要调用函数pam_sm_XXX)供PAM接口库调用,将不同的认证机制加入到系统中;
4、PAM接口库(libpam.so)则读取配置文件,将应用程序和相应的PAM服务模块联系起来
相关文件:
pam接口库:/lib64/libpam.so.0
pam模块:/lib64/security/pam_*
模块配置文件:/etc/security/ #存放一些复杂的模块配置文件及说明
应用调用模块的配置文件:/etc/pam.d/ #每个应用单独创建一个文件,用于模块配置
查看某个程序是否支持pam模块
ldd /usr/sbin/vsftpd | grep libpam
/etc/pam.d/*配置文件格式:
type control module-path arguments
参数说明:
application:服务名
如:telnet、login、ftp等,服务名字“OTHER”代表所有没有在该文件中明确配置的其它服务
module-type:模块类型
control:PAM库该如何处理与该服务相关的PAM模块的成功或失败情况
module-path:用来指明本模块对应的程序文件的路径名
Arguments:用来传递给该模块的参数,当参数太多时,即用到了/etc/security/下的模板
常用模块介绍
1、pam_shells.so:检查有效shell环境
如/etc/pam.d/login
即检查/etc/shells下的shell类型,不在此文件的shell用户将禁止登录
pam_securetty.so:只允许root用户在/etc/securetty列出的安全终端上登录
如/etc/pam.d/remote
2、pam_nologin.so:禁止用户登录
当/etc/nologin文件存在时,将禁止非root用户登录
如果用户shell是/sbin/nologin时,当用户登录时,将显示/etc/nologin文件内容,并拒绝登录
3、pam_limits.so:用户级别实现对其使用资源的限制
修改限制的实现方式:
命令方式:ulimit,立即生效,当前终端有效
参数有 -n 每个进程最多的打开的文件描述符个数
-u 最大用户进程数
-S 使用soft(软)资源限制
-H 使用hard(硬)资源限制
配置文件方式:/etc/security/limits.conf,/etc/security/limits.d/*.conf
配置文件说明:每行一个定义:
如限制用户最多打开文件数和运行进程数
/etc/pam.d/system-auth
session required pam.imits.o
vim/etc/security/limits.conf
apache - nofile 10240 用户apache可打开10240个文件
student hard nproc 20 用户student不能运行超过20个进程