pam用戶認證機制:

pam用戶認證機制:


App->username:password

 root->nsswitch.conf->passwd:files 找用戶名

 '123'->nsswith.conf->shadow:files 輸入密碼獲取加密以後的密碼

 auth:123->md5(salt)->compare  把密碼加上salt後開始和獲取到的密碼進行比較

   認證本身也可以不用藉助名稱解析服務去查找用戶原始存放密碼


Authentication

  md5:/etc/shadow

  mysql

  ldap

  nis

  kerberos


APP->pam->Authentication


64位系統庫文件存放位置/lib,/lib64

32位系統庫文件存放位置在/lib

[root@localhost ~]# ls /lib64/security/

pam_krb5.so     kerberos認證        

      

pam_unix.so  實現傳統認證的一個庫


pam_winbind.so 到win的AD中驗證用戶


pam_mysql.so  


pam_ldap.so


[root@localhost ~]# vim /etc/pam.d/login  配置文件定義login在認證用戶使用哪一種機制


#%PAM-1.0

auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so

auth ->檢查用戶輸入的密碼是否匹配          include      system-auth

account ->帳號是否有效                   required     pam_nologin.so

account                                     include      system-auth

password ->檢查用戶修改密碼時,是否符合要求 include      system-auth

# pam_selinux.so close should be the first session rule

session -> 會話,例如定義最多隻能20分鐘   required     pam_selinux.so close



pam的配置文件:

/etc/pam.conf 主配置文件(默認不存在)

Service(服務的文件名,必須小寫) type control  module-path  module-arguments

/etc/pam.d/*

type(類型)  control(多個條目之間怎麼建立關係)  module-path(模塊)  [module-arguments](模塊參數)


[root@localhost pam.d]# vim other 定義默認規則


type:

auth 檢查用戶輸入的密碼是否匹配  

account 帳號是否有效   

password 檢查用戶修改密碼時,是否符合要求

session  會話,例如定義最多隻能20分鐘




ok:通過,繼續檢查

done:通過,返回最終結果

bad:失敗,繼續檢查

die:失敗,返回這種結果

ignore 忽略

reset忽略此前的所有結果(之前沒有被一票通過)



control:

required  通過則繼續檢查,不通則失敗,繼續檢查下一條

[success=ok new_authtok_reqd=ok ignore=ignore defaul=bad]


requisite 必須得通過,通過後繼續檢查下一條,如果不能通過則不通過

[success=ok new_authtok_reqd=ok ignore=ignore defaul=die]


sufficient 通過以後就直接通過,沒通過就繼續查看下一條

[success=done new_authtok_reqd=done defaul=ignore]


optional 可選的,通過與否無所謂

[success=ok new_authtok_reqd=ok  defaul=ignore]


include 讓其他文件決定




module-path:

默認爲相對路勁

絕對路徑爲/lib64

pam_unix模塊是到passwd中驗證用戶時用到的

參數:

   nullok 密碼允許爲空

   shadow 用戶密碼驗證基於shadow認證

   md5用戶加密方式

   try_first_pass 提示輸入密碼之前,先嚐試此前其他模塊裏輸入的密碼

   use_first_pass 直接輸入密碼

   use_authtok 在某個與密碼相關的驗證模塊後使用此選項,可以強制用戶使用此前的密碼


pam_permit允許訪問

pam_deny拒絕訪問

pam_cracklib.so依據字典中所包含的數據來檢查密碼,檢查到以後則不通過,主要用於改密碼的時候

參數:

   minlen最短長度

   difok驗證密碼和此前是否相同

   dcredit=N  包含至少幾個數字

   ucredit=N  要包含幾位大寫字母

   lcredit=N  包含幾位小寫字母

   ocredit=N   包含幾位特殊字符

   retry=N    最多嘗試多少次

pam_shells 強制用戶使用/etc/shells

pam_securetty 限定管理員只能從/etc/securetty裏的終端登陸

pam_listfile  根據某個文件來驗證用戶帳號是否合法

參數:

item=[tty|user|rhost|ruser|group|shell]

sense=[allow|deny] 

file=/path/filename  

onen=[succeed|fail] 

[apply=[user|@group]]  

[quiet]



例如:只讓user組訪問

[root@localhost pam.d]# vim login

#%PAM-1.0

auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so

auth       include      system-auth  主要是交給system-auth認證

account    required     pam_nologin.so


system-auth -> system-auth-ac


[root@localhost pam.d]# cp system-auth-ac  system-auth-ac.bak


[root@localhost pam.d]# vim /etc/pam_allowgroups

user

       

[root@localhost pam.d]# vim 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        required      pam_listfile.so  item=group sense=allow file=/etc/pam_allowgroups 新增這行

auth        sufficient    pam_fprintd.so



pam_rootok 只要UID=0的用戶就直接通過



pam_limits 用戶資源限定模塊

/etc/security/limits.d/*.conf的文件

vim /etc/security/limits.conf 配置文件


#<domain>表示對誰生效   <type>限制的類型  <item>對那種資源限制   <value>限制值爲多大

#

#Where:

#<domain> can be:

#        - an user name 可以是一個用戶名 

#        - a group name, with @group syntax  可以是一個組名@group

#        - the wildcard *, for default entry   *設定默認所有的

#        - the wildcard %, can be also used with %group syntax,    %限定最大登陸次數

#<type> can have the two values:   

#        - "soft" for enforcing the soft limits  soft軟限制,普通用戶只能使用ulimit命令調整自己的軟限制

#        - "hard" for enforcing hard limits       hard硬限制

#<item> can be one of the following:

#        - core - limits the core file size (KB)  所能夠打開的核心文件大小 

#        - nofile - max number of open files    所能夠打開的最多文件數

#        - rss - max resident set size (KB)      所能夠使用多少內存

#        - cpu - max CPU time (MIN)              所能夠使用的最多cpu時間

#        - nproc - max number of processes       用戶最多能運行進程的個數

#        - as - address space limit (KB)         地址空間限制

#<domain>      <type>  <item>         <value>

#*               soft    core            0  0表示不做限制

#@student        -  軟硬都限制     maxlogins       4  最多允許登陸4次



ulimit命令

 -n修改所能夠打開的最大文件數

 -u修改用戶所能夠打開的最多的進程個數

             


pam_env.so設置或撤銷環境變量

[root@localhost ~]# vim /etc/security/pam_env.conf


pam_wheel.so 可以限定只有wheel組的用戶可以su到root


[root@localhost pam.d]# vim su

#auth           sufficient      pam_wheel.so trust use_uid

#auth           required        pam_wheel.so use_uid

建立wheel組 啓用這兩項即可


pam_lastlog.so 是否顯示用戶上次登錄信息的


pam_issue.so 登錄時是否顯示 /etc/issue中的信息


pam_motd.so 登錄時是否顯示motd中的內容 /etc/motd


pam_succeed_if_so 檢查一個用戶的ID號,如大於500可以登錄,等


pam_time.so 根據時間來限定登錄

/etc/security/pam_time.conf

login ; tty* &!ttyp* ;!root ; !Al0000:2400


GAMES ; * ; !root ;!Wd0000-2400 |Wk1800-0800 非root用戶只能在非wd工作日的0點到24點和週末的18點到24點玩遊戲


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章