Linux 系统用户密码长度以及复杂度进行限制 PAM

 

1.修改用户复杂度的2个文件

wKiom1NOP66SThebAAAvdwO9mqQ944.jpg

wKioL1NOP4XRuZymAAPW4JlUPAg181.jpg

wKiom1NOP67yaMgzAAAvs_1aflk759.jpg

wKioL1NOP4agm5dHAAOvqaLacK0183.jpg
 

 

PAM服务文件

1、# more /etc/pam.d/login 
auth       required     pam_securetty.so
auth       required     pam_stack.so service=system-auth
auth       required     pam_nologin.so
account    required     pam_stack.so service=system-auth
password   required     pam_stack.so service=system-auth
session    required     pam_stack.so service=system-auth
session    optional     pam_console.so

PAM服务文件的格式(四部分)

Module-typecontrol-flagmodule-patharguments
Module-type: auth、account、session、password
Control-flag:required、requisite、sufficient、optional
eg: 
   auth        required    pam_securety.so
authrequiredpam_stack.so   service=system_auth
Module-type(属于认证里面的第一部分,主要是分配权限)
auth:认证、授权(检查用户的名字、密码正确与否);
account:检查用户的帐户是否到期、禁用等。
session:控制会话
password:控制用户修改密码过程
Control-flag (属于认证里面的第二部分,控制标识位)
required:必须通过此认证,否则不再往下认证下去,直接退出;
requisite:必须通过认证,但以后还有机会,可以往下认证;
sufficient:一经通过,后面的不再认证(只要通过这个条件则直接通过);
optional:可选的,通不通过均可。
 
                                          常用的PAM服务文件
 
1)、login ----    /etc/pam.d/login     2)、ipop3d ---  /etc/pam.d/pop
3)、ftp  ----  /etc/pam.d/ftp   或   vsftpd -- /etc/pam.d/vsftpd
4)、sshd--- /etc/pam.d/sshd    5)、su --- /etc/pam.d/su    6)、imap--- /etc/pam.d/imcp
                                           
                                                         认证堆栈
 

①、auth              required        pam_securety.so
②、auth              required        pam_stack.so         service=system-auth
③、auth              required        pam_nologin.so

认证堆栈
如果 号认证结束,则在后面有个结束标志,转到下一个认证即 号认证,依次类推,相同类型的认证会放在一起进行。
其中pam_stack.so调用一个子模块服务,通过这个服务再调用一个第三方的模块进行认证授权。
                                                 常用PAM模块
1)、pam_access.so    控制访问者的地址与帐号的名称
2)、pam_listfile.so     控制访问者的帐号名称或登陆位置
3)、pam_limits.so      控制为用户分配的资源
4)、pam_rootok.so   对管理员(uid=0)无条件通过
5)、pam_userdb.so   设定独立用户帐号数据库认证
如下:

[root@localhost root]# cd /etc/pam.d/
[root@localhost pam.d]# more login
#%PAM-1.0
auth       required     pam_securetty.so
auth       required     pam_stack.so service=system-auth
auth       required     pam_nologin.so
account    required     pam_stack.so service=system-auth
password   required     pam_stack.so service=system-auth
session    required     pam_stack.so service=system-auth
session    optional     pam_console.so
[root@localhost pam.d]# cd /usr/share/doc/pam-0.75/txts/
[root@localhost txts]# ls
pam_appl.txt               README.pam_ftp          README.pam_shells
pam_modules.txt          README.pam_limits       README.pam_stack
pam.txt                      README.pam_listfile      README.pam_stress
README                     README.pam_localuser   README.pam_tally
README.pam_access    README.pam_mail         README.pam_time
README.pam_chroot    README.pam_nologin     README.pam_timestamp
README.pam_console   README.pam_permit      README.pam_unix
README.pam_cracklib   README.pam_pwdb       README.pam_userdb
README.pam_deny      README.pam_rhosts      README.pam_warn
README.pam_env        README.pam_rootok     README.pam_wheel
README.pam_filter      README.pam_securetty  README.pam_xauth
[root@localhost txts]# more README.pam_securetty
pam_securetty:
        Allows root logins only if the user is logging in on a
        "secure" tty, as defined by the listing in /etc/securetty

        Also checks to make sure that /etc/securetty is a plain
        file and not world writable.

        - Elliot Lee , Red Hat Software.
                July 25, 1996.
[root@localhost txts]# more /etc/securetty
console
vc/1
vc/2
vc/3
vc/4
vc/5
vc/6
vc/7
vc/8
vc/9
vc/10
vc/11
tty1
tty2
tty3
tty4
tty5
tty6
tty7
tty8
tty9
tty10
tty11
[root@localhost txts]# more /etc/pam.d/system-auth
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth        required      /lib/security/$ISA/pam_env.so
auth        sufficient    /lib/security/$ISA/pam_unix.so likeauth nullok
auth        required      /lib/security/$ISA/pam_deny.so

