阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Linux系统之pam模块

646次阅读
没有评论

共计 3172 个字符,预计需要花费 8 分钟才能阅读完成。

一、pam 简介

Linux-PAM(linux 可插入认证模块)是一套共享库, 使本地系统管理员可以随意选择程序的认证方式. 换句话说, 不用 (重新编写) 重新编译一个包含 PAM 功能的应用程序, 就可以改变它使用的认证机制. 这种方式下, 就算升级本地认证机制, 也不用修改程序.

PAM 使用配置 /etc/pam.d/ 下的文件, 来管理对程序的认证方式. 应用程序 调用相应的配置文件, 从而调用本地的认证模块. 模块放置在 /lib/security 下, 以加载动态库的形式进,像我们使用 su 命令时, 系统会提示你输入 root 用户的密码. 这就是 su 命令通过调用 PAM 模块实现的.

二、PAM 的配置文件介绍

PAM 配置文件有两种写法:

一种是写在 /etc/pam.conf 文件中,但 CentOS6 之后的系统中,这个文件就没有了。

另一种写法是, 将 PAM 配置文件放到 /etc/pam.d/ 目录下, 其规则内容都是不包含 service 部分的,即不包含服务名称,而 /etc/pam.d 目录下文件的名字就是服务名称。如: vsftpd,login 等., 只是少了最左边的服务名列. 如:/etc/pam.d/sshd

Linux 系统之 pam 模块

由上图可以将配置文件分为四列,

第一列代表模块类型

第二列代表控制标记

第三列代表模块路径

第四列代表模块参数

1.PAM 的模块类型

Linux-PAM 有四种模块类型, 分别代表四种不同的任务

它们是: 认证管理 (auth), 账号管理(account), 会话管理(session) 和密码 (password) 管理, 一个类型可能有多行, 它们按顺序依次由 PAM 模块调用.

管理方式说明
auth用来对用户的身份进行识别. 如: 提示用户输入密码, 或判断用户是否为 root 等.
account

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

session

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

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

2.PAM 的控制标记
PAM 使用控制标记来处理和判断各个模块的返回值.(在此只说明简单的认证标记)

控制标记说明
required

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

requisite

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

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

3. 模块路径

模块路径. 即要调用模块的位置. 如果是 64 位系统,一般保存在 /lib64/security, 如: pam_unix.so

同一个模块, 可以出现在不同的类型中. 它在不同的类型中所执行的操作都不相同. 这是由于每个模块

针对不同的模块类型, 编制了不同的执行函数.

4. 模块参数

模块参数, 即传递给模块的参数. 参数可以有多个, 之间用空格分隔开, 如:

password  required  pam_unix.so nullok obscure min=4 max=8 md5

三、常用的 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.soauth如果用户要以 root 登录时, 则登录的 tty 必须在 /etc/securetty 之中.
pam_listfile.so

auth

account

password session

访问应用程的控制开关
pam_cracklib.sopassword

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

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

四、实例

1、pam_securetty.so

限制 root 从 tty1,tty2,tty5 登录(无实际意义,只是演示 pam_securetty 的用法)

在 /etc/pam.d/login 中添加如下一行

auth  required        pam_securetty.so

Linux 系统之 pam 模块

在 /etc/pam.d/securetty 中将 tty1,tty2,tty5 注释即可

Linux 系统之 pam 模块

之后使用 root 用户再次登录,就会出现

Linux 系统之 pam 模块

这么做其实并不是只限制 root 用户,也可以将其它用户用此方法来限定,当系统安装完成后,使用此方法来增强一下安全性。

2、pam_listfile.so

仅 essun 用户可以通过 ssh 远程登录

在 /etc/pam.d/sshd 文件中添加一条

auth      required    pam_listfile.so item=user sense=allow file=/etc/sshdusers onerr=succeed

Linux 系统之 pam 模块

添加两个用户 essun 和 tom

Linux 系统之 pam 模块

编辑 file 指定的文件,添加上一个用户 essun

#echo “essun” >/etc/sshdusers

使用 tom 用户登录

Linux 系统之 pam 模块

可以看到提示输入密码,当输入正确的密码后会提示

Linux 系统之 pam 模块

就像输入了错误的密码一样。而在使用 essun 用户登录则不会出现拒绝登录的提示

Linux 系统之 pam 模块

注:此处如果 root 也使用 ssh 远程连接,也会受到 pam_listfile.so 限制的。

其实 pam 模块的使用方法套路都差不多

如想了解更多的 PAM 模块的用法请 man modules

温馨提示:

如果发生错误,Linux-PAM 可能会改变系统的安全性。这取决于你自己的选择,你可以选择不安全 (开放系统) 和绝对安全(拒绝任何访问)。通常,Linux-PAM 在发生错误时,倾向于后者。任何的配置错误都可能导致系统整个或者部分无法访问。

配置 Linux-PAM 时,可能遇到最大的问题可能就是 Linux-PAM 的配置文件 /etc/pam.d/* 被删除了。如果发生这种事情,你的系统就会被锁住。

有办法可以进行恢复,最好的方法就是用一个备份的镜像来恢复系统,或者登录进单用

户模式然后进行正确的配置。

教你启用 Ubuntu Server 的 SSH 多重身份验证  http://www.linuxidc.com/Linux/2016-02/128138.htm

使用 PAM 集成 OpenLDAP 实现 Linux 统一管理系统用户  http://www.linuxidc.com/Linux/2014-08/105597.htm

本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-02/128148.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计3172字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7993127
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
如何免费使用强大的Nano Banana Pro?附赠邪修的用法

如何免费使用强大的Nano Banana Pro?附赠邪修的用法

如何免费使用强大的 Nano Banana Pro?附赠邪修的用法 前言 大家好,我是星哥,今天来介绍谷歌的 ...
开发者福利:免费 .frii.site 子域名,一分钟申请即用

开发者福利:免费 .frii.site 子域名,一分钟申请即用

  开发者福利:免费 .frii.site 子域名,一分钟申请即用 前言 在学习 Web 开发、部署...
零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face 免费服务器 +Docker 快速部署 HertzBeat 监控平台 ...
小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比

小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比

小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比 星哥玩云,带你从小白到上云高手。今天咱们就来聊聊——什...
星哥带你玩飞牛NAS-1:安装飞牛NAS

星哥带你玩飞牛NAS-1:安装飞牛NAS

星哥带你玩飞牛 NAS-1:安装飞牛 NAS 前言 在家庭和小型工作室场景中,NAS(Network Atta...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

  告别 Notion 焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁” 引言 在数字笔记工...
让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级 大家好,我是星哥,之前写了一篇文章 自己手撸一...
150元打造低成本NAS小钢炮,捡一块3865U工控板

150元打造低成本NAS小钢炮,捡一块3865U工控板

150 元打造低成本 NAS 小钢炮,捡一块 3865U 工控板 一块二手的熊猫 B3 工控板 3865U,搭...
开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

  开源 MoneyPrinterTurbo 利用 AI 大模型,一键生成高清短视频! 在短视频内容...
支付宝、淘宝、闲鱼又双叕崩了,Cloudflare也瘫了连监控都挂,根因藏在哪?

支付宝、淘宝、闲鱼又双叕崩了,Cloudflare也瘫了连监控都挂,根因藏在哪?

支付宝、淘宝、闲鱼又双叕崩了,Cloudflare 也瘫了连监控都挂,根因藏在哪? 最近两天的互联网堪称“故障...