Linux-PAM认证模块

 
 

用户访问服务器的时候,服务器的某一个服务程序把用户的谁请求发送到PAM模块进行认证。对于不同的服务器应用程序所对应的PAM模块也是不同的。如果想查看某个程序是否支持PAM认证,可以用ldd命令进行检查:

例如:查看sshd是不是支持PAM模块认证:

由于在程序模块里链接了libpam.so.0 =< /lib/libpam.so.0 ,说明此程序可以进行PAM认证。

当一个服务器请求PAM模块的时候,PAM本身是不提供服务验证的,它是调用其它的一群模块来进行服务器请求验证,这样的文件全放在了/lib/security中。具体到哪一个服务使用哪一种具体的模块,这是由具体的PAM服务文件定义的(/etc/pam.d/).

[root@localhost root]# ls /etc/pam.d/
authconfig      neat                      redhat-config-network        su
chfn            other                       redhat-config-network-cmd    sudo
chsh            passwd                    redhat-config-network-druid  system-auth
halt            poweroff                   rhn_register                 up2date
internet-druid  ppp                       setup                        up2date-config
kbdrate         reboot                    smtp                         up2date-nox
login           redhat-config-mouse   sshd

PAM服务文件

1、# more /etc/pam.d/login 
auth       required     pam_securetty.so
auth       required     pam_stack.so service=system-auth
auth       required     pam_nologin.so
account    required     pam_stack.so service=system-auth
password   required     pam_stack.so service=system-auth
session    required     pam_stack.so service=system-auth
session    optional     pam_console.so

PAM服务文件的格式(四部分)

Module-type control-flag module-path arguments
Module-type: auth、account、session、password
Control-flag:required、requisite、sufficient、optional
eg: 
   auth         required     pam_securety.so
auth required pam_stack.so   service=system_auth
Module-type(属于认证里面的第一部分,主要是分配权限)
auth:认证、授权(检查用户的名字、密码正确与否);
account:检查用户的帐户是否到期、禁用等。
session:控制会话
password:控制用户修改密码过程
Control-flag (属于认证里面的第二部分,控制标识位)
required:必须通过此认证,否则不再往下认证下去,直接退出;
requisite:必须通过认证,但以后还有机会,可以往下认证;
sufficient:一经通过,后面的不再认证(只要通过这个条件则直接通过);
optional:可选的,通不通过均可。
 
                                          常用的PAM服务文件
 
1)、login ----    /etc/pam.d/login    2)、ipop3d ---  /etc/pam.d/pop
3)、ftp  ----  /etc/pam.d/ftp   或   vsftpd -- /etc/pam.d/vsftpd
4)、sshd--- /etc/pam.d/sshd   5)、su --- /etc/pam.d/su   6)、imap--- /etc/pam.d/imcp
                                           
                                                        认证堆栈
 

①、auth              required        pam_securety.so
②、auth              required        pam_stack.so         service=system-auth
③、auth              required        pam_nologin.so

如果号认证结束,则在后面有个结束标志,转到下一个认证即号认证,依次类推,相同类型的认证会放在一起进行。
其中pam_stack.so调用一个子模块服务,通过这个服务再调用一个第三方的模块进行认证授权。
                                                常用PAM模块
1)、pam_access.so    控制访问者的地址与帐号的名称
2)、pam_listfile.so     控制访问者的帐号名称或登陆位置
3)、pam_limits.so      控制为用户分配的资源
4)、pam_rootok.so   对管理员(uid=0)无条件通过
5)、pam_userdb.so   设定独立用户帐号数据库认证
如下:

[root@localhost root]# cd /etc/pam.d/
[root@localhost pam.d]# more login
#%PAM-1.0
auth       required     pam_securetty.so
auth       required     pam_stack.so service=system-auth
auth       required     pam_nologin.so
account    required     pam_stack.so service=system-auth
password   required     pam_stack.so service=system-auth
session    required     pam_stack.so service=system-auth
session    optional     pam_console.so
[root@localhost pam.d]# cd /usr/share/doc/pam-0.75/txts/
[root@localhost txts]# ls
pam_appl.txt               README.pam_ftp          README.pam_shells
pam_modules.txt          README.pam_limits       README.pam_stack
pam.txt                      README.pam_listfile      README.pam_stress
README                     README.pam_localuser   README.pam_tally
README.pam_access    README.pam_mail         README.pam_time
README.pam_chroot    README.pam_nologin     README.pam_timestamp
README.pam_console   README.pam_permit      README.pam_unix
README.pam_cracklib   README.pam_pwdb       README.pam_userdb
README.pam_deny      README.pam_rhosts      README.pam_warn
README.pam_env        README.pam_rootok     README.pam_wheel
README.pam_filter      README.pam_securetty  README.pam_xauth
[root@localhost txts]# more README.pam_securetty
pam_securetty:
        Allows root logins only if the user is logging in on a
        "secure" tty, as defined by the listing in /etc/securetty

