用户认证
用户认证方式
- 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
可以把网址根目录设置成此目录然后使用浏览器查看
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
可以把网址根目录设置成此目录然后使用浏览器查看
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
修改配置文件
/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。