Centos7安全实践之用户密码管理

概述

本文主要内容设定系统密码的一般性原则,并按次原则在centos7上实践和测试。

密码安全

  • 所有密码都会以单向哈希的形式保存在可读的 /etc/passwd 文件中
  • 影子密码可通过在/etc/shadow 文件中保存密码哈希值,该文件只能由 root 用户读取

该设置什么样的密码

  • 牢记长密比短而复杂的密码强
  • 可以使用系统自带的pwmake命令来生成密码
# pwmake 56   //数字代表熵值,该值建议不少于56,
eNted4pYHIm!
# pwmake 128
=OKPumT4jOhjolApYzYxbuBOlof

pwmake可以指定最小熵值为56 位,这对于不常出现暴力破解的系统和服务密码,这个熵值已足够。对于攻击者无法直接访问哈希密码文件的运用程序, 64 位就足以适用于此类运用程序。当攻击者可能获取直接访问哈希密码的权限,或密码被用作加密钥匙时,对于此类情况应使用 80 到 128 位。如果您无法明确指定一个具体的熵值,pwmake 将会使用默认值。创建一个 128 位的密码。熵值产生于 /dev/urandom

禁止使用以下类型密码

  • 使用字典里的单词,外语单词,逆序单词,或仅使用数字。
  • 使用少于 10 字符的密码或密码短语。
  • 使用键盘布局的系列键。
  • 写下您的密码。
  • 在密码中使用个人信息,如出生日期、周年纪念日、家庭成员姓名、或宠物名字。
  • 在不同的机器上使用相同的密码短语或密码。

密码管理原则

  • 设置一个强密码给个人用户使用
  • 用户创建自己的密码,但要验证密码是否安全,并且强制用户定期更改密码

一个完整的实践范例

实践的目标

  • 保证用户密码符合强密码要求(通过pam_pwquality实现)

当用户被要求创建或更改密码时,可以使用 passwd 命令行实用程序,这就是PAM-检测软件 ( 可插入验证模块(Pluggable Authentication Modules)) ,可检查密码是否过短或是否容易被破解。这个检查过程是由 pam_pwquality.so PAM 模块执行的。pam_pwquality 模块是根据一系列规则,用于检查密码的强度。其程序有两个步骤:首先,它检查所提供的密码是否能在字典中找到。如果不能,它将继续进行另外一些额外检查。pam_pwquality 与 其他 PAM 模块一起堆叠在/etc/pam.d/passwd 文件下的 密码部分。而自定义规则将在 /etc/security/pwquality.conf 配置文件中具体说明。

  • 锁定登录尝试失败超过三次的用户账户
  • 限定密码有效期为90天

操作步骤

1. 保证用户密码符合强密码要求

这个需要修改两个文件

  • /etc/pam.d/passwd
  • /etc/security/pwquality.conf

先在/etc/pam.d/passwd添加以下的内容,这样才能够使用pam_quality

password    required    pam_pwquality.so retry=3

然后在/etc/security/pwquality.conf中添加以下的内容

difok = 5 //新密码与旧密码至少有5个字符不相同
minlen = 10  //强制密码不少于10位
minclass = 4  //密码要包含4种类型的字符(大写、特殊字符、数字、字母)
maxsequence = 3 //检测是否有3个连续顺序的字符,如:1234,abcd
maxrepeat = 3   //检测是否有连续重复的3个字符1111
  • 注意,这个文件本身自带一些默认值
  • 且等号前后要有个空格,否则无效
  • 由于root 用户是施行密码创建规则的人,尽管有出现警告消息,他也能够为自己或普通用户设置任何不符合规则的密码。

测试,当不满足4种类型的字符的要求时

[hyc@testdev1 ~]$ passwd
Changing password for user hyc.
Changing password for hyc.
(current) UNIX password:
New password:
BAD PASSWORD: The password contains less than 4 character 

2. 锁定登录尝试失败超过三次的用户账户

  • 需要使用pam_faillock模块
  • 需要修改文件/etc/pam.d/system-auth 文件和/etc/pam.d/password-auth 文件中的 auth 区段
  • 注意顺序
  • 将登录尝试失败的数据储存在 /var/run/faillock 目录下每位用户的独立文件中。

先修改/etc/pam.d/system-auth 文件和/etc/pam.d/password-auth 文件中的 auth 区段,在两文件里分别添加以下的内容:

auth        required       pam_faillock.so preauth silent audit deny=3 unlock_time=600
auth        sufficient     pam_unix.so nullok try_first_pass
auth        [default=die]  pam_faillock.so authfail audit deny=3 unlock_time=600

再在两文件的account区段分别添加以下的内容:

account     required      pam_faillock.so

测试,当连续3次密码错误后,用户将被锁定10分钟,次时,如果root用户执行以下命令,将用以下的提示

# su - hyc
Last login: Mon Dec 30 16:26:00 CST 2019 from 192.168.3.65 on pts/2
Last failed login: Mon Dec 30 17:16:21 CST 2019 from 192.168.3.65 on ssh:notty
There were 3 failed login attempts since the last successful login.

#cat /var/run/faillock/hyc   //该文件记录了登录失败的IP
192.168.3.65   192.168.3.65 192.168.3.65 
使用faillock查看登录失败的用户

可以查看用户自上次成功登录后,每个用户失败登的情况,

[root@testdev1 ~]# faillock
hyc:
When                Type  Source                                           Valid
2019-12-30 17:28:27 RHOST 192.168.3.65                                         V
2019-12-30 17:30:36 RHOST 192.168.3.65                                         V
2019-12-30 17:31:19 RHOST 192.168.3.65                                         V
root:
When                Type  Source                                           Valid


怎样解除用户锁定
  • faillock --user <username> --reset
[root@testdev1 ~]# faillock --user hyc --reset
You have mail in /var/spool/mail/root
[root@testdev1 ~]# faillock
hyc:
When                Type  Source                                           Valid
root:
When                Type  Source                                           Valid
[root@testdev1 ~]#

以上是针对非root用户的,如果希望对root也有效,则须在/etc/pam.d/system-auth 文件和 /etc/pam.d/password-aut文件中的pam_faillock 条目里添加 even_deny_root 选项:

auth        required      pam_faillock.so preauth silent audit deny=3 even_deny_root unlock_time=600
auth        sufficient    pam_unix.so nullok try_first_pass
auth        [default=die] pam_faillock.so authfail audit deny=3 even_deny_root unlock_time=600
auth        sufficient    pam_faillock.so authsucc audit deny=3 even_deny_root unlock_time=600

限定密码有效期

可以使用chage命令来指定期限,格式如下:

chage -M 90 <username>
  • -M 选项指定该密码有效的最长天数,要禁用密码过期功能,通常在 -M 选项后使用值 99999
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,185评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,652评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,524评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,339评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,387评论 6 391
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,287评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,130评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,985评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,420评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,617评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,779评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,477评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,088评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,716评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,857评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,876评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,700评论 2 354

推荐阅读更多精彩内容