1. 程式人生 > >Pma模塊詳解,對用戶登錄linux等進行限制,密碼修改限制等

Pma模塊詳解,對用戶登錄linux等進行限制,密碼修改限制等

ble link 標準 下一個 過程 並不是 改密 blank 登入

技術分享 PAM詳細介紹 2014-04-02 09:26:41 標簽:PAM 原創作品,允許轉載,轉載時請務必以超鏈接形式標明文章 原始出處 、作者信息和本聲明。否則將追究法律責任。http://lidefu.blog.51cto.com/3429777/1388751

1.PMA簡介

PMA(Pluggable Authentication Module)是一個可插入式認證模塊,在Linux系統中,各種不同的應用程序都需要完成認證功能,為了實現統一調配,把所有需要認證的功能做成一個模 塊(認證機制特別復雜的除外,如:https),當特定的程序需要完成認證功能的時候,就去調用PMA的認證模塊,這些模塊都位於系統中的/lib64 /security(/lib/security:32位操作系統)目錄下,但並不是所有的模塊都是用來完成認證的,有些模塊是為了實現PAM的某些高級 功能而存在的,其中PMA的認證庫是由glibc提供的,應用程序最終使用哪個PMA模塊,取決於/etc/pma.d/*這個目錄下的定義.

PMA完成認證的過程:下面用passwd這個應用程序舉例吧!


一)首先用戶執行/usr/bin/passwd這個程序,並輸入密碼

二)passwd這個程序會去調用PMA模塊進行驗證

三)PMA會到/etc/pam.d/*下去尋找與passwd同名的配置文件

四)當找到配置文件後,PMA會根據/etc/pam.d/passwd內的配置,調用PMA的模塊進行認證

五)認證完成後,將驗證的結果返回給passwd這支程序

六)最終,passwd會根據PAM的返回結果決定下一個執行動作(重新輸入密碼或驗證通過)

·在以上步驟中最重要的是第四步,我們來詳細分析一下分析下第四步,pam是如何完成認證功能的,同樣,拿/etc/pam.d/passwd來舉例,首先來 /etc/pam.d/passswd的配置信息.

1 2 3 4 5 6 7 [[email protected] ~]# cat /etc/pam.d/passwd #%PAM-1.0 <==PAM的版本號 auth include system-auth <==每一行都是一個驗證過程 account include system-auth password substack system-auth -password optional pam_gnome_keyring.so
驗證類別 驗證控制標誌 PAM的模塊與該模塊的參數

·第一個字段:驗證類別(Type)

驗證類別主要分為如下四種,並且按順序依次向下驗證

·auth

auth是用來認證用戶的身份信息的,如果auth認證的時候需要用到多個模塊,就依次檢查各個模塊,這個模塊通常最終都是是需要密碼來檢驗的,所以這個模塊之後的下一個模塊是用來檢驗用戶身份的.如果帳號沒問題,就授權

·account

account大部分是用來檢查權限的,比如檢查賬戶和密碼是否過期等,如果你使用一個過期的賬戶或密碼就不允許驗證通過.如果有多個模塊,也依次檢查各個模塊.

·password

修改密碼需要用到的,如果用戶不修改密碼,幾乎用不到這個模塊.

·session

限定會話限制的,比如:vsftpd下午6點不允許訪問,那6點過後用戶再去訪問的話就會被限制,或內存 不足不允許訪問等,session就是限定這種類型的


·第二個字段:驗證控制標誌(control flag)

用於控制認證成功或失敗時要采取的行動,其中又分為兩種control,一種是簡單control,一種是復雜 contorl

·簡單的control

·required

此驗證如果成功則帶有success的標誌,如果失敗則帶有failure的標誌,此驗證如果失敗了,就一定會 返回失敗的標誌,但是不會立即返回,而是等所有模塊驗證完成後才返回,所以它不論驗證成功或失敗 都會繼續向後驗證其他的流程.

·requisite

如果驗證失敗則立即返回failure的標誌,並終止後續的驗證流程,如果驗證帶有success標誌,則繼續 後面的流程.

·sufficient

與requisite正好相反,此驗證如果成功則帶有success的標誌,並立即終止後續的流程,如果驗證帶有 failure的標誌,則繼續後面的流程.

·optional

optional參考意見,這個只是打醬油的....

·以上流程如下圖所示

技術分享

·include

包含進來指定的其他配置文件中的同名棧中的規則,並以之進行檢測.

·substack·

有點麻煩.不管他了...你也用不著


·PAM模塊路徑

·/etc/pam.d/*:每個程序個別的PAM的配置文件;

·/lib/security/*:PAM模塊檔案的實際放置目錄;

·/etc/security/*:其他PAM環境的配置文件;

·/usr/share/doc/pam-*/:詳細的PAM說明文件;


