一、PAM认证模块介绍

  PAM认证模块,叫做可插拔式的认证模块。一项重要的功能就是为了加强su命令的使用控制,可以借助于PAM认证模块,只允许极个别用户使用su命令进行切换。PAM提供了对所有服务进行认证的中央机制,适用于login,远程登录(telnet,rlogin,fsh,ftp),su等应用程序中,系统管理员通过PAM配置文件来制定不同应用程序的不同认证策略。

  PAM认证首先要确定哪一项服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证文件(位于/lib/security下)进行安全认证。用户访问服务器的时候,服务器某一个服务程序把用户的请求发送到PAM模块进行认证,不用的应用程序对应的PAM模块也是不同的。

二、PAM认证用法

  如果想查看某个程序是否支持PAM认证,那么可以进行过滤,例如:

  ~] #ls /etc/pam.d | grep su(这里su是一个文件,一个配置文件,与服务同名,修改它就是对su进行认证配置)

  例如查看su的PAM配置文件:cat  /etc/pam.d/su  每一行都是一个独立的认证过程,每一行可以区分为三个字段:1)认证类型 2)控制类型 3)PAM模块及其参数。

下面简单的介绍四种常见认证类型:

  (1)认证管理(authentication management)接受用户名和密码,进而对该用户的密码进行认证

  (2)账户管理(account management)检查账户是否被允许登录系统,账号是否已经过期,账号的登录是否有时间段的限制等

  (3)密码管理(password management)主要是用来修改用户的密码

  (4)会话管理(session management)主要是提供对会话的管理和记账(accounting)

那么控制类型也可以称做Control Flags,用于PAM验证类型的返回结果,具体有以下四种:

  (1)required验证失败时仍然继续验证,但返回Fail

  (2)requisite验证失败则立即结束整个验证过程,返回Fail

  (3)sufficient验证成功则立即返回,不再继续,否则忽略结果并继续

  (4)optional不用于验证,只是显示信息(通常用于session类型)

三、PAM验证流程

  

下面解读验证示例表格

  以use1举例,第一个required控制类型通过调用module1模块,进行验证通过后,进入sufficient控制类型,通过后,进入required控制类型,N/A代表不需要再执行了,结果就是验证成功。

  

四、案例分析

  例:控制用户使用su命令进行切换

  1)、启用/etc/pam.d/su中的pam_wheel模块

  pam_rootok:检查用户是否为超级用户,如果是超级用户(uid=0)则无条件地通过认证

  pam_wheel:只允许wheel组的用户有超级用户的存取权限(只有wheel组里的人有su命令权限)

  2)添加授权用户bob到wheel组

  3)测试:bob可以切换到root,其他用户不能切换

具体操作方法:

  ~] #vim /etc/pam.d/su

  添加一行或者放行注释

  auth        required         pam_wheel.so  use_uid

  ~] #gpasswd -a bob  wheel

  

