溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Linux服務器安全策略配置-PAM身份驗證模塊(二)

發(fā)布時間:2020-07-09 07:38:27 來源:網(wǎng)絡(luò) 閱讀:88574 作者:HMLinux 欄目:建站服務器

○ 本文導航

關(guān)于PAM

PAM身份驗證配置文件

PAM配置文件語法格式

PAM模塊接口

PAM控制標志

PAM配置方法

PAM身份驗證安全配置實例

  - 強制使用強密碼(用戶密碼安全配置)

  - 用戶SSH登錄失敗嘗試次數(shù)超出限制后鎖定賬戶(帳戶鎖定/解鎖和時間設(shè)置)

  - 允許普通用戶使用sudo而不是su(限制普通用戶登錄到root用戶)

  - 禁止直接使用root用戶通過SSH登錄

pwgen復雜密碼隨機生成工具


關(guān)于PAM

Linux-PAM (Pluggable Authentication Modules for Linux)可插拔認證模塊。Linux-PAM是一套適用于Linux的身份驗證共享庫系統(tǒng),它為系統(tǒng)中的應用程序或服務提供動態(tài)身份驗證模塊支持。在Linux中,PAM是可動態(tài)配置的,本地系統(tǒng)管理員可以自由選擇應用程序如何對用戶進行身份驗證。PAM應用在許多程序與服務上,比如登錄程序(login、su)的PAM身份驗證(口令認證、限制登錄),passwd強制密碼,用戶進程實時管理,向用戶分配系統(tǒng)資源等。


PAM的主要特征是認證的性質(zhì)是可動態(tài)配置的。PAM的核心部分是庫(libpam)和PAM模塊的集合,它們是位于文件夾/lib/security/中的動態(tài)鏈接庫(.so)文件,以及位于/etc/pam.d/目錄中(或者是/etc/pam.conf配置文件)的各個PAM模塊配置文件。/etc/pam.d/目錄中定義了各種程序和服務的PAM配置文件,其中system-auth文件是PAM模塊的重要配置文件,它主要負責用戶登錄系統(tǒng)的身份認證工作,不僅如此,其他的應用程序或服務可以通過include接口來調(diào)用它(該文件是system-auth-ac的軟鏈接)。此外password-auth配置文件也是與身份驗證相關(guān)的重要配置文件,比如用戶的遠程登錄驗證(SSH登錄)就通過它調(diào)用。而在Ubuntu、SuSE Linux等發(fā)行版中,PAM主要配置文件是common-auth、common-account、common-password、common-session這四個文件,所有的應用程序和服務的主要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身份驗證配置文件

/etc/pam.d/目錄包含應用程序的PAM配置文件。例如,login程序?qū)⑵涑绦?服務名稱定義為login,與之對應的PAM配置文件為/etc/pam.d/login。

 

PAM配置文件語法格式

每個PAM配置文件都包含一組指令,用于定義模塊以及控制標志和參數(shù)。每條指令都有一個簡單的語法,用于標識模塊的目的(接口)和模塊的配置設(shè)置,語法格式如下:

module_interface      control_flag      module_name  module_arguments

如在/etc/pam.d/password-auth-ac配置文件中(CentOS),其中一行PAM模塊接口定義如下

Linux服務器安全策略配置-PAM身份驗證模塊(二)

PAM模塊接口(模塊管理組)

PAM為認證任務提供四種類型可用的模塊接口,它們分別提供不同的認證服務:

√ auth- 認證模塊接口,如驗證用戶身份、檢查密碼是否可以通過,并設(shè)置用戶憑據(jù)
√ account- 賬戶模塊接口,檢查指定賬戶是否滿足當前驗證條件,如用戶是否有權(quán)訪問所請求的服務,檢查賬戶是否到期
√ password - 密碼模塊接口,用于更改用戶密碼,以及強制使用強密碼配置
√ session- 會話模塊接口,用于管理和配置用戶會話。會話在用戶成功認證之后啟動生效

單個PAM庫模塊可以提供給任何或所有模塊接口使用。例如,pam_unix.so提供給四個模塊接口使用。


