系统安全之用户认证

  用户认证

  用户认证方式

  •   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。









posted @   minseo  阅读(957)  评论(0编辑  收藏  举报
编辑推荐:
· 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代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示