Also checks to make sure that /etc/securetty is a plain
        file and not world writable.

- Elliot Lee , Red Hat Software.
                July 25, 1996.
[root@localhost txts]# more /etc/securetty
console
vc/1
vc/2
vc/3
vc/4
vc/5
vc/6
vc/7
vc/8
vc/9
vc/10
vc/11
tty1
tty2
tty3
tty4
tty5
tty6
tty7
tty8
tty9
tty10
tty11
[root@localhost txts]# more /etc/pam.d/system-auth
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth        required      /lib/security/$ISA/pam_env.so
auth        sufficient    /lib/security/$ISA/pam_unix.so likeauth nullok
auth        required      /lib/security/$ISA/pam_deny.so

account     required      /lib/security/$ISA/pam_unix.so

password    required      /lib/security/$ISA/pam_cracklib.so retry=3 type=
password    sufficient    /lib/security/$ISA/pam_unix.so nullok use_authtok md5 shadow
password    required      /lib/security/$ISA/pam_deny.so

session     required      /lib/security/$ISA/pam_limits.so
session     required      /lib/security/$ISA/pam_unix.so
[root@localhost txts]# pwd
/usr/share/doc/pam-0.75/txts
[root@localhost txts]# more README.pam_nologin
# $Id: README,v 1.1.1.1 2000/06/20 22:11:46 agmorgan Exp $
#

This module always lets root in; it lets other users in only if the file
/etc/nologin doesn't exist.  In any case, if /etc/nologin exists, it's
contents are displayed to the user.

module services provided:

auth            _authentication and _setcred (blank)

