用户认证

  用户认证方式

  •   PAM(gdm,kdm,su,ssh,ftp,samba)
  •   自带数据库验证方式(MySQL,Zabbix)
  •   web验证方式(htpasswd)
  •   集中式身份认证

  

  PAM介绍

  PAM(Pluggable Authentication Modules) 即可插拔式认证模块,它是一种高效而且灵活的用户级别的认证方式,它 也是当前Linux服务器普遍使用的认证方式。

  PAM可以根据用户的网段、时间、用户名、密码等实现认证。

  PAM身份验证

  使用PAM做身份认证的服务有:本地(login、gdm、kdm), sshd, vsftpd,samba等

  不使用PAM做身份认证的服务有:MySQL-Server,Zabbix等

  帮助文件在目录下,首页是Linux-PAM_SAG.html1

/usr/share/doc/pam-1.1.8/html

   可以把网址根目录设置成此目录然后使用浏览器查看

系统安全之用户认证_mysql

 

   PAM认证原理

Service(进程文件) →  PAM(配置文件)       →              pam_*.so  →                    模块的配置文件 
/usr/sbin/ssh         /etc/pam.d/sshd                /lib64/security/pam_access.so  /etc/security/access.conf 
/bin/su           /etc/pam.d/su                      /lib64/security/pam_rootok.so

   

  

------------恢复内容开始------------

  用户认证

  用户认证方式

  •   PAM(gdm,kdm,su,ssh,ftp,samba)
  •   自带数据库验证方式(MySQL,Zabbix)
  •   web验证方式(htpasswd)
  •   集中式身份认证

  

  PAM介绍

  PAM(Pluggable Authentication Modules) 即可插拔式认证模块,它是一种高效而且灵活的用户级别的认证方式,它 也是当前Linux服务器普遍使用的认证方式。

  PAM可以根据用户的网段、时间、用户名、密码等实现认证。

  PAM身份验证

  使用PAM做身份认证的服务有:本地(login、gdm、kdm), sshd, vsftpd,samba等

  不使用PAM做身份认证的服务有:MySQL-Server,Zabbix等

  帮助文件在目录下,首页是Linux-PAM_SAG.html1

/usr/share/doc/pam-1.1.8/html

   可以把网址根目录设置成此目录然后使用浏览器查看

系统安全之用户认证_mysql

 

   PAM认证原理

Service(进程文件) →  PAM(配置文件)       →              pam_*.so  →                    模块的配置文件 
/usr/sbin/ssh         /etc/pam.d/sshd                /lib64/security/pam_access.so  /etc/security/access.conf 
/bin/su           /etc/pam.d/su                      /lib64/security/pam_rootok.so

   查看pam的sshd配置文件

[root@node1 pam.d]# cat /etc/pam.d/sshd 
#%PAM-1.0
auth	   required	pam_sepermit.so
auth       substack     password-auth
auth       include      postlogin
# Used with polkit to reauthorize users in remote sessions
-auth      optional     pam_reauthorize.so prepare
account    required     pam_nologin.so
account    include      password-auth
password   include      password-auth
# pam_selinux.so close should be the first session rule
session    required     pam_selinux.so close
session    required     pam_loginuid.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session    required     pam_selinux.so open env_params
session    required     pam_namespace.so
session    optional     pam_keyinit.so force revoke
session    include      password-auth
session    include      postlogin
# Used with polkit to reauthorize users in remote sessions
-session   optional     pam_reauthorize.so prepare

   查看配置文件sshd是否使用PAM认证

[root@node1 security]# grep -i pam /etc/ssh/sshd_config 
# Set this to 'yes' to enable PAM authentication, account processing,
# and session processing. If this is enabled, PAM authentication will
# PasswordAuthentication.  Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# If you just want the PAM account and session checks to run without
# PAM authentication, then enable this but set PasswordAuthentication
# WARNING: 'UsePAM no' is not supported in Red Hat Enterprise Linux and may cause several
UsePAM yes

   PAM常见的四种认证类型

