linux 賬戶鎖與解鎖

dbasdk發表於2015-11-26

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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章