幫助中心
這里有最新的使用文檔和教程
Linux root用戶密碼輸入錯誤鎖定策略;使用舊密碼失敗,Centos密碼策略,Linux密碼策略
登錄失敗處理策略
vim /etc/pam.d/sshd (遠程ssh登錄)
vim /etc/pam.d/login (終端登錄)
/etc/pam.d/system-auth (服務器終端)
在首行#%PAM-1.0下增加:
auth required pam_tally2.so deny=3 unlock_time=1 even_deny_root root_unlock_time=30
注意添加的位置,要寫在第一行。如果不想限制 root 帳戶,可以把 even_deny_root 和root_unlock_time這兩個參數去掉。以上配置編輯保存后立即生效。表示普通帳戶和 root 的帳戶登錄連續 3 次失敗,就統一鎖定 1秒, 1秒后可以解鎖。
賬號的解鎖
如果賬號被鎖定了,可以用如下方法解鎖:passwd -u 賬戶名;如果想鎖一個賬號,輸入如下:passwd -l 賬戶名;解鎖賬號遠程登錄會提示權限被拒絕。解決方法時清除登錄密碼錯誤數,命令如下:pam_tally2 --user=用戶名 --reset;
禁止使用舊密碼
vi /etc/pam.d/system-auth
password sufficient pamunix.so sha512 shadow nullok tryfirstpass useauthtok remember=5
表示禁止使用最近用過的5個密碼(己使用過的密碼會被保存在 /etc/security/opasswd 下面)。
設置密碼最短長度
vi /etc/pam.d/system-auth
password requisite pam_cracklib.so retry=3 difok=3 minlen=10
表示最小不同的字符類型數量密碼長度為10(大寫字母、小寫字母、數字和標點符號)。
如果你的密碼同時用上了這4種類型的符號,并且你的 minlen 設為10,那么最短的密碼長度允許是6個字符。
設置密碼復雜度
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
# retry 允許重試3次
# difok=N:新密碼必需與舊密碼不同的位數 difok=3 新密碼必須與舊密碼有3位不同
# minlen 最小位數
# ucredit 大寫字母位數
# lcredit 小寫字母位數
# dcredit=N: N >= 0:密碼中最多有多少個數字;N < 0密碼中最少有多少個數字. dcredit=-1 密碼中最少有1個數字
# ocredit=N:特殊字母的個數 ocredit=-1 密碼中至少有1個特殊字符
# 它表示密碼必須至少包含一個大寫字母(ucredit),兩個小寫字母(lcredit),一個數字(dcredit)和一個標點符號(ocredit)。
4.設置密碼過期期限
vi /etc/login.defs
PASS_MAX_DAYS 99999 #密碼的最大有效期, 99999:永久有期
PASS_MIN_DAYS 0 #是否可修改密碼,0可修改,非0修改密碼后下一次修改需間隔多少天后可修改
PASS_MIN_LEN 5 #密碼最小長度,使用pam_cracklib module,該參數不再有效
PASSWARNAGE 7 #密碼失效前多少天在用戶登錄時通知用戶修改密碼
Linux密碼策略理論知識:
PAM(Pluggable Authentication Modules )是由Sun提出的一種認證機制。它通過提供一些動態鏈接庫和一套統一的API,將系統提供的服務 和該服務的認證方式分開,使得系統管理員可以靈活地根據需要給不同的服務配置不同的認證方式而無需更改服務程序,同時也便于向系 統中添加新的認證手段。PAM最初是集成在Solaris中,目前已移植到其它系統中,如Linux、SunOS、HP-UX 9.0等。
PAM的配置是通過單個配置文件/etc/pam.conf。RedHat還支持另外一種配置方式,即通過配置目錄/etc/pam.d/,且這種的優先級要高于單 個配置文件的方式。
1、使用配置文件/etc/pam.conf
該文件是由如下的行所組成的:
service-name 服務的名字,比如telnet、login、ftp等,服務名字“OTHER”代表所有沒有在該文件中明確配置的其它服務。
module-type 模塊類型有四種:auth、account、session、password,即對應PAM所支持的四種管理方式。
同一個服務可以調用多個 PAM模塊進行認證,這些模塊構成一個stack。
control-flag 用來告訴PAM庫該如何處理與該服務相關的PAM模塊的成功或失敗情況。
它有四種可能的 值:required,requisite,sufficient,optional。
required 表示本模塊必須返回成功才能通過認證,但是如果該模塊返回失敗的話,失敗結果也不會立即通知用戶,
而是要等到同一stack 中的所有模塊全部執行完畢再將失敗結果返回給應用程序。
即全部策略執行成功才能通過, 有失敗不會立即返回,待模塊執行完成才返回。
requisite 與required類似,該模塊必須返回成功才能通過認證,
但是一旦該模塊返回失敗,將不再執行同一stack內的任何模塊,而是直 接將控制權返回給應用程序。
是一個必要條件。注:這種只有RedHat支持,Solaris不支持
即全部策略執行成功才能通過,一旦有一項失敗,立即返回.
sufficient 表明本模塊返回成功已經足以通過身份認證的要求,不必再執行同一stack內的其它模塊
但是如果本模塊返回失敗的話可以 忽略。
optional 表明本模塊是可選的,它的成功與否一般不會對身份認證起關鍵作用,其返回值一般被忽略。
control-flag 從Linux-PAM-0.63版本起,支持一種新的語法,具體可參看LinuxPAM文檔。
module-path 用來指明本模塊對應的程序文件的路徑名,一般采用絕對路徑,如果沒有給出絕對路徑
默認該文件在目錄/usr/lib/security下面。
arguments 是用來傳遞給該模塊的參數。一般來說每個模塊的參數都不相同,可以由該模塊的開發者自己定義,
但是也有以下幾個共同 的參數:
debug 該模塊應當用syslog( )將調試信息寫入到系統日志文件中。
no_warn 表明該模塊不應把警告信息發送給應用程序。
use_first_pass 表明該模塊不能提示用戶輸入密碼,而應使用前一個模塊從用戶那里得到的密碼。
try_first_pass 表明該模塊首先應當使用前一個模塊從用戶那里得到的密碼,
如果該密碼驗證不通過,再提示用戶輸入新的密碼。
use_mapped_pass 該模塊不能提示用戶輸入密碼,而是使用映射過的密碼。
expose_account 允許該模塊顯示用戶的帳號名等信息,一般只能在安全的環境下使用,
因為泄漏用戶名會對安全造成一定程度的威脅。
2、使用配置目錄/etc/pam.d/
該目錄下的每個文件的名字對應服務名,例如ftp服務對應文件/etc/pam.d/ftp。如果名為xxxx的服務所對應的配置文件/etc/pam.d/xxxx不存 在,則該服務將使用默認的配置文件/etc/pam.d/other。每個文件由如下格式的文本行所構成:
module-type control-flag module-path arguments
每個字段的含義和/etc/pam.conf中的相同。
密碼復雜度通過/etc/pam.d/system-auth這個文件來實現的。在這個文件中我們會用到pam_cracklib.so這個模塊。pam_cracklib.so是一個常用并且非常重要的PAM模塊。該模塊主要的作用是對用戶密碼的強健性進行檢測。即檢查和限制用戶自定義密碼的長度、復雜度和歷史等。如不滿足上述強度的密碼將拒絕使用。
pam_cracklib.so 比較重要和難于理解的是它的一些參數和計數方法,其常用參數包括:
debug:將調試信息寫入日志;
type=xxx:當添加/修改密碼時,系統給出的缺省提示符是“New UNIX password:”以及“Retype UNIX
password:”,而使用該參數可以自定義輸入密碼的提示符,比如指定type=your own word;
retry=N:定義登錄/修改密碼失敗時,可以重試的次數;
Difok=N:定義新密碼中必須有幾個字符要與舊密碼不同。但是如果新密碼中有1/2以上的字符與舊密碼不同時,該新密碼將被接受;
minlen=N:定義用戶密碼的最小長度;
dcredit=N:定義用戶密碼中必須包含多少個數字;
ucredit=N:定義用戶密碼中必須包含多少個大寫字母;
lcredit=N:定義用戶密碼中必須包含多少個小些字母;
ocredit=N:定義用戶密碼中必須包含多少個特殊字符(除數字、字母之外)