先讲怎么使用,后面有理论教程,先知其然再知其所以然

1. 禁止使用旧密码

vi /etc/pam.d/system-auth

找到同时有 “password” 和 “pam_unix.so” 字段并且附加有 “remember=5” 的那行,它表示禁止使用最近用过的5个密码(己使用过的密码会被保存在 /etc/security/opasswd 下面)。

password sufficient pamunix.so sha512 shadow nullok tryfirstpass useauthtok remember=5

2.设置密码最短长度

vi /etc/pam.d/system-auth

找到同时有 “password” 和 “pam_cracklib.so” 字段并且附加有 “minlen=10” 的那行,它表示最小密码长度为(10 - 类型数量)。这里的 “类型数量” 表示不同的字符类型数量。PAM 提供4种类型符号作为密码(大写字母、小写字母、数字和标点符号)。如果你的密码同时用上了这4种类型的符号,并且你的 minlen 设为10,那么最短的密码长度允许是6个字符。

password requisite pam_cracklib.so retry=3 difok=3 minlen=10

3.设置密码复杂度

vi /etc/pam.d/system-auth

找到同时有 “password” 和 “pam_cracklib.so” 那行.

#  retry  允许重试3次

# difok=N:新密码必需与旧密码不同的位数   difok=3 新密码必须与旧密码有3位不同

# minlen  最小位数

# ucredit  大写字母位数

# lcredit  小写字母位数

# dcredit=N: N >= 0:密码中最多有多少个数字;N < 0密码中最少有多少个数字.   dcredit=-1  密码中最少有1个数字

# ocredit=N:特殊字母的个数    ocredit=-1 密码中至少有1个特殊字符

# 它表示密码必须至少包含一个大写字母(ucredit),两个小写字母(lcredit),一个数字(dcredit)和一个标点符号(ocredit)。

password requisite pam_cracklib.so retry=3 difok=3 minlen=10 ucredit=-1 lcredit=-2 dcredit=-1 ocredit=-1

4.设置密码过期期限

vi /etc/login.defs

PASSMAXDAYS    99999   #密码的最大有效期, 99999:永久有期

PASSMINDAYS      0          #是否可修改密码,0可修改,非0修改密码后下一次修改需间隔多少天后可修改

PASS_MIN_LEN     5          #密码最小长度,使用pam_cracklib module,该参数不再有效

PASSWARNAGE    7          #密码失效前多少天在用户登录时通知用户修改密码

Linux密码策略理论知识:

PAM(Pluggable Authentication Modules )是由Sun提出的一种认证机制。它通过提供一些动态链接库和一套统一的API,将系统提供的服务 和该服务的认证方式分开,使得系统管理员可以灵活地根据需要给不同的服务配置不同的认证方式而无需更改服务程序,同时也便于向系 统中添加新的认证手段。PAM最初是集成在Solaris中,目前已移植到其它系统中,如Linux、SunOS、HP-UX 9.0等。
PAM的配置是通过单个配置文件/etc/pam.conf。RedHat还支持另外一种配置方式,即通过配置目录/etc/pam.d/,且这种的优先级要高于单 个配置文件的方式

1、使用配置文件/etc/pam.conf

该文件是由如下的行所组成的:
service-name  module-type  control-flag  module-path  arguments

service-name  服务的名字,比如telnet、login、ftp等,服务名字“OTHER”代表所有没有在该文件中明确配置的其它服务。

module-type   模块类型有四种:auth、account、session、password,即对应PAM所支持的四种管理方式。

同一个服务可以调用多个 PAM模块进行认证,这些模块构成一个stack。

control-flag     用来告诉PAM库该如何处理与该服务相关的PAM模块的成功或失败情况。

它有四种可能的 值:required,requisite,sufficient,optional。

required          表示本模块必须返回成功才能通过认证,但是如果该模块返回失败的话,失败结果也不会立即通知用户,

而是要等到同一stack 中的所有模块全部执行完毕再将失败结果返回给应用程序。

即全部策略执行成功才能通过, 有失败不会立即返回,待模块执行完成才返回。

requisite          与required类似,该模块必须返回成功才能通过认证,

但是一旦该模块返回失败,将不再执行同一stack内的任何模块,而是直 接将控制权返回给应用程序。

