码迷,mamicode.com
首页 > 其他好文 > 详细

pam之基础知识和常见模块

时间:2015-06-26 23:53:49      阅读:307      评论:0      收藏:0      [点我收藏+]

标签:linux   pam   

nns负责名称解析,认证的过程是pam来处理。2套系统是独立运行的。

认证本身也可以不借用nss,自己去找对应的解析库。


以用户登陆为例:
    用户名的解析 :
        USERNAME--> nsswitch.conf --> passwd : file--> /etc/passwd

    密码的解析:
        PASSWORD --> nsswitch.conf --> shadow : file --> /etc/shadow

    认证:
        USERNAME -->compare (通过和解析到的用户名进行比较)
        PASSWORD --> md5(salt ) -->compare(通过和解析到的密码进行比较)

认证的手段:
    md5
    mysql
    ldap
    nis
    kerberos

pam:
    中间层,和nss类似。通过库文件为应用程序认证提供手段。

    库文件:
        /lib/security/*
        /lib64/security/*


    栈(stack):
        用来提供pam验证过程中不同的功能。

        auth 检查用户输入的账号密码是否匹配
        account 审核用户账号是否在有效期内
        password 用户修改密码时检查修改这个动作动作是否被允许
        session 设定会话的相关属性



    配置文件:
        /etc/pam.conf 主配置文件,默认不存在。
            格式如下:
                SERVERNAME TYPE CONTROL MODPATH MODARGS

        /etc/pam.d/* 各个服务的配置文件
            格式如下:
                TYPE  CONTROL MODPATH MODARGS

            注意:other 这个文件使用来定义默认规则的。程序在认证的时候会先找到自己的配置文件,若无任何匹配和结果,则会使用other来认证。

        配置文件详解:
            SERVERNAME:服务二进制程序的文件名,必须全部小写。
            TYPE: stack的类型
            CONTROL:
                返回值对应的处理动作。
                格式为[VALUE1=ACTION1 VALUE2=ACTION2 ...]

                VALUE
                    success 成功
                    ignore 忽略
                    default 失败

                ACTION:
                    ok 此模块通过,继续检测
                    done 此模块通过,返回最终结果给应用程序
                    bad 此模块没通过,继续检测
                    die 此模块没通过,返回最终结果给应用程序
                    ignore 忽略结果
                    reset 忽略此前的所有结果,进行最终检查
                
                处理动作的组合很多,有部分固定组合的可以使用以下几个替代:

                required
                    有一票否决权,若匹配不通过则不通过。交给同stack中其他模块的进行匹配。
                    success=ok new_authtok_reqd=ok ignore=ignore default=bad

                requisite
                    绝对一票否决,若匹配不通过则不通过,不进行本stack中的后续匹配。
                    success=ok new_authtok_reqd=ok ignore=ignore default=die

                sufficient
                    绝对一票确定,若通过匹配则通过,后续不需要匹配。若匹配失败则继续进行后续匹配
                    success=done new_authtok_reqd=ok default=ignore

                optional
                    陪衬性质,无实质作用
                    success=ok new_authtok_reqd=ok default=ignore

                include
                    将判定的权利移交其他指定库文件,自己不做判定。

            MODPATH 模块路径:
                MODNAME.so
                默认相对路径,相对于/lib/security/和/lib64/security/。若是其他路径则钥匙用绝对路径。

                        pam_unix.so 传统的密码验证,使用md5方式验证。
                            nullok
                            shadow
                            md5
                            
                        pam_permit.so 总是允许访问,并没有什么作用

                        pam_deny.so 用来拒绝访问,通常用在other当中

                        pam_cracklib.so  依据字典来检查密码,用在用户修改密码使验证弱口令
                            minlen 密码的最小长度
                            difok 密码是否和以前相同
                            dcredit=NUM 密码中要包含的数字位输
                            ucredit=NUM 密码中包含大写字母位数
                            lcredit=NUM 密码中包含小写字母位数
                            ocredit=NUM 密码中包含特殊字符的位数
                            retry=NUM 重试次数为NUM次

                        pam_shell.so 用户登录时检测合法登陆shell,只能使用/etc/shells中有存在的shell登陆

                        pam_securetty.so 限定root用户只能通过限定的shell登陆,限定的文件为/etc/securetty。

                        pam_listfile.so 到指定的文本文件中验证用户是否可以登陆
                                item =tty|user|rhost|ruser|group|shell  文件条目的类型
                                sense=allow|deny
                                file=FILE
                                onen=successd|fail 一旦出现错误的处理机制,例如文件不存在或者是选项有错误。如果设定为successd,则返回PAM_SUCCESS,若设定为fail,则返回PAM_AUTH_ERR或者是PAM_SERVICE_ERR。
                                apply=user|@group
                                quiet

                        pam_rootok.so 只要uid=0直接通过

                        pam_limits.so 在一次用户会话中,能使用的资源数的限定。默认情况下使用配置文件/etc/security/limits.conf和/etc/security/limits.d/*.conf进行限定。普通用户只能调整软限定。临时调整使用#ulimit命令完成。

                        pam_env.so 设置或撤销环境变量的。默认配置文件在/etc/security/pam_env.conf。也可以编辑/etc/enviroment。

                        pam_while.so 限定哪些用户可以su到root。只有在wheel组中的用户可以切换root。

                        pam_time.so 根据时间限定登陆。配置文件/etc/security/time.conf。
                            格式为:
                                SERVICENAME;TTYS;USERS;TIMES

            MOADARGS 模块的参数:
                try_first_pass 若此前用户已输入过密码,则再次验证时尝试使用使用上次输入过的密码

                use_first_pass 直接使用用户以前输入的密码

                shadow 使用shadow方式读取或写入密码

                md5 加密方式为md5
                sha256 加密方式为sha256
                sha512 加密方式为512

                nullok 允许为空。默认情况下是禁止密码为空。

                use_authok 当密码修改的时候强制使用指定模块中设定的密码

本文出自 “小私的blog” 博客,请务必保留此出处http://ggvylf.blog.51cto.com/784661/1666074

pam之基础知识和常见模块

标签:linux   pam   

原文地址:http://ggvylf.blog.51cto.com/784661/1666074

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!