• 系统安全之用户认证


      用户认证

      用户认证方式

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









  • 相关阅读:
    app被Rejected 的各种原因翻译
    UIView Border color
    Centos7下安装docker
    利用Yum彻底移除docker
    Docker删除全部镜像和容器
    【转】哈哈笑一笑
    【转】KAFKA分布式消息系统
    java读取properties文件
    java反序列化php序列化的对象
    Java 1.7.0_06中String类内部实现的一些变化【转】
  • 原文地址:https://www.cnblogs.com/minseo/p/13577414.html
Copyright © 2020-2023  润新知