是一个必要条件。注:这种只有RedHat支持,Solaris不支持

即全部策略执行成功才能通过,一旦有一项失败,立即返回.

sufficient        表明本模块返回成功已经足以通过身份认证的要求,不必再执行同一stack内的其它模块

但是如果本模块返回失败的话可以 忽略。

optional         表明本模块是可选的,它的成功与否一般不会对身份认证起关键作用,其返回值一般被忽略。

control-flag    从Linux-PAM-0.63版本起,支持一种新的语法,具体可参看LinuxPAM文档。

module-path  用来指明本模块对应的程序文件的路径名,一般采用绝对路径,如果没有给出绝对路径

默认该文件在目录/usr/lib/security下面。

arguments     是用来传递给该模块的参数。一般来说每个模块的参数都不相同,可以由该模块的开发者自己定义,

但是也有以下几个共同 的参数:

debug                           该模块应当用syslog( )将调试信息写入到系统日志文件中。
no_warn                       表明该模块不应把警告信息发送给应用程序。
use_first_pass             表明该模块不能提示用户输入密码,而应使用前一个模块从用户那里得到的密码。
try_first_pass               表明该模块首先应当使用前一个模块从用户那里得到的密码,

如果该密码验证不通过,再提示用户输入新的密码。
use_mapped_pass      该模块不能提示用户输入密码,而是使用映射过的密码。
expose_account          允许该模块显示用户的帐号名等信息,一般只能在安全的环境下使用,

因为泄漏用户名会对安全造成一定程度的威胁。

2、使用配置目录/etc/pam.d/

该目录下的每个文件的名字对应服务名,例如ftp服务对应文件/etc/pam.d/ftp。如果名为xxxx的服务所对应的配置文件/etc/pam.d/xxxx不存 在,则该服务将使用默认的配置文件/etc/pam.d/other。每个文件由如下格式的文本行所构成:
module-type  control-flag  module-path  arguments
每个字段的含义和/etc/pam.conf中的相同。

密码复杂度通过/etc/pam.d/system-auth这个文件来实现的

我们先看一下默认有什么内容然后将这个文件备份一个:

在这个文件中我们会用到pam_cracklib.so这个模块。pam_cracklib.so是一个常用并且非常重要的PAM模块。该模块主要的作用是对用户密码的强健性进行检测。即检查和限制用户自定义密码的长度、复杂度和历史等。如不满足上述强度的密码将拒绝使用。
pam_cracklib.so  比较重要和难于理解的是它的一些参数和计数方法,其常用参数包括:
debug:将调试信息写入日志;
type=xxx:当添加/修改密码时,系统给出的缺省提示符是“New UNIX password:”以及“Retype UNIX
password:”,而使用该参数可以自定义输入密码的提示符,比如指定type=your own word;
retry=N:定义登录/修改密码失败时,可以重试的次数;
Difok=N:定义新密码中必须有几个字符要与旧密码不同。但是如果新密码中有1/2以上的字符与旧密码不同时,该新密码将被接受;
minlen=N:定义用户密码的最小长度;
dcredit=N:定义用户密码中必须包含多少个数字;
ucredit=N:定义用户密码中必须包含多少个大写字母;
lcredit=N:定义用户密码中必须包含多少个小些字母;
ocredit=N:定义用户密码中必须包含多少个特殊字符(除数字、字母之外)

使用 PAM 集成 OpenLDAP 实现 Linux 统一管理系统用户

http://www.linuxidc.com/Linux/2014-08/105597.htm

FTP服务器工作原理及如何通过PAM认证实现虚拟用户登录

http://www.linuxidc.com/Linux/2013-05/84984.htm

PAM的配置过程

http://www.linuxidc.com/Linux/2012-12/76812.htm

基于ssl/tls实现vsftpd的安全通信并通过PAM实现对vsftpd的虚拟用户认证

http://www.linuxidc.com/Linux/2013-05/84475.htm

Linux 使用PAM_ldap通过ad域认证

http://www.linuxidc.com/Linux/2012-09/71043.htm

整合vsftp+PAM+mysql—集中管理ftp的虚拟帐号

http://www.linuxidc.com/Linux/2012-08/68391.htm

vsftpd2.3.5+PAM安装配置笔记

http://www.linuxidc.com/Linux/2012-07/66658.htm

