基於PAM認證方式詳解

系統賬號:Account Information  賬號信息

             Authentication      認證信息    

名稱服務(Name Server) 認證方式 /etc/passwd  nis  ldap

libc (系統庫):實現用戶進行名稱解析的時候根據其編譯的功能到某一個數據庫裏實現名稱解析,在軟件編譯的時候已經固化,不能改變。

NSS(Name Service  Switch):  在進行名稱解析的時候可以方便的轉換。

獲取登錄用戶信息庫:

[root@mail pam.d]# getent passwd

主配置文件:/etc/nsswitch.conf

passwd:     files nis

shadow:     files nis

group:      files nis    //** 驗證次序很重要

查找的時候四個返回值:SUCCESS:service ok,find name 執行成功,找到對應名字;

                     NOTFOUND:service ok,name not found 文件存在,但找不到名字

                      UNAVAIL: service not available 服務不存在

                      TRYAGAIN:臨時性錯誤

自定義返回值,以改變默認動作:

passwd:     files [NOTFOUND = return ] nis

認證:判定來訪者確實爲所聲稱的那個人的一種機制。kerberos ,window域等等。

PAM(Pluggable  Authentication Modules) 可插入式認證模塊  提供集中的,共享模塊代碼的機制,動態可配置。但PAM僅僅是一個框架,提供能夠認證的功能,並不提供怎樣去認證。

可以調用用來進行身份驗證的模塊:

[root@mail pam.d]# cd /lib/security/

wps_clip_image-325

常見模塊:

pam_unix.so :實現本地用戶在登錄的時候通過/etc/passwd來進行認證的一個文件。

選項:nullok  允許使用空密碼

      try_first_pass 在提示用戶輸密碼之前系統先嚐試用第一次登錄時輸入的密碼登錄。

      shadow  要匹配的機制是基於shadow的一種機制。

      md5     用戶的密碼在保存的時候是基於MD5散列加密算法保存。

pam_permit    直接允許通過 ,不做額外動作

pam_deny      直接拒絕 OTHER的默認動作

pam_cracklib.so 根據詞典來檢查用戶密碼是否符合安全性要求

選項:minlen  最短長度

      difok  如果不一樣時怎麼處理

      dcredit=N 要有多少位數字

      ucredit=N 大寫字母要多少位

      lcredit=N 小寫字母要多少位

      ocredit=N 其他字符多少位

      retry=N  密碼失敗後嘗試的次數

pam_passwdqc.so:類似於pam_cracklib.so,但不針對於字典來檢查。

pam_tally.so  記錄每個用戶登錄的時間和次數,啓用此模塊後系統會在/var/log下生成一個 

            faillog文件,可以用faillog -u lucy 來查看用戶登錄失敗數

pam_shells  檢查用戶默認登錄shell是否合法shell,即檢查用戶的shell是否在/etc/shells中。

pam_securetty 限制管理員只能從特定終端登錄,在/etc/securetty登錄。

pam_nologin.so 限定非管理員賬號在/etc/nologin(存在即可)存在的情況下不允許登錄

pam_listfile  定義某一個服務可以基於額外的配置文件來決定用戶是否登錄。

僅允許mygrp組中的用戶才能登錄:

編輯system-auth-rc文件,在第一行之後添加:

auth  required  pam.listfile.so item=group sense=allow file=/etc/security/allowgroup

建立/etc/security/allowgroup文件

mygrp

即可,保存退出。

pam_rootok.so  在su中比較常見,當管理員切換到其他普通用戶時不用輸密碼。

pam_limits     資源限定,默認情況下接受/etc/security/limits.conf配置文件中的定義。

同時,在/etc/security/limits.d/目錄下單個以*.conf結尾的文件也可作爲其配置文件。

語法:<domain><type><item><value>

<domain > : 限定哪些用戶,可以是用戶名也可以是NIS組,也可以是所有用戶。

<type>:軟限制(soft)或者硬限制(hard)

<item>:限定的項目

<item> can be one of the following:

#        - core - limits the core file size (KB)

#        - data - max data size (KB)

#        - fsize - maximum filesize (KB)

#        - memlock - max locked-in-memory address space (KB)

#        - nofile - max number of open files

#        - rss - max resident set size (KB)

#        - stack - max stack size (KB)

#        - cpu - max CPU time (MIN)

#        - nproc - max number of processes

#        - as - address space limit

#        - maxlogins - max number of logins for this user

#        - maxsyslogins - max number of logins on the system

#        - priority - the priority to run user process with

#        - locks - max number of file locks the user can hold

#        - sigpending - max number of pending signals

#        - msgqueue - max memory used by POSIX message queues (bytes)

#        - nice - max nice priority allowed to raise to

#        - rtprio - max realtime priority

wps_clip_image-28414

wps_clip_image-27974

<value>: 值。

定義每個服務所調用的模塊:

[root@mail security]# cd /etc/pam.d/

wps_clip_image-14276

other  當做任何一個程序的默認規則

system-auth-ac  集中定義了最常見的認證機制

配置文件語法:

Service  type  control  module-path module-argument

Service   服務名稱,當服務寫在/etc/pam.conf 中的時候需要指明,很少使用了。

type      類型(管理組),幾種場景 auth  accout  password  session 

         auth  認證用戶的時候使用到的場景

         accout  實現用戶授權

         password  控制密碼改變

         session  打開 ,關閉和記錄會話工程

每種場景可以出現多次。

control   當用戶被規則匹配到的時候的處理機制,(直接返回/往後檢查)(當同一種場景出

         現多次時所做出的決策),五種簡單控制條件

         required   必須通過,即使失敗後邊檢查繼續進行

         requisite   必須通過,如果失敗停止檢查

         sufficient  如果某一個測試條件檢查通過,那麼後面將不再檢查,直接通過;如

                  果失敗,忽略這個測試條件,後面繼續檢查。

         optional   可選

         include    包含其他規則(服務),文件嵌套,可以互相調用,如:login

auth       include      system-auth

        高級控制條件: [value1=action1  value2=action2 ....]

        六種動作:ok ,done,bad,die,ignore,reset

            ok  模塊通過,繼續檢查

            done  模塊通過,嚮應用程序返回最終結果

            bad  測試失敗,繼續檢查

            die   測試結果失敗,嚮應用程序返回失敗結果

            ignore   無論檢查結果成功或者失敗都忽略

            reset    重置所有值

wps_clip_image-30006

Example:login

auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so

module-path        模塊路徑

module-argument    選擇的模塊所使用的參數

使用PAM認證過程:

wps_clip_image-24396

wps_clip_image-3643

system-auth-ac服務:

auth        required      pam_env.so

auth        sufficient    pam_unix.so nullok try_first_pass

auth        requisite     pam_succeed_if.so uid &gt;= 500 quiet

auth        required      pam_deny.so

account     required      pam_unix.so

account     sufficient    pam_succeed_if.so uid &lt; 500 quiet

account     required      pam_permit.so

password    requisite     pam_cracklib.so try_first_pass retry=3

password    sufficient    pam_unix.so md5 shadow nis nullok try_first_pass use_authtok

password    required      pam_deny.so

session     optional      pam_keyinit.so revoke

session     required      pam_limits.so

session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid

session     required      pam_unix.so

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章