默认教学计划
931人加入学习
(20人评价)
Linux运维基础
价格 ¥ 599.00
该课程属于 高校公益行 | 网络安全实践训练营 请加入后再学习

可动态加载验证模块:

    在Linux中执行有些程序时,这些程序在执行前首先要对启动它的用户进行认证,符合一定的要求之后才允许执行,例如login, su等

    在Linux中进行身份或是状态的验证程序是由PAM来进行的,因为可以按需要动态的对验证的内容进行变更,所以可以大大提高验证的灵活性。PAM本身不会执行验证,而是借助策略和模块来验证

    Linux各个发行版中,PAM使用的验证模块一般存放在/lib64/security/目录下,可以使用ls命令进行查看本计算机支持哪些验证控制方式,一般的PAM模块名字例如pam_unix.so,模块可以随时在这个目录下添加和删除,这不会直接影响程序运行,具体的影响在PAM的配置目录下。

    PAM的配置文件位于/etc/pam.d/下面。ls命令可以看到所有支持PAM模块的服务以及这些服务使用PAM的配置。(注:/etc/pam.d/other 为服务PAM配置文件没有匹配的PAM时使用的默认配置文件)

 

查看服务是否支持PAM验证模块:

    ldd service_dir(服务所在目录) | grep libpam

如:ldd /usr/sbin/vsftpd | grep libpam

 

PAM配置文件的格式:

type control modules [modules_args]

第一列代表模块类型, 第二列代表控制标记, 第三列代表模块路径:要调用模块的位置。一般是在/lib64/security文件中, 第四列是模块参数。

 

type:

auth: 用来对用户的身份进行识别.如:提示用户输入密码,或判断用户是否为root

account:对帐号的各项属性进行检查.如:是否允许登录,是否达到最大用户数,或是root用户是否允许在这个终端登录等

session:这个模块用来定义用户登录前的及用户退出后所要进行的操作.如:登录连接信息,用户数据的打开与关闭,挂载文件系统等.

passwd:使用用户信息来更新.如:修改用户密码

 

control:

required: 表示即使某个模块对用户的验证失败,也要等所有的模块都执行完毕后,PAM 才返回错误信息。这样做是为了不让用户知道被哪个模块拒绝。如果对用户验证成功,所有的模块都会返回成功信息

requisite: 与required相似,但是如果这个模块返回失败,则立刻向应用程序返回失败,表示此类型失败.不再进行同类型后面的操作.

sufficient:表示如果一个用户通过这个模块的验证,PAM结构就立刻返回验证成功信息(即使前面有模块fail了,也会把 fail结果忽略掉),把控制权交回应用程序。后面的层叠模块即使使用requisite或者required 控制标志,也不再执行。如果验证失败,sufficient 的作用和 optional 相同

optional:表示即使本行指定的模块验证失败,也允许用户接受应用程序提供的服务,一般返回PAM_IGNORE(忽略).

include:引用其他的配置文件,把匹配权交给其他配置文件(如果其他配置跳出,则整个匹配结束)

substack:引用其他的配置,把匹配权交给其他配置文件(如果其他配置跳出,则仅仅跳出子匹配)

 

modules:匹配认证模块

/etc/pam.d/*:每一个应用程序PAM配置文件

/usr/lib64/security/*:PAM认证模块文件的实际存放位置

/etc/security/*:其他PAM环境的配置文件,比如 access.conf

/usr/share/doc/pam-x:存放详细的PAM的说明文件

常用模块:

PAM模块

结合管理类型

说明

pam_unix.so

auth

提示用户输入密码,并与/etc/shadow文件相比对.匹配返回0

account

检查用户的账号信息(包括是否过期等).帐号可用时,返回0.

password

修改用户的密码. 将用户输入的密码,作为用户的新密码更新shadow文件

pam_shells.so

auth

account 

如果用户想登录系统,那么它的shell必须是在/etc/shells文件中之一的shell

pam_deny.so

account

auth

password

session

该模块可用于拒绝访问

pam_permit.so

auth

account

password

session

模块任何时候都返回成功.

pam_securetty.so

auth

如果用户要以root登录时,则登录的tty必须在/etc/securetty之中.

pam_listfile.so

auth

account

password session

访问应用程的控制开关

pam_cracklib.so

password

这个模块可以插入到一个程序的密码栈中,用于检查密码的强度.

pam_limits.so

session

定义使用系统资源的上限,root用户也会受此限制,可以通过/etc/security/limits.conf或/etc/security/limits.d/*.conf来设定

[展开全文]

control 模块

value = action

value值: 

ignore 忽略执行结果

bad 如果失败,结果被用于整个执行栈,后续栈继续执行

die 和bad相似,但是失败直接返回结果,后续栈不执行

OK 如果pam_success,覆盖之前值

done 和OK相似,但是栈直接返回结果

reset 重置栈当前状态

 

modules  PAM认证模块 

/etc/pam.d/* : 每一个应用程序Pam配置文件

/usr/lib64/security Pam认证模块实际存放位置

/etc/security/* 其他Pam环境的配置文件,如access.conf

/usr/share/doc/pam-x 存放详细的Pam说明文件

 

查看应用程序是否支持Pam认证

    ldd app_path

Pam_nologin.so 限制普通使用者能否登陆主机进行使用,当/etc/nologin文件存在时,所有普通用户都无法登录

pam_cracklib.so 可限制恶意攻击,或者检查密码强度。

pam_pwquality.so 完全兼容pam_cracklib.so

检查密码强度,包括设置的密码是否在字典

pam_unix.so 提供验证阶段的验证功能,也可以提供授权管理

pam_env.so 设置环境变量的模块,如果需要额外的环境变量,可以使用pam_env.so进行设置,配置文件/etc/security/pam_env.conf

pam_secruetty.so 限制系统管理员只能从安全的终端登陆,安全终端:/etc/securetty

pam_limits.so 限制使用者打开文件数量,单个文件大小等;

    limits配置文件/etc/security/limits.conf

    格式 domain type item value

        ulimit  【选项】数值(即限额)

        -H  hard limit 严格的限制,必须不能超过这个设置的数值

        -S  soft limit 警告的限制,超过这个数值系统会发出警告,通常soft比hard小

        -a 后面不加任何选项,可以列出系统中所有的限制额度

        -c 当某个用户程序发生错误时,系统会将内存中的应用程序写成文件,这种文件称为核心文件(core file)限制每个核心文件的最大容量

        -f 此shell可以创建的文件的大小,单位kb

        -l 可以锁定的内存量

        -u 单一用户可以使用的最大进程量

        -t 可以使用的最大CPU时间

pam_rootok.so 如果UID为0,直接通过,如root用户su到普通用户使用此模板

pam_listfile.so 验证使用其他的文件

pam_access.so 控制访问的模块,默认配置/etc/security/access.conf

 

 

 

 

[展开全文]