linux系统安全及应用——PAM安全认证的更多相关文章

  1. 我是怎样和Linux系统结缘并通过红帽RHCE认证的

    我高考完当时就是选择的计算机科学与技术专业,上大学以后联想到的和计算机相关的就只有写代码,开发,网站,网页设计,就没有其他的了,当时学习写代码也都是在Windows上,什么C#.C++之类的?大约在大 ...

  2. linux入门教程(五) Linux系统的远程登录

    首先要说一下,该部分内容对于linux初学者来讲并不是特别重要的,可以先跳过该章节,先学下一章,等学完后再回来看这一章. Linux大多应用于服务器,而服务器不可能像PC一样放在办公室,它们是放在ID ...

  3. 使用XShell工具密钥认证登录Linux系统

    如果你是一名Linux运维,那么Linux服务器的系统安全问题,可能是你要考虑的,而系统登录方式有两种,密码和密钥.哪一种更加安全呢? 无疑是后者! 这里我为大家分享用Xshell利器使用密钥的方式登 ...

  4. 我眼中的Linux系统和红帽RHCE认证

    牛顿曾经说过“我不知道在别人看来,我是什么样的人:但在我自己看来,我不过就象是一个在海滨玩耍的小孩,为不时发现比寻常更为光滑的一块卵石或比寻常更为美丽的一片贝壳而沾沾自喜,而对于展现在我面前的浩瀚的真 ...

  5. linux系统(ubuntu14.04)安装mentohust完毕校园网锐捷认证

    近来升级电脑又一次做了系统.再次面临这linux系统下的各种校园网上网限制. 我在这里採用了mentohust来完毕锐捷认证. 这里我们选择Mentohust取代锐捷. Mentohust 是由华中科 ...

  6. 《Linux就该这么学》培训笔记_ch00_认识Linux系统和红帽认证

    <Linux就该这么学>培训笔记_ch00_认识Linux系统和红帽认证 文章最后会post上书本的笔记照片. 文章主要内容: 认识开源 Linux系统的种类及优势特性 认识红帽系统及红帽 ...

  7. Linux系统安全配置基线

    一:共享账号检查 配置名称:用户账号分配检查,避免共享账号存在 配置要求:1.系统需按照实际用户分配账号: 2.避免不同用户间共享账号,避免用户账号和服务器间通信使用的账号共享. 操作指南:参考配置操 ...

  8. Linux基础入门之vsFTP+MySQL/MariaDB认证实现虚拟用户配置详解

    https://www.dwhd.org/20150603_144841.html 摘要 VSFTP可以使用系统账户或者匿名账户登录,但是出于安全的考虑,通常建议使用vsftp虚拟账户来登录ftp服务 ...

  9. Linux系统用户与属组管理(3)

    好了,终于要到了管理 Linux 账号的时刻了,对于 Linux 有一定的熟悉度之后,再来就是要管理连上 Linux 的账号问题了,这个账号的问题可大可小,大到可以限制他使用 Linux 主机的各项资 ...

随机推荐

  1. Nodejs开发Office插件

    如果使用Nodejs开发Office插件,需要借助Yeoman包去生成Office插件 yeoman地址是:http://yeoman.io/generators/,输入office 源码地址是:ht ...

  2. wordpress 学习笔记

    (1) __()函数 function __( $text, $domain = 'default' ) { return translate( $text, $domain ); } 返回一个字符串 ...

  3. 编译错误error:&nbsp;invalid&amp;nbsp…

    昨天遇到一个莫名其妙的编译错误,以前没有见过,而且代码流程看起来也没有太多的奇异之处.后来忍无可忍,百度了下,发现别人也有遇到这个错误的,他的解决方法是:少了"}". 嘿嘿,我开始 ...

  4. 2&nbsp;时间管理和内存管理

    时间管理 uC/OS-II的时间管理是通过定时中断来实现的,该定时中断一般为10毫秒或100毫秒发生一次(这个时间片段是OS的作者推荐的,大家可以参考邵贝贝翻译的<嵌入式实时操作系统ucos-I ...

  5. Bootstrap 概览

    目录1.移动设备2.响应式图片3.Normalize4.Containers 1.移动设备在Bootstrap 3中,我们重写了整个框架,使其一开始就是对移动设备友好的.这次不是简单的增加一些可选的针 ...

  6. vbs获取html内容

    Dim content,name,password,arr,pos msg1="请输入ip和端口号地址"&chr(13)&chr(10)&"如ht ...

  7. 【HDU4960】Another OCD Patient

    题意 给出一个长度为n的整数序列.可以将一段连续的序列进行合并.合并的长度不同代价不同.问付出最少多少代价可以将这个序列变成一个对称的序列.n<=5000 分析 一看题感觉是个dp很好写啊.f[ ...

  8. 算法优化》关于1D*1D的DP的优化

    关于这一主题的DP问题的优化方法,我以前写过一篇博客与其有关,是关于对递推形DP的前缀和优化,那么这种优化方法就不再赘述了. 什么叫1D*1D的DP捏,就是一共有N种状态,而每种状态都要N种决策,这就 ...

  9. 面试题:HTTP必知必会——常见面试题总结 背1

    1.常用的HTTP方法有哪些?GET: 用于请求访问已经被URI(统一资源标识符)识别的资源,可以通过URL传参给服务器POST:用于传输信息给服务器,主要功能与GET方法类似,但一般推荐使用POST ...

  10. SHELL读取 ini 格式文件做配置文件

    ini文件格式一般都是由节.键.值三部分组成 格式: [第一节 ] 第一个键 = 值 第二个键 = 第二个值 [第二节 ] 第一个键 = val1,val2,val3 例子: [COM] KINGGO ...