Linux进阶_PAM认证机制
本意内容
- PAM认证机制
- PAM架构
- PAM相关文件
- pam认证原理
- PAM认证机制
- PAM的配置文件
- pam文档说明
- PAM模块示例
- 模块:pam_shells
- 模块:pam_securetty.so
- 模块:pam_nologin.so
- 模块:pam_limits.so
PAM认证机制
PAM:Pluggable Authentication Modules
认证库:文本文件,MySQL,NIS,LDAP等
Sun公司于1995 年开发的一种与认证相关的通用框架机制
PAM 是关注如何为服务验证用户的 API,通过提供一些动态链接库和一套统一的API,将系统提供的服务和该服务的认证方式分开
使得系统管理员可以灵活地根据需要给不同的服务配置不同的认证方式而无需更改服务程序
一种认证框架,自身不做认证
它提供了对所有服务进行认证的中央机制,适用于本地登录,远程登录,如:telnet,rlogin,fsh,ftp,点对点协议PPP,su等应用程序中,系统管理员通过PAM配置文件来制定不同应用程序的不同认证策略;应用程序开发者通过在服务程序中使用PAM API(pam_xxxx( ))来实现对认证方法的调用;而PAM服务模块的开发者则利用PAM SPI来编写模块(主要调用函数pam_sm_xxxx( )供PAM接口库调用,将不同的认证机制加入到系统中;PAM接口库(libpam)则读取配置文件,将应用程序和相应的PAM服务模块联系起来
PAM架构
PAM相关文件
- 模块文件目录:
/lib64/security/*.so
- 环境相关的设置:
/etc/security/
- 主配置文件:
/etc/pam.conf
,默认不存在 - 为每种应用模块提供一个专用的配置文件:
/etc/pam.d/APP_NAME
注意:如/etc/pam.d/
存在,/etc/pam.conf
将失效
pam认证原理
- PAM认证一般遵循这样的顺序:Service(服务)→PAM(配置文件)→pam_*.so
- PAM认证首先要确定那一项服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证文件(位于/lib64/security下)进行安全认证
PAM认证机制
- PAM认证过程:
1.使用者执行passwd
程序,并输入密码
2.passwd
开始调用PAM模块,PAM模块会搜寻passwd
程序的PAM相关设置文件,这个设置文件一般是在/etc/pam.d/里边的与程序同名的文件,即PAM会搜寻/etc/pam.d/pam_unix_passwd.so
此设置文件
3.经由/etc/pam.d/pam_unix_passwd.so
设定文件的数据,取用PAM所提供的相关模块来进行验证
4.将验证结果回传给passwd
这个程序,而passwd
这个程序会根据PAM回传的结果决定下一个动作(重新输入密码或者通过验证)
PAM的配置文件
- 通用配置文件/etc/pam.conf格式
application type control module-path arguments
- 专用配置文件/etc/pam.d/* 格式
type control module-path arguments
- 说明:
- 服务名(application)
telnet、login、ftp
等,服务名字“OTHER”代表所有没有在该文件中明确配置的其它服务 - 模块类型(module-type)
control
PAM库该如何处理与该服务相关的PAM模块的成功或失败情况
module-path
用来指明本模块对应的程序文件的路径名
Arguments
用来传递给该模块的参数
Auth
账号的认证和授权
Account
与账号管理相关的非认证类的功能,如:用来限制/允许用户对某个服务的访问时间,当前有效的系统资源(最多可以有多少个用户),限制用户的位置(例如:root用户只能从控制台登录)
Password
用户修改密码时密码复杂度检查机制等功能
Session
用户获取到服务之前或使用服务完成之后需要进行一些附加的操作,如:记录打开/关闭数据的信息,监视目录等
-type
表示因为缺失而不能加载的模块将不记录到系统日志,对于那些不总是安装在系统上的模块有用
- 服务名(application)
- 简单方式实现:一个关健词实现
- required :一票否决,表示本模块必须返回成功才能通过认证,但是如果该模块返回失败,失败结果也不会立即通知用户,而是要等到同一type中的所有模块全部执行完毕再将失败结果返回给应用程序,即为必要条件
- sufficient :一票通过,表明本模块返回成功则通过身份认证的要求,不必再执行同一type内的其它模块,但如果本模块返回失败可忽略,即为充分条件
- optional :表明本模块是可选的,它的成功与否不会对身份认证起关键作用,其返回值一般被忽略
- include: 调用其他的配置文件中定义的配置信息
- 复杂详细实现:使用一个或多个“status=action”
[status1=action1 status2=action …]
- Status:检查结果的返回状态
- Action:采取行为 ok,done,die,bad,ignore,reset
ok 模块通过,继续检查
done 模块通过,返回最后结果给应用
bad 结果失败,继续检查
die 结果失败,返回失败结果给应用
ignore 结果忽略,不影响最后结果
reset 忽略已经得到的结果
- module-path: 模块路径
+ 相对路径:
/lib64/security目录下的模块可使用相对路径
如:pam_shells.so、pam_limits.so
+ 绝对路径: - 模块通过读取配置文件完成用户对系统资源的使用控制
/etc/security/*.conf
注意:修改PAM配置文件将马上生效
建议:编辑pam规则时,保持至少打开一个root会话,以防止root身份验证错误
Arguments 用来传递给该模块的参数
pam文档说明
/user/share/doc/pam-*
rpm -qd pam
man 模块名 (如man pam_rootok
)
Linux-PAM系统管理员指南:《The Linux-PAM System Administrators’ Guide》
PAM模块示例
模块:pam_shells
- 功能:检查有效shell
- man pam_shells
- 示例:不允许使用/bin/csh的用户本地登录
vim /etc/pam.d/login添加 auth required pam_shells.so
vim /etc/shells去掉 /bin/csh#添加用户,指定为csh
useradd –s /bin/csh testuser
#testuser将不可登录
tail /var/log/secure
模块:pam_securetty.so
- 功能:只允许root用户在/etc/securetty列出的安全终端上登陆
- 示例:允许root在telnet登陆
vi /etc/pam.d/remote#将下面一行加上注释#auth required pam_securetty.so
#或者/etc/securetty文件中加入:pts/0,pts/1…pts/n
模块:pam_nologin.so
- 功能:
1. 如果/etc/nologin文件存在,将导致非root用户不能登陆
2. 如果用户shell是/sbin/nologin 时,当该用户登陆时,会显示/etc/nologin文件内容,并拒绝登陆
模块:pam_limits.so
- 功能:在用户级别实现对其可使用的资源的限制,例如:可打开的文件数量,可运行的进程数量,可用内存空间
- 修改限制的实现方式:
(1) ulimit命令,立即生效,但无法保存
-n 每个进程最多的打开的文件描述符个数
-u 最大用户进程数
-S 使用 soft(软)资源限制
-H 使用 hard(硬)资源限制
(2) 配置文件:/etc/security/limits.conf, /etc/security/limits.d/*.conf
配置文件:每行一个定义:<domain> <type> <item> <value>
1.<domain>
应用于哪些对象
Username
单个用户
@group
组内所有用户
*
所有用户
2.<type>
限制的类型
Soft
软限制,普通用户自己可以修改
Hard
硬限制,由root用户设定,且通过kernel强制生效
-
二者同时限定
3.<item>
限制的资源
nofile
所能够同时打开的最大文件数量,默认为1024
nproc
所能够同时运行的进程的最大数量,默认为1024
4.<value>
指定具体值
- 命令:
ulimit
选项 | 意义 | 示例 | 解释 |
---|---|---|---|
-H
|
设置硬资源限制,一旦设置不能增加 |
ulimit -Hs 64
|
限制线程栈大小为64K |
-S
|
设置软资源限制,设置后可以增加 |
ulimit -Sn 32
|
限制最大32个文件描述符 |
-a
|
显示当前所有的limit信息 |
ulimit -a
|
显示当前所有的limit信息 |
-c
|
最大的core文件的大小,单位blocks |
ulimit -c unlimited
|
对生成的core文件不限制 |
-d
|
进程最大的数据段大小,单位K |
ulimit -d unlimited
|
不限制进程数据段大小 |
-f
|
最大可以加锁内存大小,单位blocks |
ulimit -f 2048
|
限制进程可以创建最大文件为2048blocks |
-l
|
最大可加锁内存大小,单位K |
ulimit -l 32
|
限制最大可加锁内存大小为32K |
-m
|
最大内存大小,单位K |
ulimit -m unlimited
|
对最大内存不做限制 |
-n
|
可以打开最大的文件描述符数量 |
ulimit -n 128
|
可以最大使用128个文件描述符 |
-p
|
管道缓冲区大小,单位K |
ulimit -p 512
|
限制管道缓冲区大小为512K |
-s
|
线程栈大小,单位K |
ulimit -s 512
|
限制线程栈大小为512K |
-t
|
最大的CPU占用时间,单位秒 |
ulimit -t unlimited
|
对最大CPU占用时间不限制 |
-u
|
用户最大可用进程数 |
ulimit -u 64
|
限制用户最多可用64个进程 |
-v
|
进程最大可用虚拟内存,单位K |
ulimit -v 2000
|
限制最大可用2000K虚拟内存 |
- 示例:限制用户最多打开的文件数和运行进程数
[root]$ vim /etc/pam.d/system-authsession required pam_limits.so
[root]$ vim /etc/security/limits.confapache – nofile 10240 #用户apache可打开10240个文件student hard nproc 20 #用户student不能运行超过20个进程
- 生产案例
* soft core unlimited* hard core unlimited* soft nproc 1000000* hard nproc 1000000* soft nofile 1000000* hard nofile 1000000* soft memlock 32000* hard memlock 32000* soft msgqueue 8192000* hard msgqueue 8192000
Linux进阶_PAM认证机制相关推荐
- linux密码验证机制,linux用户认证机制
本文更正http://blog168.chinaunix.net/space.php?uid=20196318&do=blog&id=28742中出现的几个错误.错误1:对salt的描 ...
- linux远程登录 密钥,使用密钥认证机制远程登录Linux
密钥认证机制 创建存放key的文件 1)创建目录 /root/.ssh 并设置权限 [root@localhost ~]# mkdir /root/.ssh mkdir 命令用来创建目录,以后会详细介 ...
- Linux系统安全概述-sudo授权-pam认证机制-对称加密-非对称加密-md5-数字证书
内容: 17.1 Linux系统安全概述-su-sudo授权 17.2 pam认证机制概述 17.3 对称加密-非对称加密方法 17.4 md5-sha1-哈希算法使用方法 17.5 CA证书的作用 ...
- 身家过亿的帝都王子来到1024盛宴-小码农献上linux进阶知识点一篇
文章目录 身家过亿的帝都王子来到1024盛宴-小码农献上linux进阶知识点一篇 联动文章 [身家过亿的帝都公主来到1024盛宴-小码农弟弟献上linux基础知识点一篇](https://blog.c ...
- Linux 进阶笔记(一)
这几篇博文主要记录博主的Linux 学习之路,用作以后回顾和参考.大家可以选择略过也可以作参考. (一)Linux 初步笔记 (二)Linux 进阶笔记(一) (三)Linux 进阶笔记(二) (四) ...
- linux用户双重认证登录,linux PAM 用户登录认证
PAM(Pluggable Authentication Modules )是由Sun提出的一种认证机制.它通过提供一些动态链接库和一套统一的API,将系统提供的服务 和该服务的认证方式分开,使得系统 ...
- Linux中pam认证详解,linux中pam认证解析
pam认证机制:简单来说就是linux系统采取的这一种对不同用户以及系统中的不同服务进行的安全认证机制. 认证流程:linux系统首先确定所需认证的服务,然后加载相应的PAM的配置文件(位于/etc/ ...
- linux服务器---代理认证
代理认证 proxy代理服务被广泛的使用,为了安全起见,可以在服务器上增加一层安全认证机制.这里使用htpasswd建立认证账号和密码 1.创建认证账号和密码 [root@localhost wj]# ...
- linux进阶_4所Linux进阶学校
linux进阶 众所周知,缺少适合IT工作的合格候选人. 雇主急需人员来填补DevOps,开发,系统管理员和其他IT角色,尤其是在云,网络技术和Linux方面具有丰富经验的员工,以管理为其业务提供动力 ...
最新文章
- 关于刘冬大侠Spring.NET系列学习笔记3的一点勘正
- Python链接Mssql之Python库pymssql
- (最优解法)46行代码AC_HDU1242 Rescue(DFS解法+BFS解法)
- 《驯狮记——Mac OS X 10.8 Mountain Lion使用手册》——2.3 Dock
- JavaScript设计模式(二)-- 工厂方法模式
- mac 不显示 外接屏幕_Mac外接屏幕亮度调整
- 易懂分布式 | Kademlia算法
- appium自动化测试环境部署_Android
- cocos creator基础-(六)cc.Sprite使用
- flask-基于pdf.js的pdf在线阅读
- 【DEM数据详细操作】ArcGIS提取等高线、DEM拼接、DEM裁剪、晕渲图制作
- 秒杀系统架构分析与实战
- MUI框架的基本使用
- PPT文档如何插入超链接
- Python-Pandas-Excel/CSV 数据处理大全整理 (二)
- element-plus更换主题色(有手就行)
- 如何移除Office 365标题栏上的账号信息
- 腹直肌整体(01):器械卷腹
- 最详细的C++实现哈夫曼树中英文编解码
- 关于小米公司成长的反思