[轉載請註明出處] http://kezeodsnx.pixnet.net/blog

作者: kezeodsnx

pam_unix是標準的unix認證模組,它的功能是讓系統的library/service存取系統上的帳號資訊以及用來認證。通常是由/etc/passwd和/etc/shadow來完成。

pam是pluggable authentication module,因此pam_unix也是根據pam的架構來完成認證的流程,有空再來介紹一下pam。因為pam_unix是一般系統管理比較常用到的,比如說login,passwd都會來跑一次pam_unix,以確定operation的合法性。

以passwd來說,一般會選擇的設定是:密碼幾位,複雜度有多高,如何加密等。這些是系統的基本管理,並隨著個人/產品喜好而有所差異。相關檔案的路徑為:

/etc/pam.d: 所有使用pam的設定檔,可更改某些service的認證流程或設定

/lib/security: pam的module所在位置,會看到一堆pam開頭的library,這些library都是依照pam的架構來實作,包括現在介紹的pam_unix.so

/etc/pam.d/passwd的內容是:

#
# The PAM configuration file for the Shadow `passwd' service
#

@include common-password

只有一條規則,就是include common-password這個file,去掉註解:

password        required        pam_unix.so        nullok  min=4  max=8  md5

password是pam的流程之一,其他的還有auth,account,session等,分別完成不同的事。required是這個規則的條件,required的意思是一定要pass,不然就算fail。pam_unix.so則是這條規則所使用的module。後面的那串就是這條規則的屬性。

以這條規則而言,意思是使用passwd這個command時,會去執行pam_unix.so裡有關password認證的code。如果沒有return PAM_SUCCESS,則認證失敗。password可以是null,其長度最短為4,最長為8,並用md5來做加密。

常用的屬性如下,這些屬性也可用在大部分的pam module,而不只有passwd這個service (其他如ftp,samba,gdm,http等)。而每個服務可以有多條規則,每條規則也可以有不同的屬性,這裡先介紹passwd常用的,其他等寫pam時再來介紹:

nullok: 使用者可空白密碼來存取這項service,預設是不行。

md5/sha512:使用md5/sha512對密碼做加密

obsecure:對password強度的測試,項目如下:

    Palindrome: 是否將舊密碼反過來,如1234->4321

    Case Change Only: 是否只換大小寫

    Similar: 是否很像舊密碼

    Simple:是否太簡單,基本上是簡查長度及不同字母/數字的個數

    Rotate: 是否只是舊密碼做平移,如billy->illyb

 

舉個例子:

如果要讓系統的密碼是4~8位,且不要檢查complexity,像1111這種也行的話,就這樣設

password        required        pam_unix.so        min=4  max=8

如果要讓系統的密碼是6~12位,且檢查complexity,並用sha512加密,就這樣設

password        required        pam_unix.so        obsecure   min=6  max=12  sha512


Reference:

Using PAM

PAM (Pluggable Authentication Module)--Overview

PAM 實作

 

kezeodsnx 發表在 痞客邦 PIXNET 留言(0) 人氣()