auth        认证管理         验证使用者身份,账号和密码 
account     用户管理         基于用户时间或密码有效期来决定是否允许访问
password    密码(口令)      认证管理 禁止用户反复尝试登录,在变更密码时进行密码复杂性控制 
session     会话管理         进行日志记录,或者限制用户登录的次数,资源限制

   PAM认证流程控制(流程标记)

Required    (必要条件)  验证失败时仍然继续,但返回fail           用户不会知道哪里失败 
Requisite   (必要条件)  验证失败时则立即结束整个验证过程,返回fail 面试若不成功,马上失败,效率高 
Sufficient  (充分条件)  验证成功则立即返回,不再继续,否则忽略结果并继续    相当于面试中的拔高题 
Optional    (可选条件)  无论验证结果如何,均不会影响                  常用于session类型 
Include   包含另外一个配置文件中类型相同的行
substack   垂直叠加

   PAM常用模块

  示例:限制root切换用户也需要密码

#cat /etc/pam.d/su
#注释第一行则作为管理员切换成普通用户也需要用户密码
#auth            sufficient      pam_rootok.so

   模块:pam_access.so

  功能:访问控制,默认配置文件/etc/security/access.conf

  通常作用于登录程序,如su,login,gdm,sshd,

  例如:限制用户从哪些网段登录sshd

  修改pam的sshd配置文件添加配置,启用access模块

/etc/pam.d/sshd

 

auth       required     pam_access.so

  系统安全之用户认证_身份认证_03

 

   修改配置文件

/etc/security/access.conf 

   拒绝某个IP使用用户root登录本机

-:root:192.168.1.102

   -代表拒绝 +代表允许

  root为用户

  192.168.1.102为客户端IP

  设置后从192.168.1.102ssh登录出现权限提示

[root@node2 ~]# ssh root@192.168.1.101
root@192.168.1.101's password: 
Permission denied, please try again.

   示例:使用不同的模块配置文件

#自定义使用配置文件不修改access.conf
auth    required    pam_access.so accessfile=/accessfile21

   模块:pam_tally2.so

  功能:登录统计

[root@localhost ~]# grep tally2 /etc/pam.d/sshd 
auth       required     pam_tally2.so deny=2 even_deny_root root_unlock_time=60 unlock_time=60

   参数解析

#deny=2 连续错误登录最大次数,超过最大次数,将被锁定 
#even_deny_root root用户也被要求锁定 
#root_unlock_time root用户被锁定后等待的时间,单为秒 
#unlock_time 普通用户被锁定后等待的时间,单为秒

   查看用户登录错误次数

[root@localhost ~]# pam_tally2  -u root 
#查看用户错误登录次数

   清除用户错误登录次数

[root@localhost ~]# pam_tally2 --reset -u root
 #清除用户错误登录次数

   PAM资源限制

  PAM资源限制主要是对用户进行系统资源使用的限制

  PAM资源限制默认已使用,我们只需要调整相应限制值即可。

模块:pam_limits.so 
功能:限制用户会话过程中对各种资源的使用情况。
缺省情况下该模块的配置文件是 /etc/security/limits.conf /etc/security/limits.d/*.conf

   PAM资源限制案例

  案例1:设置用户最大打开文件数

[root@localhost ~]# ulimit -a
[root@localhost ~]# ulimit -n 1024
[root@localhost ~]# vim /etc/security/limits.conf 
*                soft    nofile         10240 
*                hard    nofile         20480

   案例2:设置用户最大创建的进程数

[jack@localhost  ~]$ ulimit -u 
1024
[root@localhost  ~]# vim /etc/security/limits.d/90-nproc.conf 
*          soft    nproc     10240 
*          hard    nproc     10240

   案例3:设置用户jack最大使用CPU的时间

[root@localhost ~]# vim /etc/security/limits.conf 
jack           hard    cpu             1

   注意:PAM资源限制针对用户,不针对进程,如果需要实现进程资源限制,可以考虑使用Cgroup。