打造更安全的Linux系统:玩转PAM配置文件

在Linux系统中,用户认证是确保系统安全的关键步骤。PAM(可插拔认证模块)为我们提供了一个非常灵活的框架,帮助我们管理各种服务的认证过程。其中,/etc/pam.d目录是PAM配置的核心部分,这里存放了每个服务所需的认证规则文件。在这篇文章里,我们将一起探索 /etc/pam.d的重要性,并学习如何通过调整这些文件来进一步增强系统的安全性。

什么是PAM?

PAM是一种模块化的认证机制,允许管理员自定义系统和服务的认证流程。PAM的设计特点包括:

  • 灵活性: 各种认证功能通过模块实现,可以按需启用或禁用。
  • 模块化: 不同服务可以共享通用模块,减少重复配置。
  • 安全性: 支持多种安全策略,例如密码复杂性、多因素认证等。

/etc/pam.d的作用

/etc/pam.d目录存放了PAM 的配置文件,每个文件对应一个服务或程序,例如 sshdsudologin 等。这些文件定义了服务的认证规则,包括密码验证、账户检查、会话管理等内容。

常见文件和用途

文件名功能描述
login控制通过终端登录的认证方式
sshd控制SSH服务的认证方式
sudo控制使用 sudo提升权限时的认证方式
common-auth通用的身份验证模块,很多服务会引用它
common-password通用的密码规则模块,定义密码策略
common-account通用的账户管理模块,定义账户权限相关规则
common-session通用的会话管理模块,定义会话生命周期规则

如下图是Ubuntu 20.04/etc/pam.d目录下的文件:

PAM配置文件结构

每个 /etc/pam.d 配置文件由多行规则组成,格式如下:

模块类型  控制标志  模块路径  模块参数

字段解释

  1. 模块类型

    • auth:认证规则,如密码验证。

    • account:账户管理规则,如账户锁定检查。

    • password:密码管理规则,如密码复杂性要求。

    • session:会话管理规则,如资源限制或登录记录。

  2. 控制标志

    • required:必须成功,失败不会立即终止,但最终结果会失败。

    • requisite:必须成功,失败会立即终止认证。

    • sufficient:成功则认证通过,后续模块不再执行。

    • optional:成功或失败对整体认证无影响。

  3. 模块路径 通常为 /lib/security//usr/lib/security/ 下的PAM模块文件。

  4. 模块参数 用于定义模块的具体行为。

示例配置:/etc/pam.d/sshd

以下是一个典型的 sshd 配置文件:

auth       required     pam_env.so
auth       required     pam_unix.so
auth       required     pam_tally2.so deny=5 unlock_time=300
account    required     pam_unix.so
password   required     pam_unix.so
session    required     pam_limits.so
session    optional     pam_motd.so
session    required     pam_unix.so
配置解读
  • pam_env.so:加载用户环境变量。

  • pam_unix.so:使用传统的UNIX密码验证。

  • pam_tally2.so:限制登录失败次数(如连续 5 次失败锁定账户5分钟)。

  • pam_limits.so:加载系统资源限制。

  • pam_motd.so:显示登录时的消息。

如何增强系统安全性?

通过合理配置 /etc/pam.d 文件,可以显著提升系统安全性。以下是一些推荐的实践:

1. 限制登录失败次数

使用 pam_tally2 模块限制登录失败次数,防止暴力破解。

auth required pam_tally2.so deny=5 unlock_time=300
  • deny=5:连续失败5次后锁定账户。

  • unlock_time=300:5分钟后自动解锁。

2. 强制密码复杂性

使用 pam_pwquality 模块强制密码复杂性要求。

password requisite pam_pwquality.so retry=3 minlen=12 difok=4
  • retry=3:用户有3次机会输入合格密码。

  • minlen=12:密码至少12个字符。

  • difok=4:新密码与旧密码至少有4个字符不同。

还有一些其他比较少用的参数:

  • dcredit=N:定义用户密码中必须包含多少个数字;

  • ucredit=N:定义用户密码中必须包含多少个大写字母;

  • lcredit=N:定义用户密码中必须包含多少个小些字母;

  • ocredit=N:定义用户密码中必须包含多少个特殊字符(除数字、字母之外)

3. 限制资源使用

通过 pam_limits.so 限制用户的系统资源使用,防止资源滥用。

session required pam_limits.so