PAM控制標志

所有的PAM模塊被調(diào)用時都會返回成功或者失敗的結(jié)果,每個PAM模塊中由多個對應的控制標志決定結(jié)果是否通過或失敗。每一個控制標志對應一個處理結(jié)果,PAM庫將這些通過/失敗的結(jié)果整合為一個整體的通過/失敗結(jié)果,然后將結(jié)果返回給應用程序。模塊可以按特定的順序堆疊??刂茦酥臼菍崿F(xiàn)用戶在對某一個特定的應用程序或服務身份驗證的具體實現(xiàn)細節(jié)。該控制標志是PAM配置文件中的第二個字段,PAM控制標志如下:

> required - 模塊結(jié)果必須成功才能繼續(xù)認證,如果在此處測試失敗,則繼續(xù)測試引用在該模塊接口的下一個模塊,直到所有的模塊測試完成,才將結(jié)果通知給用戶。
> requisite 模塊結(jié)果必須成功才能繼續(xù)認證,如果在此處測試失敗,則會立即將失敗結(jié)果通知給用戶。
> sufficient - 模塊結(jié)果如果測試失敗,將被忽略。如果sufficient模塊測試成功,并且之前的required模塊沒有發(fā)生故障,PAM會向應用程序返回通過的結(jié)果,不會再調(diào)用堆棧中其他模塊。
> optional - 該模塊返回的通過/失敗結(jié)果被忽略。當沒有其他模塊被引用時,標記為optional模塊并且成功驗證時該模塊才是必須的。該模塊被調(diào)用來執(zhí)行一些操作,并不影響模塊堆棧的結(jié)果。
> include- 與其他控制標志不同,include與模塊結(jié)果的處理方式無關(guān)。該標志用于直接引用其他PAM模塊的配置參數(shù)


PAM配置方法

所有的PAM配置方法都在man手冊中有說明,比如要查找某個程序支持PAM模塊的配置,可以使用man 加模塊名(去掉.so)查找說明,如# man pam_unix。(模塊名可以在目錄/lib/security/或/lib64/security/中找到。)


PAM身份驗證安全配置實例


一、強制使用強密碼(用戶密碼安全配置)

PAM配置文件:/etc/pam.d/system-auth-ac

模塊名稱:pam_cracklib(僅適用于password模塊接口)

模塊參數(shù):

minlen=12       密碼字符長度不少于12位(默認為9)

lcredit=-1      至少包含1個小寫字母

ucredit=-1      至少包含1個大寫字母

dcredit=-1      至少包含1個數(shù)字

ocredit=-1      至少包含1個特殊字符

retry=3         配置密碼時,提示3次用戶密碼錯誤輸入

difok=6         配置密碼時,新密碼中至少6個字符與舊密碼不同(默認為5)


其他常用參數(shù):

reject_username    新密碼中不能包含與用戶名稱相同的字段

maxrepeat=N        拒絕包含超過N個連續(xù)字符的密碼,默認值為0表示此檢查已禁用

maxsequence=N      拒絕包含大于N的單調(diào)字符序列的密碼,例如’1234’或’fedcb’,默認情況下即使沒有這個參數(shù)配置,一般大多數(shù)這樣的密碼都不會通過,除非序列只是密碼的一小部分

maxcla***epeat=N   拒絕包含相同類別的N個以上連續(xù)字符的密碼。默認值為0表示此檢查已禁用。

use_authtok        強制使用先前的密碼,不提示用戶輸入新密碼(不允許用戶修改密碼)


模塊名稱:pam_unix (適用于account,auth, password和session模塊接口)

模塊參數(shù):

remember=N     保存每個用戶使用過的N個密碼,強制密碼不能跟歷史密碼重復

其他常見參數(shù):

sha512          當用戶下一次更改密碼時,使用SHA256算法進行加密

md5             當用戶更改密碼時,使用MD5算法對其進行加密。

try_first_pass  在提示用戶輸入密碼之前,模塊首先嘗試先前的密碼,以測試是否滿足該模塊的需求。

