linux高级安全PAM使用

linux高级安全PAM使用

大家好,关于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


-------------------------

注意 顺序问题 优先第一个起作用

模块是否支持

前两类的关系

推荐阅读