精华内容
下载资源
问答
  • PAM

    2017-09-15 16:29:08
    PAM

    PAM

    —-Pluggable Authentication Modules — 可插入认证模块

    • PAM是 Sun公司于1995 年开发的一种与认证相关的通用框架机制,关注如何为服务验证用户的API通过提供一些动太链接库和一套统一的API将系统提供的服务和该服务的认证方式分开
      PAM认证原理

    • PAM认证一般遵循这样的顺序: Service(服务)→PAM(配置文件)→pam_*.so

    • PAM认证首先要确定那一项服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认文件(位于/lib/security下)进行安全认证
      这里写图片描述

    PAM认证机制
    当用户以某一账号进行/usr/bin/sudo 程序时,sudo 会联系PAM模块,PAM模块会搜寻sudo程序的PAM相关设定配置, 查看sudo的相关模块进行命令的验证,将验证结果回传给程序,而程序会根据PAM回传的结果执行下一个动作

    相关文件:

      模块文件目录     /lib64/security/*.so   
      环境相关设置目录:/etc/security
      主配置文件     :/etc/pam.conf
      应用专用配置目录:/etc/pam.d
    
      /etc/pam.d/ 与 /etc/pam.conf的优先级为 /etc/pam.d内的文件高于pam.conf的配置文件
    

    配置文件内的格式

    /etc/pam.conf 格式
    application    type    control    module-path    arguments
    
    /etc/pam.d/*  格式   
    type    control    module-path    arguments
    
    配置文件pam.conf因为没有特别的标明使用到哪个程序,所以我标上程序名称,而pam.d是只针对某一程序软件的,文件名已经指明。
    
    application:
        应用软件名称,如 su sudo ssh 等等
    
    type:
        类型指的是模块类型如 (auth account session ...)
    
    control:
        PAM定义使用的模块成功与失败该如何执行下一部操作
    
    module-path 
        用来指明模块对应的模块文件路径名
    
    Arguments
        用来传递给该模块的参数
    

    类型:type

    Auth:
        账号的认证和授权
    
    Account
        与账号管理相关的非认证类的功能,对用户进行限制
    
    Password 
        用户修改密码复杂度检查等功能
    
    session
        用户获取到服务之前或使用服务完成之后需要进行一些附加的操作
    
    - 加 type
        表示因为缺失而不能加载的模块将不记录到系统日志,对那些不总是安装在系统上的模块有用
    

    控制:Control的几种格式

    control有简单和复杂两种,
    
    简单的:
      required
        表示本模块必须返回成功才能通过,如果不成功则继续动行接下来的规则,等全部运行完再返回执行失败的结果给应用程序
    
      requisite:
        表示模块必须返回成历才能通过,一旦返回失败,将不再执行同一个type的模块,直接将控制权返回给应用程序
    
      sufficient
        表明本模块返回成功则通过身份认证的要求,不必再执行同一type的模块,如果不成功可忽略,继续执行下一条
    
      optional
        表明模块是可选的,它的成功与否不对认证起关键作用,返回值一般是被忽略的
    
      include
        调用其它配置文件中定义的规则信息
    
    复杂的,如: 【status1=action1 status=action2 ...】
        * status: 检查结果的返回状态   action:采取的行为
                action:
                    ok      :模块通过,继续检查
                    done    :模块通过,返回最后结果
                    bad     :结果失败,继续检查
                    die     :结果失败,返回失败结果
                    ignore  :结果忽略,不影响最后的结果
                    reset   :忽略已经得到的结果      
    

    module-path: 模块路径

    相对路径:
        /lib64/security 目录下的模块可使用相对路径 如: pam_shells.so 、 pam_limits.so
    
    绝对路径:
        /etc/security/*.conf
    
    Arguments 
        用来传递给该模块的参数
    

    Note:PAM配置文件一旦修改或创建,将马上生效

    事例

    1. 使用pam_shells模块进行用户的有效su切换账号

        模块:pam_shells.so      功能: 检查/etc/shells已有的shell 如果配置文件内有的就让其登陆,如果没有就不允许
    
      首先,查找到su在pam.d的文档进行编辑
      [root@CentOS6 pam.d]#vim su
      1 #%PAM-1.0
      2 auth            required        pam_shells.so       我们在第一行添加,因为如果违反规则无需其它操作
      3 auth            sufficient      pam_rootok.so       其它的选择默认不动
      4 # Uncomment the following line to implicitly trust users in t
        he "wheel" group.
      5 #auth           sufficient      pam_wheel.so trust use_uid
      6 # Uncomment the following line to require a user to be in the
         "wheel" group.
      7 #auth           required        pam_wheel.so use_uid
      8 auth            include         system-auth
      9 account         sufficient      pam_succeed_if.so uid = 0 use
        _uid quiet      
     10 account         include         system-auth
     11 password        include         system-auth
     12 session         include         system-auth
     13 session         optional        pam_xauth.so
    
    接下来查看下/etc/shells里有哪些支持shell 然后创建一个不支持shell的测试用户
    useradd -s /bin/csh testuser 
    echo "testuser" |passwd --stdin testuser
    testuser:x:501:501::/home/testuser:/bin/zsh
    
    接下来测试
    [root@CentOS6 pam.d]#su - testuser               
    Password: 
    su: incorrect password                   su 无法切换到指定用户,并不是密码错误。
    [root@CentOS6 pam.d]#
    
    我们删除之前加进到/etc/pam.d/su 的第一条规则之后测试下结果
    [root@CentOS6 pam.d]#su - testuser
    [testuser@CentOS6 ~]$                    成功切换

    2.使用PAM进行limits,使用的模块儿 pam_limits.so

    limits 限额有个两种方式
    1. ulimit 命令 也是可以设置限额功能, 但无法进行保存的,因为是执行在内存中。

    ulimit
        -a    显示所有ulimit 参数信息
        -n    最多的打开的文件描述符个数
        -u    最大用户进程数
        -S    使用soft(软)资源限制
        -H    使用hard (硬)资源限制
    

    2.limits 限制的配置文件限额

     配置文件:  /etc/security/limits.conf 或 /etc/security/limits.d/*.conf
        cat /etc/security/limits.conf
        # /etc/security/limits.conf
        #
        #Each line describes a limit for a user in the form:
        #
        #<domain>        <type>  <item>  <value>    文档已经给出了参数信息,也给了一定的事例
        #
        #Where:
        #<domain> can be:        域的定义为:用户名称、@组名称、
        #        - a user name       用户名称
        #        - a group name, with @group syntax     组名称
        #        - the wildcard *, for default entry    *表示所有用户
        #        - the wildcard %, can be also used with %group syntax,    %表示后使用的组
        #                 for maxlogin limit
        #
        #<type> can have the two values:
        #        - "soft" for enforcing the soft limits
        #        - "hard" for enforcing hard limits
        #
        #<item> can be one of the following:
        #        - core - limits the core file size (KB)
        #        - data - max data size (KB)
        #        - fsize - maximum filesize (KB)
        #        - memlock - max locked-in-memory address space (KB)
        #        - nofile - max number of open file descriptors
        #        - rss - max resident set size (KB)
        #        - stack - max stack size (KB)
        #        - cpu - max CPU time (MIN)
        #        - nproc - max number of processes
        #        - as - address space limit (KB)
        #        - maxlogins - max number of logins for this user
        #        - maxsyslogins - max number of logins on the system
        #        - priority - the priority to run user process with
        #        - locks - max number of file locks the user can hold
        #        - sigpending - max number of pending signals
        #        - msgqueue - max memory used by POSIX message queues (bytes)
        #        - nice - max nice priority allowed to raise to values: [-20, 19]
        #        - rtprio - max realtime priority
        #
        #<domain>      <type>  <item>         <value>     这块给出的事例...
        #
    
        #*               soft    core            0
        #*               hard    rss             10000 
        #@student        hard    nproc           20
        #@faculty        soft    nproc           20
        #@faculty        hard    nproc           50
        #ftp             hard    nproc           0
        #@student        -       maxlogins       4
    
        # End of file
        [root@CentOS6 security]#
    
        当使用到web服务的时候,有时候apache如果是默认的限额的话那么有时候用户访问量过大,限额就要提
        高,所以可以从这里进行配置
    
    展开全文
  • pam

    2019-12-17 15:15:24
    Pluggable Authentication ...PAM最大的特点是实现了服务程序和认证机制的分离,它采用模块化设计和插件功能,使得我们可以轻易地在应用程序中插入新的鉴别模块或替换原先的组件,而不必对应用程序做任何修改,更不...

    Pluggable Authentication Modules:可插入验证模块

    比如一台服务器开着FTP、SSH等服务,那么新建一个用户默认就享有对以上的服务的操作权限,那么如果一个用户的帐号密码泄露会涉及到多个服务。

    PAM最大的特点是实现了服务程序和认证机制的分离,它采用模块化设计和插件功能,使得我们可以轻易地在应用程序中插入新的鉴别模块或替换原先的组件,而不必对应用程序做任何修改,更不必了解太多的底层细节。

    在这里插入图片描述应用调用接口,接口调用模块,通过修改配置文件去配置调用什么模块。完成身份验证。

    模块的位置 /lib64/security/

    配置文件:/etc/pam.d/
    配置文件:/etc/pam.d/

    以su的pam配置文件举例
    在这里插入图片描述
    pam检查的方式:从上到下,依次使用模块进行验证检查。

    PAM模块类型—— module_type —— 控制使用什么类型的管理机制:
    1、auth:对用户所提供的认证信息进行验证的。比如检查用户帐号和密码;
    2、 account:用户管理,执行基于非验证的帐户管理。
    3、 password:密码认证管理。
    4、session:会话管理。

    PAM验证控制类型(Control Values):
    用于PAM验证类型的返回结果,都有返回值,不是0就是1,失败或成功。
    1、 required:(必要条件)当认证模块传回失败的消息的时候,认证还会继续进行,全部都执行完毕后,PAM才会传回认证失败,用户不会知道哪里失败。而成功的时候,认证也会继续向下执行其他的认证。
    2、 requisite:(必要条件)当认证模块传回失败的消息的时候,认证会终止,立即返回失败的结果;
    3、 sufficient:如果在它之上都传回认证成功或之前根本没有返回结果,此标志的认证模块也返回成功时,则不再继续向下执行此认证模块中的其他模块,同时传回认证成功;如果失败怱略返回值继续往下检测其它模块,不过万一有其他认证模块使用“required”并传回失败时,认证还是失败的。不论 required 返回的是成功还是失败,sufficient的失败都会被当成optional被忽略
    4、 optional:无论认证的成功与否,无关整个认证过程的结果,主要是记录日志。
    5、 include:嵌入了另外的认证过程,继续调用其他认证。
    •调用的模块的位置:/lib/security

    结构:4列
    1、 绿色 模块类型
    auth
    account
    password
    session

    2、 粉色 控制标志
    3、红色 模块
    4、白色 模块的参数

    									u1		u2		u3
    auth   required   		modules1	pass	fail	pass
    auth   sufficient		modules2	pass	pass	fail
    auth   required			modules3	????	????	????
    //其中u1能够登录。
    //u2不能登录,因为suffivient之前有个报错。
    //u3你能否登录取决于????,这个ok则ok。
    

    常用的pam模块:

    【1】pam_rootok.so
    用户的UID是0,直接返回成功。

    [root@pam /etc/pam.d]# vim su
    #auth       sufficient  pam_rootok.so
    

    正常来说普通用户切换到root用户要输入密码,root用户切换普通用户不需要密码,这时因为su这个配置文件中默认开启了pam_rootok.so模块,如果将他注释掉,也就是取消,那么root用户登录普通用户也要输入密码了。

    在这里插入图片描述
    【2】pam_wheel.so
    这个模块与这个组相关,wheel这个组。

    Wheel组是Unix系统一个遗留物。当服务器需要做比日常例行维护更高级的工作的时候,就经常需要用到root权限了。而这个wheel组就是建立用来归纳一些特殊的系统用户用的,这其中的用户都或多或少地拥有root的部分功能和权限。也就是说如果你不是wheel组成员,那就没有root身上任何的特权。也因为这样,使用wheel组成员用户的话,会尽量减少对系统“摧毁性”破坏的概率和风险。如今大多数的Linux发行版本中,仍然保留了wheel这个组。

    1、在wheel组中的用户切换root用户不需要密码

    [root@localhost pam.d]# useradd user1 -G wheel
    [root@localhost ~]# id user1
    uid=1000(user1) gid=1000(user1) groups=1000(user1),10(wheel)
    
    
    [root@localhost ~]# vim /etc/pam.d/su
     4 auth        sufficient  pam_wheel.so trust use_uid
    //打开注释,在wheel组中的用户切换root用户不需要密码。
    [user1@localhost ~]$ su -
    Last login: Tue Dec 17 21:55:31 CST 2019 from 172.16.12.1 on pts/0
    [root@localhost ~]#
    

    2、只有在wheel组里面的用户,才可以su切换到root

    [root@localhost ~]# vim /etc/pam.d/su
      6 auth        required    pam_wheel.so use_uid
    //取消注释
    
    [user2@localhost ~]$ su -
    Password: 
    su: Permission denied
    

    这个可以加入系统的初始化配置!

    线上节点
        哪些用户可以ssh
        先用普通用户 ssh
        再 su - 到root
        约束哪些用户可以切换到root

    内部节点:没有约束。

    【3】pam_tally2.so
    约束密码的尝试次数,防止暴力破解。

    [root@localhost /etc/pam.d]# vim sshd
      3 auth       required pam_tally2.so deny=2 even_deny_root root_unlock_time=60 unlock_time=60
    	最大尝试次数,2
    	失败后锁定1分钟
    

    查看用户登录情况

    [root@localhost ~]# pam_tally2 -u root
    Login           Failures Latest failure     From
    root                3    12/17/19 10:38:24  172.16.0.20
    

    解除锁定

    [root@localhost ~]# pam_tally2 --reset -u 用户名
    

    【4】pam_limits.so

    资源限制,约束应用程序可以使用的系统资源。类似于磁盘限额。

    [root@localhost vuser_dir]# ulimit -Sn
    1024
    [root@localhost vuser_dir]# ulimit -Hn
    4096
    

    这个是默认的软约束和硬约束。

    [root@localhost ~]# vim /etc/security/limits.conf 
    *   soft    nofile  65535
    *   hard    nofile  65535
    *   soft    nproc   65535
    *   hard    nproc   65535
    //就直接给到满就行
    
    然后重启生效。
    reboot
    
    展开全文
  • PAM-源码

    2021-03-10 21:34:23
    PAM
  • pam ziyuanbao

    2018-06-07 14:49:07
    pam ziyuanbao pam ziyuanbao pam ziyuanbao pam ziyuanbao
  • matlab中拟合中心线的代码使用MATLAB进行PAM-PIE分析 该程序可以从Don C. Lamb教授的主页上下载-或通过GitLab-下载。 该手册可以在找到。 该GitLab组包含面粉项目: PAM:与MATLAB一起使用的PAM的开源版本。 ...
  • PAM-test:测试PAM-源码

    2021-03-11 12:04:05
    PAM库的最新版本可在。 PAM(并行增强地图)是一个并行的C ++库,实现了增强地图的接口[1]。 它旨在维护有序的地图数据结构,同时有效地回答基于范围的查询和相关查询。 在实验中,我们在四个示例中使用该接口:增...
  • pampam应用

    2012-06-19 15:07:28
    详细介绍了pampam应用的 原理,还有相关的可执行的小例子,很值得学习
  • Puppet PAM 模块 介绍 用于管理PAM配置的 Puppet 模块。 用法 类 pam::pamd 无模块配置 类{'pam::pamd':} LDAP模块 如果你想要 pam_ldap: class { 'pam::pamd': pam_ldap => true, } 或者即使您需要特定的身份...
  • <div><p>.pam_environment containing the following single line with no end of line marker: <pre><code> SSH_AUTH_SOCK DEFAULT="${XDG_RUNTIME_DIR}/ssh-agent.socket" </code></pre> <p>Previous ...
  • 一种策略,允许您针对 (PAM)进行身份 。 安装 将omniauth-pam添加到您的Gemfile中,或: gem install omniauth-pam 用法 需要在Debian和Ubuntu上安装libpam0g-dev 。 提供了一个示例Vagrantfile来进行测试。 ...
  • pam.by:pam.by网站-源码

    2021-05-02 06:44:28
    pam.by网站公园大道汽车,明斯克,白俄罗斯pam.by网站,白俄罗斯明斯克Park Avenue Motors LLC
  • 这个 PAM 模块运行 Python 解释器,因此允许用 Python 编写 PAM 模块。 由于 Python 会产生相当大的开销,因此它的目标受众是 SysAdmins 编写一个 PAM 模块。 所有可用的文档都可以在 ...
  • 该模块允许对作为PAM模块的梯形失真进行认证。 例如,允许nginx或其他系统服务使用梯形失真用户。 它不会创建NSS模块,因此仅用于auth。 要使用,请将keystone-auth.py复制到/ lib / security,使用chmod 555。 ...
  • PAM Authentication

    2020-12-02 21:09:40
    <div><p>Adds barebones PAM authentication.</p><p>该提问来源于开源项目:any1/wayvnc</p></div>

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,267
精华内容 4,106
关键字:

PAM