PAM | 账户安全 | 管理

2024-02-19 15:04
文章标签 安全 管理 账户 pam

本文主要是介绍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 | 账户安全 | 管理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/725038

相关文章

使用jenv工具管理多个JDK版本的方法步骤

《使用jenv工具管理多个JDK版本的方法步骤》jenv是一个开源的Java环境管理工具,旨在帮助开发者在同一台机器上轻松管理和切换多个Java版本,:本文主要介绍使用jenv工具管理多个JD... 目录一、jenv到底是干啥的?二、jenv的核心功能(一)管理多个Java版本(二)支持插件扩展(三)环境隔

Java中常见队列举例详解(非线程安全)

《Java中常见队列举例详解(非线程安全)》队列用于模拟队列这种数据结构,队列通常是指先进先出的容器,:本文主要介绍Java中常见队列(非线程安全)的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录一.队列定义 二.常见接口 三.常见实现类3.1 ArrayDeque3.1.1 实现原理3.1.2

Python中bisect_left 函数实现高效插入与有序列表管理

《Python中bisect_left函数实现高效插入与有序列表管理》Python的bisect_left函数通过二分查找高效定位有序列表插入位置,与bisect_right的区别在于处理重复元素时... 目录一、bisect_left 基本介绍1.1 函数定义1.2 核心功能二、bisect_left 与

Spring中管理bean对象的方式(专业级说明)

《Spring中管理bean对象的方式(专业级说明)》在Spring框架中,Bean的管理是核心功能,主要通过IoC(控制反转)容器实现,下面给大家介绍Spring中管理bean对象的方式,感兴趣的朋... 目录1.Bean的声明与注册1.1 基于XML配置1.2 基于注解(主流方式)1.3 基于Java

基于Python+PyQt5打造一个跨平台Emoji表情管理神器

《基于Python+PyQt5打造一个跨平台Emoji表情管理神器》在当今数字化社交时代,Emoji已成为全球通用的视觉语言,本文主要为大家详细介绍了如何使用Python和PyQt5开发一个功能全面的... 目录概述功能特性1. 全量Emoji集合2. 智能搜索系统3. 高效交互设计4. 现代化UI展示效果

Mysql中的用户管理实践

《Mysql中的用户管理实践》:本文主要介绍Mysql中的用户管理实践,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录13. 用户管理13.1 用户 13.1.1 用户信息 13.1.2 创建用户 13.1.3 删除用户 13.1.4 修改用户

linux服务之NIS账户管理服务方式

《linux服务之NIS账户管理服务方式》:本文主要介绍linux服务之NIS账户管理服务方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、所需要的软件二、服务器配置1、安装 NIS 服务2、设定 NIS 的域名 (NIS domain name)3、修改主

Python+PyQt5开发一个Windows电脑启动项管理神器

《Python+PyQt5开发一个Windows电脑启动项管理神器》:本文主要介绍如何使用PyQt5开发一款颜值与功能并存的Windows启动项管理工具,不仅能查看/删除现有启动项,还能智能添加新... 目录开篇:为什么我们需要启动项管理工具功能全景图核心技术解析1. Windows注册表操作2. 启动文件

gradle第三方Jar包依赖统一管理方式

《gradle第三方Jar包依赖统一管理方式》:本文主要介绍gradle第三方Jar包依赖统一管理方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录背景实现1.顶层模块build.gradle添加依赖管理插件2.顶层模块build.gradle添加所有管理依赖包

基于Python打造一个智能单词管理神器

《基于Python打造一个智能单词管理神器》这篇文章主要为大家详细介绍了如何使用Python打造一个智能单词管理神器,从查询到导出的一站式解决,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 项目概述:为什么需要这个工具2. 环境搭建与快速入门2.1 环境要求2.2 首次运行配置3. 核心功能使用指