结合 /etc/security/limits.conf 文件,可以配置用户的最大文件数、进程数等。

4. 显示警告信息

通过 pam_motd.so 显示登录警告或公告信息。

session optional pam_motd.so

将警告信息写入/etc/motd,如:

Unauthorized access is prohibited.

排查 PAM 配置问题

错误的PAM配置可能导致用户无法登录或服务异常。以下是一些排查建议:

  1. 检查日志文件PAM的错误信息会记录在 /var/log/auth.log/var/log/secure中。
tail -f /var/log/auth.log
  1. 使用调试模式 某些服务支持调试模式,可以输出详细的 PAM 调用信息。例如:
sshd -ddd
  1. 备份配置文件 在修改 /etc/pam.d 文件之前,务必先备份原始文件。
cp /etc/pam.d/sshd /etc/pam.d/sshd.bak

总结

/etc/pam.d 是Linux系统认证的核心,通过合理配置这些文件,可以有效提升系统的安全性和可控性。从限制登录失败次数到强制密码复杂性,PAM提供了丰富的功能来保护系统。希望本文能帮助你掌握 /etc/pam.d 的配置技巧,为你的Linux系统打造更加坚固的安全防线!

推荐阅读


  • Ansible实战:如何正确选择command和shell模块?
  • 运维效率倍增!Ansible Copy 模块必知必会操作
  • 如何在Ansible中轻松实现复杂SSH跳转?这个参数搞定
  • Ansible Setup模块实战,如何使用Setup模块收集主机信息
  • 从入门到精通:Ansible Shell 模块的应用与最佳实践
  • 深入了解Ansible配置与主机清单:轻松管理自动化任务

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/955738.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

无人机技术架构剖析!

一、飞机平台系统 飞机平台系统是无人机飞行的主体平台,主要提供飞行能力和装载功能。它由机体结构、动力装置、电气设备等组成。 机体结构:无人机的机身是其核心结构,承载着其他各个组件并提供稳定性。常见的机身材料包括碳纤维、铝合金、…

【西藏乡镇界面】图层arcgis格式shp数据有乡镇名称和编码2020年wgs84坐标内容测评

西藏乡镇界面图层arcgis格式shp数据有乡镇名称和编码2020年wgs84坐标无偏移

【QT】: 初识 QWidget 控件 | QWidget 核心属性(API) | qrc 文件

