linux pam 使用例子,PAM认证模块使用实例

PAM认证模块使用实例

概述:本文给出几个通过自定义配置PAM提高网络服务安全性的例子,希望对试图进一步了解PAM的朋友起到抛砖引玉的作用。

源贴:http://blog.163.com/zhzh_lin/blog/static/4053871520079151859785/

实例一:系统使用proftpd提供ftp服务,但是不希望任何用户都可以访问ftp服务,希望可以定义一个文件,只有在该文件中定义的用户可以使用ftp服务。

通过分析需求,我们可以知道,也就是要实现基于用户名的ftp服务的访问控制。通过阅读proftpd的文档,我们可以发现,proftpd是完全支持PAM的。所以我们的实现的思路和步骤是这样的:

首先,打开proftpd的PAM支持,也就是说,告诉proftpd用户认证让PAM去完成。这一点可以通过几个proftpd的配置选项来实现,以下是我们的proftpd.conf配置文件的内容:

#/etc/proftpd.conf

ServerName "proftpd for real user"

ServerType standalone

DefaultServer on

ServerIdent off

Port 21

Umask 022

MaxInstances 3

User nobody

Group nobody

UseReverseDNS off

AuthPAM on

AuthPAMAuthoritative on

AuthPAMConfig ftp

DefaultRoot ~

AllowOverwrite on

我们对关于PAM的几个选项作个说明:

AuthPAM:设置是否采用PAM用户认证模块进行用户认证。

AuthPAMAuthoritative:是否使用PAM作为最终的用户认证方法。

AuthPAMConfig:指定进行PAM认证时使用的配置文件名称,PAM配置文件位于

/etc/pam.d/目录下。

这样设置以后,我们的proftpd就可以支持PAM认证方法了。

我们这样定义/etc/pam.d/ftp文件:

[root@test /root]# more /etc/pam.d/ftp

#%PAM-1.0

auth required /lib/security/pam_listfile.so item=user sense=allow file

=/etc/ftpwho onerr=fail

auth required /lib/security/pam_pwdb.so shadow nullok

account required /lib/security/pam_pwdb.so

session required /lib/security/pam_pwdb.so

中的pam_listfile.so模块就是用来实现基于用户的ftp控制。Item=user就表明是通过用户名进行控制,sense=allow表示

如果用户名出现在/etc/ftpwho文件中就返回认证成功信息,file=/etc/ftpwho指定配置文件,onerr=fail表示如果出现某

些错误(比如无法打开配置文件等)时返回的结果,这里是失败信息。关于pam_listfile模块的详细资料,可以参考解决方案中的“常见的PAM认证

模块简介”系列文章。

然后,我们在/etc下建立ftpwho文件,并在其中加入可以进行ftp访问的用户名,要注意每个用户占一行,之后重启动proftpd,就可以根据这个配置文件通过用户名来对ftp访问进行控制了。

实例二:控制可以登录系统的用户,只有root可以从本地登录,bye2000以及tom用户可以从192.168.1.0网段登录,其他用户均不可以登录系统。

修改/etc/pam.d/login文件如下所示:

root@test /root]# more /etc/pam.d/login

#%PAM-1.0

auth required /lib/security/pam_securetty.so

auth required /lib/security/pam_stack.so service=system-auth

auth required /lib/security/pam_nologin.so

account required /lib/security/pam_stack.so service=system-auth

account required /lib/security/pam_access.so accessfile=/etc/login.conf

password required /lib/security/pam_stack.so service=system-auth

session required /lib/security/pam_stack.so service=system-auth

session optional /lib/security/pam_console.so

即,我们在原来的基础上加入了以下这一条规则:

account required /lib/security/pam_access.so accessfile=/etc/login.conf

这条规则的意思时,我们使用pam_access模块,通过配置文件/etc/login.conf来对用户访问进行控制,accessfile参数即指明了配置文件的完整路径。

根据需求,我们的/etc/login.conf文件内容如下:

[root@test /root]# more /etc/login.conf

+:root:LOCAL

+:bye2000 tom:192.168.1.

-:ALL:ALL

该配置文件说明:

该文件的每一行由如下三个字段构成,中间使用冒号分割:

权限 : 用户 : 来源

权限字段可以是”+”(即允许访问),”-”(禁止访问);

用户字段可以是用户名、组名以及诸如user@host格式的用户名,ALL表示任何人,

具有多个值时,可以用空格分开。

来源字段可以是tty名称(本地登录时)、主机名、域名(以”.”开始),主机ip地址,网络号(以”.”结束)。ALL表示任何主机,LOCAL表示本地登录。

可以使用EXCEPT操作符来表示除了…之外。

所以:

+:root:LOCAL---表示root用户可以从本地登录。

+:bye2000 tom:192.168.1.---表示bye2000和tom可以从192.168.1.0/24网段telnet登录。

-:ALL:ALL---表示拒绝其他任何人登录。