account     required      /lib/security/$ISA/pam_unix.so

password    required      /lib/security/$ISA/pam_cracklib.so retry=3 type=
password    sufficient    /lib/security/$ISA/pam_unix.so nullok use_authtok md5 shadow
password    required      /lib/security/$ISA/pam_deny.so

session     required      /lib/security/$ISA/pam_limits.so
session     required      /lib/security/$ISA/pam_unix.so
[root@localhost txts]# pwd
/usr/share/doc/pam-0.75/txts
[root@localhost txts]# more README.pam_nologin
# $Id: README,v 1.1.1.1 2000/06/20 22:11:46 agmorgan Exp $
#

This module always lets root in; it lets other users in only if the file
/etc/nologin doesn't exist.  In any case, if /etc/nologin exists, it's
contents are displayed to the user.

module services provided:

        auth            _authentication and _setcred (blank)

Michael K. Johnson
[root@localhost txts]# touch /etc/nologin
[root@localhost txts]# useradd leekwen
[root@localhost txts]# passwd leekwen
Changing password for user leekwen.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
[root@localhost txts]# ssh leekwen@192.168.0.188
leekwen@192.168.0.188's password:
Permission denied, please try again.
leekwen@192.168.0.188's password:
Permission denied, please try again.
leekwen@192.168.0.188's password:
Permission denied (publickey,password,keyboard-interactive).
[root@localhost txts]# rm /etc/nologin
rm: remove regular empty file `/etc/nologin'? y
[root@localhost txts]# ssh leekwen@192.168.0.188
leekwen@192.168.0.188's password:
[leekwen@localhost leekwen]$ pwd
/home/leekwen
[leekwen@localhost leekwen]$ exit
logout
Connection to 192.168.0.188 closed.
[root@localhost txts]# cd /etc/pam.d/
[root@localhost pam.d]# more login
#%PAM-1.0
auth       required     pam_securetty.so
auth       required     pam_stack.so service=system-auth
auth       required     pam_nologin.so
account    required     pam_stack.so service=system-auth
password   required     pam_stack.so service=system-auth
session    required     pam_stack.so service=system-auth
session    optional     pam_console.so 
[root@localhost pam.d]# tty
/dev/pts/2
[root@localhost pam.d]# ls /dev/tty1
/dev/tty1

 

转载于:https://www.cnblogs.com/qyy349609115/p/9066868.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux系统中,用户密码复杂度可以通过设置密码策略来实现。密码策略通常包括以下几个方面: 1. 密码长度密码长度应该设置为足够长,一般建议为8位以上。 2. 复杂度要求:密码应该包含大小写字母、数字和特殊字符等多种类型的字符。 3. 密码历史:系统应该记住之前若干个密码,以免用户反复使用相同的密码。 4. 密码过期:密码应该定期过期,让用户强制更换密码。 在Linux系统中,可以通过修改/etc/login.defs文件来设置密码策略。例如,可以设置密码长度为8位,要求包含数字和特殊字符,并且密码历史为5个密码密码过期时间为90天,可以通过以下命令实现: ``` # 密码长度 PASS_MIN_LEN 8 # 复杂度要求 # dcredit表示数字字符 # ucredit表示大写字母 # lcredit表示小写字母 # ocredit表示特殊字符 # minclass表示至少包含几种字符 # maxrepeat表示不允许重复字符的个数 # maxsequence表示不允许连续字符的个数 # mindiff表示必须与之前密码有几个字符不同 # minlen表示密码长度至少为几个字符 # difok表示是否允许新密码与旧密码相同 # reject_username表示密码不能与用户名相同 # enforce_for_root表示是否强制root用户也要满足密码策略 # 详细说明可以查看man pam_passwdqc PASS_MAX_DAYS 90 PASS_MIN_CLASS_DIGIT 1 PASS_MIN_CLASS_ALPHA 1 PASS_MIN_CLASS_OTHER 1 PASS_MAX_REPEAT_CHARS 2 PASS_MAX_SEQUENCE_CHARS 3 PASS_MIN_DIFF_CHARS 3 PASS_USE_CRACKLIB yes # 密码历史 #表示之前5个密码不能重复使用 PASSWD_HISTORY 5 # 密码过期 # 表示密码过期前30天提醒用户更改密码 PASS_WARN_AGE 30 ``` 设置完成后,需要重启系统或重新加载PAM模块才能使设置生效。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值