简述PAM模块认证
Pam可插拔的认证模块
接口文件在/etc/pam.d/目录下
调用的模块文件 /lib/security目录下
模块的配置文件/etc/security/目录下
日志信息存放在/var/log/secrue
网络中的很多用户需要对我们的服务器进行远程管理、FTP登录等等,服务器需要对用户进行认证
通过PAM调用与之服务相对应的接口文件进行模块认证。
PAM服务文件
格式:
Tyep control 模块
Type 有这几类
auth 验证是否有这个账号
account 账号是否过期
password 改变口令的时候对密码的长短、是否是字典里的进行验证
session 回话控制
control :
required 必须通过,
如果没有通过 ,彻底否定 ,而且还要看后续模块
如果通过 ,且还要看后续模块
requisite 必须通过,
如果没有通过 ,彻底否定 ,而且不看后续模块
如果通过 ,且还要看后续模块
sufficient 如果没有通过 ,不否定 ,而且看后续模块
只要有一个通过 通过
optional
Include (共同调用的接口文件,包含很多模块)
常用的PAM模块
pam_access.so 控制访问者地址与账号名称
pam_lisffile.so 控制访问者的账号名称或登录位置
pam_limits.so 控制位用户分配的资源
pam_rootok.so 对管理员无条件允许通过
pam_userdb.so 设定独立用户账号数据库认证
等等
下面通过几个小例子说明一下
1、不允许普通用户登录服务器
打开sshd的接口文件 /etc/pam.d/login 如下,调用了pam_nologin.so模块,且是必须验证的
查看关于pam_nologin.so模块的说明文档知道,在/etc/目录下新建一个nologin文件就可以了
touch /etc/nologin
用user1在通过ssh登录一下试试,登不进去了,如下:
(由于login文件里也调用了该模块,所以在本机上所有用户也登陆不了了)
2、限制用户user1只能从192.168.101.3上SSH登录 模块为pam_access.so
vim /etc/pam.d/sshd --编辑ssh的接口文件sshd如下
和pam_access.so模块有个像对应的配置文件access.conf
vim /etc/security/access.conf 添加如下一行
+ : user1 : 192.168.101.3
- : user1 : all 表示不允许从其它地方ip登录
其中”+“表示授权 ”user1“ 授权的用户 ”192.168.101.3“ 表示来源
从192.168.101.3的登录,授权成功
日志如下:
pam_access(sshd:session): access denied for user `user1' from `192.168.101.103'
从其它的ip登录,拒绝
PAM: pam_open_session(): Permission denied
如果是只有user1能从192.168.101.180登录
将”- : user1 : all “改为“- : all : all ”
3、限制user1账号本地终端的登录次数为2次 模块pam_limits.so
vim /etc/security/limits.conf 添加如下一句
user1 - maxlogins 2
”-“ 表示hard和soft都一样 (关于语法格式,配置文件里有说明)
vim /etc/pam.d/login --编辑login接口文件添加如下:
session required pam_limits.so
用user1登录三次,第三次被拒绝如下:
4、在我的用户中凡是在test组中的用户都能ssh,不是改组的用户不能SSH 模块pam_listfile.so (基于额外的文件)
vim /etc/pam.d/sshd 添加如下:
session required pam_listfile.so item=group sense=allow file=/etc/grouptest onerr=succeed
--额外文件为/etc/grouptest 如果没有这个文件,无限制
新建改文件,并添加test组
echo "test" > /etc/grouptest
User1在test组能登录,user2不在,不能登录
5、只允许root从安全的终端登录即不允许从tty1登录 模块pam_securetty.so
vim /etc/securetty
删除 tty1
默认Login接口文件已经调用了该模块
当root从终端1登录时,如下
6、在本地不允许使用bash shell登录 模块 pam_shells.so
默认是在/etc/shells里列出的都能
[root@localhost pam.d]# vim /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/bin/tcsh
/bin/csh
/bin/ksh
将上述的/bin/bash 删掉
vim /etc/pam.d/login 编辑登录文件来调用该模块 如下
session required pam_shells.so
这个验证时好像有些小问题!!!!!
本文转自 abc16810 51CTO博客,原文链接:http://blog.51cto.com/abc16810/1102047