用PAM认证加强Linux服务器安全(1)


PAM(Pluggable Authentication Modules)即可插拔式认证模块,它是一种高效而且灵活便利的用户级别的认证方式,它也是当前Linux服务器普遍使用的认证方式。当然,在不同版本的Linux统中部署PAM认证是有所不同的,本文将以RHEL4版本为例进行解析。

1.部署PAM认证的必要性

我们知道一台Linux服务器会开许多不同的服务,这些服务中很多服务本身并没有认证功能,只是把认证交给用户名及密码。如果这样的话,那么所有服务都用Linux系统的用户名及密码来认证,对于服务器来说是很危险的。比如一台服务器开着FTP、SMTP、SSH等服务,那么新建一个用户默认就享有对以上的服务的操作权限,那么如果一个用户的帐号密码泄露会涉及到多个服务。因此,不管是PC还是服务器在类Linux系统中部署PAM认证是非常必要的。通过新型的认证模块——PAM就能解决认证方面的不足,加强Linux系统安全。

2.PAM认证的方式

PAM认证一般遵循这样的顺序:Service(服务)→PAM(配置文件)→PAM_*.so。PAM认证首先要确定那一项服务,然后加载相应的PAM的配置文件(位于/etc/PAM.d下),最后调用认证文件(位于/lib/security下)进行安全认证。通常情况下,在Linux系统安装完成后会在/etc/PAM.d路径下为我们提供了一些默认的配置文件。另外,大家要知道/lib/security目录是认证文件的默认存放位置。/etc/PAM.d路径下的默认配置文件是我们进行PAM配置的模板,通常情况下我们根据安全需要对于进行修改或者添加相应的项即可。(图1)

3.PAM认证的构成

客观地说PAM认证还是比较复杂的,简单地讲它包括四种常见认证类型(module type):即auth认证管理、account用户管理、password密码认证管理、session会话管理。以/etc/PAM.d/login为例,我们可以看到它的配置文件,区域1中的auth、account、password、session等都是认证类型。区域2中的required、 requisite 、sufficient 、optional是认证的流程控制。最后面的区域3就是认证的PAM文件了。(图2)

3.PAM认证的构成

客观地说PAM认证还是比较复杂的,简单地讲它包括四种常见认证类型(module type):即auth认证管理、account用户管理、password密码认证管理、session会话管理。以/etc/PAM.d/login为例,我们可以看到它的配置文件,区域1中的auth、account、password、session等都是认证类型。区域2中的required、 requisite 、sufficient 、optional是认证的流程控制。最后面的区域3就是认证的PAM文件了。(图2)

用PAM认证加强Linux服务器安全

4.PAM认证的流程

为了便于大家深入了解PAM认证的流程,我们以验证用户登录的PAM-login为例进行说明。PAM认证流程是从行首验证到行尾,逐条认证。比如用户登录服务器,共有十条auth类型认证,假设第一条认证失败,一般情况后九条也必须要认证。为什么就一般情况呢?其实还有非一般情况。那么这个用户动作成功与否是要看auth认证后面的区域2是怎么处理的。在图2中看到处理字段有required和optional,其中required代表认证必须通过,也就是说,无论成功多少条语句,只要失败一条,那么认证就失败。在图2中看到的区域3就是认证的模块了,第二行中的“PAM_securetty.so”就是这个文件。在RHEL中,认证多是用相对路径。


相关内容