PAM | 账户安全 | 管理
PAM
PAM(Pluggable Authentication Modules,可插入式身份验证模块)是一个灵活的身份验证系统,允许我们通过配置和组合各种模块来实现不同的身份验证策略。

在 Linux 或类 Unix 系统中,常见的 PAM 模块包括以下几种类型:
-
认证模块(Authentication Modules):
- 用于验证用户的身份,通常基于密码、密钥、证书、生物特征等。常见的认证模块包括:
pam_unix:基于传统的用户名和密码进行认证。pam_ldap:与 LDAP 目录服务器进行身份验证。pam_ssh:基于 SSH 密钥进行身份验证。pam_radius:通过 RADIUS 服务器进行身份验证。pam_google_authenticator:实现双因素认证。
- 用于验证用户的身份,通常基于密码、密钥、证书、生物特征等。常见的认证模块包括:
-
账户管理模块(Account Management Modules):
- 用于管理用户账户的状态,包括锁定、过期、禁止登录等。常见的账户管理模块包括:
pam_unix:管理用户密码的过期、锁定等状态。pam_access:基于访问控制列表 (ACL) 控制用户对系统资源的访问权限。pam_time:根据时间限制用户的登录。
- 用于管理用户账户的状态,包括锁定、过期、禁止登录等。常见的账户管理模块包括:
-
密码管理模块(Password Management Modules):
- 用于管理用户密码的策略,包括密码长度、复杂度要求、历史密码检查等。常见的密码管理模块包括:
pam_pwquality:实现密码质量检查,如密码长度、字符类型等。pam_cracklib:使用 CrackLib 库检查密码的复杂度。pam_unix:提供基本的密码管理功能,如修改密码、历史密码检查等。
- 用于管理用户密码的策略,包括密码长度、复杂度要求、历史密码检查等。常见的密码管理模块包括:
-
会话管理模块(Session Management Modules):
- 用于管理用户会话的操作,如记录登录信息、设置环境变量等。常见的会话管理模块包括:
pam_limits:设置用户资源限制,如进程数、文件打开数等。pam_env:设置用户会话的环境变量。pam_lastlog:记录用户上次登录信息。
- 用于管理用户会话的操作,如记录登录信息、设置环境变量等。常见的会话管理模块包括:
-
模块控制模块(Module Control Modules):
- 用于控制 PAM 模块的行为和执行顺序。常见的模块控制模块包括:
pam_stack:允许管理员创建自定义的 PAM 堆栈。
- 用于控制 PAM 模块的行为和执行顺序。常见的模块控制模块包括:
以上只是一些常见的 PAM 模块,实际还有许多其他模块可用于不同的身份验证需求。
账号安全
Linux系统的账户安全是保护系统免受未授权访问和潜在威胁的关键方面。
-
使用强密码:
- 强制使用包含字母、数字和特殊字符的复杂密码。
- 使用密码策略工具如
pam_pwquality来限制密码的长度、字典单词等。
-
限制Root用户:
- 避免直接使用
root账户登录,而是使用普通用户再切换到root。 - 禁用直接
root远程登录。 - 配置
sudo权限,只允许授权用户执行必要的管理员任务。
- 避免直接使用
-
用户账户管理:
- 禁用不必要的用户账户。
- 定期审查用户账户,禁用不再需要的账户。
- 设置用户账户过期时间,定期强制用户更改密码。
-
SSH 安全配置:
- 禁用不安全的SSH协议版本,仅使用SSHv2。
- 配置SSH服务,限制允许登录的用户。
- 使用SSH密钥身份验证,禁用密码身份验证(如果可能)。
-
PAM (Pluggable Authentication Modules) 配置:
- 使用PAM来实现更强大的身份验证和授权。
- 配置PAM以限制登录尝试次数并锁定账户。
- 强制使用
pam_tally或pam_faillock等模块来检测和阻止恶意登录尝试。
-
系统账户:
- 禁用不必要的系统账户。
- 将系统账户的登录Shell设置为
/sbin/nologin或/bin/false。
-
Auditd 配置:
- 启用审计功能以监视系统活动。
- 配置
auditd以记录关键系统事件,如登录、权限变更等。
-
SELinux (Security-Enhanced Linux):
- 启用SELinux以提供强制访问控制和更强大的安全策略。
- 配置SELinux策略以适应您的应用程序和服务。
-
限制 su 和 sudo 权限:
- 限制
su命令的使用,仅允许授权用户切换到其他用户。 - 配置
sudo以限制哪些用户可以执行哪些命令,避免不必要的特权。
- 限制
-
定期审计和监控:
- 定期审计系统日志以检测异常活动。
- 使用监控工具(如
tripwire)来检测系统文件的变化。
-
禁用不必要的服务:
- 禁用系统上不必要的网络服务和端口。
- 定期审查和关闭未使用的服务。
-
更新和补丁管理:
- 定期更新系统和软件包,确保安装最新的安全补丁。
- 使用自动化工具(如
unattended-upgrades)来自动安装安全更新。
措施
限制账号安全的配置涉及很多步骤,包括密码策略、访问控制、身份验证、日志和监控等。
-
强化密码策略:
- 修改
/etc/security/pwquality.conf或/etc/security/pwquality.conf文件来配置密码质量要求。 - 使用
pam_pwquality模块来限制密码长度、包含字符类型和禁用字典单词。
- 修改
-
限制账号登录:
- 编辑
/etc/security/access.conf文件,使用pam_access模块限制用户登录。 - 在
/etc/ssh/sshd_config中配置AllowUsers或DenyUsers以限制SSH登录。
- 编辑
-
账号锁定和登录尝试限制:
- 使用
pam_tally2或pam_faillock模块配置账户锁定。 - 在
/etc/security/faillock.conf中配置账户锁定的参数,如尝试次数和锁定时长。 - 配置
/etc/pam.d/system-auth文件以添加auth required pam_tally2.so行。
- 使用
-
限制 su 和 sudo 权限:
- 修改
/etc/pam.d/su文件,限制哪些用户可以使用su命令。 - 编辑
/etc/sudoers文件,使用sudo命令配置特权用户和命令。
- 修改
-
启用 SELinux:
- 启用 SELinux 并配置强制访问控制。
- 使用
semanage和setsebool命令配置 SELinux 策略。
-
审计和监控:
- 启用
auditd审计框架。 - 在
/etc/audit/auditd.conf中配置审计参数。 - 编辑
/etc/pam.d/system-auth,添加 `session required pam_tty_audit.so enable=*" 行,启用终端审计。
- 启用
-
定期审查用户账户:
- 定期检查并禁用不再需要的用户账户。
- 使用
usermod命令修改账户属性,如锁定或设置过期日期。
-
启用登录二因素身份验证:
- 配置
pam_google_authenticator或其他二因素身份验证方法。 - 在
/etc/pam.d/sshd中添加auth required pam_google_authenticator.so行。
- 配置
-
限制 shell 访问:
- 在
/etc/passwd中设置不常用账户的 Shell 为/sbin/nologin或/bin/false。 - 编辑
/etc/shells文件,移除不需要的 shell。
- 在
-
定期修改密码:
- 在
/etc/login.defs中设置密码最大寿命(PASS_MAX_DAYS)和密码最小寿命(PASS_MIN_DAYS)。 - 使用
chage命令设置密码策略,如chage -M 90 -m 7 -W 7 username。
- 在
-
使用账号管理工具:
- 使用账号管理工具(如
useradd、usermod、userdel)进行账户管理,以确保正确的权限和配置。
- 使用账号管理工具(如
-
定期审查日志:
- 定期审查系统和应用程序日志,查找异常活动和潜在的安全问题。
- 使用工具(如
logwatch)自动化日志审查过程。
Ending
相关文章:
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 …...
vscode里如何用git
打开vs终端执行如下: 1 初始化 Git 仓库(如果尚未初始化) git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...
装饰模式(Decorator Pattern)重构java邮件发奖系统实战
前言 现在我们有个如下的需求,设计一个邮件发奖的小系统, 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...
【位运算】消失的两个数字(hard)
消失的两个数字(hard) 题⽬描述:解法(位运算):Java 算法代码:更简便代码 题⽬链接:⾯试题 17.19. 消失的两个数字 题⽬描述: 给定⼀个数组,包含从 1 到 N 所有…...
全球首个30米分辨率湿地数据集(2000—2022)
数据简介 今天我们分享的数据是全球30米分辨率湿地数据集,包含8种湿地亚类,该数据以0.5X0.5的瓦片存储,我们整理了所有属于中国的瓦片名称与其对应省份,方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...
oracle与MySQL数据库之间数据同步的技术要点
Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异,它们的数据同步要求既要保持数据的准确性和一致性,又要处理好性能问题。以下是一些主要的技术要点: 数据结构差异 数据类型差异ÿ…...
【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】
1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...
C++八股 —— 单例模式
文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全(Thread Safety) 线程安全是指在多线程环境下,某个函数、类或代码片段能够被多个线程同时调用时,仍能保证数据的一致性和逻辑的正确性…...
Device Mapper 机制
Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...
重启Eureka集群中的节点,对已经注册的服务有什么影响
先看答案,如果正确地操作,重启Eureka集群中的节点,对已经注册的服务影响非常小,甚至可以做到无感知。 但如果操作不当,可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...
