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

Linux密码策略

目录

PAM简介

PAM配置文件说明

1、PAM的模块类型

2、PAM的控制标记

3、常用PAM模块介绍

密码策略修改的主要参数

1 pam_cracklib模块

2、pam_unix模块


PAM简介

Linux 用户密码的策略可以通过pam_cracklib module控制
PAM 的全称为"可插拔认证模块(Pluggable Authentication Modules)",是一套共享库,使本地系统管理员可以随意选择程序的认证方式。不用重新编译一个包含PAM功能的应用程序,就可以改变它使用的认证机制。
PAM使用配置/etc/pam.d/下的文件,来管理对程序的认证方式.应用程序 调用相应的配置文件,从而调用本地的认证模块。

PAM配置文件说明

PAM的配置文件类似于/etc/pam.d/lightdm

1、PAM的模块类型

PAM有四种模块类型,分别代表四种不同的任务,它们是:认证管理(auth),账号管理(account),会话管理(session)和密码(password)管理,一个类型可能有多行,它们按顺序依次由PAM模块调用。详细说明如表2-1所示
表 2-1

管理方式

说明

auth

用来对用户的身份进行识别,如:提示用户输入密码,或者判断用户是否为root等

account

对账号的各项属性进行检查,如:是否允许登录,是否达到最大用户数,或是root用户是否允许在这个终端登录等

session

这个模块用来定义用户登录前的,以及用户登录退出后要进行的操作,如:登录连接信息,用户数据的打开与关闭,挂在文件系统等

password

使用用户信息来更新,如:修改用户密码

2、PAM的控制标记

规定如何处理PAM模块鉴别认证的结果,简而言之就是鉴别认证成功或者失败之后会发生什么事,如何进行控制。具体说明如表2-2所示
表 2-2

管理方式

说明

Required

表示该行以及所涉及模块的成功是用户通过鉴别的必要条件。换句话说,只有当对应于应用程序的所有带 required标记的模块全部成功后,该程序才能通过鉴别。就是必须将所有的模块都执行一次,其中任何一个模块验证出错,验证都会继续进行,并在执行完成之后才返回错误信息。

requisite

与required相仿,只有带此标记的模块返回成功后,用户才能通过鉴别。不同之处在于其一旦失败就不再执行堆中后面的其他模块,并且鉴别过程到此结束,同时也会立即返回错误信息。

sufficient

表示该行以及所涉及模块验证成功是用户通过鉴别的充分条件。也就是说只要标记为sufficient的模块一旦验证成功,那么PAM便立即向应用程序返回成功结果而不必尝试任何其他模块。即便后面的层叠模块使用了requisite或者required控制标志也是一样。当标记为sufficient的模块失败时,sufficient模块会当做 optional对待。

optional

他表示即便该行所涉及的模块验证失败用户仍能通过认证。在PAM体系中,带有该标记的模块失败后将继续处理下一模块。也就是说即使本行指定的模块验证失败,也允许用户享受应用程序提供的服务。

include

表示在验证过程中调用其他的PAM配置文件。

3、常用PAM模块介绍

表 2-3

PAM模块

结合管理类型

说明

pam_unix.so

auth

提示用户输入密码,并与/etc/shadow文件相比对.匹配返回0

account

检查用户的账号信息(包括是否过期等).帐号可用时,返回0.

password

修改用户的密码. 将用户输入的密码,作为用户的新密码更新shadow文件

pam_shells.so

auth

如果用户想登录系统,那么它的shell必须是在/etc/shells文件中之一的shell

account

pam_deny.so

account

模块任何时候都返回成功.

auth

password

session

pam_permit.so

auth

模块任何时候都返回成功.

account

password

session

pam_securetty.so

auth

如果用户要以root登录时,则登录的tty必须在/etc/securetty之中.

pam_listfile.so

auth

访问应用程的控制开关

account

password

session

pam_cracklib.so

password

用于检查密码的强度.

pam_limits.so

session

