安全加密之-PAM

简介: 时间:2018.1.16作者:李强参考:man,info,magedu讲义,万能的internet实验环境:VMware® Workstation 12 Pro ,Centos 6.9,Centos 7.4,SecureCRT Version 8.1.4声明:以下英文纯属个人翻译,英文B级,欢迎纠正,以下内容纯属个人理解,并没有对错,只是参考,盗版不纠,才能有限,希望不误人子弟为好。

时间:2018.1.16
作者:李强
参考:man,info,magedu讲义,万能的internet
实验环境:VMware® Workstation 12 Pro ,Centos 6.9,Centos 7.4,SecureCRT Version 8.1.4
声明:以下英文纯属个人翻译,英文B级,欢迎纠正,以下内容纯属个人理解,并没有对错,只是参考,盗版不纠,才能有限,希望不误人子弟为好。

Pluggable Authentication Modules

  • 原由;

我们在系统中经常要用到各种认证,login登录需要认证,ssh,telnet ,ftp等需要认证,snmp,smtp等也需要认证,总之既然大家都需要认证,那么找个人统一管理下好不好。PAM有个各个认证模块,关于资源限制的,关于用户账号的,关于登录时间的,各个模块,当你的服务需要认证时,你只要把你的需求告诉PAM,它就会根据/etc/pam.d/下你指定的认证机制来去调用/etc/security下各个库。
各种应用服务只需要提供服务就好,验证的事情就交给系统和PAM来处理,然后告诉你是提供还是拒绝服务。
只要ldd 调用了libpam.so 库文件的都可以受其控制

  • 认证过程:
graph LR

