基于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/
常見模塊:
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
本文轉自 490999122 51CTO博客,原文鏈接:http://blog.51cto.com/lyp0909/539135,如需轉載請自行聯系原作者 《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀
總結
以上是生活随笔為你收集整理的基于PAM认证方式详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CentOS7 SELinux阻止Mon
- 下一篇: NetScaler SDWAN 详细配置