centos pam login?centos镜像

CentOS使用PAM锁定多次登陆失败的用户

CentOS使用PAM锁定多次登陆失败的用户

Linux有一个pam_tally2.so的PAM模块,来限定用户的登录失败次数,如果次数达到设置的阈值,则锁定用户。

编译PAM的配置文件

# vim/etc/pam.d/login

?

               

   1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

  

#%PAM-1.0

auth required pam_tally2.so deny=3lock_time=300 even_deny_root root_unlock_time=10

auth [user_unknown=ignoresuccess=okignoreignore=ignore default=bad] pam_securetty.so

auth include system-auth

account required pam_nologin.so

account include system-auth

password include system-auth

# pam_selinux.so close should be the first session rule

session required pam_selinux.so close

session optional pam_keyinit.so force revoke

session required pam_loginuid.so

session include system-auth

session optional pam_console.so

# pam_selinux.so open should only be followed by sessions to be executed in the user context

session required pam_selinux.so open

各参数解释

?

               

   1

2

3

4

5

  

even_deny_root也限制root用户;

deny设置普通用户和root用户连续错误登陆的最大次数,超过最大次数,则锁定该用户

unlock_time设定普通用户锁定后,多少时间后解锁,单位是秒;

root_unlock_time设定root用户锁定后,多少时间后解锁,单位是秒;

此处使用的是 pam_tally2模块,如果不支持 pam_tally2可以使用 pam_tally模块。另外,不同的pam版本,设置可能有所不同,具体使用方法,可以参照相关模块的使用规则。

在#%PAM-1.0的下面,即第二行,添加内容,一定要写在前面,如果写在后面,虽然用户被锁定,但是只要用户输入正确的密码,还是可以登录的!

最终效果如下图

这个只是限制了用户从tty登录,而没有限制远程登录,如果想限制远程登录,需要改SSHD文件

# vim/etc/pam.d/sshd

?

               

   1

2

3

4

5

6

7

8

9

  

#%PAM-1.0

auth required pam_tally2.so deny=3unlock_time=300 even_deny_root root_unlock_time=10

auth include system-auth

account required pam_nologin.so

account include system-auth

password include system-auth

session optional pam_keyinit.so force revoke

session include system-auth

session required pam_loginuid.so

同样是增加在第2行!

查看用户登录失败的次数

?

               

   1

2

3

  

[root@node100 pam.d]# pam_tally2--user redhat

Login Failures Latest failure From

redhat 7 07/16/12 15:18:22 tty1

解锁指定用户

?

               

   1

2

3

  

[root@node100 pam.d]# pam_tally2-r-u redhat

Login Failures Latest failure From

redhat 7 07/16/12 15:18:22 tty1

这个远程ssh的时候,没有提示,我用的是Xshell,不知道其它终端有没提示,只要超过设定的值,输入正确的密码也是登陆不了的!

如何在 Linux 上设置密码策略

1.准备安装一个PAM模块来启用cracklib支持,这可以提供额外的密码检查功能。在Debin,Ubuntu或者Linux Mint使用命令:sudo apt-get install libpam-cracklib

这个模块在CentOS,Fedora或者RHEL默认安装了。所以在这些系统上就没有必要安装了。

如要强制执行密码策略,我们需要修改/etc/pam.d这个与身份验证相关的文件。这个文件会在修改后立即生效。

请注意,本教程中的密码规则只有在非root用户更改密码时强制执行。

2.避免重复使用旧密码寻找同时包含“password”和"pam_unix.so"的行,然后再这行后面加上“remember=5”。这将防止5个最近使用过的密码被用来设置为新密码(通过将它们存放在/etc/security/opasswd文件中)。在Debin,Ubuntu或者Linux Mint使用命令:sudo vi/etc/pam.d/common-password

修改内容:password [success=1 default=ignore] pam_unix.so obscure sha512 remember=5

在Fedora,CentOS或RHEL使用命令:sudo vi/etc/pam.d/system-auth

修改内容:password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=5

3.设置最小密码长度寻找同时包含“password”和“pam_cracklib.so”的一行,并在后面加上“minlen=10”。这将强行设置密码的最小密码长度为10位,其中<# of types>多少个不同类型的字符在密码中使用。有四种符号类型(大写、小写、数字和符号)。所以如果使用所有四种类型的组合,并指定最小长度为10,所允许的简单密码部分将是6位。在Debin,Ubuntu或者Linux Mint使用命令:sudo vi/etc/pam.d/common-password

修改内容:password requisite pam_cracklib.so retry=3 minlen=10 difok=3

在Fedora,CentOS或RHEL使用命令:sudo vi/etc/pam.d/system-auth

修改内容:password requisite pam_cracklib.so retry=3 difok=3 minlen=10

