当前位置: 首页 > news >正文

PAM | 账户安全 | 管理

PAM

PAM(Pluggable Authentication Modules,可插入式身份验证模块)是一个灵活的身份验证系统,允许我们通过配置和组合各种模块来实现不同的身份验证策略。
在这里插入图片描述

在 Linux 或类 Unix 系统中,常见的 PAM 模块包括以下几种类型:

  1. 认证模块(Authentication Modules)

    • 用于验证用户的身份,通常基于密码、密钥、证书、生物特征等。常见的认证模块包括:
      • pam_unix:基于传统的用户名和密码进行认证。
      • pam_ldap:与 LDAP 目录服务器进行身份验证。
      • pam_ssh:基于 SSH 密钥进行身份验证。
      • pam_radius:通过 RADIUS 服务器进行身份验证。
      • pam_google_authenticator:实现双因素认证。
  2. 账户管理模块(Account Management Modules)

    • 用于管理用户账户的状态,包括锁定、过期、禁止登录等。常见的账户管理模块包括:
      • pam_unix:管理用户密码的过期、锁定等状态。
      • pam_access:基于访问控制列表 (ACL) 控制用户对系统资源的访问权限。
      • pam_time:根据时间限制用户的登录。
  3. 密码管理模块(Password Management Modules)

    • 用于管理用户密码的策略,包括密码长度、复杂度要求、历史密码检查等。常见的密码管理模块包括:
      • pam_pwquality:实现密码质量检查,如密码长度、字符类型等。
      • pam_cracklib:使用 CrackLib 库检查密码的复杂度。
      • pam_unix:提供基本的密码管理功能,如修改密码、历史密码检查等。
  4. 会话管理模块(Session Management Modules)

    • 用于管理用户会话的操作,如记录登录信息、设置环境变量等。常见的会话管理模块包括:
      • pam_limits:设置用户资源限制,如进程数、文件打开数等。
      • pam_env:设置用户会话的环境变量。
      • pam_lastlog:记录用户上次登录信息。
  5. 模块控制模块(Module Control Modules)

    • 用于控制 PAM 模块的行为和执行顺序。常见的模块控制模块包括:
      • pam_stack:允许管理员创建自定义的 PAM 堆栈。

以上只是一些常见的 PAM 模块,实际还有许多其他模块可用于不同的身份验证需求。

账号安全

Linux系统的账户安全是保护系统免受未授权访问和潜在威胁的关键方面。

  1. 使用强密码:

    • 强制使用包含字母、数字和特殊字符的复杂密码。
    • 使用密码策略工具如 pam_pwquality 来限制密码的长度、字典单词等。
  2. 限制Root用户:

    • 避免直接使用root账户登录,而是使用普通用户再切换到root
    • 禁用直接root远程登录。
    • 配置 sudo 权限,只允许授权用户执行必要的管理员任务。
  3. 用户账户管理:

    • 禁用不必要的用户账户。
    • 定期审查用户账户,禁用不再需要的账户。
    • 设置用户账户过期时间,定期强制用户更改密码。
  4. SSH 安全配置:

    • 禁用不安全的SSH协议版本,仅使用SSHv2。
    • 配置SSH服务,限制允许登录的用户。
    • 使用SSH密钥身份验证,禁用密码身份验证(如果可能)。
  5. PAM (Pluggable Authentication Modules) 配置:

    • 使用PAM来实现更强大的身份验证和授权。
    • 配置PAM以限制登录尝试次数并锁定账户。
    • 强制使用pam_tallypam_faillock等模块来检测和阻止恶意登录尝试。
  6. 系统账户:

    • 禁用不必要的系统账户。
    • 将系统账户的登录Shell设置为 /sbin/nologin/bin/false
  7. Auditd 配置:

    • 启用审计功能以监视系统活动。
    • 配置 auditd 以记录关键系统事件,如登录、权限变更等。
  8. SELinux (Security-Enhanced Linux):

    • 启用SELinux以提供强制访问控制和更强大的安全策略。
    • 配置SELinux策略以适应您的应用程序和服务。
  9. 限制 su 和 sudo 权限:

    • 限制 su 命令的使用,仅允许授权用户切换到其他用户。
    • 配置 sudo 以限制哪些用户可以执行哪些命令,避免不必要的特权。
  10. 定期审计和监控:

    • 定期审计系统日志以检测异常活动。
    • 使用监控工具(如tripwire)来检测系统文件的变化。
  11. 禁用不必要的服务:

    • 禁用系统上不必要的网络服务和端口。
    • 定期审查和关闭未使用的服务。
  12. 更新和补丁管理:

    • 定期更新系统和软件包,确保安装最新的安全补丁。
    • 使用自动化工具(如unattended-upgrades)来自动安装安全更新。