Michael K. Johnson
[root@localhost txts]# touch /etc/nologin
[root@localhost txts]# useradd leekwen
[root@localhost txts]# passwd leekwen
Changing password for user leekwen.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
[root@localhost txts]# ssh leekwen@192.168.0.188
leekwen@192.168.0.188's password:
Permission denied, please try again.
leekwen@192.168.0.188's password:
Permission denied, please try again.
leekwen@192.168.0.188's password:
Permission denied (publickey,password,keyboard-interactive).
[root@localhost txts]# rm /etc/nologin
rm: remove regular empty file `/etc/nologin'? y
[root@localhost txts]# ssh leekwen@192.168.0.188
leekwen@192.168.0.188's password:
[leekwen@localhost leekwen]$ pwd
/home/leekwen
[leekwen@localhost leekwen]$ exit
logout
Connection to 192.168.0.188 closed.
[root@localhost txts]# cd /etc/pam.d/
[root@localhost pam.d]# more login
#%PAM-1.0
auth       required     pam_securetty.so
auth       required     pam_stack.so service=system-auth
auth       required     pam_nologin.so
account    required     pam_stack.so service=system-auth
password   required     pam_stack.so service=system-auth
session    required     pam_stack.so service=system-auth
session    optional     pam_console.so 
[root@localhost pam.d]# tty
/dev/pts/2
[root@localhost pam.d]# ls /dev/tty1
/dev/tty1

Linux-PAM认证模块的更多相关文章

  1. 检查是否使用PAM认证模块禁止wheel组之外的用户su为root

    编辑su文件(vi /etc/pam.d/su),在开头添加下面两行: auth sufficient pam_rootok.so 和 auth required pam_wheel.so group ...

  2. centos6.5下vsftpd服务的安装及配置并通过pam认证实现虚拟用户文件共享

    FTP的全称是File Transfer Protocol(文件传输协议),就是专门用来传输文件的协议.它工作在OSI模型的第七层,即是应用层,使用TCP传输而不是UDP.这样FTP客户端和服务器建立 ...

  3. 什么是PAM认证

    PAM(Pluggable Authentication Modules )是由 Sun 提出的一种用于实现应用程序的认证机制.其核心是一套共享库,目的是提供一个框架和一套编程接口,将认证工作由程序员 ...

  4. Linux可插拔认证模块(PAM)的配置文件、工作原理与流程

    PAM的配置文件: 我们注意到,配置文件也放在了在应用接口层中,他与PAM API配合使用,从而达到了在应用中灵活插入所需鉴别模块的目的.他的作用主要是为应用选定具体的鉴别模块,模块间的组合以及规定模 ...

  5. Linux操作系统 可插拔认证模块PAM(3)

    六.Linux 操作系统安全登陆设计 自己编写PAM 模块并编译成动态链接库so 文件,将其添加进/etc/pam.d/login 文件中实现命令行安全登陆设计,将其添加进/etc/pam.d/lig ...

  6. 【Linux】常用的Linux可插拔认证模块(PAM)应用举例:pam_limits.so、pam_rootok.so和pam_userdb.so模块

    常用的Linux可插拔认证模块(PAM)应用举例:pam_limits.so.pam_rootok.so和pam_userdb.so模块 pam_limits.so模块: pam_limits.so模 ...

  7. Linux PAM 之cracklib模块

       如何在Linux系统中限制密码长度的同时对密码的复杂程度也进行管理,最近发现有人的密码符合长度规则,但是却很简单很容易被猜出来,查了相关资料后发现了PAM中的pam_cracklib模块就是用来 ...

  8. linux pam 控制模式

    工作类别(type).流程栈(stack)和控制模式(control) Linux-PAM 工作的"类别"(type) PAM 的具体工作主要有以下四种类别(type):accou ...

  9. Linux PAM&&PAM后门

    Linux PAM&&PAM后门 我是壮丁 · 2014/03/24 11:08 0x00 PAM简介 PAM (Pluggable Authentication Modules )是 ...

  10. PAM认证机制详情

    PAM(Pluggable Authentication Modules)认证机制详情 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.      一.介绍PAM PAM(Plugga ...

随机推荐

  1. 如何判断PHP 是线程安全还是非线程安全的

    什么是线程安全与非线程安全? 线程安全就是在多线程环境下也不会出现数据不一致,而非线程安全就有可能出现数据不一致的情况. 线程安全由于要确保数据的一致性,所以对资源的读写进行了控制,换句话说增加了系统 ...

  2. Linux下的百度云客户端

    项目的github地址:https://github.com/LiuLang/bcloud 安装包以及说明:https://github.com/LiuLang/bcloud-packages 我在百 ...

  3. MySQL数据库INSERT、UPDATE、DELETE以及REPLACE语句的用法详解

    本篇文章是对MySQL数据库INSERT.UPDATE.DELETE以及REPLACE语句的用法进行了详细的分析介绍,需要的朋友参考下   MySQL数据库insert和update语句引:用于操作数 ...

  4. [歪谈]我们该怎么正确面对"批评"

    这两天看到网上有类似这样的话题:遇到批评你是如何面对? 其实标题中没有“领导”,并不是专指:遇到“领导”批评你是如何面对? 在IT界(其他行业和领域就不谈了).         批评分三个层面: 1. ...

  5. 2013长沙赛区现场赛 J - Josephina and RPG

    J - Josephina and RPG Time Limit:2000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I6 ...

  6. Eclipse经常报Unhandled event loop exception的原因

    在公司的电脑上,Eclipse经常报Unhandled event loop exception 错误,非常频繁,通过搜索发现是因为电脑上安装了百度杀毒导致的.... 无语 另外 teamviewer ...

  7. LoadRunner脚本编写(转)

    性能测试工程师要懂代码么?答案是必须的.好多测试员认为在loadrunner中编写脚本很难很牛X ,主要是大多测试人员并未做过开发工作,大学的那点程序基础也忘记的差不多了.还有非计算机专业出身的测试员 ...

  8. SDK 移动应用开发系统

    AppCan SDK 是一套跨平台移动应用开发系统,基于业内领先的Hybrid App 开发引擎,采用HTML5 标准作为开发语言,支持一次开发多平台适配.AppCan SDK 提供应用向导和界面向导 ...

  9. HDU 5651 计算回文串个数问题(有重复的全排列、乘法逆元、费马小定理)

    原题: http://acm.hdu.edu.cn/showproblem.php?pid=5651 很容易看出来的是,如果一个字符串中,多于一个字母出现奇数次,则该字符串无法形成回文串,因为不能删减 ...

  10. MongoDB的学习和使用(查询find)

    语法 MongoDB 查询数据的语法格式如下: >db.COLLECTION_NAME.find() find() 方法以非结构化的方式来显示所有文档. 如果你需要以易读的方式来读取数据,可以使 ...