Linux设定密码策略相关推荐

  1. Windows 7操作系统设定密码策略和账户锁定策略

    为Windows 7操作系统设定密码策略和账户锁定策略 1.配置本地安全策略中的账户策略 2.配置密码策略 a.配置账户锁定策略 b.验证密码策略的配置结果 3.验证账户锁定策略的配置结果 4.解除账 ...

  2. linux用户密码策略求图,Linux用户密码策略

    Linux用户密码的有效期,是否可以修改密码可以通过login.defs文件控制.对login.defs文件修只影响后续建立的用户,如果要改变以前建立的用户的有效期等可以使用chage命令. Linu ...

  3. linux服务器密码策略,windows与linux服务器平台密码策略管理

    windows与linux服务器平台密码策略管理 (6页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 服务器平台密码策略管理1.window ...

  4. 关于linux系统密码策略的设置

    由于工作需要最近需要将公司的多台linux服务器进行密码策略的设置,主要内容是增加密码复杂度. 操作步骤如下,不会的同学可以参考: 操作前需要掌握如下几个简单的知识点:(其实不掌握也行,不过学学没坏处 ...

  5. linux修改密码策略

    对于用户账户的管理是系统管理员最重要的工作之一.尤其是,对于任何自称安全的linux系统,最受关心的应该是密码安全问题.在本教程中,我将介绍如何在linux上设置严密的密码策略. 我假设你的linux ...

  6. linux用户密码默认规则,linux用户密码策略测试

    1.linux普通用户默认密码策略: 用passwd修改用户密码,常常提示"BAD PASSWORD: it is based on a dictionary word".实际上l ...

  7. linux 重试密码次数超,Linux中密码策略

    需完成如下设置: 1.密码必须符合复杂度要求,字母.数字.特殊字符组成.长度大于8位. 2.密码定期更改,最长不超过90天. 3.用户不能重复使用5次内已使用的口令. 4.尝试登陆失败错误次数,必须设 ...

  8. 禁用linux的密码策略

    注释掉文件  /etc/pam.d/system-auth-ac中的 password requisite pam_passwdqc.so enforce=everyone 这一行 #%PAM-1.0 ...

  9. linux 关闭密码复杂化,Linux系统设置复杂密码策略方法

    用户帐号管理是系统管理员最重要的工作之一.而密码安全是系统安全中最受关注的一块.本文将为大家介绍如何在 Linux 上设置系统用户密码复杂度策略. 假设你已经在你的 Linux 系统上使用了 PAM ...

最新文章

  1. 关于一维数组和二位数组的数组指针
  2. sqlbulkcopy mysql_SqlBulkCopy 的 Timeout 和 BatchSize
  3. adcsr图像超分代码_图像超分:RealSR
  4. 改变bantchsize发现loss增大_肺内发现磨玻璃结节,一定就是早期肺癌吗?
  5. redis pool
  6. Windows—JDK安装与环境变量配置
  7. 如何在业务层实现响应缓存
  8. apache camel_Apache Camel请向我解释这些端点选项的含义
  9. jQuery之父:JavaScript的开发之路
  10. 信息产业浪潮中,京东 IoT 的技术演进与实践创新
  11. [转载] Python3 open()函数
  12. 第六章 who can see what
  13. Linux-SHELL基本操作
  14. java cp classpath_java -cp、java -jar、java -classpath
  15. kindle 新手入门
  16. 三十四个超级经典小故事
  17. MacOS - 快捷键以及各种操作汇总
  18. Java面试题(上)
  19. utf8 to utf16
  20. Danar程序员之家在CSDN安家落户啦

热门文章

  1. 伽马校正(gamma correction)学习笔记
  2. 手把手教你从零开始做一个好看的 APP
  3. Citrix 服务器虚拟化之三十二 XenConvert
  4. Python 爬虫实战(三) 获取百度地图搜索结果
  5. TWS耳机无线充电仓
  6. C语言 输入三个字符串,由小到大输出
  7. 北航计算机学院王华峰,软件学院学术论坛第四次宣讲会
  8. cd .ssh返回-bash: cd: .ssh:No such file or directory怎么办
  9. 励志!从中专生到教授、国家杰青,近日,他又当选院士!
  10. sunos与linux区别,linux与solaris的联系与区别总结:命令的异同