大家好,关于PAM的使用,有的接触不到,他们配置的地方也不是经常出现,这是我的学习笔记,想分享给大家,有些地方逻辑性很强需要多看我基本上都有注释。
PAM 身份验证 及插即用 验证 模块
[root@xu /]# ldd /usr/sbin/sshd --------查看一个程序在运行的时调用那些库文件
[root@xu /]# ldd `which sshd` | grep pam
libpam.so.0 => /lib/libpam.so.0 (0x008ae000)
[root@xu /]# ls /lib/security/------pam所有功能插件
[root@xu /]# ls /etc/pam.d/-------一个程序使用什么pam模块 怎么使用都在这里
[root@xu /]# firefox /usr/share/doc/pam-0.99.6.2/html/Linux-PAM_SAG.html -----pam的配置手册
6.11 是用方法
6.25 是限制 描述
6.6 设置环境变量
-----------------------------
以login 为例子 怎么用的pam
pam 的难点 前俩列的关系
一个用户能不能验证成公 能不能登录进去 取决于前俩个 (auth account )
日志信息
tail -f /var/log/secure
第一列
auth ---- 管理用户名密码
account ---- 除用户名密码以外的对登录起取决性的其他因素条件(列如 某个时间断 某个网段)
password ----当用户对密码进行操作的时候用到他 (不该密码就没他什么事情)
session------- 进行会话的时候用到的 (当我打开一个程序的时候相当于建立了一次连接会话)
第二列
required ------ 必要条件 针对模块(模一个条件必须要成功,如果失败了 还继续往下执行,但是最终百分之百失败)
requisite----- 必要条件 针对模块(模块必须验证成功 如果失败了 ,停止验证 如果成功 继续走,看以后的 )
sufficient----- 充分条件 针对模快(如果一个模块成功 立即返回成功 如果失败 (忽略不计对最终结果不受影响))
otional--- - 可选条件 针对模块 (不管模块验证成功 失败 对最终结果没有影响)
include-------包含条件 针对文件( 不同模块调用相同的条件 把条件作一个公共文件) 跳过来之后只读相同类型的
-------------------------------------------
[root@xu ~]# cat /etc/shadow | grep user1
user1:!$1$hSYfRFbq$ST2mHoyu38nnvPx/kDMv90:15781:0:99999:7:::
auth 管的是前俩列
account 管的是 后面的
-----------------------------------------
第三行 模快 (第三行没有跳转的就是模块在手册里查是什么功能 如果跳转了就去看跳转的那个公共文件里对应的模块是什么功能)
login 配置文件里的模块
pam_securetty.so 安全的tty模块 -------对应的配置文件vim /etc/securetty 只有这里的终端 才是安全的终端
pam_nologin.so 阻止非管理员登录的模块 --- touch /etc/nologin 文件 所有普通帐号就不能登录
pam_access.so 访问控制模块
pam_time.so 时间控制模块
pam_echo.so 打印文本信息
auth 跳转文件里的模块
pam_env.so 设置环境变量模块 -------对应的配置文件 vim /etc/security/pam_env.conf 在这里设置环境变量
pam_unix.so 验证用户名密码模块 --pam核心模块负责passwd 找用户名 在shadow 里找密码的模块,在这里他验证的是前面的两行
pam_succeed_if.so uid >= 500 quiet(安静模式 不记录到日志) 判断是否成功的模块 判断uid 是否大于等于500
pam_deny.so 永远拒绝模块
account 跳转文件里的模块
pam_unix.so 验证用户名密码模块 ------这里他验证的是后面的
pam_permit.so 永远允许的模块
-------------------------------------------
login 的pam配置文件
[root@xu /]# vim /etc/pam.d/login
1 #%PAM-1.0
未知用户忽略
2 auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securett(模块) y.so--以前的语法 必要条件
第一行只针对管理员模块 只针对管理员生效 模块不会验证普通用户vim /etc/securetty----只有这里的终端 才是安全的终端
3 auth include system-auth(公共文件) 跳转 vim /etc/pam.d/system-auth 里对应的配置
4 account required pam_nologin.so 必要条件 这个模块让你找 touch /etc/nologin 文件 所有普通帐号不能登
5 account include system-auth 继续跳转 vim /etc/pam.d/system-auth 里caaount对应的文件
6 password include system-auth
7 # pam_selinux.so close should be the first session rule
8 session required pam_selinux.so close
9 session optional pam_keyinit.so force revoke
10 session required pam_loginuid.so
11 session include system-auth
12 session optional pam_console.so
13 # pam_selinux.so open should only be followed by sessions to be executed in the user context
14 session required pam_selinux.so open
----------------------------
[root@xu ~]# vim /etc/pam.d/system-auth
1 #%PAM-1.0
2 # This file is auto-generated.
3 # User changes will be destroyed the next time authconfig is run.
4 auth required pam_env.so --------环境变量
5 auth sufficient pam_unix.so nullok try_first_pass -pam_nologin.so-第一次输入密码以后 往后第二次在验证他会尝试输入第一次的密码
6 auth requisite pam_succeed_if.so uid >= 500 quiet 安静
7 auth required pam_deny.so 拒绝模块
8
9 account required pam_unix.so --------只管 shadow 的前俩列
10 account sufficient pam_succeed_if.so uid < 500 quiet
11 account required pam_permit.so
12
13 password requisite pam_cracklib.so try_first_pass retry=3
14 password sufficient pam_unix.so md5 shadow nullok try_first_pass use_a uthtok
15 password required pam_deny.so
16
17 session optional pam_keyinit.so revoke
18 session required pam_limits.so
19 session [success=1 default=ignore] pam_succeed_if.so service in crond qu iet use_uid
20 session required pam_unix.so
--------------------------
用户不需要密码
[root@xu /]# vim /etc/pam.d/login
设置用户名密码 如果成功直接通过 这个模块
2 auth sufficient pam_permit.so
7account sufficient pam_permit.so
---------------------------------
pam_access.so 访问控制模块
每个模块最后有这个提示
6.1.4. MODULE SERVICES PROVIDED
All services are supported. ---------旨的是auth account passwd session这里面都支持这个模块
vim /etc/pam.d/login
4 auth requisite pam_access.so
+代表 授权访问 -代表拒绝访问
vim /etc/security/access.conf
-: user1 : tty3
-: all : 192.168.1.0
----------------
pam_time.so 时间控制模块
vim /etc/pam.d/login
9 account required pam_time.so
格式
services;ttys;users;times
[root@xu /]# vim /etc/security/time.conf
login ; tty3 ; user1 ; al0100-0200 user1 1点到两点才能登录
login ; tty3 ; user1 ; all
sshd ; * ; * ; al0100-0200
------------
pam_echo.so 打印文本信息
[root@xu ~]# cat > hello.txt <<EOF
> eeeeeeeeeeeee
> EOF
vim /etc/pam.d/login
4 auth optional pam_echo.so file=/root/hello.txt
-------------------------
注意 顺序问题 优先第一个起作用
模块是否支持
前两类的关系