系統賬號: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/
常見模塊:
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
<value>: 值。
定義每個服務所調用的模塊:
[root@mail security]# cd /etc/pam.d/
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 重置所有值
Example:login
auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so
module-path 模塊路徑
module-argument 選擇的模塊所使用的參數
使用PAM認證過程:
system-auth-ac服務:
auth required pam_env.so
auth sufficient pam_unix.so nullok try_first_pass
auth requisite pam_succeed_if.so uid >= 500 quiet
auth required pam_deny.so
account required pam_unix.so
account sufficient pam_succeed_if.so uid < 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