A[application]-->B[libpam.so]
B[/etc/pam.d/application]-->C[/lib*/secure/*.so]
C[/lib*/secure/*.so]-->D[/lib*/secure/*.conf]

1.使用者执行/usr/bin/passwd 程序,并输入密码

2.passwd开始调用PAM模块,PAM模块会搜寻passwd程序的PAM相关设置文件,这个设置文件一般是在/etc/pam.d/里边的与程序同名的文件,即PAM会搜寻/etc/pam.d/passwd此设置文件

3.经由/etc/pam.d/passwd设定文件的数据,取用PAM所提供的相关模块来进行验证

4.将验证结果回传给passwd这个程序,而passwd这个程序会根据PAM回传的结果决定下一个动作(重新输入密码或者通过验证)

配置文件格式

man -k pam

查看各个pam中模块的使用帮助

man pam.conf

/etc/pam.d/下的配置文件格式

因为其子系统太多,因此默认不存在/etc/pam.conf配置文件。而是放在各个子配置文件中。各个应用的pam认证规则配置存放在/etc/pam.d中

回归正题格式为:
type control module-path module-arguments

type control module-path module-arguments
auth require /lib64/secure xxx
account x
password x
-type x
  • type

    auth:账号的认证或授权
    account:与账号管理的非认证的功能:如用来限制/允许用户对某个服务的访问时间,当前有效的系统资源(最多可以登录多少账户),限制用户的位置(root用户只能通过tty终端登录)等
    password:用户修改密码时密码复杂度检查机制等功能
    session:用户获得服务之前或者使用服务之后需要进行的一些附加操作,比如记录打开或关闭数据的信息,监控目录等
    -type:表示因为缺失而不能加载的模块将不记录到系统日志,对那些不总是安装在系统上的模块有用
  • control(PAM库如何处理与该服务相关的PAM模块成功或失败情况,两种方式实现:简单和复杂)
简单方式实现:一个关键字实现
require:一票否决,表示本模块必须成功才能通过
requisite:一票否决,同上
sufficient:一票通过,表示本模块返回成功则通过身份认证
optional:可选,它的成功与否不会对身份认证起关键作用,参考用
include:调用其他配置文件中定义的配置信息

复杂方式实现: 使用一个或多个"status=action"
[status1=action1 status2=action2....]
Status:检查结果的返回状态,success ,default
Action:ok,done,bad,die,ignore,reset
ok 模块通过继续检查
done 模块通过,返回最后结果给应用
bad 结果失败,继续检查
die 结果失败,返回失败结果给应用
ignore 结果忽略,不影响最后结果
reset 忽略已经得到的结果
  • module-path(模块路径,一般相对路径/lib64/security下模块)
pam_nologin.so 普通用户允许登录,如果/etc/nologin文件存在,非root用户不能登录,如果用shell是/sbin.nologin 登录时会显示/etc/nologin文件内容,并拒绝登录
pam_shells.so 控制登录终端类型,检查登录用户shell类型为 /etc/shells中的类型,方可登录
pam_securetty.so 只允许root登录在/etc/securetty列出的安全终端上
pam_limits.so 在用户级别实现对其可用的资源限制,例如:可打开的文件数量,可运行的进程数量,可使用的内存空间等。
修改限制的方式
1、ulimit命令,立即生效,单无法保存,只在当前会话有效
2、配置文件/etc/scurity/limits.conf,/etc/scurity/limits.d/*.conf
  • module-arguments (用来传递给该模块的参数,配置少时用参数,多时可以考虑/etc/security下的各个模块的配置文件)
相关文章
|
4天前
|
存储 安全 算法
探索未来数据保护的钥匙:安全加密算法
在数字化时代,数据安全成为了一个重要的议题。本文将深入探讨安全加密算法的作用和意义,以及其在数据保护中的应用。通过对不同类型的加密算法进行介绍和比较,我们将揭示它们在保护个人隐私和商业机密方面的重要性。同时,我们还将探讨未来发展趋势,展望安全加密算法在数据保护领域的潜力。
88 1
|
4天前
|
算法 安全 中间件
中间件数据传输加密算法选择
选择中间件数据传输的加密算法需考虑安全性、性能、兼容性和成本。常用算法包括:对称加密的AES和DES,非对称的RSA和ECC,以及哈希算法SHA-256和MD5。AES和ECC提供高效安全的加密,RSA适合密钥交换,SHA-256用于数据完整性验证。DES和MD5安全性较低,应谨慎使用。综合考虑各种因素,并结合其他安全措施构建全面的安全体系。
34 3
|
4天前
|
算法 Serverless 数据安全/隐私保护
密钥的使用和安全性
【5月更文挑战第13天】密钥的使用和安全性
11 1
|
4天前
|
存储 安全 网络安全
C#编程的安全性与加密技术
【4月更文挑战第21天】C#在.NET框架支持下,以其面向对象和高级特性成为安全软件开发的利器。本文探讨C#在安全加密领域的应用,包括使用System.Security.Cryptography库实现加密算法,利用SSL/TLS保障网络传输安全,进行身份验证,并强调编写安全代码的重要性。实际案例涵盖在线支付、企业应用和文件加密,展示了C#在应对安全挑战的同时,不断拓展其在该领域的潜力和未来前景。
|
4天前
|
算法 安全 网络安全
HTTPS加密原理解析:保障通信安全的密码学算法
HTTPS加密原理解析:保障通信安全的密码学算法
73 0
|
9月前
|
算法 数据安全/隐私保护
国家专用加密数据传输之rsa,3des加密方法
国家专用加密数据传输之rsa,3des加密方法
83 0
|
9月前
|
Web App开发 存储 安全
「可信计算」助力TLS 传输更安全
「可信计算」助力TLS 传输更安全
124 0
|
安全 算法 网络安全
网络和通信安全中的SSL / TLS国密改造
GB/T39786提供了信息系统密码应用的技术框架,互联网、政务外网、企业专网等网络类型,涉及通信主体的各个要素,都需要遵循要求进行改造升级。
2257 0
网络和通信安全中的SSL / TLS国密改造
|
监控 安全 网络协议
DockerClient端与DockerDaemon的通信安全
容器的安全性问题的根源在于容器和宿主机共享内核。如果容器里的应用导致Linux内核崩溃,那么整个系统可能都会崩溃。 与虚拟机是不同的,虚拟机并没有与主机共享内核,虚拟机崩溃一般不会导致宿主机崩溃。
DockerClient端与DockerDaemon的通信安全
|
安全 算法 网络安全
【计算机网络】网络安全 : 数据加密模型 ( 加密模型 | 密钥 | 密码学 | 密码安全 )
【计算机网络】网络安全 : 数据加密模型 ( 加密模型 | 密钥 | 密码学 | 密码安全 )
529 0
【计算机网络】网络安全 : 数据加密模型 ( 加密模型 | 密钥 | 密码学 | 密码安全 )