🔥 目录 1. 控件概述 控件体系的发展阶段 2. QWidget 核心属性 2.1 核心属性概览2.2 用件可用(Enabled) 2.3 坐标系(Geometry) **实例 1: 控制按钮的位置**实例 2: 表白 程序 2.4 窗口标题(windowTiltle&a…

PCM5142集成32位384kHz PCM音频立体声114dB差分输出DAC编解码芯片

目录 PCM5142 简介PCM5142功能框图PCM5142特性 参考原理图 PCM5142 简介 PCM514x 属于单片 CMOS 集成电路系列,由立体声数模转换器 (DAC) 和采用薄型小外形尺寸 (TSSOP) 封装的附加支持电路组成。PCM514x 使用 TI 最新一代高级分段 DAC 架构产品,可实现…

python学opencv|读取图像(三十四)阈值处理-彩色图像

【1】引言 前序已经掌握了使用阈值处理函数控制灰度图的RGB值,相关链接为: python学opencv|读取图像(三十三)阈值处理图像-限定像素-CSDN博客 在更早的学习中,灰度图的RGB只有一个通道,也就是各个像素点…

jmeter事务控制器-勾选Generate Parent Sample

1、打开jmeter工具,添加线程组,添加逻辑控制器-事务控制器 2、在事务控制器,勾选Generate parent sample:生成父样本;说明勾选后,事务控制器会作为父节点,其下面的请求作为子节点 3、执行&#…

C++ ——— 学习并使用 string 类

目录 学习 string 类 使用 string 类 实例化一个无参数的 string 对象 实例化一个带参数的 string 对象 合并两个字符串(重载了加运算符) 通过重载[]访问每个字符 迭代器遍历每个字符 范围 for 遍历每个字符 学习 string 类 何为 string 类&…

拟合算法 (matlab工具箱)

拟合算法: 1线性最小二乘法拟合 使用matlab进行求解 拟合优度:R^2 拟合优度的matlab代码: 2,Matlab工具箱的教学 一些函数: 拟合算法: 插值算法中,得到的多项式f(x)要经过所有样本点。但是如果样本点太多&#…

实力认证 | 海云安入选《信创安全产品及服务购买决策参考》

近日,国内知名安全调研机构GoUpSec发布了2024年中国网络安全行业《信创安全产品及服务购买决策参考》,报告从产品特点、产品优势、成功案例、安全策略等维度对各厂商信创安全产品及服务进行调研了解。 海云安凭借AI大模型技术在信创安全领域中的创新应用…

闲谭SpringBoot--ShardingSphere分布式事务探究

文章目录 0. 背景1. 未分库分表时2. 仅分表时3. 分库分表时3.1 不涉及分库表3.2 涉及分库表,且分库表处于一个库3.3 涉及分库表,且分库表处于多个库3.4 涉及分库表,且运行中某库停机 4. 小结 0. 背景 接上篇文章《闲谭SpringBoot–ShardingS…

【Azure 架构师学习笔记】- Azure Function (2) --实操1

本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Function 】系列。 接上文【Azure 架构师学习笔记】- Azure Function (1) --环境搭建和背景介绍 前言 上一文介绍了环境搭建,接下来就在本地环境下使用一下。 环境准备 这里我下载了最新的VS studio&…

【Vue3 入门到实战】3. ref 和 reactive区别和适用场景

目录 ​编辑 1. ref 部分 1.1 ref定义基本数据类型 1.2 ref 定义引用数据类型 2. reactive 函数 3. ref 和 reactive 对比 3.1 原理 3.2 区别 3.3 使用原则 在 Vue 3 中 ref 和 reactive 是用于创建响应式数据的两个核心函数。它们都属于 Composition API 的一部分&…

k8s集群换IP

k8s集群搭建及节点加入时需要确定IP,但安装完成后设备移动到新环境可能出现网段更换或者IP被占用的情况,导致无法ping通节点或者无法打开原IP的服务。 解决方法为保持原有IP不更换,给网卡再加一个IP 这边使用两个ubuntu虚拟机模拟服务器和w…

学习threejs,使用FlyControls相机控制器

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️THREE.FlyControls 相机控制…

奉加微PHY6230兼容性:部分手机不兼容

从事嵌入式单片机的工作算是符合我个人兴趣爱好的,当面对一个新的芯片我即想把芯片尽快搞懂完成项目赚钱,也想着能够把自己遇到的坑和注意事项记录下来,即方便自己后面查阅也可以分享给大家,这是一种冲动,但是这个或许并不是原厂希望的,尽管这样有可能会牺牲一些时间也有哪天原…

Unity3D仿星露谷物语开发23之拿起道具的动画

1、目标 当点击库存栏上可以carry的道具时,首先arms替换为carry状态,同时手上拿着被点击的道具。当再次点击同一个道具时,ams替换为idle状态,手上放下之前的道具。 这个最主要的是要学会使用AnimatorOverrideController类。 2、…

【Unity3D】远处的物体会闪烁问题(深度冲突) Reversed-Z

知识点:深度冲突、像素闪烁现象、Reversed-Z(反向Z)、浮点数精度问题 前提概要:深度值都是由32位浮点数存储 原因:深度冲突,多个物体之间无法正确地渲染远近关系,出现上一帧可能是A物体在B物体…

彻底理解JVM类加载机制

文章目录 一、类加载器和双亲委派机制1.1、类加载器1.2、双亲委派机制1.3、自定义类加载器1.4、打破双亲委派机制 二、类的加载 图片来源:图灵学院   由上图可知,创建对象,执行其中的方法,在java层面,最重要的有获取…

【2024年华为OD机试】 (A卷,200分)- 快递投放问题(Java JS PythonC/C++)

一、问题描述 题目解析 题目描述 有 N 个快递站点用字符串标识,某些站点之间有道路连接。每个站点有一些包裹要运输,每个站点间的包裹不重复。路上有检查站会导致部分货物无法通行,计算哪些货物无法正常投递。 输入描述 第一行输入 M N&…

python爬虫爬取淘宝商品比价||淘宝商品详情API接口

最近在学习北京理工大学的爬虫课程,其中一个实例是讲如何爬取淘宝商品信息,现整理如下: 功能描述:获取淘宝搜索页面的信息,提取其中的商品名称和价格 探讨:淘宝的搜索接口 翻页的处理 技术路线:requests…