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

PAM(Pluggable Authentication Modules)即可插拔式认证模块,它是一种高效而且灵活便利的用户级别的认证方式,它也是当前Linux服务器普遍使用的认证方式

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配置的模板,通常情况下我们根据安全需要对于进行修改或者添加相应的项即可。

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文件了。


八、常用的PAM服务模块
  下面是Linux提供的PAM模块列表(只是其中一部分):  
  模块文件    模块功能描述                    相关配置文件 
  pam_access   提供logdaemon风格的登录控制             /etc/security/access.conf   
  pam_chroot   提供类似chroot命令的功能  
  pam_cracklib  对密码的强度进行一定的检查库文件libcrack和字典文件 /usr/lib/cracklib_dict  
  pam_deny    总是无条件地使认证失败   
  pam_env     设置或取消环境变量                 /etc/security/pam_env.conf 
  pam_filter   对输入输出流进行过滤 filters 
  pam_ftp.so   对匿名ftp用户进行认证 
  pam_group    当用户在指定的终端上请求指定的服务时赋予该用户相应的组权限 /etc/security/group.conf 
  pam_issue    在提示用户输入用户名之前显示/etc/issue文件的内容  /etc/issue 
  pam_krb4    对用户密码进行Kerberos认证             相应的Kerberos库文件 
  pam_lastlog   在用户登录成功后显示关于用户上次登录的信息,并维护/var/log/lastlog文件     /var/log/lastlog
  pam_limits   限制用户会话所能使用的系统资源           /etc/security/limits.conf   
  pam_listfile  根据指定的某个文件决定是否允许或禁止提供服务    例如/etc/ftpusers  
  pam_mail    检查用户的邮箱中是否有新邮件            /var/spool/mail/xxxx  
  pam_mkhomedir  为用户建立主目录 /etc/skel/   
  pam_motd    显示/etc/motd文件的内容 /etc/motd  
  pam_nologin   根据/etc/nologin文件的存在与否来决定用户认证是否成功  /etc/nologin  
  pam_permit   总是无条件地使认证成功  
  pam_pwdb    作为pam_unix_xxxx模块的一个替代使用Password Database通用接口进行认证  /etc/pwdb.conf 
  pam_radius   提供远程身份验证拨入用户服务(RADIUS)的认证
  pam_rhosts_auth 利用文件~/.rhosts和 /etc/hosts.equiv对用户进行认证。
  pam_rootok 检查用户是否为超级用户,如果是超级用户则无条件地通过认证。
  pam_securetty  提供标准的Unix securetty检查            /etc/securetty
  pam_time    提供基于时间的控制,比如限制用户只能在某个时间段内才能登录 /etc/security/time.conf 
  pam_unix    提供标准的Unix认证pam_userdb 利用Berkeley DB数据库来检查Berkeley DB用户/密码 /etc/passwd和 /etc/shadow 
  pam_warn    利用syslog( )记录一条告警信息
  pam_wheel    只允许wheel组的用户有超级用户的存取权限
Pluggable Authentication Modules for Linux 可插拨认证模块
当用户访问服务器,服务程序将请求发送到PAM模块,PAM模块根据服务名称在/etc/pam.d目录下选择一个对应的服务文件,最后根据服务文件的内容选择具体的PAM模块进行处理。

通过ldd查看服务程序在编译时是否使用了libpam.so,决定服务程序是否支持PAM认证。
具体的pam文件放在/lib/security目录下,服务文件放在/etc/pam.d目录下

PAM服务文件格式
eg:
auth        required   pam_security.so
auth        required   pam_stack.so service=system-auth
service表示调用子服务文件

Module-type:
       auth              检查用户和密码,分配权限
       account           检查账号是否过期,是否有权登录
       session           从用户登录成功到退出的会话控制
       password          控制用户改密码的过程
control-flag:
       required          要求矣须通过,否则结束退出
       requisite         如果不通过还可继续向下认证,后面有一通过即可。
       sufficient        通过则不需要向下认证
       optional          可选项
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值