zoukankan      html  css  js  c++  java
  • 即插即用安全验证模块-使用pam模块

    可插入式验证模块(PAM)

    。可插入式验证木块
    。应用程序调用libpam函数来验证和授权用户
    。libpam基于应用程序的PAM配置文件做检测
        。可以通过libc在NSS中检查
    。共享的,动态可配置代码
    。文档:/usr/share/doc/pam-<version>/
    #man -k pam_  //打印linux可供使用的pam模块

    PAM操作

    。/lib/security/PAM模块
        。每个模块执行一个通过(pass)或失败(fail)测试
        。在/etc/security/中的文件会影响到一些模块如何执行他们的测试
    。/etc/pam.d/PAM模块 
        。服务文件决定了怎样/何时模块被使用在特定的程序上
    
    /etc/pam.d/文件:测试
    。测试分成四组:
        。auth    认证用户是否为此用户
        。account    用于给账户授权
        。password    控制密码的修改
        。session    打开,断开并记录会话
    。按需调用每个分组并提供各自的结果给服务。
    /etc/pam.d/文件:控制值
    。控制值决定了如何测试每个分组返回总的结果
        。required    必须通过测试。如果失败了仍然继续后续测试
        。requisite    雷同于required,除了在失败后立即停止测试
        。sufficient    如果通过测试,立即返回成功状态(比如满足第一个条件通过,直接返回成功);而如果失败,忽略测试结果继续监测
        。optional    测试是否通过都无关紧要(基本用户session环节)
        。include    从所包含而调用到配置文件中放回测试控制总结果   //可能这个配置文件中包含了其他配置文件。需要两个方面验证。
    不建议编写系统级别验证规则,就是system-auth,尽量单独编写对应应用程序的文件。
    #man pam.conf

    实例:/etc/pam.d/login文件

    PAM排错

    。检查系统日志
        。/var/log/messages
        。/var/log/secure
    。PAM错误会导致root被锁
        。在做测试时保持一个root的shell可用
        。单用户模式绕过PAM
        。使用救援碟引导系统
    

    #tar cvf ~/pam.tar /etc/pam.d/  //将/etc/pam.d下面文件打包到家目录下,并命名为pam.tar  

    linux操作系统与安全相关的日志记录在/var/log/secure中

    可以#tail -f secure     动态刷新secure日志查看登陆输入错误密码的提示。

    #man -k pam_ | less  //查看当前系统下安装的pam模块  

    system_auth文件
    。system-auth被广为使用
        。通过include而被调用,它不是一个模块(比如pam_stack.so)
        。包含标准认证测试
        。在系统中被使用应用程序共享使用
        。简单的,一致的标准系统的验证方式
    pam_unix.so
    。基于NSS的验证
        。auth    获取从NSS获得Hash后的密码
        比与Hash后输入的密码相比较
        。account    检查密码的失效期
        。password    处理密码的改变修改本地文件或NIS
        。session    记录登陆或退出日志
    网络验证
        。集中密码管理
            。pam_krb5.so(Kerberos V票据)
            。pam_ldap.so(LDAP binds)
            。pam_smb.auth.so(老的SMB认证)
            。pam_winbind.so(通过winbindd的SMB)
        。一些服务使用NSS/pam_unix.so
            。NIS,Hesiod,一些LDAP配置
    
    auth模块
    。pam_securetty.so    如果root登陆了在/etc/securetty没有列举的终端结果失败
    。pam_nologin.so     如果非root用户存在在/etc/nologin中结果失败
    。pam_listfile.so    按照一个列表文件检查认证特性
        。列出哪些账户被允许/拒绝
    密码安全
        。pam_unix.so    使用MD5 hash密码
            。确保密码Hash格式不容易破解
        。pam_unix.so    shadow密码
            。让hash的密码只对root可见
            。老化密码
        。也有一些其他模块支持密码老化机制
    Password策略
    。密码历史记录
        。pam_unix.so    接remember=N参数
    。密码长度
        。pam_cracklib.so
        。pam_passwdqc.so
    。监控失败的登陆
        。pam_tally.so
    Session模块
    。pam_limits.so    对资源的强制限制
        。使用/etc/security/limits.conf
    。pam_console.so    为控制台设置本地设备权限
        。同样可以用在auth模块中
    。pam_selinux.so    用来设置SELinux上下文属性
    。pam_mkhomedir.so    如果主目录不存在将创建一个

      

      

  • 相关阅读:
    JSON初试
    for ...in 、for each ...in、 for...of(https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/for...of)
    WPF MVVM 模式下的弹窗
    『简易日志』NuGet 日志包 SimpleLogger
    WPF 让一组 Button 实现 RadioButton 的当前样式效果
    IIS 错误解决:当前标识没有对 Temporary ASP.NET Files 的写访问权限
    [读书笔记] 《大话设计模式》
    WPF 原生绑定和命令功能使用指南
    ASP.NET Core MVC 网站学习笔记
    在香蕉派的树莓派系统上配置 Syncthing 自启动
  • 原文地址:https://www.cnblogs.com/hongjinping/p/13174272.html
Copyright © 2011-2022 走看看