措施

限制账号安全的配置涉及很多步骤,包括密码策略、访问控制、身份验证、日志和监控等。

  1. 强化密码策略:

    • 修改 /etc/security/pwquality.conf/etc/security/pwquality.conf 文件来配置密码质量要求。
    • 使用 pam_pwquality 模块来限制密码长度、包含字符类型和禁用字典单词。
  2. 限制账号登录:

    • 编辑 /etc/security/access.conf 文件,使用 pam_access 模块限制用户登录。
    • /etc/ssh/sshd_config 中配置 AllowUsersDenyUsers 以限制SSH登录。
  3. 账号锁定和登录尝试限制:

    • 使用 pam_tally2pam_faillock 模块配置账户锁定。
    • /etc/security/faillock.conf 中配置账户锁定的参数,如尝试次数和锁定时长。
    • 配置 /etc/pam.d/system-auth 文件以添加 auth required pam_tally2.so 行。
  4. 限制 su 和 sudo 权限:

    • 修改 /etc/pam.d/su 文件,限制哪些用户可以使用 su 命令。
    • 编辑 /etc/sudoers 文件,使用 sudo 命令配置特权用户和命令。
  5. 启用 SELinux:

    • 启用 SELinux 并配置强制访问控制。
    • 使用 semanagesetsebool 命令配置 SELinux 策略。
  6. 审计和监控:

    • 启用 auditd 审计框架。
    • /etc/audit/auditd.conf 中配置审计参数。
    • 编辑 /etc/pam.d/system-auth,添加 `session required pam_tty_audit.so enable=*" 行,启用终端审计。
  7. 定期审查用户账户:

    • 定期检查并禁用不再需要的用户账户。
    • 使用 usermod 命令修改账户属性,如锁定或设置过期日期。
  8. 启用登录二因素身份验证:

    • 配置 pam_google_authenticator 或其他二因素身份验证方法。
    • /etc/pam.d/sshd 中添加 auth required pam_google_authenticator.so 行。
  9. 限制 shell 访问:

    • /etc/passwd 中设置不常用账户的 Shell 为 /sbin/nologin/bin/false
    • 编辑 /etc/shells 文件,移除不需要的 shell。
  10. 定期修改密码:

    • /etc/login.defs 中设置密码最大寿命(PASS_MAX_DAYS)和密码最小寿命(PASS_MIN_DAYS)。
    • 使用 chage 命令设置密码策略,如 chage -M 90 -m 7 -W 7 username
  11. 使用账号管理工具:

    • 使用账号管理工具(如 useraddusermoduserdel)进行账户管理,以确保正确的权限和配置。
  12. 定期审查日志:

    • 定期审查系统和应用程序日志,查找异常活动和潜在的安全问题。
    • 使用工具(如 logwatch)自动化日志审查过程。

Ending


~喜欢的话,请收藏 | 关注(✪ω✪)~
~万一有趣的事还在后头呢,Fight!!(o^-^)~''☆ミ☆ミ~……

相关文章:

PAM | 账户安全 | 管理

PAM PAM(Pluggable Authentication Modules,可插入式身份验证模块)是一个灵活的身份验证系统,允许我们通过配置和组合各种模块来实现不同的身份验证策略。 在 Linux 或类 Unix 系统中,常见的 PAM 模块包括以下几种类…...

Leetcode 16-20题

最接近的三数之和 给定整数数组和目标值target,从数组中选出三个整数,使得和与target最接近,并返回三数之和。保证恰好存在一个解。 和上一题类似,我们先对整数数组排序,然后固定i,枚举j,找到满…...

【开源训练数据集1】神经语言程式(NLP)项目的15 个开源训练数据集

一个聊天机器人需要大量的训练数据,以便在无需人工干预的情况下快速解决用户的询问。然而,聊天机器人开发的主要瓶颈是获取现实的、面向任务的对话数据来训练这些基于机器学习的系统。 我们整理了训练聊天机器人所需的对话数据集,包括问答数据、客户支持数据、对话数据和多…...

【AIGC】Stable Diffusion的ControlNet参数入门

Stable Diffusion 中的 ControlNet 是一种用于控制图像生成过程的技术,它可以指导模型生成特定风格、内容或属性的图像。下面是关于 ControlNet 的界面参数的详细解释: 低显存模式 是一种在深度学习任务中用于处理显存受限设备的技术。在这种模式下&am…...

静态curl库编译与使用(c++)

静态curl库编译与使用 静态curl库编译与使用:mingw https://curl.se/windows/ // 测试:设置URL地址 // curl_easy_setopt(curlHandle, CURLOPT_URL, “https://ipinfo.io/json”); // curl_easy_setopt(curlHandle, CURLOPT_SSL_VERIFYPEER, 0L); // c…...

element 表单提交图片(表单上传图片)

文章目录 使用场景页面效果前端代码 使用场景 vue2 element 表单提交图片   1.点击【上传图片】按钮择本地图片(只能选择一张图片)后。   2.点击图片,支持放大查看。   3.点击【保存】按钮,提交表单。 页面效果 前端代码…...

Android 15 第一个开发者预览版

点击查看:first-developer-preview-android15 点击查看:Get Android 15 2024年2月16日,谷歌发布 Android 15 第一个开发者预览版 翻译 由工程副总裁戴夫伯克发布 今天,我们发布了Android 15的首个开发者预览版,这样我们的开发者就…...

anomalib1.0学习纪实-续1:增加新算法

0、基本信息 现在我要增加一个新算法:DDAD 他的代码,可以在github中找到:GitHub - arimousa/DDAD 一、基础操作: 1、修改anomalib\src\anomalib\models\__init__.py 我增加的第33行和61行, 2、 增加ddad文件夹和文…...

Java+Vue+MySQL,国产动漫网站全栈升级

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…...

机器人常用传感器分类及一般性要求

机器人传感器的分类 传感技术是先进机器人的三大要素(感知、决策和动作)之一。根据用途不同,机器人传感器可以分为两大类:用于检测机器人自身状态的内部传感器和用于检测机器人相关环境参数的外部传感器。 内部传感器 内部传感…...

C++-opencv的imread、imshow、waitkey、namedWindow

在C中使用OpenCV时,imread和imshow是两个非常基础且常用的函数,用于读取图像和显示图像。以下是这两个函数的简要说明和如何一起使用它们的示例。 imread函数 imread用于从指定的文件路径读取图像。它将图像读入为cv::Mat对象,这是OpenCV中…...

开源语音识别faster-whisper部署教程

1. 资源下载 源码地址 模型下载地址: large-v3模型:https://huggingface.co/Systran/faster-whisper-large-v3/tree/main large-v2模型:https://huggingface.co/guillaumekln/faster-whisper-large-v2/tree/main large-v2模型:…...

使用IntelliJ IDEA配置Maven (入门)

在使用IntelliJ IDEA进行Java开发时,配置Maven是至关重要的一步,因为它可以帮助你管理项目的依赖和构建过程。以下是我在使用IntelliJ IDEA配置Maven的实践过程,以及一些技术笔记和职场感悟。 工作实践与项目复盘 下载Maven: 访问…...

汽车金融市场研究:预计2029年将达到482亿美元

汽车金融公司作为汽车流通产业链的重要一环,认真贯彻落实国家有关政策,采取多种措施助力汽车产业发展,为促进推动汽车消费、助力畅通汽车产业链、支持稳定宏观经济大盘发挥了积极作用。 益于国内疫情得到有效控制,我国经济持续稳定…...

关于举办第十五届蓝桥杯大赛电子赛5G全网规划与建设赛项的通知

关于举办第十五届蓝桥杯大赛电子赛 5G全网规划与建设赛项的通知 各相关院校: 第十五届蓝桥杯大赛通知已于2023年9月27日在蓝桥杯大赛官网发布,现就电子赛5G全网规划与建设赛项报名事宜,公布如下: 一、赛项概述 5G全网规划与建设…...

Vue3快速上手(七) ref和reactive对比

一、ref和reactive对比 表格形式更加直观吧: 项目refreactive是否支持基本类型支持不支持是否支持对象类型支持支持对象类型是否支持属性直接赋值不支持,需要.value支持是否支持直接重新分配对象支持,因为操作的.value不支持,需…...

8、内网安全-横向移动RDPKerberos攻击SPN扫描WinRMWinRS

用途:个人学习笔记,有所借鉴,欢迎指正 目录 一、域横向移动-RDP-明文&NTLM 1.探针服务: 2.探针连接: 3.连接执行: 二、域横向移动-WinRM&WinRS-明文&NTLM 1.探针可用: 2.连接…...

《数据结构与算法之美》读书笔记

《数据结构与算法之美》读书笔记 写在前面 这本书的大部分内容比较浅显,因此只挑DSAA课程上没有涉及或没有深入讨论的点总结 第二章 数组相关 提高传统数组插入/删除数据效率的方法: 如果插入的数据不要求有序,可以直接把某位的原数据替换…...

C语言—字符数组(3)

可能不是那么的完整,先凑合看吧,如果我学会如何修改以后,我慢慢回来修改的 1.编写程序实现对两个字符串的连接功能; 法一:不使用strcat函数,写程序直接实现,记得添加结束符,不然程序访问数组时候将变得不…...

linux 实用技能

1.查看系统版本 cat /etc/redhat-release cat /etc/redhat-release 2. 查看磁盘实用情况 df du 3.查看内存 top -Hp 2214 4. 网络配置 vi /etc/hostname vi /etc/hosts vi /etc/sysconfig/network-scripts/ifcfgens33 6. sed ‘s/a/b/g’ aaa.txt 替换 7. scp …...

ssc377d修改flash分区大小

1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

对WWDC 2025 Keynote 内容的预测

借助我们以往对苹果公司发展路径的深入研究经验,以及大语言模型的分析能力,我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际,我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测,聊作存档。等到明…...

镜像里切换为普通用户

如果你登录远程虚拟机默认就是 root 用户,但你不希望用 root 权限运行 ns-3(这是对的,ns3 工具会拒绝 root),你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案:创建非 roo…...

select、poll、epoll 与 Reactor 模式

在高并发网络编程领域,高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表,以及基于它们实现的 Reactor 模式,为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。​ 一、I…...

使用 SymPy 进行向量和矩阵的高级操作

在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...

音视频——I2S 协议详解

I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议,专门用于在数字音频设备之间传输数字音频数据。它由飞利浦(Philips)公司开发,以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...

Kafka入门-生产者

生产者 生产者发送流程: 延迟时间为0ms时,也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于:异步发送不需要等待结果,同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...

基于IDIG-GAN的小样本电机轴承故障诊断

目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) ​梯度归一化(Gradient Normalization)​​ (2) ​判别器梯度间隙正则化(Discriminator Gradient Gap Regularization)​​ (3) ​自注意力机制(Self-Attention)​​ 3. 完整损失函数 二…...

DingDing机器人群消息推送

文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人,点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置,详见说明文档 成功后,记录Webhook 2 API文档说明 点击设置说明 查看自…...

【SpringBoot自动化部署】

SpringBoot自动化部署方法 使用Jenkins进行持续集成与部署 Jenkins是最常用的自动化部署工具之一,能够实现代码拉取、构建、测试和部署的全流程自动化。 配置Jenkins任务时,需要添加Git仓库地址和凭证,设置构建触发器(如GitHub…...