use_first_pass  該模塊強制使用先前的密碼(不允許用戶修改密碼),如果密碼為空或者密碼不對,用戶將被拒絕訪問

shadow          用戶保護密碼

nullok          默認不允許空密碼訪問服務

use_authtok     強制使用先前的密碼,不提示用戶輸入新密碼(不允許用戶修改密碼)


修改配置/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配置文件如下圖所示

Linux服務器安全策略配置-PAM身份驗證模塊(二)

需要注意的是,我在這里展示的是在RHEL/CentOS下的配置,passwd程序的PAM配置文件涉及主配置文件/etc/pam.d/passwd和/etc/pam.d/system-auth-ac(也可以是/etc/pam.d/password-auth-ac),其中/etc/pam.d/passwd配置文件默認只包含了/etc/pam.d/system-auth-ac配置文件,因此對于以上PAM身份驗證密碼模塊配置,只修改/配置該文件即可?;蛘咴赨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:               #當輸入的密碼滿足要求時,才提示再次輸入
Retype new password: 
passwd: all authentication tokens updated successfully.


二、用戶SSH登錄失敗嘗試次數(shù)超出限制后鎖定賬戶(帳戶鎖定/解鎖和時間設(shè)置)

為了進一步提高安全性,可以指定超過失敗登錄嘗試次數(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ù)達到3次,該帳戶立刻被鎖定,除非root用戶解鎖。root用戶下使用如下命令解鎖用戶:

# pam_tally2 -u username -r --reset

查看用戶登錄失敗信息:

# pam_tally2 -u username

如果要在3次失敗登錄嘗試后永久鎖定用戶,那么需要刪除unlock_time字段,除非root用戶解鎖該賬戶,否則將永久鎖定。


pam_tally/pam_tally2模塊參數(shù):

全局選項

onerr=[succeed|fail]

file=/path/to/log   失敗登錄日志文件,默認為/var/log/tallylog

audit               如果登錄的用戶沒有找到,則將用戶名信息記錄到系統(tǒng)日志中

silent              不打印相關(guān)的信息

no_log_info         不通過syslog記錄日志信息


AUTH選項

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相對應的選項,如果配置該選項,則root用戶在登錄失敗次數(shù)超出限制后被鎖定指定時間


三、允許普通用戶使用sudo而不是su(限制普通用戶登錄到root用戶)

Linux系統(tǒng)上默認存在一個wheel組,用于限制普通用戶通過su登錄到root用戶,只有屬于wheel組的用戶成員才能使用su。但是在默認情況下,系統(tǒng)并沒有啟用這個功能,我們可以通過PAM啟用它,或者修改為指定的組/用戶使用su,當然指定為什么組可以按照要求而定。該配置通過pam_wheel模塊指定。


首先啟用whell組,使得只屬于wheel組的用戶可以使用su命令

需要在/etc/pam.d/su配置文件添加以下配置:

auth            required        pam_wheel.so use_uid

需要注意應該將這一行參數(shù)添加在/etc/pam.d/su文件的首部,否則PAM模塊可能會跳過該項檢查。配置完之后,我們就可以將需要用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的口令認證,但仍然可以使用SSH密鑰登錄)

auth        required      pam_securetty.so

此外還可以配置/etc/securetty 文件禁止root用戶通過所有tty終端登錄系統(tǒng)

# cp /etc/securetty /etc/securetty.saved
# echo "" >/etc/securetty


五、pwgen復雜密碼隨機生成工具


pwgen是一個在Linux隨機生成密碼的工具,在CnetOS6下安裝:

# rpm -ivh https://mirrors.aliyun.com/epel/epel-release-latest-6.noarch.rpm
# yum install pwgen

使用pwgen命令隨機生成字符長度為12的密碼

# pwgen -s 12 -c -n -y

-n  至少包含一個數(shù)字

-c  至少包含一個大寫字母

-y  至少包含一個特殊字符

-s  完全隨機生成密碼

Linux服務器安全策略配置-PAM身份驗證模塊(二)



向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI