红联Linux门户
Linux帮助

pam模块的一些基础

发布时间:2009-09-10 13:38:59来源:红联作者:ty8080
[i=s] 本帖最后由 ty8080 于 2009-9-10 13:46 编辑 [/i]

本人在学习pam模块时整理的一些笔记

PAM的分层体系结构

应用程序层-------应用接口层(PAM API 配置文件)----------鉴别模块

第二层:应用接口层有两类API接口:
(1)用于调用下层特定模块的接口
(2)提供下层模块与应用程序间通信的接口
鉴别类接口:pam_authenticate()用于鉴别用户

查看一程序是否支持pam模块。比如查看vsftp
[root@mail ~]# ldd /usr/sbin/vsftpd |grep 'pam'
libpam.so.0 => /lib/libpam.so.0 (0x00b9f000)
可以看到vsftp加载了pam库。

pam模块的存放路径
[root@mail ~]# ls /lib/security/

查看验证信息
[root@mail ~]# vim /etc/pam.d/login
#%PAM-1.0
auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so
auth include system-auth
account required pam_nologin.so
account include system-auth
password include system-auth
# pam_selinux.so close should be the first session rule
session required pam_selinux.so close
session include system-auth
session required pam_loginuid.so
session optional pam_console.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session required pam_selinux.so open
session optional pam_keyinit.so force revoke

以上是login程序的pam验证的信息
底层模块类型:
auth:用户名|密码相关信息的鉴别模块
account :非用户名密码相关信息(如时间或网段)auth 和 account验证成功后即可登录
session :登录后限制当前使用资源的会话类模块
password :登录后更新密码时候验证


条件:
required :必要的,即使出错也不会马上报错,而是继续验证下去,但是验证已经失败了。
include :包含其他文件
optional :不会影响结果
sufficient : 如果成功则直接返回成功,若不成功则往下走
requisite : 如果成功则往下走,若不成功则直接报错

pam_securetty.so提供标准的Unix安全tty的检查, 除非PAM_TTY的值列在 /etc/securetty里, 否则对root的认证将会失败. 对所有其他用户, 则为成功.

可以编辑安全tty列表的值
vim /etc/securetty

pam 实例应用
pam帮助文档
cd /usr/share/doc/pam-0.99.6.2/html/
firefox Linux-PAM_SAG.html
一、限制所有用户直通tty3登录
1. vim /etc/pam.d/login
在account required pam_nologin.so上加上一行验证:
account required pam_access.so
2.然后配置pam_access.so模块的配置信息
vim /etc/security/access.conf
-:ALL:ALL EXCEPT tty3
以上配置的具体意思
-:拒绝,ALL:所有用户,ALL:所有终端 EXCEPT : 除了之外。
举例: -:ty:ALL EXCEPT 192.168.0. .ty.com
上面例子的意思限制ty只能从192.168.0.0/24 .ty.com登录

二、当多个应用都需要同一个模块作验证,但是他们要求的验证方式又不同的时候,我们可以分别指定配置文件:
1.vim /etc/pam.d/sshd
在account required pam_nologin.so上加上一行验证:
account required pam_access.so accessfile=/etc/sshdaccess.conf
指定配置文件存到哪里
2.vim /etc/sshdaccess.conf
-:ty:ALL EXCEPT 192.168.1.
限制ty只能从192.168.1.0/24网段ssh登录

三、设置SSHD黑名单(pam_listfile.so)该模块目前只有RHLE支持
1.vim /etc/pam.d/sshd
在第一行前插入:
auth required pam_listfile.so file=/etc/sshdusers item=user sense=deny

解释:file= 是指定黑名单文件 item= 名单形式(可以是用户名也可以是IP)
sense= 权限(deny黑 allow 白)
2.编写黑名单
vim /etc/sshdaccess.conf
ty
haha


四、对sshd进行时间限制(pam_time.so)
1.vim /etc/pam.d/sshd
在account required pam_nologin.so上插入一行:
account required pam_time.so
2.编辑pam_time.so模块的配置文件
vim /etc/security/time.conf
*;*;*;MoTuWeThFr0900-1800

解释:工作日的9点到18点允许访问

五、利用pam_limits.so模块对系统资源限制
1.vim /etc/security/limits.conf
apache hard nporc 3
解释:硬限制apache只能打开三个进程
文章评论

共有 6 条评论

  1. 我爱小企鹅 于 2009-09-17 22:03:18发表:

    这些都是些什么东西啊,完全看不懂。
    基础太差了。

  2. h_h 于 2009-09-11 10:21:49发表:

    引用:


    你能静下心来研究就不难了
    ty8080 发表于 2009-9-10 16:02



    基础差看不懂。哈哈。要抓紧时间补

  3. ty8080 于 2009-09-10 16:02:15发表:

    引用:
    有点难度
    Relief 发表于 2009-9-10 15:14


    你能静下心来研究就不难了

  4. Relief 于 2009-09-10 15:14:27发表:

    有点难度

  5. l460618498 于 2009-09-10 14:15:09发表:

    好东西啊

  6. 满脸胡子 于 2009-09-10 13:54:03发表:

    不错,实用。表扬一下
    (e:e2s