pam密码策略

时间:2023-02-21 00:23:01

PAM 的使用历史

PAM 是关注如何为服务验证用户的 API。在使用 PAM 之前,诸如 login(和 rlogintelnetrsh)之类的应用程序在 /etc/passwd 中查找用户名,然后将两者相比较并验证用户输入的名称。所有应用程序使用了这些共享服务,但是并未共享实现细节和配置这些服务的权限。

接下来,应用程序开发人员尝试编写自定义过程代码。在此过程中,需要分离应用程序与安全模块(通用安全模块可以在应用程序之间共享并且可以根据需求进行配置)。

PAM 机制将把多个低级别验证模式集成到高级别 API 中,该 API 将允许以独立于底层验证模式的方式编写使用验证的程序。PAM 的主要特征表现为通过 /etc/pam.d 或 /etc/pam.conf 文件实现动态验证配置。

PAM 可以被配置为拒绝某些程序对用户进行验证,或者在某些程序尝试验证时发出警告。PAM 程序将使用 PAM 模块(验证模块):这些模块在运行时与应用程序绑定在一起才能工作。

基于PAM实现的密码策略

需要使用pam_passwdqc.so模块控制权限

修改 vi /etc/pam.d/system-auth

启用 pam_passwdqc.so 验证模块

上传到    /lib64/security/ 目录下

修改

password required  pam_passwdqc.so min=disabled,disabled,18,12,12max=30 passphrase=3 match=4 similar=deny enforce=everyone disable_firstupper_lastdigit_check

规则解释如下: 
1)只包含一种字符的密码,拒绝(大小写,数字,特殊字符分别为4种字符) 
2)只包含两种字符的密码,拒绝 
3)如果密码中被识别出了常用的单词,那么最小长度就必须为18位。常用单词的最小识别长度为3.(由passphrase=3制定) 
4)包含三种字符的密码,最小长度为12位 
5) 包含四种字符的密码,最小长度为12位 
6)如果发现本次修改的密码跟老密码有4个substring的长度类似,就认为是弱密码。(match=4 similar=deny) 
7) 这个策略对所有用户都生效。(enforce=everyone ) 
8)默认情况下,对于输入的密码,如果第一个字母是大写字母,或者最后一个字母为数字,则不会计入密码字符的种类。比如:Fuck1234,由于第一个F是大写字母,所以会被认为,该密码只有小写字母和数字两种字符。用disable_firstupper_lastdigit_check 禁止了这种识别。

修改完成后实现 如下

pam密码策略

生成密码

可以采用linux自带的系统密码工具

如果未安装

yum install
expect.x86_64

参数使用

-l # 
    (length of password, default = 7)
                  指定密码的长度,默认是7位数
-d #      (min # of digits, default = 2)
                  指定密码中数字最少位数,默认是2 
-c #      (min # of lowercase chars, default = 2)
                  指定密码中小写字母最少位数,默认是2位
-C #      (min # of uppercase chars, default = 2)
                  指定密码中大写字母最少位数,默认是2位
 
-s #      (min # of special chars, default = 1) 
                  指定密码中特殊字符最少位数,默认是1位
-v        (verbose, show passwd interaction)

安装后可以使用   mkpasswd -l 18
-s 4 -c 4 -C 4

普通修改密码报错

passwd: Authentication token manipulation error

pam密码策略

要先输入旧密码

临时处理方式:
可以通过passwd -d test清空test密码,然后用户可以自行修改密码

