linux 账号密码安全加固

Red Hat Enterprise Linux AS release 4


Linux用户密码策略


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


    Linux用户密码的复杂度可以通过pam pam_cracklib module或pam_passwdqc module控制,两者不能同时使用. 个人感觉pam_passwdqc更好用.




/etc/login.defs密码策略


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


PASS_MIN_DAYS   0          #是否可修改密码,0可修改,非0多少天后可修改


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


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


pam_cracklib主要参数说明:


    tretry=N:重试多少次后返回密码修改错误


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


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


    lcredit=N:小宝字母的个数


    ucredit=N大宝字母的个数


    credit=N:特殊字母的个数


    minclass=N:密码组成(大/小字母,数字,特殊字符)




pam_passwdqc主要参数说明:


mix:设置口令字最小长度,默认值是mix=disabled。


max:设置口令字的最大长度,默认值是max=40。


passphrase:设置口令短语中单词的最少个数,默认值是passphrase=3,如果为0则禁用口令短语。


atch:设置密码串的常见程序,默认值是match=4。


similar:设置当我们重设口令时,重新设置的新口令能否与旧口令相似,它可以是similar=permit允许相似或similar=deny不允许相似。


random:设置随机生成口令字的默认长度。默认值是random=42。设为0则禁止该功能。


enforce:设置约束范围,enforce=none表示只警告弱口令字,但不禁止它们使用;enforce=users将对系统上的全体非根用户实行这一限制;enforce=everyone将对包括根用户在内的全体用户实行这一限制。


non-unix:它告诉这个模块不要使用传统的getpwnam函数调用获得用户信息,


retry:设置用户输入口令字时允许重试的次数,默认值是retry=3






密码复杂度通过/etc/pam.d/system-auth实施


如:


要使用pam_cracklib将注释去掉,把pam_passwdqc.so注释掉即可.


#password    requisite     /lib/security/$ISA/pam_cracklib.so retry=3 difok=1


password    requisite     /lib/security/$ISA/pam_passwdqc.so min=disabled,24,12,8,7 passphrase=3


password    sufficient    /lib/security/$ISA/pam_unix.so nullok use_authtok md5 shadow




#password    requisite     /lib/security/$ISA/pam_cracklib.so retry=3 difok=1


新密码至少有一位与原来的不同.




加策略:

1、Linux系统的用户帐号策略
编辑/etc/pam.d/system-auth 添加如下语句。
   auth required /lib/security/$ISA/pam_tally.so deny=5
   account required pam_tally.so
该语句的解释:密码最大联系登录6次,超过只能联系管理员。


2、密码策略
    2.1编辑/etc/login.defs  指定如下参数的值。
         PASS_MAX_DAYS   99999
         PASS_MIN_DAYS   0
         PASS_MIN_LEN    5
         PASS_WARN_AGE   7
         参数值得解释: PASS_MAX_DAYS(设置密码过期日期) 
              PASS_MIN_DAYS(设置密码最少更改日期)
              PASS_MIN_LEN(设置密码最小长度)时指密码设置的最小长度,一般定义为8位以上
              PASS_WARN_AGE(设置过期提前警告天数)
     2.2 设置账户锁定登陆失败锁定次数、锁定时间
         编辑/etc/pam.d/system- auth   首先  cp /etc/pam.d/system-auth /etc/pam.d/system-auth.bak      
         #vi /etc/pam.d/system-auth
         auth required pam_tally.so onerr=fail deny=6 unlock_time=300
         解释:设置位密码连续六次锁定,锁定时间300秒 
         解锁用户 faillog -u <用户名》 -r
     2.3 设置口令的复杂程度。
         编辑/etc/pam.d/system- auth   首先  cp /etc/pam.d/system-auth /etc/pam.d/system-auth.bak
         #vi /etc/pam.d/system-auth
         找到pam_cracklib.so  在后面加一些参数,
         例:password    requisite     pam_cracklib.so  minlen=8 ucredit=-2   lcredit=-2   dcredit=-5    ocredit=-1
         意思为最少有2个大写字母,2个小写字符,5个数字, 1个符号
     2.4 限制su的权限
         如果你不想任何人能够用su作为root,可以编辑/etc/pam.d/su文件,增加如下两行:
         auth sufficient /lib/security/pam_rootok.so debug
         auth required /lib/security/pam_wheel.so group=isd
       这时,仅isd组的用户可以用su作为root。此后,如果你希望用户admin能够用su作为root,可以运行如下命令
           # usermod -G10 admin