定义使用系统资源的上限,root用户也会受此限制,可以通过/etc/security/limits.conf或/etc/security/limits.d/*.conf来设定

密码策略修改的主要参数

1 pam_cracklib模块

pam_cracklib是一个PAM模块,用来检查密码是否违反密码字典,这个验证模块可以通过插入password堆栈,为特殊的应用提供可插入式密码强度性检测。 它的工作方式就是先提示用户输入密码,然后使用一个系统字典和一套规则来检测输入的密码是否能满足复杂要求。下面是cracklib模块的一些参数:
表 3-1

Pam_cracklib参数及格式

说明

retry=N

用户最多可以几次输入密码后报错。默认是1次。

difok=N

新密码有几个字符不能和旧密码相同,默认是5个。

minlen=N

最小密码长度。

dcredit=N

当N>=0时,表示密码最多可以有N个阿拉伯数字。当N<0时,表示密码最少要有N个阿拉伯数字。

ucredit=N

当N>=0时,表示密码最多可以有N个大写字母。当N<0时,表示密码最少要有N个大写字母。

lcredit=N

当N>=0时,表示密码最多可以有N个小写字母。当N<0时,表示密码最少要有N个小写字母。

ocredit=N

当N>=0时,表示密码最多可以有N个特殊字符。当N<0时,表示密码最少要有N个特殊字符。


pam_cracklib 模块是PAM配置接口的基本模块,在我们系统中的配置文件是 /etc/pam.d/common-password,
可以看出系统默认使用的修改密码策略是最小密码长度为8,新密码有三个字符不能与旧密码相同,用户在输错一次密码后报错。

2、pam_unix模块

pam_cracklib可以记录用户使用的历史密码,并且不允许用户重复使用旧的密码,实际上存储用户旧密码的是通过pam_unix模块实现的。
第一步是建立一个空文件用来存储旧密码/etc/security/opasswd,如果你没有建立文件却使用了历史密码记录功能的话,所有的密码更新都会失败,因为pam_unix模块会报错。建立了opasswd文件,就可以在pam_unix模块后面加上参数remember=N来开始记录旧密码,remember参数记录你想记录多少旧密码,最大值是400
现在有需求要对系统密码验证安全进行加固,设置密码复杂策略,要求密码中使用大小写字母,数字以及特殊符号,用户最多可以三次输入密码后报错,并记录用户之前使用最近的三次密码,新密码不能与这三次密码相同。修改/etc/pam.d/common-passwd

相关文章:

  • 华为OD机试九日集训第1期 - 按算法分类,由易到难,循序渐进,提升编程能力和解题技巧,从而提高机试通过率(Python/JS/C/C++)
  • QQuick3D-Camera的介绍
  • TCP/IP原理详细解析
  • JavaScript 中 this 绑定丢失的陷阱:从 “is not a function“ 错误谈起
  • 处理动态分页:自动翻页与增量数据抓取策略-数据议事厅
  • 网络tcp协议设置,网络tcp协议设置不了
  • Linux笔记之通配符和正则表达式的区别
  • 领星ERP-FBA数据无缝对接用友U8系统的技术实践
  • 目标检测YOLO实战应用案例100讲-基于激光雷达点云的交通场景 三维车辆目标检测与跟踪算法研究(续)
  • windows本地AI知识库解决方案( pageassist + nomic + deepseek-r1:1.5b)
  • 改变 input 自动填充的背景颜色
  • Midjourney绘图参数详解:从基础到高级的全面指南
  • 卫星通信+5G+AI:遨游构建空天地一体化智慧应急通信网络
  • 第六章:响应式设计:让网页「见风使舵」
  • ReentrantLock源码和AQS
  • 【Vela学习】存储系统
  • 用android studio模拟器,模拟安卓手机访问网页,使用Chrome 开发者工具查看控制台信息
  • 全面解析Tomcat:简介、安装与配置指南
  • CentOS7离线部署安装Dify
  • Linux 提权
  • 公司微网站建设价格/市场营销师报名官网
  • 网站建设基本步骤顺序/2022年可以打开的网址
  • 做网站app怎么赚钱吗/宣传渠道和宣传方式有哪些
  • 做程序开发的网站/湖南seo服务电话
  • 招远市建设局网站/网站查询器
  • 做企业网站需要什么/google广告