linux 賬戶鎖與解鎖
1,sudo passwd -l user
鎖住user帳號,su 已經不能切換到user下。
2,sudo passwd -u user
解鎖user帳號,su可以切換到user下。
3,如果不小心把root鎖住了,可以透過下面的指令獲得root許可權
sudo -s -H
Password: <輸入root密碼>
設定Linux使用者連續N次登陸失敗時,自動鎖定X分鐘(pam_tally)
[RHCE筆記3-6-1]Auth Services PAM
PAM
基於Pluggable Authentication Modules(可插入驗證模組,簡稱PAM)的驗證機制,可以系統特定應用程式的使用限制於root賬戶。不同的Module可以實現系統管理員按照使用者、密碼或者登入位置設定訪問控制策略。
PAM
所有的認證函式庫存放於/lib/security/pam_*.so,並由/etc/pam.d/目錄下對應的檔案進行呼叫。在驗證請求時,應用程式通
過libpam函式庫來提供服務。具體使用哪些PAM函式庫進行驗證,則由/etc/pam.d/目錄下對應的設定檔案決定。libpam
提供函式共享服務,而且可以動態載入。
1 PAM工作機制
/lib/security
目錄下的每一個認證模組都會返回pass或者fail結果,部分程式使用/etc/security目錄下的設定檔案決定認證方式。應用程式呼叫PAM模
塊認證的配置,存放於/etc/pam.d,檔名與應用程式名對應,檔案中的每一行都會返回一個成驗證功還是失敗的控制標誌,以決定使用者是否擁有訪問權
限。
2 PAM驗證型別
* auth 驗證使用者身份,提示輸入賬號和密碼
* account 基於使用者表、時間或者密碼有效期來決定是否允許訪問
* password 禁止使用者反覆嘗試登入,在變更密碼時進行密碼複雜性控制
* session 進行日誌記錄,或者限制使用者登入的次數
libpam函式庫會可以呼叫以上一種服務或者全部。
3 PAM驗證控制型別(Control Values)
驗證控制型別也可以稱做Control Flags,用於PAM驗證型別的返回結果。
* required 驗證失敗時仍然繼續,但返回Fail(使用者不會知道哪裡失敗)
* requisite 驗證失敗則立即結束整個驗證過程,返回Fail
* sufficient 驗證成功則立即返回,不再繼續,否則忽略結果並繼續
* optional 無論驗證結果如何,均不會影響(通常用於session型別)
驗證結果對照表
┌──────────┬──────┬─────────────┬────────────────┐
│ │Result│Keep testing?│ Affect │
├──────────┼──────┼─────────────┼────────────────┤
│ │Pass │ Y │Define by system│
│Required │Fail │ Y │Fail │
├──────────┼──────┼─────────────┼────────────────┤
│Requisite │Pass │ Y │Define by system│
│ │Fail │ N │Fail │
├──────────┼──────┼─────────────┼────────────────┤
│Sufficient│Pass │ N │Define by system│
│ │Fail │ Y │Ignore │
└──────────┴──────┴─────────────┴────────────────┘
驗證示例1
┌─────┬────────┬───────┬─────┬─────┬─────┐
│ │ │ │user1│user2│user3│
├─────┼────────┼───────┼─────┼─────┼─────┤
│Auth │Required│Module1│Pass │Fail │Pass │
├─────┼────────┼───────┼─────┼─────┼─────┤
│Auth │Required│Module2│Pass │Pass │Fail │
├─────┼────────┼───────┼─────┼─────┼─────┤
│Auth │Required│Module3│Pass │Pass │Fail │
├─────┴────────┴───────┼─────┼─────┼─────┤
│ Result │Pass │Fail │Fail │
└──────────────────────┴─────┴─────┴─────┘
驗證示例2
┌─────┬──────────┬───────┬─────┬─────┬─────┐
│ │ │ │user1│user2│user3│
├─────┼──────────┼───────┼─────┼─────┼─────┤
│Auth │Required │Module1│Pass │Fail │Pass │
├─────┼──────────┼───────┼─────┼─────┼─────┤
│Auth │Sufficient│Module2│Pass │Pass │Fail │
├─────┼──────────┼───────┼─────┼─────┼─────┤
│Auth │Required │Module3│ N/A │ N/A │Pass │
├─────┴──────────┴───────┼─────┼─────┼─────┤
│ Result │ T │ F │ T │
└────────────────────────┴─────┴─────┴─────┘
4 /etc/pam.d目錄中的配置檔案
每一個配置檔案均有四欄:第一欄驗證型別,第二欄驗證控制標準,第三欄呼叫的PAM模組,第四欄為使用的引數。
module_type control_flag module_location arguments
每一行記錄均是一個階段性的測試。
[root@wardking ~]# cat /etc/pam.d/system-auth
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
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
auth與account呼叫的模組直接影響到使用者是否可以執行程式。
password是在使用者更改密碼時使用。
session用於記錄使用者驗證成功以後的操作記錄。
5 pam_stack特殊模組
當有多個應用程式需要使用相同的驗證模組時,可以編輯一個pam設定檔案,定義共同呼叫的模組,儲存於/etc/pam.d目錄中,供應用程式呼叫。例如system-auth設定檔案,可以供不同的應用程式呼叫,如果對其進行修改,可以變更系統驗證策略。
6 pam_unix模組
可
以呼叫傳統的NSS系統,即libnss函式庫。可以用於PAM的四種驗證方式,使用auth方式可以取得使用者的密碼,使用accont方式檢查使用者的密
碼是否已經過期,,使用password方式可以檢查使用者在修改密碼時進行控制,使用session方式記錄使用者登入登出日誌。
7 網路驗證
可以透過網路登入方式來驗證使用者
* pam_krb5(Kerberos V tickets)
* pam_ldap(LDAP binds)
* pam_smb_auth(old SMB authentication)
* pam_winbind(SMB throuth winbind)
某些名稱服務也可以透過pam_unix呼叫libnss函式庫中的模組進行驗證(NIS, Some LDAP configurations),而不一定使用以上的四個模組
8 認證模組
pam_security模組只會對root有影響。當root賬戶登入時,pam_security會參考/etc/securetty目錄中的console列表,以決定root是否可以登入,避免使用者從不安全的終端登入。
pam_nologin模組會確認/etc/nologin檔案是否存在,如果存在,普通使用者則會驗證失敗,只允許root使用者登入。
pam_listfile模組會確認要求登入的使用者賬號與允許的賬號名單是否衝突,必須建立一個允許登入或者拒絕登入的名單。
auth required pam_listfile item=user sense=deny file=/etc/vsftpd/ftpusers nerr=succeed
9 增強使用者密碼安全性
pam_unix有兩個引數,可以增強使用者密碼安全性
* pam_unix MD5 passwords 使用MD5編碼進行加密
* pam_unix shadow passwords 將加密後的密碼存放於/etc/shadow檔案中,並且限制普通使用者訪問,而且限制使用者密碼有效期
還有其它的模組可以起到類似作用,比如pam_krb5
10 密碼安全性原則
可以定義普通使用者設定密碼時必須遵行一定的策略。
* password history記錄使用者曾經使用過的密碼
pam_unix with remember=N (記錄使用者使用過的前N個密碼,並且禁止再次使用這些密碼)
* pasword length 密碼長度及複雜性
pam_cracklib模組規定使用者必須使用大小寫字母、數字、特殊符號做為密碼,而且不能是字典中的單詞
pam_passwdqc模組與cracklib類似,只是不檢查字典中的單詞
* failed login monitoring 監控使用者登入失敗的次數
pam_taily登入失敗次數過多,則鎖定賬號
11 pam_limit
pam_limit 限制使用者可以使用的系統資源,呼叫 /etc/security/limits.conf檔案,限制使用者使用的記憶體、可以啟用多少執行緒
#* soft core 0
#* hard rss 10000
#@student hard nproc 20
#@faculty soft nproc 20
#@faculty hard nproc 50
#ftp hard nproc 0
#@student - maxlogins 4
可以使用ulimit覆蓋soft設定項,但是仍然受限於hard
12 pam_console
pam_console模組:當使用者登入到console後,將擁有部分特別許可權。這些許可權在/etc/security/console.apps目錄中定義。
例如:使用者登入後擁有重新啟動計算機的許可權
[root@wardking ~]# cat /etc/security/console.apps/reboot
FALLBACK=true
也可以用在auth驗證型別中,使用者在本地成功登入後,就會拒絕其它遠端登入請求。
13 其它程式呼叫PAM
除使用者登入驗證以外,在普通使用者使用系統管理工具時,也需要提供驗證,例如su, reboot, system-*工具等。
pam_rootok模組用來確認使用者是否是root身份
pam_timestamp模組用於記錄使用者執行sudo的時間間隔,如果在5分鐘之內驗證成功,則直接透過驗證,而不再需要輸入密碼
pam_xauth模組用於將驗證的臨時檔案轉發給其它程式
14 例項分析
[root@wardking ~]# cd /etc/pam.d
[root@wardking pam.d]# cat config-util
#%PAM-1.0
auth sufficient pam_rootok.so
auth sufficient pam_timestamp.so
auth include system-auth
account required pam_permit.so
session required pam_permit.so
session optional pam_xauth.so
session optional pam_timestamp.so
/etc/pam.d/config-util是一個pam_stack型別的特殊模組,提供給system-config-*等多個應用程式共同呼叫。
auth sufficient pam_rootok.so
這一條命令將檢查使用者的身份,呼叫pam_rootok.so模組,如果被驗證的使用者是root,則返回Pass。如果不是root使用者,則返回Fail。由於此條命令使用sufficient控制標誌,即使驗證失敗也將執行後續命令。
auth sufficient pam_timestamp.so
如
果第一條命令驗證失敗,則可以斷定當前被驗證使用者是普通使用者。因此在第二條命令中使用pam_timestamp.so模組,檢查該使用者是否在5
分鐘之內成功執行了sudo命令,如果是返回Pass,否則返回Fail。這條命令同樣使用了sufficient控制標誌,因此在驗證失敗時仍將執行後
續命令。
auth include system-auth
第三條命令使用pam_stack.so模組,呼叫當前目錄下的system-auth配置檔案。system-auth定義了較多的PAM命令語句,其主要作用是提示普通使用者輸入root賬號的密碼。
account required pam_permit.so
第四條命令以account型別呼叫pam_permit.so模組,基於當前賬戶的有效性(賬戶是否禁用或者過期)來允許或者拒絕訪問。由於該條命令以required控制標誌執行,如果驗證結果仍然Fail,則整個過程驗證失敗。
最後三條session命令,將對整個驗證過程進行日誌記錄,寫入到/var/log/secure中。
15 故障檢測
當
系統驗證出現問題時,首先應當檢查/var/log/messages或者/var/log/secure中的輸出資訊,根據這些資訊判斷使用者賬號的有效
性。如果是因為PAM驗證故障,而引起root也無法登入,只能使用single user或者rescue模式進行排錯。
本文來自ChinaUnix部落格,如果檢視原文請點:http://blog.chinaunix.net/u2/75132/showart_1105739.html
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29734436/viewspace-1847257/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 解鎖oracle賬戶Oracle
- AIX使用者賬戶鎖定與解鎖最佳方法AI
- [ Linux ] Jellyfin 賬戶被鎖定如何解鎖Linux
- Oracle-解鎖scott賬戶Oracle
- win10賬戶鎖定多久解除 win10賬戶鎖定怎麼解除Win10
- 域賬戶頻繁鎖定排查
- Oracle的鎖表與解鎖Oracle
- package鎖的查詢與解鎖Package
- 最新Godaddy賬戶域名解鎖/獲取轉移碼的方法Go
- win10賬號被鎖定怎麼辦_win10管理員賬戶被鎖定了如何解決Win10
- Linux中的兩種檔案鎖---協同鎖與強制鎖Linux
- 從自旋鎖、睡眠鎖、讀寫鎖到 Linux RCU 機制講解Linux
- 意向共享鎖與意向排它鎖:詳解與應用
- MySQL 悲觀鎖與樂觀鎖的詳解MySql
- 例項詳解 Java 死鎖與破解死鎖Java
- 關於ORACLE的鎖表與解鎖總結Oracle
- 詳解 MySql InnoDB 中的三種行鎖(記錄鎖、間隙鎖與臨鍵鎖)MySql
- 在 Linux 中鎖定和解鎖使用者帳戶的三種方法Linux
- synchronized類鎖與物件鎖synchronized物件
- Java鎖最全詳解:樂觀鎖/悲觀鎖+公平鎖/非公平鎖+獨享鎖/共享鎖Java
- oracle 查詢鎖 && 解鎖Oracle
- Oracle查詢鎖、解鎖Oracle
- python 小程式,輸錯三次密碼鎖定賬戶Python密碼
- Linux中給檔案或者資料夾加鎖,解鎖Linux
- Linux賬戶與許可權管理Linux
- linux賬戶與使用者組Linux
- ios10鎖屏怎麼解鎖ios10鎖屏介面解鎖方法iOS
- 鎖定、解鎖Qtum錢包QT
- 解鎖你的資料庫:JPA和Hibernate的樂觀鎖與悲觀鎖資料庫
- Java中的鎖之樂觀鎖與悲觀鎖Java
- 悲觀鎖與樂觀鎖的實現(詳情圖解)圖解
- 鎖的種類,阻塞,死鎖產生與解決辦法。
- 可重入鎖與不可重入鎖理解
- MVCC與鎖MVC
- iOS指紋解鎖和手勢解鎖iOS
- iOS手勢解鎖和指紋解鎖iOS
- MySQL鎖(讀鎖、共享鎖、寫鎖、S鎖、排它鎖、獨佔鎖、X鎖、表鎖、意向鎖、自增鎖、MDL鎖、RL鎖、GL鎖、NKL鎖、插入意向鎖、間隙鎖、頁鎖、悲觀鎖、樂觀鎖、隱式鎖、顯示鎖、全域性鎖、死鎖)MySql
- SqlServer鎖表解鎖解決辦法SQLServer