○ 本文導(dǎo)航
企業(yè)建站必須是能夠以充分展現(xiàn)企業(yè)形象為主要目的,是企業(yè)文化與產(chǎn)品對外擴(kuò)展宣傳的重要窗口,一個合格的網(wǎng)站不僅僅能為公司帶來巨大的互聯(lián)網(wǎng)上的收集和信息發(fā)布平臺,成都創(chuàng)新互聯(lián)公司面向各種領(lǐng)域:成都封陽臺等網(wǎng)站設(shè)計、成都全網(wǎng)營銷推廣解決方案、網(wǎng)站設(shè)計等建站排名服務(wù)。關(guān)于PAM
PAM身份驗(yàn)證配置文件
PAM配置文件語法格式
PAM模塊接口
PAM控制標(biāo)志
PAM配置方法
PAM身份驗(yàn)證安全配置實(shí)例
- 強(qiáng)制使用強(qiáng)密碼(用戶密碼安全配置)
- 用戶SSH登錄失敗嘗試次數(shù)超出限制后鎖定賬戶(帳戶鎖定/解鎖和時間設(shè)置)
- 允許普通用戶使用sudo而不是su(限制普通用戶登錄到root用戶)
- 禁止直接使用root用戶通過SSH登錄
pwgen復(fù)雜密碼隨機(jī)生成工具
關(guān)于PAM
Linux-PAM (Pluggable Authentication Modules for Linux)可插拔認(rèn)證模塊。Linux-PAM是一套適用于Linux的身份驗(yàn)證共享庫系統(tǒng),它為系統(tǒng)中的應(yīng)用程序或服務(wù)提供動態(tài)身份驗(yàn)證模塊支持。在Linux中,PAM是可動態(tài)配置的,本地系統(tǒng)管理員可以自由選擇應(yīng)用程序如何對用戶進(jìn)行身份驗(yàn)證。PAM應(yīng)用在許多程序與服務(wù)上,比如登錄程序(login、su)的PAM身份驗(yàn)證(口令認(rèn)證、限制登錄),passwd強(qiáng)制密碼,用戶進(jìn)程實(shí)時管理,向用戶分配系統(tǒng)資源等。
PAM的主要特征是認(rèn)證的性質(zhì)是可動態(tài)配置的。PAM的核心部分是庫(libpam)和PAM模塊的集合,它們是位于文件夾/lib/security/中的動態(tài)鏈接庫(.so)文件,以及位于/etc/pam.d/目錄中(或者是/etc/pam.conf配置文件)的各個PAM模塊配置文件。/etc/pam.d/目錄中定義了各種程序和服務(wù)的PAM配置文件,其中system-auth文件是PAM模塊的重要配置文件,它主要負(fù)責(zé)用戶登錄系統(tǒng)的身份認(rèn)證工作,不僅如此,其他的應(yīng)用程序或服務(wù)可以通過include接口來調(diào)用它(該文件是system-auth-ac的軟鏈接)。此外password-auth配置文件也是與身份驗(yàn)證相關(guān)的重要配置文件,比如用戶的遠(yuǎn)程登錄驗(yàn)證(SSH登錄)就通過它調(diào)用。而在Ubuntu、SuSE Linux等發(fā)行版中,PAM主要配置文件是common-auth、common-account、common-password、common-session這四個文件,所有的應(yīng)用程序和服務(wù)的主要PAM配置都可以通過它們來調(diào)用。
使用如下命令判斷程序是否使用了PAM:
root@HMing ~ # ldd /usr/bin/passwd | grep libpam libpam_misc.so.0 => /lib64/libpam_misc.so.0 (0x00007fb74f748000) libpam.so.0 => /lib64/libpam.so.0 (0x00007fb74eb45000) |
如看到有類似的輸出,說明該程序使用了PAM,沒有輸出,則沒有使用。
PAM身份驗(yàn)證配置文件
/etc/pam.d/目錄包含應(yīng)用程序的PAM配置文件。例如,login程序?qū)⑵涑绦?服務(wù)名稱定義為login,與之對應(yīng)的PAM配置文件為/etc/pam.d/login。
PAM配置文件語法格式
每個PAM配置文件都包含一組指令,用于定義模塊以及控制標(biāo)志和參數(shù)。每條指令都有一個簡單的語法,用于標(biāo)識模塊的目的(接口)和模塊的配置設(shè)置,語法格式如下:
module_interface control_flag module_name module_arguments |
如在/etc/pam.d/password-auth-ac配置文件中(CentOS),其中一行PAM模塊接口定義如下
PAM模塊接口(模塊管理組)
PAM為認(rèn)證任務(wù)提供四種類型可用的模塊接口,它們分別提供不同的認(rèn)證服務(wù):
√auth | - 認(rèn)證模塊接口,如驗(yàn)證用戶身份、檢查密碼是否可以通過,并設(shè)置用戶憑據(jù) |
√account | - 賬戶模塊接口,檢查指定賬戶是否滿足當(dāng)前驗(yàn)證條件,如用戶是否有權(quán)訪問所請求的服務(wù),檢查賬戶是否到期 |
√password | - 密碼模塊接口,用于更改用戶密碼,以及強(qiáng)制使用強(qiáng)密碼配置 |
√session | - 會話模塊接口,用于管理和配置用戶會話。會話在用戶成功認(rèn)證之后啟動生效 |
單個PAM庫模塊可以提供給任何或所有模塊接口使用。例如,pam_unix.so提供給四個模塊接口使用。
PAM控制標(biāo)志
所有的PAM模塊被調(diào)用時都會返回成功或者失敗的結(jié)果,每個PAM模塊中由多個對應(yīng)的控制標(biāo)志決定結(jié)果是否通過或失敗。每一個控制標(biāo)志對應(yīng)一個處理結(jié)果,PAM庫將這些通過/失敗的結(jié)果整合為一個整體的通過/失敗結(jié)果,然后將結(jié)果返回給應(yīng)用程序。模塊可以按特定的順序堆疊??刂茦?biāo)志是實(shí)現(xiàn)用戶在對某一個特定的應(yīng)用程序或服務(wù)身份驗(yàn)證的具體實(shí)現(xiàn)細(xì)節(jié)。該控制標(biāo)志是PAM配置文件中的第二個字段,PAM控制標(biāo)志如下:
> required | - 模塊結(jié)果必須成功才能繼續(xù)認(rèn)證,如果在此處測試失敗,則繼續(xù)測試引用在該模塊接口的下一個模塊,直到所有的模塊測試完成,才將結(jié)果通知給用戶。 |
> requisite | - 模塊結(jié)果必須成功才能繼續(xù)認(rèn)證,如果在此處測試失敗,則會立即將失敗結(jié)果通知給用戶。 |
> sufficient | - 模塊結(jié)果如果測試失敗,將被忽略。如果sufficient模塊測試成功,并且之前的required模塊沒有發(fā)生故障,PAM會向應(yīng)用程序返回通過的結(jié)果,不會再調(diào)用堆棧中其他模塊。 |
> optional | - 該模塊返回的通過/失敗結(jié)果被忽略。當(dāng)沒有其他模塊被引用時,標(biāo)記為optional模塊并且成功驗(yàn)證時該模塊才是必須的。該模塊被調(diào)用來執(zhí)行一些操作,并不影響模塊堆棧的結(jié)果。 |
> include | - 與其他控制標(biāo)志不同,include與模塊結(jié)果的處理方式無關(guān)。該標(biāo)志用于直接引用其他PAM模塊的配置參數(shù) |
PAM配置方法
所有的PAM配置方法都在man手冊中有說明,比如要查找某個程序支持PAM模塊的配置,可以使用man 加模塊名(去掉.so)查找說明,如# man pam_unix。(模塊名可以在目錄/lib/security/或/lib64/security/中找到。)
PAM身份驗(yàn)證安全配置實(shí)例
一、強(qiáng)制使用強(qiáng)密碼(用戶密碼安全配置)
PAM配置文件:/etc/pam.d/system-auth-ac
模塊名稱:pam_cracklib(僅適用于password模塊接口)
模塊參數(shù):
minlen=12 密碼字符長度不少于12位(默認(rèn)為9) lcredit=-1 至少包含1個小寫字母 ucredit=-1 至少包含1個大寫字母 dcredit=-1 至少包含1個數(shù)字 ocredit=-1 至少包含1個特殊字符 retry=3 配置密碼時,提示3次用戶密碼錯誤輸入 difok=6 配置密碼時,新密碼中至少6個字符與舊密碼不同(默認(rèn)為5) |
其他常用參數(shù):
reject_username 新密碼中不能包含與用戶名稱相同的字段 maxrepeat=N 拒絕包含超過N個連續(xù)字符的密碼,默認(rèn)值為0表示此檢查已禁用 maxsequence=N 拒絕包含大于N的單調(diào)字符序列的密碼,例如’1234’或’fedcb’,默認(rèn)情況下即使沒有這個參數(shù)配置,一般大多數(shù)這樣的密碼都不會通過,除非序列只是密碼的一小部分 maxcla***epeat=N 拒絕包含相同類別的N個以上連續(xù)字符的密碼。默認(rèn)值為0表示此檢查已禁用。 use_authtok 強(qiáng)制使用先前的密碼,不提示用戶輸入新密碼(不允許用戶修改密碼) |
模塊名稱:pam_unix (適用于account,auth, password和session模塊接口)
模塊參數(shù):
remember=N 保存每個用戶使用過的N個密碼,強(qiáng)制密碼不能跟歷史密碼重復(fù) |
其他常見參數(shù):
sha512 當(dāng)用戶下一次更改密碼時,使用SHA256算法進(jìn)行加密 md5 當(dāng)用戶更改密碼時,使用MD5算法對其進(jìn)行加密。 try_first_pass 在提示用戶輸入密碼之前,模塊首先嘗試先前的密碼,以測試是否滿足該模塊的需求。 use_first_pass 該模塊強(qiáng)制使用先前的密碼(不允許用戶修改密碼),如果密碼為空或者密碼不對,用戶將被拒絕訪問 shadow 用戶保護(hù)密碼 nullok 默認(rèn)不允許空密碼訪問服務(wù) use_authtok 強(qiáng)制使用先前的密碼,不提示用戶輸入新密碼(不允許用戶修改密碼) |
例 修改配置/etc/pam.d/system-auth-ac文件,在password模塊接口行修改或添加配置參數(shù)如下:
password requisite pam_cracklib.so try_first_pass retry=3 type= reject_username minlen=12 lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1 difok=6 |
修改后的/etc/pam.d/system-auth-ac配置文件如下圖所示
需要注意的是,我在這里展示的是在RHEL/CentOS下的配置,passwd程序的PAM配置文件涉及主配置文件/etc/pam.d/passwd和/etc/pam.d/system-auth-ac(也可以是/etc/pam.d/password-auth-ac),其中/etc/pam.d/passwd配置文件默認(rèn)只包含了/etc/pam.d/system-auth-ac配置文件,因此對于以上PAM身份驗(yàn)證密碼模塊配置,只修改/配置該文件即可?;蛘咴赨buntu中,配置文件包括:/etc/pam.d/common-password、/etc/pam.d/common-account、/etc/pam.d/common-auth、/etc/pam.d/common-session。
測試PAM配置:
登錄(su)普通用戶使用passwd程序更新密碼,如果輸入的密碼不符合要求,將不能修改
root@HMing ~ # su - hm #登錄到hm用戶 hm@HMing ~ $ passwd #修改密碼 Changing password for user hm. Changing password for hm. (current) UNIX password: #提示輸入舊密碼 New password: #提示輸入新密碼,如果不滿足要求,將會提示相關(guān)錯誤信息 Password unchanged New password: BAD PASSWORD: is too simple New password: #當(dāng)輸入的密碼滿足要求時,才提示再次輸入 Retype new password: passwd: all authentication tokens updated successfully.二、用戶SSH登錄失敗嘗試次數(shù)超出限制后鎖定賬戶(帳戶鎖定/解鎖和時間設(shè)置)
為了進(jìn)一步提高安全性,可以指定超過失敗登錄嘗試次數(shù)后鎖定用戶。用戶賬戶可以被解鎖(可以由root用戶主動解鎖),或者在設(shè)定的時間后自動解鎖。如在三次失敗的登錄嘗試后鎖定用戶十分鐘。需要在/etc/pam.d/password-auth-ac(或者在/etc/pam.d/sshd)文件添加以下參數(shù):
auth required pam_tally2.so deny=3 unlock_time=600 onerr=succeed file=/var/log/tallylog |
在Ubuntu、SuSE Linux中,需要修改/etc/pam.d/common-auth配置文件
另外,使用PAM還可以限制在console控制臺上登錄,需要修改/etc/pam.d/system-auth配置文件(或者/etc/pam.d/login),添加如上auth配置字段即可。
一旦用戶失敗登錄嘗試次數(shù)達(dá)到3次,該帳戶立刻被鎖定,除非root用戶解鎖。root用戶下使用如下命令解鎖用戶:
# pam_tally2 -u username -r --reset查看用戶登錄失敗信息:
# pam_tally2 -u username如果要在3次失敗登錄嘗試后永久鎖定用戶,那么需要刪除unlock_time字段,除非root用戶解鎖該賬戶,否則將永久鎖定。
pam_tally/pam_tally2模塊參數(shù):
全局選項(xiàng) onerr=[succeed|fail] file=/path/to/log 失敗登錄日志文件,默認(rèn)為/var/log/tallylog audit 如果登錄的用戶沒有找到,則將用戶名信息記錄到系統(tǒng)日志中 silent 不打印相關(guān)的信息 no_log_info 不通過syslog記錄日志信息 AUTH選項(xiàng) deny=n 失敗登錄次數(shù)超過n次后拒絕訪問 lock_time=n 失敗登錄后鎖定的時間(秒數(shù)) unlock_time=n 超出失敗登錄次數(shù)限制后,解鎖的時間 no_lock_time 不在日志文件/var/log/faillog 中記錄.fail_locktime字段 magic_root root用戶(uid=0)調(diào)用該模塊時,計數(shù)器不會遞增 even_deny_root root用戶失敗登錄次數(shù)超過deny=n次后拒絕訪問 root_unlock_time=n 與even_deny_root相對應(yīng)的選項(xiàng),如果配置該選項(xiàng),則root用戶在登錄失敗次數(shù)超出限制后被鎖定指定時間 |
三、允許普通用戶使用sudo而不是su(限制普通用戶登錄到root用戶)
Linux系統(tǒng)上默認(rèn)存在一個wheel組,用于限制普通用戶通過su登錄到root用戶,只有屬于wheel組的用戶成員才能使用su。但是在默認(rèn)情況下,系統(tǒng)并沒有啟用這個功能,我們可以通過PAM啟用它,或者修改為指定的組/用戶使用su,當(dāng)然指定為什么組可以按照要求而定。該配置通過pam_wheel模塊指定。
首先啟用whell組,使得只屬于wheel組的用戶可以使用su命令
需要在/etc/pam.d/su配置文件添加以下配置:
auth required pam_wheel.so use_uid |
需要注意應(yīng)該將這一行參數(shù)添加在/etc/pam.d/su文件的首部,否則PAM模塊可能會跳過該項(xiàng)檢查。配置完之后,我們就可以將需要用su權(quán)限的用戶添加到wheel組中,如下:
# usermod -a -G wheel username其次,如果你不想使用wheel組,而是使用其他的組代替,比如指定組名為myadmingroup的組擁有su的權(quán)限,需要這么做:
auth required pam_wheel.so use_uid group=myadmingroup |
最后配置指定用戶擁有sudo權(quán)限,要知道我們的目的是盡量少使用root身份的權(quán)限,sudo可以讓用戶僅僅在需要調(diào)用root用戶權(quán)限的情況下調(diào)用。我們可以指定特定的組/用戶使用sudo(不需要root密碼)調(diào)用root權(quán)限。visudo打開配置文件:
hmm ALL=(ALL) NOPASSWD: ALL #允許hmm用戶通過sudo執(zhí)行任何命令(不需要輸入密碼) %wheel ALL=(ALL) ALL #允許wheel組成員使用sudo執(zhí)行任何命令(需要輸入密碼) |
四、禁止直接使用root用戶通過SSH登錄
在/etc/pam.d/password-auth-ac或者/etc/pam.d/sshd配置文件中添加以下配置(該配置禁止SSH的口令認(rèn)證,但仍然可以使用SSH密鑰登錄)
auth required pam_securetty.so |
此外還可以配置/etc/securetty 文件禁止root用戶通過所有tty終端登錄系統(tǒng)
# cp /etc/securetty /etc/securetty.saved # echo "" >/etc/securetty五、pwgen復(fù)雜密碼隨機(jī)生成工具
pwgen是一個在Linux隨機(jī)生成密碼的工具,在CnetOS6下安裝:
# rpm -ivh https://mirrors.aliyun.com/epel/epel-release-latest-6.noarch.rpm # yum install pwgen使用pwgen命令隨機(jī)生成字符長度為12的密碼
# pwgen -s 12 -c -n -y |
-n 至少包含一個數(shù)字
-c 至少包含一個大寫字母
-y 至少包含一個特殊字符
-s 完全隨機(jī)生成密碼
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。