系统安全之用户认证
用户认证
用户认证方式
- 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
1 | /usr/share/doc/pam-1.1.8/html |
可以把网址根目录设置成此目录然后使用浏览器查看
PAM认证原理
1 2 3 | 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
1 | /usr/share/doc/pam-1.1.8/html |
可以把网址根目录设置成此目录然后使用浏览器查看
PAM认证原理
1 2 3 | 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配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | [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认证
1 2 3 4 5 6 7 8 9 | [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常见的四种认证类型
1 2 3 4 | auth 认证管理 验证使用者身份,账号和密码 account 用户管理 基于用户时间或密码有效期来决定是否允许访问 password 密码(口令) 认证管理 禁止用户反复尝试登录,在变更密码时进行密码复杂性控制 session 会话管理 进行日志记录,或者限制用户登录的次数,资源限制 |
PAM认证流程控制(流程标记)
1 2 3 4 | Required (必要条件) 验证失败时仍然继续,但返回fail 用户不会知道哪里失败 Requisite (必要条件) 验证失败时则立即结束整个验证过程,返回fail 面试若不成功,马上失败,效率高 Sufficient (充分条件) 验证成功则立即返回,不再继续,否则忽略结果并继续 相当于面试中的拔高题 Optional (可选条件) 无论验证结果如何,均不会影响 常用于session类型 <br>Include 包含另外一个配置文件中类型相同的行 <br>substack 垂直叠加 |
PAM常用模块
示例:限制root切换用户也需要密码
1 2 3 | #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模块
1 | /etc/pam.d/sshd |
1 | auth required pam_access.so |
修改配置文件
1 | /etc/security/access.conf |
拒绝某个IP使用用户root登录本机
1 | -:root:192.168.1.102 |
-代表拒绝 +代表允许
root为用户
192.168.1.102为客户端IP
设置后从192.168.1.102ssh登录出现权限提示
1 2 3 | [root@node2 ~]# ssh root@192.168.1.101 root@192.168.1.101's password: Permission denied, please try again. |
示例:使用不同的模块配置文件
1 2 | #自定义使用配置文件不修改access.conf auth required pam_access.so accessfile=/accessfile21 |
模块:pam_tally2.so
功能:登录统计
1 2 | [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 |
参数解析
1 2 3 4 | #deny=2 连续错误登录最大次数,超过最大次数,将被锁定 #even_deny_root root用户也被要求锁定 #root_unlock_time root用户被锁定后等待的时间,单为秒 #unlock_time 普通用户被锁定后等待的时间,单为秒 |
查看用户登录错误次数
1 2 | [root@localhost ~]# pam_tally2 -u root #查看用户错误登录次数 |
清除用户错误登录次数
1 2 | [root@localhost ~]# pam_tally2 --reset -u root #清除用户错误登录次数 |
PAM资源限制
PAM资源限制主要是对用户进行系统资源使用的限制
PAM资源限制默认已使用,我们只需要调整相应限制值即可。
1 2 3 | 模块:pam_limits.so 功能:限制用户会话过程中对各种资源的使用情况。 缺省情况下该模块的配置文件是 /etc/security/limits.conf /etc/security/limits.d/*.conf |
PAM资源限制案例
案例1:设置用户最大打开文件数
1 2 3 4 5 | [root@localhost ~]# ulimit -a [root@localhost ~]# ulimit -n 1024 [root@localhost ~]# vim /etc/security/limits.conf * soft nofile 10240 * hard nofile 20480 |
案例2:设置用户最大创建的进程数
1 2 3 4 5 | [jack@localhost ~]$ ulimit -u 1024 [root@localhost ~]# vim /etc/security/limits.d/90-nproc.conf * soft nproc 10240 * hard nproc 10240 |
案例3:设置用户jack最大使用CPU的时间
1 2 | [root@localhost ~]# vim /etc/security/limits.conf jack hard cpu 1 |
注意:PAM资源限制针对用户,不针对进程,如果需要实现进程资源限制,可以考虑使用Cgroup。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!