Linux-PAM认证模块

Linux-PAM认证模块

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

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

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

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

[[email protected] 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   设定独立用户帐号数据库认证

如下:

[[email protected] root]# cd /etc/pam.d/
[[email protected] 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
[[email protected] pam.d]# cd /usr/share/doc/pam-0.75/txts/
[[email protected] 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
[[email protected] 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.
[[email protected] 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
[[email protected] 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
[[email protected] txts]# pwd
/usr/share/doc/pam-0.75/txts
[[email protected] 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
[[email protected] txts]# touch /etc/nologin
[[email protected] txts]# useradd leekwen
[[email protected] txts]# passwd leekwen
Changing password for user leekwen.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
[[email protected] txts]# ssh [email protected]
[email protected]‘s password:
Permission denied, please try again.
[email protected]‘s password:
Permission denied, please try again.
[email protected]‘s password:
Permission denied (publickey,password,keyboard-interactive).
[[email protected] txts]# rm /etc/nologin
rm: remove regular empty file `/etc/nologin‘? y
[[email protected] txts]# ssh [email protected]
[email protected]‘s password:
[[email protected] leekwen]$ pwd
/home/leekwen
[[email protected] leekwen]$ exit
logout
Connection to 192.168.0.188 closed.
[[email protected] txts]# cd /etc/pam.d/
[[email protected] 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 
[[email protected] pam.d]# tty
/dev/pts/2
[[email protected] pam.d]# ls /dev/tty1
/dev/tty1

时间: 2024-10-05 23:25:27

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

Pam认证模块

pam:做认证的,nss:做用户(像ldap) /lib64/security/:所有pam模块都在这里存放着.(64位系统便是在/lib64存放着) /etc/pam.d/:pam服务的配置文件. 模块调用必须放在/lib64/security/这个目录下. 每个模块有4个功能的认证 auth:认证用户是否存在,然后再寻找pam account:比对账户的,例如账户身份是否过期. password:控制认证的更新,如密码的更改.复杂度. session:只记录事件.行为.例如:控制用户的进程.

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

编辑su文件(vi /etc/pam.d/su),在开头添加下面两行: auth sufficient pam_rootok.so 和 auth required pam_wheel.so group=wheel 这表明只有wheel组的成员可以使用su命令成为root用户. 你可以把用户添加到wheel组,以使它可以使用su命令成为root用户. 添加方法为:usermod –G wheel username

什么是PAM认证

PAM(Pluggable Authentication Modules )是由 Sun 提出的一种用于实现应用程序的认证机制.其核心是一套共享库,目的是提供一个框架和一套编程接口,将认证工作由程序员交给管理员,PAM 允许管理员在多种认证方法之间作出选择,它能够改变本地认证方法而不需要重新编译与认证相关的应用程序,同时也便于向系统中添加新的认证手段. PAM 最初是集成在 Solaris 中,目前已移植到其它系统中,如 Linux.SunOS.HP-UX 9.0 等,并在 Linux 中得到广

CentOS6.3下vsftpd通过pam认证实现虚拟用户文件共享

FTP的全称是File Transfer Protocol(文件传输协议),就是专门用来传输文件的协议.它工作在OSI模型的第七层,即是应用层,使用TCP传输而不是UDP.这样FTP客户端和服务器建立连接前就要经过一个"三次握手"的过程.FTP服务还有一个非常重要的特点是它可以独立于平台. LINUX下实现FTP服务的软件很多,最常见的有vsftpd,Wu-ftpd和Proftp等.Red Hat Enterprise Linux中默认安装的是vsftpd. 通常,访问FTP服务器时需

搭建vsftp pam认证

1.yum安装vsftpd程序: [[email protected] other]# yum install vsftpd -y 2.修改配置文件 [[email protected] other]# vi /etc/vsftpd/vsftpd.conf anonymous_enable=NO //是否允许anonymous登录FTP服务器,默认是允许的.local_enable=YES //是否允许本地用户登录FTP服务器,默认是允许write_enable=YES //是否允许用户具有在F

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

PAM的配置文件: 我们注意到,配置文件也放在了在应用接口层中,他与PAM API配合使用,从而达到了在应用中灵活插入所需鉴别模块的目的.他的作用主要是为应用选定具体的鉴别模块,模块间的组合以及规定模块的行为.下面是一个示例配置文件: # cat /etc/pam.d/system-auth: #%PAM-1.0 # This file is auto-generated. # User changes will be destroyed the next time authconfig is

Linux中pam认证详解(下)

Linux中pam认证详解(下) 在上一篇中详细的介绍了pam的介绍.pam认证原理.pam认证构成以及pam验证控制类型,下面向大家详细介绍一下常用的pam服务模块,以及pam认证的应用. 一.常用的pam服务模块 下面是Linux提供的PAM模块列表(只是其中一部分),这其中包含模块文件.模块功能描述和相关配置文件,具体如下: pam_access 提供logdaemon风格登录控制 /etc/security/access.conf pam_chroot 提供类似chroot命令的功能 p

Linux -- 加强Linux服务器安全-PAM认证

PAM(Pluggable Authentication Modules)即可插拔式认证模块,它是一种高效而且灵活便利的用户级别的认证方式,它也是当前Linux服务器普遍使用的认证方式.当然,在不同版本的Linux统中部署PAM认证是有所不同的,本文将以RHEL4版本为例进行解析. 1.部署PAM认证的必要性 我们知道一台Linux服务器会开许多不同的服务,这些服务中很多服务本身并没有认证功能,只是把认证交给用户名及密码.如果这样的话,那么所有服务都用Linux系统的用户名及密码来认证,对于服务

Linux PAM 之cracklib模块

???如何在Linux系统中限制密码长度的同时对密码的复杂程度也进行管理,最近发现有人的密码符合长度规则,但是却很简单很容易被猜出来,查了相关资料后发现了PAM中的pam_cracklib模块就是用来做密码复杂度检测的. ? ? ? ? 先简单的介绍一下PAM,PAM(Pluggable Authentication Modules )是由Sun提出的一种认证机制.它通过提供一些动态链接库和一套统一的API,将系统提供的服务和该服务的认证方式分开,使得系统管理员可以灵活地根据需要给不同的服务配置

TCP WRAPPERS、denyhosts软件的安装和配置、PAM身份认证模块应用

一.TCP WRAPPERS 1.TCP WRAPPERS的作用是什么? 保护服务器的一些服务,可以限制客户端访问这些服务. TCP WRAPPERS支持那些服务?判断一个服务是否支持TCP WRAPPERS的保护有那些方法? 查看该服务是否加载libwrap,查看该服务是不是基于xinetd服务. ssh ,vsftpd,telnet,http(不支持wrap模块)ipop3 2.检查服务是否支持被TCP WRAPPERS保护 3.防护规则存放在 /etc/hosts.allow /etc/h