当前位置: 首页 > 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 …...

RestClient

什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端,它允许HTTP与Elasticsearch 集群通信,而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级&#xff…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

mongodb源码分析session执行handleRequest命令find过程

mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程,并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令,把数据流转换成Message,状态转变流程是:State::Created 》 St…...

拉力测试cuda pytorch 把 4070显卡拉满

import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试,通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小,增大可提高计算复杂度duration: 测试持续时间(秒&…...

Spring Security 认证流程——补充

一、认证流程概述 Spring Security 的认证流程基于 过滤器链(Filter Chain),核心组件包括 UsernamePasswordAuthenticationFilter、AuthenticationManager、UserDetailsService 等。整个流程可分为以下步骤: 用户提交登录请求拦…...

es6+和css3新增的特性有哪些

一:ECMAScript 新特性(ES6) ES6 (2015) - 革命性更新 1,记住的方法,从一个方法里面用到了哪些技术 1,let /const块级作用域声明2,**默认参数**:函数参数可以设置默认值。3&#x…...

阿里云Ubuntu 22.04 64位搭建Flask流程(亲测)

cd /home 进入home盘 安装虚拟环境: 1、安装virtualenv pip install virtualenv 2.创建新的虚拟环境: virtualenv myenv 3、激活虚拟环境(激活环境可以在当前环境下安装包) source myenv/bin/activate 此时,终端…...

前端高频面试题2:浏览器/计算机网络

本专栏相关链接 前端高频面试题1:HTML/CSS 前端高频面试题2:浏览器/计算机网络 前端高频面试题3:JavaScript 1.什么是强缓存、协商缓存? 强缓存: 当浏览器请求资源时,首先检查本地缓存是否命中。如果命…...

Python常用模块:time、os、shutil与flask初探

一、Flask初探 & PyCharm终端配置 目的: 快速搭建小型Web服务器以提供数据。 工具: 第三方Web框架 Flask (需 pip install flask 安装)。 安装 Flask: 建议: 使用 PyCharm 内置的 Terminal (模拟命令行) 进行安装,避免频繁切换。 PyCharm Terminal 配置建议: 打开 Py…...

起重机起升机构的安全装置有哪些?

起重机起升机构的安全装置是保障吊装作业安全的关键部件,主要用于防止超载、失控、断绳等危险情况。以下是常见的安全装置及其功能和原理: 一、超载保护装置(核心安全装置) 1. 起重量限制器 功能:实时监测起升载荷&a…...