4.设置密码复杂度寻找同时包含“password”和“pam_cracklib.so”的一行,并在后面加上“ucredit=-1 lcredit=-2 dcredit=-1 ocredit=-1”。这将迫使你在密码中至少包括一个大写字母、两个小写字母、一个数字和一个符号。在Debin,Ubuntu或者Linux Mint使用命令:sudo vi/etc/pam.d/common-password

修改内容:password requisite pam_cracklib.so retry=3 minlen=10 difok=3 ucredit=-1 lcredit=-2 dcredit=-1 ocredit=-1

在Fedora,CentOS或RHEL使用命令:sudo vi/etc/pam.d/system-auth

修改内容:password requisite pam_cracklib.so retry=3 difok=3 minlen=10 ucredit=-1 lcredit=-2 dcredit=-1 ocredit=-1

5.设置密码的有效期要设置当前密码的最大有效期,就修改/etc/login.defs文件的下列变量:sudo vi/etc/login.def

修改内容:PASS_MAX_DAYS 150

PASS_MIN_DAYS 0

PASS_WARN_AGE 7

这将迫使每一位用户每半年更改一次他们的密码,并且在密码过期之前七天发送密码过期还有几天到等等的警告信息给用户(到最后甚至在用户开机登录时强制用户更改密码,不然无法进入系统(个人在linux程序设计中看到的知识,非原作者观点))。如果你想基于不同的用户使用密码期限功能,那就使用chage命令。要查看针对特别用户的密码过期策略使用的命令如下:sudo chage-l xmodulo

注意:xmodule是原作者在linux系统中使用的用户名。显示如下:Last password change: Dec 30, 2013

Password expires: never

Password inactive: never

Account expires: never

Minimum number of days between password change: 0

Maximum number of days between password change: 99999

Number of days of warning before password expires: 7

默认设置中,用户的密码是不会过期的。为用户的xmodulo更改有限期限的命令如下:$ sudo chage-E 6/30/2014-m 5-M 90-I 30-W 14 xmodulo

以上命令将密码设置为在2014年6月30日过期。并且,密码更改时间间隔的最大/最小数量分别为5和90。在一个密码过期后,这个账号将被锁30天。在密码过期前14天,警告信息就会发送到对应的账户。

CentOS使用PAM锁定多次登陆失败的用户的教程

Linux有一个pam_tally2.so的PAM模块,来限定用户的登录失败次数,如果次数达到设置的阈值,则锁定用户。

编译PAM的配置文件

# vim/etc/pam.d/login

#%PAM-1.0 auth required pam_tally2.so deny=3lock_time=300 even_deny_root root_unlock_time=10auth [user_unknown=ignoresuccess=okignoreignore=ignore default=bad] pam_securetty.so auth include system-auth account required pam_nologin.so account include system-auth password include system-auth# pam_selinux.so close should be the first session rule session required pam_selinux.so close session optional pam_keyinit.so force revoke session required pam_loginuid.so session include system-auth session optional pam_console.so# pam_selinux.so open should only be followed by sessions to be executed in the user context session required pam_selinux.so open

各参数解释

even_deny_root也限制root用户; deny设置普通用户和root用户连续错误登陆的最大次数,超过最大次数,则锁定该用户 unlock_time设定普通用户锁定后,多少时间后解锁,单位是秒; root_unlock_time设定root用户锁定后,多少时间后解锁,单位是秒;此处使用的是 pam_tally2模块,如果不支持 pam_tally2可以使用 pam_tally模块。另外,不同的pam版本,设置可能有所不同,具体使用方法,可以参照相关模块的使用规则。

在#%PAM-1.0的下面,即第二行,添加内容,一定要写在前面,如果写在后面,虽然用户被锁定,但是只要用户输入正确的密码,还是可以登录的!

最终效果如下图

这个只是限制了用户从tty登录,而没有限制远程登录,如果想限制远程登录,需要改SSHD文件

# vim/etc/pam.d/sshd

#%PAM-1.0 auth required pam_tally2.so deny=3unlock_time=300 even_deny_root root_unlock_time=10auth include system-auth account required pam_nologin.so account include system-auth password include system-auth session optional pam_keyinit.so force revoke session include system-auth session required pam_loginuid.so

同样是增加在第2行!

查看用户登录失败的次数

[root@node100 pam.d]# pam_tally2--user redhat Login Failures Latest failure From redhat 7 07/16/12 15:18:22 tty1

解锁指定用户

[root@node100 pam.d]# pam_tally2-r-u redhat Login Failures Latest failure From redhat 7 07/16/12 15:18:22 tty1

这个远程ssh的时候,没有提示,我用的是Xshell,不知道其它终端有没提示,只要超过设定的值,输入正确的密码也是登陆不了的!

阅读剩余
THE END