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 …...
RestClient
什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端,它允许HTTP与Elasticsearch 集群通信,而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级ÿ…...
Oracle查询表空间大小
1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...
系统设计 --- MongoDB亿级数据查询优化策略
系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log,共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题,不能使用ELK只能使用…...
.Net Framework 4/C# 关键字(非常用,持续更新...)
一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...
企业如何增强终端安全?
在数字化转型加速的今天,企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机,到工厂里的物联网设备、智能传感器,这些终端构成了企业与外部世界连接的 “神经末梢”。然而,随着远程办公的常态化和设备接入的爆炸式…...
docker 部署发现spring.profiles.active 问题
报错: org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...
在Ubuntu24上采用Wine打开SourceInsight
1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...
云原生安全实战:API网关Kong的鉴权与限流详解
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关(API Gateway) API网关是微服务架构中的核心组件,负责统一管理所有API的流量入口。它像一座…...
论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing
Muffin 论文 现有方法 CRADLE 和 LEMON,依赖模型推理阶段输出进行差分测试,但在训练阶段是不可行的,因为训练阶段直到最后才有固定输出,中间过程是不断变化的。API 库覆盖低,因为各个 API 都是在各种具体场景下使用。…...
