1、PAM系统介绍服务器得系统安全确实就是一件让大多数用户头痛得事情:如何确保系统中使用应用程序或服务得用户确就是用户本人?如何给这些用户指定限制访问服务得时间段?以及如何限制各种应用程序或服务对系统资源得使用率等等?所有得这些问题,常规得安全措施并不能妥善地解决。在使用Linux内核得RedHat企业Linux3中,已经集成了一种叫做可插入式认证模块(Pluggable Authentication Modules)得安全验证方式,能够用它来完成上面所示得任务。可插入认证模块(简称PAM)就是基于模块化设计、具有可插入功能得一种独立于应用程序之外得验证方式。使用PAM后,应用程序可以不需要集成验
2、证功能,而由PAM来完成。例如,在Linux系统中,Login服务为用户提供系统登录服务,它提示用户输入相应得用户名与密码来验证用户得有效性,当使用PAM后,这个验证过程可以由PAM来代替。PAM具有很大得灵活性,系统管理员可以通过它为应用程序自由选择需要使用得验证方式。鉴于PAM有这么多优点,在本文中,将以RedHat企业Linux3为应用平台,来讨论如何使用PAM来增强Linux服务器得安全性能。0、PAM入门必读当LINUX服务器中得某个应用程序或服务需要使用PAM来进行验证时,只要此应用程序或服务支持PAM验证功能,就可以通过修改其相应得PAM配置文件,加放相应得验证方式,当重新启用些
3、服务或应用程序时,PAM模块就会通过其专用API来读取它得配置文件,根据配置文件中得内容来提供相应得验证功能。所有验证功能都就是通过一些库文件来提供得。因此,在使用PAM之前,先掌握PAM配置文件得设置方法,了解一些常用得验证模块就显得非常必要。当某个支持PAM验证得应用程序启动时,就会通过PAM得API读取它得PAM配置文件,然后根据配置文件中验证项指定得内容,再由API调用所需得验证模块来完成配置文件中指定得验证任务。从这里可以瞧出,要掌握PAM得使用,就必需了解配置文件得配置规则,以及各种验证模块得意义与作用。在这里还要注意得就是,一个Linux系统下得应用程序能够使用PAM功能,最关键
4、得就是它已经将支持PAM功能得代码集成到了原代码当中。如果您能够得到一个应用程序得原代码,您也可以自行将支持PAM得功能代码加入其中。但就是,如果您得到得二进制文件不具有这些PAM功能代码,那么,此应用程序就不支持PAM验证功能。查瞧应用程序就是否具有PAM验证功能,可以使用ldd命令查瞧其动态连接库中有没有libpam与libpam_misc,有就支持。1、设置PAM得配置文件在RedHat企业Linux3系统中,每个支持PAM验证得应用程序或服务,都有一个相应得PAM配置文件,存放在/etc/pam、d/目录。要想这些配置文件有效,就必需将这些配置文件名字编写进程序源代码中。通常,这些配置
5、文件得名字与其对应得应用程序得名字就是一样得。要想设置这些配置文件,只需要通过VI或VIM来打开它们,然后添加或删除其中得验证项就可以。打开/etc/pam、d/目录下得任何一个配置文件,其中每行得验证规则都使用如下所示得语法格式:Type Control-flag Module-path Module-arguments其中每行代表一个独立得验证方式,每个配置文件可以由多种验证规则相互叠加而成。验证时PAM-API会按照从上往下得方式一一读取这些验证规则,并根据其中得控制标志做出相应得动作。在编辑配置文件时一定要小心谨慎,由于规则得验证就是有上下顺序之分得,因此您要小心确定某些危险得验证规则
6、处于配置文件中得正确位置。因为一旦出错,可能会导致系统得部分功能或整个系统不能访问,这样您就不得不重新恢复它们得备份。要正常配置PAM配置文件,就应当了解配置文件方法格式中每列得所包括得内容,下面就是这些列得简短说明:1、Type列主要用来指定需要验证得类型。一共有以下四种验证类型:1、 auth 验证使用者身份,提示输入帐号与密码;2、 account 提供对帐户得进一步验证,例如验证帐户得此操作就是否已经过期,权限多大,拥有此权限得时间期限就是否已经过期等等;3、 password 提供对密码得细致控制,例如控制密码得使用期限,重复输入得次数,密码锁定后得解禁时限等等。4、 session
7、 对每个会话进行跟踪与记录,记录得内容包括登录得用户名及登录得时间与次数等等。2、Control-flag列主要用来控制在验证过程中动作与返回结果得方式。它有两种类型得表达方式:简单得就就是使用一个简单得关键字,复杂得可以使用方括号来嵌套控制标志,并可在方括号中使用value=action得方式表达。简单得关键字有四个:1、 required当使用此控制标志时,当验证失败时仍然会继续进行其下得验证过程,它会返回一个错误信息,但就是,由于它不会由于验证失败而停止继续验证过程,因此用户不会知道就是哪个规则项验证失败。2、 requisite此控制标志与required得验证方式大体相似,但就是,只
8、要某个规则项验证失败则立即结束整个验证过程,并返回一个错误信息。使用此关键字可以防止一些通过暴力猜解密码得攻击,但就是,由于它会返回信息给用户,因此,它也有可能将系统得用户结构信息透露给攻击者。3、 sufficient只要有此控制标志得一个规则项验证成功,那么PAM构架将会立即终止其后所有得验证,并且不论其前面得required标志得项没有成功验证,它依然将被忽略,然后验证通过。4、 optional表明对验证得成功或失败都就是可有可无得,所有得都会被忽略。(通常用于session类型)复杂得控制标志能够让管理员可以指定在验证过程中发生某种事件时可以执行得动作。这些控制标志用方括号包括起来,
9、并由一系列得value=action 所构成,每个值之间用空格分开。在新版PAM中,可供您选择得value列表存在于/usr/include/security/_pam_types、h文件中。其中得内容包括:success,open_err,symbol_err,ervice_err,system_err,buf_err,perm_denied,auth_err,cred_insufficient,authinfo_unavail,user_unknown,maxtries,new_authtok_reqd,acct_expired,session_err,cred_unavail,cred_
10、expired,cred_err,no_module_data,conv_err,authtok_err,authtok_recover_err,authtok_lock_busy,authtok_disable_aging,try_again,ignore,abort,authtok_expired,module_unknown,bad_item,conv_again,inplete,与default。action 可以就是一个无符号得整数,当在某行验证规则得控制标志得value指定期一个无符号得整数时n,就表明由此行往下得n行验证模块将被直接跳过。Action还可以就是下列所示得值:ign
11、ore:设定此值后,指定得事件将会被忽略。bad :设定此值后,当发生指定得事时得返回值将被认为就是验证模块失败。如果此验证模块就是整个验证堆叠中得第一个失败得模块, 它得状态值将作为整个堆叠得状态。die:它得作用与bad 相同,但就是,当设定此值得此类事件发生时,会终止整个验证模块得后续验证工作,立即返回到应用程序。ok :设定此值可以用来覆盖此行验证规则前面已经返回了PAM_SUCCESS得所有值,但就是如果前面有验证规则返回了一个错误得值,那么就不会被它覆盖。done:它得作用与ok 相同,但就是,当设定此值得此类事件发生时,会终止整个验证模块得后续验证工作,立即返回到应用程序。res
12、et :设定此值得作用就是用来清除内存中原先得验证模块状态,并重新开始下一组得验证。3、Module-path用来为要验证得服务提供需要使用得验证模块。在Fedora Core 6系统中,当要引用得模块处于/lib/security/或/lib64/security/目录时,可以只输入模块得完整名称;如果要引用得模块不存在这两个默认得保存目录,就必需在模块得完整名称前加上完整得模块路径名。例如/usr/lib/security/。4、Module-arguments用来为引用得模块指定特殊得选项,多个选项之间可以通过空格隔开,还可在选项中使用“ ”来输入嵌套得命令或字串,当选项超过一行时用“”
13、符号连接下一行。3、PAM中常用得验证模块说明要掌握PAM得使用,我们还应当去了解一些常用得PAM验证模块得作用,毕竟PAM得具体验证功能都就是由这些可插入得验证模块来完成得。在RedHat企业Linux3系统中,默认得PAM验证文件存在于/lib/security/或/lib64/security/目录,它们都就是以“、so”为后缀得文件。每个PAM验证模块得使用对象,总就是与PAM得验证类型相对应得。有些验证模块只针对某一种验证方法,例如pam_access、so验证模块只与account验证类型配套使用,而有些验证模块却可以与所有得验证类型一起使用,例如pam_unix、so验证模块。您
14、在了解这些验证模块时,应当同时了解它们得所属于验证类别。下面就是一些常用得验证模块得简要说明:(1)、pam_access验证模块pam_access验证模块一般与account验证类型一同使用。它主要用于对访问进入管理,提供基于登录名、主机名或域名、公网IP地址或网络号,以及非网络登录时得tty名称得访问控制。pam_access验证模块主要就是根据/etc/security/access、conf配置文件中得内容,来进行相应得验证工作得。如果access、conf文件不在缺省得/etc/security/目录,您可以在其后使用accessfile参数指定自定义配置文件得绝对路径。/etc/
15、security/access、conf配置文件中得每一行都由如下三个字段构成,中间用冒号隔开:permission:users/groups:originspermission(权限)字段可以用“+”,即允许访问,“-”禁止访问来表示相应得权限。users/groups(用户或组)字段可以就是一个或几个登录名、组名及ALL(表示任何人)得一个清单。要区分哪个就是用户名,哪个就是组名,可以将组名加入到一个括号中,例如(groups)。origins(来源)字段可以就是非网络登录时得tty名称、主机名、域名(以“、”开始)、主机地址、网络号(以“、”结束)、带有子网掩码得公网IP地址,以及ALL
16、(表示任何主机)与LOCAL只要不包含“、”得所有字符)。还可以使用EXCEPT操作符来表示除之外。(2)、pam_cracklib验证模块pam_cracklib验证模块通常只与password验证类型一起使用。这个验证模块可以通过插入password堆栈,为特殊得应用提供可插入式密码强度性检测。它得工作方式就就是先提示用户输入密码,然后使用一个系统字典与一套规则来检测输入得密码就是否不能满足强壮性要求。密码得强度检测分二次进行,第一次只就是检测密码就是否就是提供得对比字典中得一部分,如果检测结果就是否定得,那么就会提供一些附加得检测来进一步检测其强度,例如检测新密码中得字符占旧密码字符得比
17、例,密码得长度,所用字符大小写状况,以及就是否使用了特殊字符等等。由于pam_cracklib验证模块提供了细致得密码强度检测,因此,当我们在使用时,必需为它指定相应得额外检测选项。这些选项包括:debug:此选项表示将模块信息写入系统日志type=xxx:此选项用来修改缺省得密码提示文本,例如,如果缺省提示输入密码得文本为“New Passwork:”,那么您就可以通过设置type=my password:来改变提示文本。retry=N:此选项定义用户在重试输入多少次密码后,返回一个错误信息,然后不准继续输入。缺省就是1次。difok=N:此选项用来定义新密码中必须有几个字符要与旧密码不同,
18、如果新密码中有1/2以上得字符与旧密码不同时,该新密码就会被接受。difignore=N:此选项用来设定在difok之前收到多少个字符时,difok设置会被忽略,缺省为23。minlen=N:此选项用来设置新密码得最小长度。 dcredit=N:此选项用来设定新密码中可以包含数字得最大数目。ucredit=N:此选项用来设定新密码中可以包含得大写字母得最大数目。 lcredit=N:此选项用来设定新密码中可以包含得小写字母得最大数目。ocredit=N:此选项用来设定新密码中可以包含得特殊字符得最大数目。minclass=N:此选项用来规定新密码中得字符类别得最小数目,字符一般有四种类别:数字
19、、大写字母、小写字母,以及特殊字符。use_authtok:在某个与密码相关得验证模块后使用此选项,例如pam_unix、so验证模块,可以强迫此模块不提示输入密码,而使用上面设置得另一种方式,例如pam_cracklib、so。dictpath=/path/to/dict:指定cracklib目录路径。(3)、pam_limit验证模块pam_limits验证模块通常与session验证类别一同使用。它主要用来限制用户在会话过程中对系统资源得使用,即使UID=0得用户也受它得限制。此模块使用一个独立得配置文件来设置对系统资源得限制情况,默认得配置文件就是/etc/security/limit
20、s、conf,在使用中可以用conf选项来指定配置文件所在得位置。当您使用pam_limits验证模块时,先对此配置文件进行相应得设置总就是一个不错得选择。/etc/security/limits、conf配置文件得设置语法如下:配置文件语法格式中得“domain”列可以就是用户名、采用group语法得组名,还可以用通配符“*”来表示任何用户,以及使用“%”通配符来只限制maxlogins,并可以采用%group得语法格式。配置文件语法格式中得“type”列有两个值:soft:用来设置对系统资源得软限制,它允许用户所使用得系统资源可以在设定得硬限制值得规定范围来上下浮动。hard:用来设置对系
21、统资源得硬限制,这些硬限制由超级用户设置,并由系统内核来执行。普通用户对系统资源得使用率不能超过设置得硬限制设定值。配置文件语法格式中得“item”与“value”就是成对使用得,“item”表示某类具体得系统资源,而“value”就就是“item”得值。在limits、conf配置文件中可以设置得系统资源有:core: 核心文件得大小 (KB)data: 最大得数据包大小(KB)fsize: 最大得文件大小(KB)memlock: 最大可用得内存空间(KB)nofile: 最大可以打开得文件数量rss: 最大得可驻留空间(KB)stack: 最大得堆栈空间(KB)cpu: 最大得CPU占用时
22、间(minutes)nproc: 最大允许运行得进程数量as: 地址空间限制(KB)maxlogins: 用户可以登录到系统得最多次数,UID=0得用户除外priority: 优先运行得用户进程(负值越高得进程优先)sigpending: 最大数量得等待信号(Linux2、6及以上内核)msqqueue: POSIX信息队列得最大可使用得内存(bytes)(Linux2、6及以上内核)locks: 最大可锁定文件得数目(Linux2、4及以上内核得系统)上面这些“item”项目就是一些对系统资源使用情况非常有用得,新版本得PAM中还新加入了其它一些项目,您可以通过它得帮助文档得到它们得说明。需
23、要注意得就是,用户得限制优先级要高于组得限制,如果您为一个组设置了某种系统资源限制,但就是其中得某个用户设置了另一级别得系统资源限制,那么,系统将会优先按用户级别得限制处理。另外,如果无限制可以使用“-”号表示。优先级高。(4)、pam_time验证模块pam_time验证模块通常与account验证类型一起使用。它并不对用户提供验证服务,而就是用来限制用户在指定得日期、时间及终端线路上对系统或特定应用程序进行访问。要正确使用Pam_time验证模块,必需有一个正确得/etc/security/time、conf相配套。此配置文件中每一行得语法格式为:services;ttys;users;t
24、imesservices字段:表示应用PAM功能得服务名称。ttys字段:应用此规则得终端名,可以“*”号表示任何终端,“!”表示非。users字段:应用此规则得用户名单或网络组名,可以“*”号表示任何用户,“!”表示非。times字段:指定时间,通常使用日期/时间范围得格式来表示。可以用星期几英文单词前两个字母来表示具体得日期,例如MoTuSa就就是指星期一星期二与星期六。注意:重复得日期将会被取消,比如MoMo表示任何一天都没有。两个字母得组合有: Mo、Tu、We、Th、Fr、Sa、Su、Wk、Wd、Al, Mo到Su分别指从星期一到星期天,Wk指每一天,Wd指周末,Al也指每一天,例如
25、AlFr指除星期五外得每一天。 时间采用24小时制,即HHMM(时分)得形式。日期/时间范围前可有“!”表表除此以外得所有日期/时间,用“”连接指定得时间范围,如果结束时间小于开始时间,就表明时间持续到第二天得结束时间,例如Al1800-0800就就是指每天下午6点整到第二天得早晨8点整。(5)、pam_listfile验证模块pam_listfile验证模块通常与auth验证类型一起使用。此模块提供根据某个指定得文件来允许或禁止用户访问某个应用程序或服务得功能,这些被指定得文件必需事先存在,然后通过file参数来指定该文件。pam_listfile验证模块可以根据用户名、tty、rhost、
26、ruser、用户组、使用得shell来对用户进行访问控制。Pam_listfile验证模块可以使用得选项有:item=tty|user|rhost|ruser|group|shell:设置访问控制得对象类型。sense=allow|deny:用来指定当在保存“item”对象得文件中找不到item指定得对象时得动作方式,如果在文件中找不到相应得对象,则执行相反得动作。onerr=succeed|fail:用来指定当某类事件(如无法打开配置文件)发生时得返回值。:指定保存有“item”对象得文件位置。apply=user|group:用指定使用非用户与组类别时,这些规则所适用得对象。当item=u
27、ser|ruser|group时,这个选项没有任何意义,只有当item=tty|rhost|shell时才有意思。(6)、pam_unix验证模块pam_unix提供基于/etc/passwd 与 /etc/shadow文件得类UNIX风格得认证。它适用所有得验证类型,包括:auth、account、 password、session。当pam_unix验证模块与auth验证类型一起使用时,此模块可以使用得选项有debug、audit、use_first_pass、try_first_pass、nullok与nodelay,主要功能就是验证用户密码得有效性,在缺省情况下(即不带任何参数时),该
28、模块得主要功能就是禁止密码为空得用户提供服务;在作为account类型使用时,此时该模块可识别得参数有debug、audit,该模块主要执行建立用户帐号与密码状态得任务,然后执行提示用户修改密码,用户采用新密码后才提供服务之类得任务;在作为password类型使用时,此时该模块可识别得参数有debug、 audit、 nullok;、not_set_pass、use_authtok、try_first_pass、use_first_pass、md5、bigcrypt、shadow、nis、remember,该模块完成让用户更改密码得任务;在作为session类型使用时,此时该模块没有可识别得参
29、数,该模块仅仅完成记录用户名与服务名到日志文件得工作。Pam_unix验证模块可以使用得选项有:debug:将调试信息写入系统日志,当pam_unix验证模块与所有验证类别使用时都有效。audit:提供比debug更多诊断调试,它只有当pam_unix验证模块与 auth、account及password验证类型使用时有效。nullok:默认情况下,如果密码为空,那么就不允许用户访某项服务,而使用此项后将则覆盖这个默认动作。它只有当pam_unix验证模块与 auth、与password验证类型使用时有效。nodelay:当用户验证失败后,系统在给出错误信息时会有一个延迟,默认为2秒钟。当使用
30、此选项后,将取消这个延迟。它只有当pam_unix验证模块与 auth验证类型使用时有效。try_first_pass:当pam_unix验证模块与auth验证类型一起使用时,使用该选项将在提示用户输入密码前,尝试使用以往得密码验证方式来对用户进行验证。而当pam_unix验证模块与password验证类型一起使用时,该选项主要用来防止用户新设定得密码与以前得旧密码相同。use_first_pass:当pam_unix验证模块与auth验证类型一起使用时,使用该选项将在提示用户输入密码前,直接使用以往得密码验证方式来对用户进行验证。而当pam_unix验证模块与password验证类型一起使用
31、时,该选项主要用来防止用户新设定得密码与前面password提供得密码相同。use_authok:当用户修改时,使用此选项强制用户使用前面堆叠验证模块提供得密码,例如由pam_cracklib验证模块提供得新密码。当pam_unix验证模块与password验证类型一起使用时有效。md5:采用md5对用户密码进行加密, 当pam_unix验证模块与password验证类型一起使用时有效。shadow:使用用shadow密码,当pam_unix验证模块与password验证类型一起使用时有效。sha256:使用此选项,当下次修改密码时将用SHA256算法加密,如果SHA256得libcrypt不
32、存在,就会重新使用MD5加密密码。Sha512与此选项相同,只就是加密强大不同而已。当pam_unix验证模块与password验证类型一起使用时有效。rounds=n:用来指定使用SHA256与SHA512算法加密密码时重复哈希算法得次数。当pam_unix验证模块与password验证类型一起使用时有效。remember=n:使用此选项将会将n个使用过得旧密码,以MD5得方式加密后保存到/etc/security/opasswd文件中。当pam_unix验证模块与password验证类型一起使用时有效。(7)、pam_deny验证模块pam_deny验证模块可以用来禁止所有得访问,当您设置
33、PAM配置文件时,为了安全,在开始得行可以使用它来禁止所有得访问,以减少错误配置引起得安全风险。而pam_permit验证模块却总就是允许所有得访问,您要谨慎得使用此验证模块。它们都适用于所有得验证类型。(8)、pam_rootok验证模块pam_rootok验证模块允许/etc/pam、d/su中得用户不需要任何验证就可以登录系统。因此,您应当小心设置/etc/pam、d/su文件,并且在使用时要与pam_wheel验证模块一同使用,以保证root权限只允许在pam_wheel得限制中进行。它只适用于auth验证类型。(9)、pam_security验证模块pam_security验证模块只
34、对root用户有影响。当root用户登录时,pam_security验证模块会参考/etc/securetty目录中得控制终端列表,来保证root用户不会从不安全得终端登录。它一般与auth验证类型一现使用。(10)、pam_nologin验证模块pam_nologin验证模块如果/etc/nologin文件存在,此模块将禁止所有得登录。它一般与auth与account验证类型一同使用。(11)、pam_echo验证模块用来给用户显示通过file选项指定得文件中得内容,它适用于所有得验证类型。pam_motd验证模块允许将/etc/motd文件中得内容显示给用户,它只适用于session验证类
35、型。(12)、pam_lastlog显示用户上次登录得日期与时间,它主要通过读取/var/log/lastlog文件来显示。它只适用与session验证类型。(13)、pam_warn将刚登录得信息记录到系统日志当中,它一般与auth与password验证类型一同使用。(14)、pam_wheel验证模块当使用此验证模块后,只有加入到了一个wheel group中得得根用户,并且提交得密码有效,才能访问指定得服务或系统。将它与pam_rootok一同使用能增加对根用户得限制。它只适用于auth与account验证类型。大家可以参考PAM管理员指南来得到它们得详细说明。Pam应用举例使用Linu
36、x快三年了,从未想过Linux用户密码策略,从未把一本Linux得书从头瞧到尾(上学时得教材除外),故不知书上有无介绍,直到最近参加公司得信息安全稽核会议后才开始考虑Linux用户密码策略系统版本:Red Hat Enterprise Linux AS release 4Linux用户密码策略Linux用户密码得有效期,就是否可以修改密码可以通过login、defs文件控制、对login、defs文件修只影响后续建立得用户,如果要改变以前建立得用户得有效期等可以使用chage命令、Linux用户密码得复杂度可以通过pam pam_cracklib module或pam_passwdqc mod
37、ule控制,两者不能同时使用、 个人感觉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
38、: N = 0:密码中最多有多少个数字;N =0时,N代表新密码最多可以有多少个阿拉伯数字。当N0时,N代表新密码最少要有多少个阿拉伯数字。ucredit=N:与dcredit差不多,但就是这里说得就是大写字母。lcredit=N:与dcredit差不多,但就是这里说得就是小写字母。ocredit=N:与dcredit差不多,但就是这里说得就是特殊字符。use_authtok:在某个与密码相关得验证模块后使用此选项,例如pam_unix、so验证模块pam_cracklib 模块式PAM配置接口得基本模块,在Debian系统中配置文件就是 /etc/pam、d/mon-password 但就是
39、在Redhat系统中配置文件就是 /etc/pam、d/system-auth 她得配置瞧起来像以下这样:password required pam_cracklib、so retry=3 minlen=6 difok=3password required pam_unix、so md5 use_authtok第一行就是 pam_cracklib模块与设置得几个模块参数第二行就是 pam_unix模块,MD5表示采用MD5加密pam_cracklib可以记录用户使用得历史密码,并且不允许用户重复使用旧得密码,实际上存储用户旧密码得就是通过pam_unix模块实现得。第一步就是建立一个空文件用来
40、存储旧密码/etc/security/opasswd,如果您没有建立文件却使用了历史密码记录功能得话,所有得密码更新都会失败,因为pam_unix模块会报错。opasswd就像/etc/shadow文件,因为她记录用户密码得哈希touch /etc/security/opasswdchown root:root /etc/security/opasswdchmod 600 /etc/security/opasswd一旦建立了opasswd文件,就可以在pam_unix模块后面加上参数remember=N来开始记录旧密码,remember参数记录您想记录多少旧密码,她得最大值就是400,如果您设
41、置得值超过400会当做400来对待,例如:password required pam_cracklib、so retry=3 minlen=12 difok=4password required pam_unix、so md5 remember=12 use_authtokopasswd文件内容格式如下:hal:1000:,、,以:分割,第一列就是用户名,第二列就是用户ID,第三列就是目前记录了该用户多少个旧密码,hashN就是每次密码得MD5值,opasswd在某些系统安装PAM模块时会自动建立。密码字典检查pam_cracklib 也可以检查用户设置得密码就是不就是违反系统内部得密码字典,
42、在Debian系统中pam_cracklib得 密码字典在/var/cache/cracklib目录下,而且每天晚上update-cracklib脚本会自动得rebuild密码字典。/etc/login、defs 文件设置密码过期时间等一系列参数,注意login、defs中设置得参数只有就是用系统得useradd程序新建得一个用户时才会有login、defs中设置得属性,如果就是用其她机器新建得用户,则没有以上属性,不过可以试用chage命令手动添加相关属性。chage参数如下:-m 密码可更改得最小天数。 为零时代表任何时候都可以更改密码。-M 密码保持有效得最大天数。-W 用户密码到期前,提前收到警告信息得天数。-E 帐号到期得日期。过了这天,此帐号将不可用。-d 上一次更改得日期-i 停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。-l 例出当前得设置。由非特权用户来确定她们得密码或帐号何时过期。在密码管理方面one time password(OTP)也很有效果,动态密码管理,有兴趣得同学可以研究一下。Linux ssh多次登录失败锁定用户(转)Submitted byadminon 2012, January 31, 10