如何设置 PAM 模块控制 Linux 密码策略


  我们在使用 linux 系统设置密码的时候,经常遇到这样的问题,系统提示:您的密码太简单,或者您的密码是字典的一部分。那么系统是如何实现对用户的密码的复杂度的检查的呢?
  系统对密码的控制是有两部分 ( 我知道的 ) 组成:
   1 cracklib
   2 login.defs
  声明: login.defs 主要是控制密码的有效期。对密码进行时间管理。此处不细谈
   login.defs --shadow password suite configuration
   pam_cracklib.so  才是控制密码复杂度的关键文件
   redhat 公司专门开发了 cracklib 这个安装包来判断密码的复杂度
  可以 rpm -ql cracklib 查看
  密码的复杂度的判断是通过 pam 模块控制来实现的,具体的模块是 pam_cracklibpam_cracklib  的参数介绍:
   debug
   This option makes the module write information to syslog(3) indicating the behavior of the module (this option does not write password information to the log file).
   type=XXX
   The default action is for the module to use the following prompts when requesting passwords: "New UNIX password: " and "Retype UNIX password: ". The default word UNIX can be replaced with this option.
   retry=N
   Prompt user at most N times before returning with error. The default is 1
   difok=N
   This argument will change the default of 5 for the number of characters in the new password that must not be present in the old password. In addition, if 1/2 of the characters in the new password are different then the new password will be accepted anyway.
   difignore=N
   How many characters should the password have before difok will be ignored. The default is 23.
   minlen=N
   The minimum acceptable size for the new password (plus one if credits are not disabled which is the default). In addition to the number of characters in the new password, credit (of +1 in length) is given for each different kind of character (other, upper, lower and digit). The default for this parameter is 9 which is good for a old style UNIX password all of the same type of character but may be too low to exploit the added security of a md5 system. Note that there is a pair of length limits in Cracklib itself, a "way too short" limit of 4 which is hard coded in and a defined limit (6) that will be checked without reference to minlen. If you want to allow passwords as short as 5 characters you should not use this module.
   dcredit=N
   (N >= 0) This is the maximum credit for having digits in the new password. If you have less than or N digits, each digit will count +1 towards meeting the current minlen value. The default for dcredit is 1 which is the recommended value for minlen less than 10.
   (N < 0) This is the minimum number of digits that must be met for a new password.
   ucredit=N
   (N >= 0) This is the maximum credit for having upper case letters in the new password. If you have less than or N upper case letters each letter will count +1 towards meeting the current minlen value. The default for ucredit is 1 which is the recommended value for minlen less than 10.
   (N > 0) This is the minimum number of upper case letters that must be met for a new password.
   lcredit=N
   (N >= 0) This is the maximum credit for having lower case letters in the new password. If you have less than or N lower case letters, each letter will count +1 towards meeting the current minlen value. The default for lcredit is 1 which is the recommended value for minlen less than 10.
   (N < 0) This is the minimum number of lower case letters that must be met for a new password.
   ocredit=N
   (N >= 0) This is the maximum credit for having other characters in the new password. If you have less than or N other characters, each character will count +1 towards meeting the current minlen value. The default for ocredit is 1 which is the recommended value for minlen less than 10.
   (N < 0) This is the minimum number of other characters that must be met for a new password.
   use_authtok
   This argument is used to force the module to not prompt the user for a new password but use the one provided by the previously stacked password module.
   dictpath=/path/to/dict
   Path to the cracklib dictionaries.
   dictpath=/path/to/dict // 注:密码字典,这个是验证用户的密码是否是字典一部分的关键。
   Path to the cracklib dictionaries.
   cracklib 密码强度检测过程
  首先检查密码是否是字典的一部分,如果不是,则进行下面的检查
  密码强度检测过程
   These checks are:
   Palindrome
   Is the new password a palindrome of the old one?
新密码是否旧密码的回文
   Case Change Only
   Is the new password the the old one with only a change of case?
  新密码是否只是就密码改变了大小写
   Similar
   Is the new password too much like the old one?
  新密码是否和旧密码很相似
   This is primarily controlled by one argument, difok which is a number of characters that if different between the old and new are enough to accept the new password, this defaults to 10 or 1/2 the size of the new password whichever is smaller.
   To avoid the lockup associated with trying to change a long and complicated password, difignore is available. This argument can be used to specify the minimum length a new password needs to be before the difok value is ignored. The default value for difignore is 23.
   Simple
   Is the new password too small?
  新密码是否太短
   This is controlled by 5 arguments minlen, dcredit, ucredit, lcredit, and ocredit. See the section on the arguments for the details of how these work and there defaults.
   Rotated
   Is the new password a rotated version of the old password?
  新密码的字符是否

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28869493/viewspace-2137432/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/28869493/viewspace-2137432/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值