pam加密
❶ linux認證的概念
Linux認證的概念
RHCA(Red Hat Certified Architect),是RedHat公司在2004年推出的頂級認證,也是Linux界公認的操作系統最高級認證。下面是我整理的關於Linux認證的概念,歡迎大家參考!
Linux用戶認證方法簡介
當今IT環境中,任何計算機系統都要充分考慮設計、使用和運行過程中的安全性。所以在目前主流操作系統的各個環節當中都增加了很多安全方面的功能和特性,而在眾多的安全特性和功能中有相當多的技術是確保用戶鑒別和身份認證方面的安全性的。
所謂用戶鑒別,就是用戶向系統以一種安全的方式提交自己的身份證明,然後由系統確認用戶的身份是否屬實的過程。換句話說,用戶鑒別是系統的門戶,每個用戶進入到系統之前都必須經過鑒別這一道關。 而所謂認證安全,簡而言之就是計算機系統確認了用戶是經過授權的合法用戶之後才能允許訪問。安全認證最常用的方式是比對用戶輸入和預存於資料庫中的密碼。
不過在用戶進行身份鑒別和安全認證的過程中,肯定會涉及幾個核心問題。例如:
如何真正實現正確鑒別用戶的真實身份?
在鑒別用戶合法身份之後,如何確定用戶可以對哪些資源進行訪問?
如何控制用戶以何種方式來訪問計算機資源?
如何對用戶的安全訪問隨時隨地按需調整?
上述這些問題都是在設計鑒別和認證程序過程中需要充分考慮和精心設計的。而在Linux類的操作系統中,這些問題的處理實際上有一套完整的流程和機制。
在Linux類的操作系統中,最初用戶鑒別過程就像各種Unix操作系統一樣:系統管理員為用戶建立一個帳號並為其指定一個口令,用戶用此指定的口令登錄之後重新設置自己的口令,這樣用戶就具有了一個只有它自己知道的口令或者密碼。一般情況下,用戶的身份信息在Linux系統中存放在/etc/passwd文件當中,這實際上是一個擁有簡單格式的資料庫表,通過":"作為分隔符分隔出多個欄位,其中包括用戶的名稱、用戶ID、組ID、用戶說明、主目錄和登錄使用的shell等相關信息。而用戶口令經過加密處理後存放於/etc/shadow 文件中。也是一個格式類似的資料庫表,除了用戶名和經過加密之後的密碼之外,還包括多個對密碼有效期進行定義的欄位,包括密碼有效時間、密碼報警時間等。
用戶登錄的時候,登錄服務程序提示用戶輸入其用戶名和口令,然後將口令加密並與/etc/shadow 文件中對應帳號的加密口令進行比較,如果口令相匹配,說明用戶的身份屬實並允許此用戶訪問系統。這種思想基於只有用戶自己知道它的口令,所以輸入的口令是正確的話,那麼系統就認定它是所聲稱的那個人。
在Linux類操作系統中,定義用戶信息和密碼信息的欄位和格式都需要符合標準的Linux Naming Service Switch定義,即NSS定義。因此用戶信息只要保證滿足NSS規范,就可以來源於本地passwd和shadow之外的其它信息資料庫和認證源。所以在此基礎上還派生出一些其它認證解決方案。例如NIS、LDAP等,都可作為存放用戶信息的資料庫,而存放用戶口令或者鑒別用戶身份的資料庫,可以採用專用於網路環境的Kerberos以及智能卡鑒別系統等方式。
這一整套的鑒別和認證方案貌似無懈可擊,但是將這種解決方案真正應用到操作系統中的話就會發現一些問題:
第一,在操作系統上所包含的認證不僅僅只涉及到系統登錄和訪問,在系統外圍往往提供了眾多的應用程序,相當多的應用程序在訪問過程中是有認證需求的。那麼是否需要針對每一個應用程序都得加入認證和鑒別的功能?如果要,那麼無論從程序的開發和使用管理角度來講,工作量都將成倍增加;如果不要,則系統級的用戶鑒別和安全認證與應用程序沒有任何關系,意味著不管用戶是否需要登錄系統,但是對應用程序的訪問都將缺乏最基本的安全性。
第二,如果針對每一個應用程序都開發用戶鑒別和認證的功能,那麼一旦發現所用的.演算法存在某些缺陷或想採用另一種鑒別和認證方法時,開發者或者用戶都將不得不重寫(修改或替換)應用程序,然後重新編譯原程序。
所以,尤其是當實現鑒別功能的代碼以通常方法作為應用程序一部分一起編譯的時候,上述問題將十分突出。很明顯,傳統的身份鑒別和用戶認證方式一旦整合到實際的操作系統中,在實用當中缺乏靈活性。
鑒於以上原因,Linux操作系統的開發者和設計人員開始尋找一種更佳的替代方案:一方面,將鑒別功能從應用中獨立出來,單獨進行模塊化的設計,實現和維護;另一方面,為這些鑒別模塊建立標準的應用程序介面即API,以便眾多的應用程序能方便地使用它們提供的各種功能;同時,鑒別機制對上層用戶(包括應用程序和最終用戶)要求一定要是透明的,這樣可以對使用者隱藏其中比較復雜的實現細節。
可插拔認證模塊PAM的基本概念
事實上直到1995年的時候,SUN的研究人員才提出了一種滿足以上需求的方案,這就是可插拔認證模塊(Pluggable Authentication Mole--PAM)機制,並首次在其操作系統 Solaris 2.3上部分實現。
可插拔認證模塊(PAM)機制採用模塊化設計和插件功能,使用戶可以輕易地在應用程序中插入新的認證模塊或替換原先的組件,同時不必對應用程序做任何修改,從而使軟體的定製、維持和升級更加輕松。因為認證和鑒別機制與應用程序之間相對獨立。所以應用程序可以通PAM API來方便地使用PAM提供的各種鑒別功能而不必了解太多的底層細節。此外PAM的易用性也較強,主要表現在它對上層屏蔽了鑒別和認證的具體細節,所以用戶不必被迫學習各種各樣的鑒別方式,也不必記住多個口令;又由於它實現了多鑒別認證機制的集成問題,所以單個程序可以輕易集成多種鑒別機制,如Kerberos和Diffie - Hellman等認證機制,但用戶仍可以用同一個口令登錄而且感覺不到採取了各種不同的鑒別方法。
在廣大開發人員的努力下,各版本的UNIX系統陸續增加和提供了對PAM應用的支持。其中Linux-PAM是專門為Linux操作系統實現的,眾多的Linux操作系統包括Caldera、Debian、Turbo、Red Hat、SuSE 及它們的後續版本都提供對PAM的支持。而FreeBSD從3.1版本也開始支持PAM。而且除了具體實現方法上多少有些不同外,各種版本Unix系統上PAM的框架是相同的。所以我們在這里介紹的Linux的PAM框架知識具有相當的普遍性,而且在下文介紹其框架過程中可以看到,我們並沒有刻意區分Unix PAM與Linux PAM這兩個技術術語。
PAM的分層體系結構
PAM 為了實現其插件功能和易用性,採取了分層設計思想。就是讓各鑒別模塊從應用程序中獨立出來,然後通過PAM API作為兩者聯系的紐帶,這樣應用程序就可以根據需要靈活地在其中"插入"所需要的鑒別功能模塊,從而真正實現了在認證和鑒別基礎上的隨需應變。實際上,這一思路也非常符合軟體設計中的"高內聚,低耦合"這一重要思想。
PAM 的體系如下簡圖所示:
從上面的結構圖可以看出,PAM 的API起著承上啟下的作用,它是應用程序和認證鑒別模塊之間聯系的紐帶和橋梁:當應用程序調用PAM API 時,應用介面層按照PAM配置文件的定義來載入相應的認證鑒別模塊。然後把請求(即從應用程序那裡得到的參數)傳遞給底層的認證鑒別模塊,這時認證鑒別模塊就可以根據要求執行具體的認證鑒別操作了。當認證鑒別模塊執行完相應的操作後,再將結果返回給應用介面層,然後由介面層根據配置的具體情況將來自認證鑒別模塊的應答返回給應用程序。
上面描述了PAM的各個組成部分以及整體的運作機理。下面將對PAM中的每一層分別加以介紹。
第一層:模塊層。模塊層處於整個PAM體系結構中的最底層,它向上為介面層提供用戶認證鑒別等服務。也就是說所有具體的認證鑒別工作都是由該層的模塊來完成的。對於應用程序,有些不但需要驗證用戶的口令,還可能要求驗證用戶的帳戶是否已經過期。此外有些應用程序也許還會要求記錄和更改當前所產生的會話類的相關信息或改變用戶口令等。所以PAM在模塊層除了提供鑒別模塊外,同時也提供了支持帳戶管理、會話管理以及口令管理功能的模塊。當然,這四種模塊並不是所有應用程序都必需的,而是根據需要靈活取捨。比如雖然login可能要求訪問上述所有的四種模塊,但是su可能僅僅需要使用到鑒別模塊的功能即可。至於如何取捨則涉及到介面層的PAM API和配置文件,這部分內容將在後文中加以介紹。
第二層:應用介面層。應用介面層位於PAM結構的中間部分,它向上為應用程序屏蔽了用戶鑒別等過程的具體細節,向下則調用模塊層中的具體模塊所提供的特定服務。由上圖可以看出,它主要由PAM API和配置文件兩部分組成,下面將逐一介紹。
PAM API可以分為兩類:一類是用於調用下層特定模塊的介面,這類介面與底層的模塊相對應,包括:
鑒別類介面:pam_authenticate()用於鑒別用戶身份,pam_setcred()用於修改用戶的私密信息。
帳號類介面:pam_acct_mgmt()用於檢查受鑒別的用戶所持帳戶是否有登錄系統許可,以及該帳戶是否已過期等。
會話類介面:包括用於會話管理和記帳的 pam_open_session()和 pam_close_session()函數。
口令類介面:包括用於修改用戶口令的 pam_chauthtok()。
第二類介面通常並不與底層模塊一一對應,它們的作用是對底層模塊提供支持以及實現應用程序與模塊之間的通信等。具體如下:
管理性介面: 每組 PAM 事務從 pam_start()開始,結束於 pam_end()函數。介面 pam_get_item()和 pam_set_item()用來讀寫與 PAM 事務有關的狀態信息。同時,能夠用 pam_str()輸出 PAM 介面的出錯信息。
應用程序與模塊間的通訊介面:在應用程序初始化期間,某些諸如用戶名之類的數據可以通過 pam_start()將其存放在PAM介面層中,以備將來底層模塊使用。另外底層模塊還可以使用 pam_putenv()向應用程序傳遞特定的環境變數,然後應用程序利用pam_getenv()和pam_getenvlist()讀取這些變數。
用戶與模塊間的通訊介面:pam_start()函數可以通過會話式的回調函數,讓底層模塊通過它們讀寫模塊相關的鑒別信息,比如以應用程序所規定的方式提示用戶輸入口令。
模塊間通訊介面:盡管各模塊是獨立的,但是它們仍然能夠通過pam_get_item()和pam_set_item()介面共享某些與鑒別會話有關的公用信息,諸如用戶名、服務名、口令等。此外,這些API還可以用於在調用pam_start()之後,讓應用程序修改狀態信息。
讀寫模塊狀態信息的介面:介面pam_get_data()和pam_set_data()用以按照PAM句柄要求訪問和更新特定模塊的信息。此外,還可以在這些模塊後附加一個清除數據函數,以便當調用 pam_end()時清除現場。
由於 PAM 模塊隨需載入,所以各模塊始化任務在第一次調用時完成。如果某些模塊的清除任務必須在鑒別會話結束時完成,則它們應該使用 pam_set_data()規定清除函數,這些執行清除任務的函數將在應用程序調用 pam_end()介面時被調用。
;❷ Linux伺服器的安全防護都有哪些措施
一、強化密碼強度
只要涉及到登錄,就需要用到密碼,如果密碼設定不恰當,就很容易被黑客破解,如果是超級管理員(root)用戶,如果沒有設立良好的密碼機制,可能給系統造成無法挽回的後果。
很多用戶喜歡用自己的生日、姓名、英文名等信息來設定,這些方式可以通過字典或者社會工程的手段去破解,因此建議用戶在設定密碼時,盡量使用非字典中出現的組合字元,且採用數字與字元、大小寫相結合的密碼,增加密碼被破譯的難度。
二、登錄用戶管理
進入Linux系統前,都是需要登錄的,只有通過系統驗證後,才能進入Linux操作系統,而Linux一般將密碼加密後,存放在/etc/passwd文件中,那麼所有用戶都可以讀取此文件,雖然其中保存的密碼已加密,但安全系數仍不高,因此可以設定影子文件/etc/shadow,只允許有特殊許可權的用戶操作。
三、賬戶安全等級管理
在Linux操作系統上,每個賬戶可以被賦予不同的許可權,因此在建立一個新用戶ID時,系統管理員應根據需要賦予該賬號不同的許可權,且歸並到不同的用戶組中。每個賬號ID應有專人負責,在企業中,如果負責某個ID的員工離職,該立即從系統中刪除該賬號。
四、謹慎使用"r"系列遠程程序管理
在Linux操作系統中,有一系列r開頭的公用程序,如rlogin、rcp等,非常容易被不法分子用來攻擊我們的系統,因此千萬不要將root賬號開放給這些公用程序,現如今很多安全工具都是針對此漏洞而設計的,比如PAM工具,就可以將其有效地禁止掉。
五、root用戶許可權管理
root可謂是Linux重點保護對象,因為其權利是最高的,因此千萬不要將它授權出去,但有些程序的安裝、維護必須要求是超級用戶許可權,在此情況下,可以利用其他工具讓這類用戶有部分超級用戶的許可權。sudo就是這樣的工具。
六、綜合防禦管理
防火牆、IDS等防護技術已成功應用到網路安全的各個領域,且都有非常成熟的產品,需要注意的是:在大多數情況下,需要綜合使用這兩項技術,因為防火牆相當於安全防護的第一層,它僅僅通過簡單地比較IP地址/埠對來過濾網路流量,而IDS更加具體,它需要通過具體的數據包(部分或者全部)來過濾網路流量,是安全防護的第二層。綜合使用它們,能夠做到互補,並且發揮各自的優勢,最終實現綜合防禦。
酷酷雲伺服器為您誠意解答,伺服器租戶的選擇,酷酷雲值得信賴。
❸ 通信原理里PAM和PCM的區別及聯系
1、編碼不同:
用采樣脈沖幅度反映被測參量的方法稱為脈沖幅度調制( PAM),用一組編碼脈沖來反映被測參量,則被稱為脈沖編碼調制 ( PCM)。
2、量化不同:
用脈沖幅度表達信號的強弱,但是PCM是已經量化的數據,而PAM還沒有量化。離散信號經過量化歸屬到個檔次的幅度中比如我們有2V,4V,6,V,8V四個檔次的歸類,並且規定1V~3V之間的PAM離散信號就歸類到2V的檔次中去,一次類推,通過比較給每個PAM信號進行歸類,這就是量化。
3、表示不同:
將量化了的信號進行編碼,編碼是一種認為規定的過程比如我們規定2V用00表示,4V用01表示,6V用10表示,而8V用11來表示,這樣就把階梯信號和二進制信號有了一種對應關系,順著這種對應關系,可以得到剛才量化了的信號的二進制代碼,這就是PCM編碼得到了可以在存儲器中存儲的數字信號。
4、處理不同:
平時要求的轉換比特率的求法可以從它的轉換過程得出計算方法。一個PAM信號對應一個檔次,而一個檔次對應幾個比特的數字是在編碼中體現的,例子中就是一個檔次對應兩個比特,假設這種對應關系是1對N個比特,對模擬信號的采樣率是F,也就是1秒鍾有F個PAM信號,這F個PAM信號就要被轉換成F*N個比特,所以比特率就是F*N了。
對於完成轉換的數字信號,我們如何處理呢?有的是被放進存儲器中存儲了,有的是到CPU中進行計算,加密等處理了。
❹ 安全計算環境linux-身份鑒別技術 2021-03-06
安全計算環境linux- 身份鑒別 技術
a)應對登錄的用戶進行身份標識和鑒別,身份標識具有唯一性,身份鑒別信息具有復雜度要求並定期更換
要求解讀
Linux系或統的用戶鑒別過程與其他UNIX系統相同:系統管理員為用戶建立一個賬戶並為其指定一個口令,用戶使用指定的口今登錄後重新配置自己的自已的口令,這樣用戶就具備一個私有口令。etc/password文件中記錄用戶的屬性信息,包括用戶名、密碼、用戶標識、組標識等信息。現在Linux系統中不再直接保存在/etc/password文件中,通常將password文件中的口令欄位使用一個「x」來代替,將/etc/shadow作為真正的口令文件,用於保存包括個人口令在內的數據。當然,shadow文件是不能被普通用戶讀取的,只有超級用戶才有權讀取。
Linux中的/etc/login.defs是登錄程序的配置文件,在這里我們可配置密碼的最大過期天數,密碼的最大長度約束等內容。如果/etc/pam.d/system-auth文件里有相同的選項,則以/etc/pam.d/system-auth里的設置為准,也就是說/etc/pam.d/system-aut的配置優先順序高於/etc/login.defs。
Linux系統具有調用PAM的應用程度認證用戶。登示服務、屏保等功能,其中一個重要的文件使是etc/pam.d/system-auth(在Kedhat Cent0s 和Fedora繫上)。/etc/pam.d/system-auth或/etc/login.defs中的配置優先順序高於其他地方的配置。
另外,root用戶不受pam認證規則的限制,相關配置不會影響root用戶的密碼,root用戶可以隨意設置密碼的。login.defs文件也是對root用戶無效的。
測評方法
1)訪談系統管理員系統用戶是否已設置密碼,並查看登錄過程中系統賬戶是否使用了密碼進行驗證登錄。
2)以有許可權的賬戶身份登錄操作系統後,使用命令more查看/etc/shadow文件,核查系統是否存在空口令賬戶
3)使用命令more查看/etc/login. defs文件,查看是否設置密碼長度和定期更換要求
#more /etc/login. defs
使用命令more查看/etc/pam.d/system-auth文件。查看密碼長度和復雜度要求
4)檢查是否存在旁路或身份鑒別措施可繞過的安全風險
預期結果和主要證據
1)登錄需要密碼
2)不存在空口令賬戶
3)得出類似反饋信息,如下:
PASS MAX_DAYS 90 #登錄密碼有效期90天
PASS MIN_DAYS 0 #登錄密碼最短修改時間,增加可以防止非法用戶短期更改多次
PASS MIN_LEN 7 #登錄密碼最小長度7位
PASS WARN_AGE 7 #登錄密碼過期提前7天提示修改
4)不存在繞過的安全風險
b)應具有登錄失敗處理功能,應配置並啟用結束會話、限制非法登錄次數和當登錄連接超時自動退出等相關措施
要求解讀
Linux系統具有調用PAM的應用程度認證用戶、登錄服務、屏保等功能,其中一個重要的文件便/etc/pam.d/system-auth ,Redhat5以後版本使用pam_tally2.so模塊控制用戶密碼認證失敗的次數上限,可以實現登錄次數、超時時間,解鎖時間等。
著只是針對某個程序的認證規則,在PAM目錄(/etc/pam d)下形如sshd、login 等等的對應各程序的認證規則文件中進行修改。若所有密碼認證均應用規則, 可直接修改system_auth文件
測評方法
1)系統配置並啟用了登錄失敗處理功能
2)以root身份登錄進入Linux, 查看文件內容:
# cat /ete/pam.d/system -auth或根據linux版本不同在common文件中
3)查看/etc/profile中的TIMEOUT環境變數,是否配置超時鎖定參數
預期結果和主要證據
得出類似反饋信息,如下:
1)和2)查看登錄失敗處理功能相關參數,/etc/pam.d/system—auth文件中存在"account required /lib/security/pam_tally.so deny=3
no_ magic root reset" ;
3)記錄在文件/etc/profile中設置了超時鎖定參數,在profile下設置TMOUT= 300s
c) 當進行遠程管理時,應採取必要措施、防止鑒別信息在網路傳輸過程中被竊聽
要求解讀
Linux提供了遠程訪問與管理的介面,以方便管理員進行管理操作,網路登錄的方式也是多樣的,例如可以使用Telnet登錄,也可以使用SSH登錄。但是,Telnet不安全。I因為其在教據傳輸過程中,賬戶與密碼均明文傳輸,這是非常危險的。黑客通過一些網路對嗅探工是能夠輕易地的竊取網路中明文傳輸的賬戶與密碼,因此不建議通過Telnet協議對伺服器進行遠程管理。針對Telnet協議不安全這種情況,可以在遠程登錄時使用SSH協議。其原理跟Telnet類似,只是其具有更高的安全性。SSH是一個運行在傳輸控制層上的應用程序,與Telnet相比,它提供了強大的認證與加密功能,可以保證在遠程連接過程中,其傳輸的數據是加密處理過的。因此保障了賬戶與口令的安全
測評方法
訪談系統管理員,進行遠程管理的方式。
1)以root身份登錄進入Linux查看是否運行了sshd服務,service - status-all | grep sshd
查看相關的埠是否打開,netstat -an|grep 22
若未使用SSH方式進行遠程管理,則查看是否使用了Telnet 方式進行遠程管理
service - -status-all|grep running,查看是否存在Telnet服務
2)可使用wireshark等抓包工具,查看協議是否為加密
3)本地化管理,N/A
預期結果和主要證據
1)使用SSH方式進行遠程管理,防止鑒別信息在傳輸過程中被竊聽,Telnet默認不符合
2)通過抓包工具,截獲信息為密文,無法讀取,協議為加密
3) N/A本地管理
d)應採用口令、密碼技術、生物技術等兩種或兩種以上組合的鑒別技術對用戶進行身份鑒別,且其中一種鑒別技術至少應使用密碼技術來實現
解讀
對於第三級及以上的操作系統要求採用口令、密碼技術、生物技術等兩種或兩種以上組合的鑒別技術對用戶進行身份鑒別,且其中一種鑒別技術至少應使用密碼技術來實現
測評方法
訪談和核查系統管理員在登錄操作系統的過程中使用了哪些身份鑒別方法,是否採用了兩種或兩種以上組合的鑒別技術,如口令教字證書Ukey、令牌、指紋等,是否有一種鑒別方法在鑒別過程中使用了密碼技術
預期結果和主要證據
除口令之外,採用了另外一種鑒別機制,此機制採用了密碼技術,如調用了密碼機或採取SM1-SM4等演算法