第10章 管理 PAM (注意:红字)
1、环境 RHEL6.4 CLIENT IP:10.10.10.223
1、PAM(可插入式身份验证模块)
1)查看模块所对应的动态链接库
[root@student ~]# ldd `which sshd`|grep wrap
libwrap.so.0 => /lib64/libwrap.so.0 (0x00007f41d9684000)
2)查看sshd的模块是否支持pam验证模块
[root@student ~]# ldd `which sshd`|grep pam
libpam.so.0 => /lib64/libpam.so.0 (0x00007f30b45bd000)
3)查看pam验证模块路径
[root@student ~]# ls /etc/pam.d/
4)查看pam.d 目录下的vsftpd文件
[root@student pam.d]# cat vsftpd
#%PAM-1.0
session optional pam_keyinit.so force revoke
auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
auth required pam_shells.so
auth include password-auth
account include password-auth
session required pam_loginuid.so
session include password-auth
以上的pam_listfile.so是身份验证,这个模块可以将某个文件来使用你的用户来访问控制。
2、查看pam的文档(这里把/usr/share/doc/pam-1.1.1目录考到http服务目录下)
3、查看pam_listfile.so帮助内容并如何使用
pam_listfile.so item=[tty|user|rhost|ruser|group|shell] sense=[allow|deny] file=/path/filename onerr=[succeed|fail] [ apply=[user|@group] ] [ quiet ]
可以控制终端、用户、远程主机、远程用户、组和shell,你的sense是allow或deny的文件路径在哪里,最后你的返回onerr是succeed还是fail模式
Vsftpd的写法:
#
# deny ftp-access to users listed in the /etc/ftpusers file
#
auth required pam_listfile.so \
onerr=succeed item=user sense=deny file=/etc/ftpusers
4、PAM的语法
1)PAM调用的动态链接库位置
/lib/security/ 和 /lib64/security/
2)pam.d下主要的文件system-auth 和 password-auth
system-auth控制本地系统
password-auth 控制远程系统
除了以上这两个文件以外还有单独支持的模块如:sshd、vsftpd等
3)查看sshd的pam模块
[root@student pam.d]# cat sshd
#%PAM-1.0
auth required pam_sepermit.so
auth include password-auth
account required pam_nologin.so
account include password-auth
password include password-auth
# pam_selinux.so close should be the first session rule
session required pam_selinux.so close
session required pam_loginuid.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session required pam_selinux.so open env_params
session optional pam_keyinit.so force revoke
session include password-auth
Include是pam的模块的嵌套,会去调用password-auth模块
如果需要限制sshd可以写到system-auth、password-auth、sshd 都是可以的
4)语法解释
Pam支持4种类型
① 认证管理类型
用来检查用户名和密码
Pam最经典的模块是system-auth下的pam_unix.so
try_first_pass意思是从上一个模块里面去读入用户名和密码,不是首次登录密码
如果密码失败了,才让用户再次输入密码。
pam_cracklib.so try_first_pass retry=3 type=
以上这是控制密码的模块,可以尝试输入错误3次,可以使用这个模块控制密码的
强度和长度,密码的类型。
② 账户管理
账户的登录时间,账户允不允许登录
③ 密码管理
是通过密码字典来管理的
④ 会话管理
跟程序和用户通信的方式
核心的动态链接库位置 /lib64/libpam.so.0
PAM主配置文件 /etc/pam.d/
⑤ 模块的第1列 是模块的功能
auth:检查使用者的身份,提示用户输入用户名和密码
account :管理用户访问时间和密码的有效期
Password:专门为修改密码有关
Session:访问日志限制用户登录次数,跟pam_limits.so有关
[root@student pam.d]# cd /etc/security/ 控制pam_limits在此目录下
⑥ 模块的第2列 是模块的状态
Required:验证失败后,仍然继续
Requisite:验证失败后,结束整个过程
Sufficient:验证成功后,立即停止
Optional:不管auth、account、Password行不行反正Session功能是
可以的。
Include: 嵌套
⑦ 模块的第3列
pam_cracklib.so 控制密码的复杂长度,密码必须要有大写字母和数字。
password required pam_cracklib.so \
dcredit=-1 ucredit=-1 ocredit=-1 lcredit=0 minlen=8
minlen=8代表是密码长度
ocredit=-1代表是至少有一个特殊字符
dcredit=-1代表数字
ucredit=-1代表大写
lcredit=0代表小写
练习:
修改 system-auth文件
password requisite pam_cracklib.so try_first_pass retry=3 type=strom
[student@student pam.d]$ passwd
Changing password for user student.
Changing password for student.
(current) UNIX password:
New strom password:
以上的是作为提示使用的
password requisite pam_cracklib.so try_first_pass retry=3 type=strom dcredit=-1 ucredit=-1 ocredit=-1 lcredit=0 minlen=8
设置student密码
student@student pam.d]$ passwd
Changing password for user student.
Changing password for student.
(current) UNIX password:
New strom password:
BAD PASSWORD: it is WAY too short
密码不服长度,说明设置的system-auth已经生效
默认的telnet登录不了使用因为远程主机连接是使用pts/n模式
而且没有写入/etc/securetty里面,导致telnet登录不了。