·PAM模塊分類

·pam_unix.so

傳統意義上的帳號和密碼認證機制,這個機制實現了標準C庫中基於讓用戶輸入帳號密碼並完成檢測 的認證過程

·pam_permit.so

直接通過,允許訪問,定義默認策略

·pam_deny.so

拒絕訪問,定義默認策略

·pam_cracklib.so

用來檢驗密碼的強度,包括設定的密碼是否在字典中,修改的密碼是否能和上次一樣,密碼至少包含多 少個數字字符,可以輸入多少次錯誤密碼等,都是由這個模塊定義的

·pam_shells.so

檢查用戶登錄的shell是否是安全shell,也就是寫在 /etc/shells中的shell

·pam_securetty.so

限定管理員只能通過安全的tty登錄,/etc/securetty,tty就是傳統終端

·pam_listfile,這東西可牛逼了....

1 item=[tty|user|rhost|ruser|group|shell] sense=[allow|deny] file=/path/filename onerr=[succeed|fail] [apply=[user|@group]] [quiet]

·pam_rootok.so

管理員su到其他用戶不用輸入密碼就是靠這個定義的

·pam_succeed_if.so

普通用戶su的時候不需要密碼

·pam_limits.so

資源限定打開文件數,使用進程數等等,對任何人都生效,/etc/security/limits 或/etc/security/limits.d/*

·pam_nologin.so

可以限制一般用戶是否能夠登入主機,當/etc/nologin這個檔案存在時,則所有一般使用者均無法 再登入系統


練習:

·限制root用戶只能最多從tty2登錄,不能遠程使用sshd登錄

1 2 3 4 5 6 [[email protected] etc]# vim /etc/pam.d/sshd #編輯這個文件 auth required pam_securetty.so #添加這一行 [[email protected] ~]# cat /etc/securetty #編輯這個文件 console tty1 tty2

·只有sshusers組的用戶能使用ssh遠程登錄

1 2 3 4 5 [[email protected] etc]# groupadd sshusers #添加一個組 [[email protected] etc]# vim /etc/pam.d/sshd #編輯遠程登錄的pam auth required pam_listfile.so item=group sense=allow file=/etc/security/allow-groups #添加這一句 [[email protected] etc]# vim /etc/security/allow-groups #編輯組文件,就是上面那個 sshusers #添加組

·管理員su的時候需要密碼

1 2 3 4 5 6 [[email protected] etc]# vim /etc/pam.d/su #編輯這個文件 #auth sufficient pam_rootok.so #註釋這一項 [[email protected] etc]# whoami root [[email protected] etc]# su ldf Password:

·普通用戶ldf,su的時候不用輸入密碼

1 2 3 4 5 6 [[email protected] etc]# vim /etc/pam.d/su #編輯這個文件 3 auth sufficient pam_succeed_if.so uid = 500 use_uid quiet #添加這一句 [[email protected] etc]# id ldf uid=500(ldf) gid=500(ldf) groups=500(ldf) [[email protected] ~]$ su root #嘗試 [[email protected] ldf]#

·限定組(用戶)使用最大的資源數

1 2 3 4 5 6 [[email protected] etc]# vim /etc/security/limits.conf #這裏看限制的東西很多 @sshusers soft nofile 10000 #軟限制,打開文件數10000 @sshusers hard nofile 10000 #硬限制, @sshusers - data 10000 #軟硬都限制,使用數據大小 sshusers - nproc 10000 #軟硬都限制,進程數 上面帶@的是組,不帶的是用戶,使用命令limits可以臨時調整

本文出自 “煙不離手” 博客,請務必保留此出處http://lidefu.blog.51cto.com/3429777/1388751

Pma模塊詳解,對用戶登錄linux等進行限制,密碼修改限制等