pam密码策略的更多相关文章

  1. 06-OpenLDAP密码策略

    阅读视图 openldap密码策略 OpenLDAP服务端定制密码策略 客户端策划策略实例 定义用户第一次登录就修改密码 问题排查手册 重点推荐官方文档 备注:本文依然承接系列文. 1. openld ...

  2. Linux用户密码策略

    使用Linux*年了,从未想过Linux用户密码策略,从未把一本Linux的书从头看到尾(上学时的教材除外),故不知书上有无介绍,直到最近参加公司的信息安全稽核会议后才开始考虑Linux用户密码策略 ...

  3. Linux(Unix)密码策略问题导致root密码不能修改

    Linux(Unix)密码策略问题导致root密码不能修改 发布时间:  2016-01-19 浏览次数:  1034 下载次数:  5 用户修改了密码配置文件,导致root账户修改密码时报如下错误: ...

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

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

  5. mysql5.7 密码策略

    查看现有的密码策略 mysql> SHOW VARIABLES LIKE 'validate_password%';+-------------------------------------- ...

  6. MYSQL57密码策略修改

    1.查看当前的密码测试 show variables like 'validate_password%';

  7. Windows 2008修改密码策略方法

    Windows Server 2008默认强制要求定期更改密码,这个功能有时实在是让人烦不胜烦,适当情况下可以考虑关闭. 方法如下: 1.按windows键+R(或者点开始---动行)打开运行窗口,输 ...

  8. MySQL5.7.12新密码登录方式及密码策略

    在Centos6.6上安装MySQL5.7.12时,遇到了一个问题 安装后在/root目录下没有发现有.mysql_secret这个文件,所以没有没法按照官方文档上说的那样使用,这里记录下, 解决方式 ...

  9. WindowsServer2012 取消密码策略

    1.打开“组策略管理”界面:管理工具 >> 组策略管理,如果找不到该功能,则需要先安装,在“服务管理器”里面“添加新功能”.(或者:开始——运行——gpmc.msc) 2.依次打开“林”& ...

随机推荐

  1. iOS 枚举的巧用

    前言 在之前的一篇文章中简单的提到了这个问题, 但是自己写的不详细, 并且自己深入了解的也不是特别多, 在开发中也没怎么用到,所以经过阅读者的反馈对这个问题很是疑惑! 本篇文章会分析之前的不足之处, ...

  2. android tips—启动Emergency call拨号盘

    Intent intent = new Intent(); intent.setAction("com.android.phone.EmergencyDialer.DIAL"); ...

  3. LeetCode_N-Queens II

    Follow up for N-Queens problem. Now, instead outputting board configurations, return the total numbe ...

  4. easyhadoop:failed to open stream:Permission denied in /var/www/html/index.php

    今天又重新部署了下easyhadoop,结果apache后台服务器报这个错误: [Fri Dec 13 10:32:41 2013] [notice] SIGHUP received. Attempt ...

  5. java图片上传(mvc)

    最近有开始学起了java,好久没写文章了,好久没来博客园了.最近看了看博客园上次写的图片上传有很多人看,今天在一些篇关于java图片上传的.后台接收用的是mvc.不墨迹了,直接上图. 先看目录结构.i ...

  6. 【转】Android Hook框架Xposed详解

    1 Introduction 1.1  概述 Xposed 是 GitHUB 上 rovo89 大大设计的一个针对 Android 平台的动态劫持项目,通过替换 /system/bin/app_pro ...

  7. 初探WebAssembly

    1.前言 参加完2018年上海的QCon大会,想到了会议中来自Microsoft的朱力旻大佬讲的WebAssembly,感触颇深. 我之前完全没有了解过WebAssembly,之前没有了解的原因也很简 ...

  8. Java 中的字符串与 []byte 字节数组

    一.字符串 1.比较 String.HashSet.List 中的 contains 方法 其中, String.List 都使用了 indexOf 方法,本质是遍历,时间效率为 O(n).而 Has ...

  9. [vue]声明式导航和编程式导航

    声明式导航和编程式导航 共同点: 都能进行导航,都可以触发路由,实现组件切换 区别: 写法不一样,声明式导航是写在组件的template中,通过router-link来触发,编程式导航写在js函数中, ...

  10. 记录开发Nodejs c++ addon的一些经验(一、技术栈)

    Nodejs c++ addon 是用c++去编写Nodejs的插件 技术栈: 1.node-gyp 一个用于把c++文件编译成node可执行文件的库 2.v8 google v8引擎 用于处理c++ ...