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点玩游戏


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