关于pam_access模块的详细资料,可以参考解决方案中的“常见的PAM认证模块简介”系列文章。

===========================================

导读:承接上篇Linux-PAM配置的文章,本文给出使用PAM技术对用户进行安全认证,提高系统以及网络服务安全性的例子,向读者介绍如何在实践中对该机制进行熟练的使用。

关键词:Linux-PAM技术应用实例 PAM用户登录控制 FTP登录控制

承接上篇Linux高级安全认证PAM的配置方法的

文章,本节将给出几个使用PAM技术对用户进行安全认证,从而提高系统以及网络服务安全性的例子,来向读者介绍如何在实践中对该机制进行熟练的使用。在系

统用户的认证中,我们将介绍如何使用PAM来控制用户登录;在网络服务安全保证的例子中,我们将介绍如何控制FTP服务器的用户登录问题。

3.1  使用linux-PAM控制用户安全登录

假设系统的安全需求为:控制可以登录系统的用户,只允许root用户可以从本地登录,并且只允许liyang用户可以从192.168.13.8网段远程登录Linux系统,其他用户均不可以登录系统。

为了完成上述安全控制功能,我们需要修改/etc/pam.d/login文件,加入新的规则如图 2中白色区域所示:

2009-11-17-13-10-05.gif

图2

不难看出,我们在原来的基础上加入了以下这一条规则(在上述程序段用黑体标明):

account required /lib/security/pam_access.so accessfile=/etc/login.conf

这条规则的具体含义是我们使用pam_access模块,通过配置文件/etc/login.conf来对用户访问进行控制,accessfile参数即指明了配置文件的完整路径。

根据需求,我们的/etc/login.conf文件内容如下:

# vi /etc/login.conf  +:root:LOCAL  +:liyang:192.168.13.  -:ALL:ALL

该配置文件的含义如下:

+:root:LOCAL:表示root用户可以从本地登录  +:liyang:192.168.13.:表示用户liyang可以从192.168.13.8/24网段远程登录Linux系统  -:ALL:ALL:表示拒绝其他任何人登录

可以清楚地看到,该文件的每一行由如下三个字段构成,中间使用冒号分割,格式为:权限 : 用户 : 来源

权限字段使用“+”表示允许访问,“-”表示禁止访问;

用户字段可以是用户名、组名以及诸如格式的用户名,ALL表示任何人,具有多个值时,可以用空格分开;

来源字段可以是tty名称(本地登录时)、主机名、域名(以“.”开始),主机IP地址,网络号(以“.”结束)。ALL表示任何主机,LOCAL表

示本地登录。这里需要特别强调一下:ALL字段在/etc/login.conf文件中出现的顺序非常重要。如果它出现在文件头部,那么后续的其他字段所

表示的访问权限将随之失效;如果它出现在其他字段之后,那么其他的字段将生效。所以一般建议将ALL字段表示的访问权限置于文件末尾处,以保证其他访问权

限的正常解析和使用。

3.2  使用Linux-PAM控制Samba用户的共享登录

在Samba中集成PAM的访问控制功能,非常简单,只需要完成如下两个步骤即可。首先,在Samba服务器的配置文件smb.conf的[global]配置段中,保证如下的语句未被屏蔽:

obey pam restrictions = yes

然后,保证有关Samba的PAM配置/etc/pam.d/samba文件正常即可,该配置文件如图 3所示:

2009-11-17-13-11-13.gif

图3

3.3  使用Linux-PAM控制FTP用户的登录

假设Linux系统提供FTP服务,但是不希望任何用户都可以轻易地访问该服务,只允许在一个事先定义好的文件中规定的用户可以使用该FTP服务。那么,我们就可以使用Linux-PAM机制来实现该控制。

当然,值得注意的是该FTP服务需要支持Linux-PAM。幸运的是,当前Linux中的proftpd、vsftpd等都对其完全支持。在下面的例子中,我们将以最新的vsftpd为例来进行举例说明。

首先,我们需要定义与认证相关的/etc/pam.d/vsftpd文件如图 4所示:

2009-11-17-13-12-09.gif

图4

其中的pam_listfile.so模块就是用来实现基于用户的FTP控制。Item=user就表明是通过用户名进行控

制,sense=allow表示如果用户名出现在/etc/vsftpd.ftpusers文件中就返回认证成功信息,file=/etc

/vsftpd.ftpusers指定配置文件,onerr=succeed表示如果出现某些错误(比如无法打开配置文件等)时返回的结果,这里是成功信

息。

然后,我们需要编辑/etc/vsftpd/ftpusers文件,并在其中加入可以进行ftp访问的用户名,要注意每个用户占一行(如下所示),之后重启动vsftpd即可,就可以根据这个配置文件通过用户名来对FTP访问进行控制了,如图 5所示:

2009-11-17-13-13-04.gif

图5

转自:http://www.searchsecurity.com.cn/showcontent_28788.htm

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值