LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 872|回复: 4

那位老兄使用PAM实现VSFTPD虚拟用户登录!

[复制链接]
发表于 2003-9-28 09:06:02 | 显示全部楼层 |阅读模式
我使用的方法是由南北北南老兄提供的,但我按照他的做也一个晚上也没有实现,
事先声明我用的是rh80 ,下面我把南北老兄的实现方法在贴了来,

补充十:通过pam认证方式,添加虚拟用户


通过pam认证,用db_load添加用户,是真正的虚拟用户。现在我们简单的介绍一下,通过以后的学习,我们再深入补充:

1。在/etc/pam.d/目录中创建一个文件ftp
[root@linuxsir001 root]# touch /etc/pam.d/ftp

2。在/etc/pam.d/ftp里面加上如下的两行
auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd_login

3。创建一系统的用户名用密码的文件logins.txt
[root@linuxsir001 root]# touch logins.txt
在logins.txt文件中,输入如下的内容。这个内容您可以自己来定。比如我下面的。其实linuxsir007是FTP的虚拟用户名,123456是linuxsir007的密码;linuxsir008是虚拟用户名,234567是linuxsir008的密码,以此类推,您想加入几个就是几个;下面是我添加的FTP的虚拟用户名和密码。
linuxsir007
123456
linuxsir008
234567
linuxsir009
567890
linuxsir010
678901
linuxsir011
789012

4。创建一个真实的用户名linuxsir006,这个linuxsir006的用户,所在的家目录由您来定。我在这里不多说了。我是按系统默认的来添加的。

[root@linuxsir001 root]# useradd linuxsir006

5。把/etc/hosts复制到/home/linuxsir006,并改变它的属主

[root@linuxsir001 root]#cp /etc/hosts /home/linuxsir006/hosts

[root@linuxsir001 root]#chown linuxsir006.linuxsir006 /home/linuxsir006/hosts

6。通过db_load来创建虚拟用户的库文件。我们在前面建的logins.txt文件,我是放在了/root用户目录下。所以咱们得把目录切换到/root目录来创建虚拟用户的库文件。

[root@linuxsir001 root]# db_load -T -t hash -f logins.txt /etc/vsftpd_login.db

7。更改vsftpd.conf文件,加入如下的几行
pam_service_name=ftp
guest_enable=YES
guest_username=linuxsir006
anon_world_readable_only=NO

8。重启vsFTPd服务器;改了一系列的文件,不要忘记重启vsFTPd服务器

我是用standalone模式的,当然用下面的方法

[root@linuxsir001 root]# service vsftpd restart
关闭 vsftpd: [ 确定 ]
为 vsftpd 启动 vsftpd: [ 确定 ]
[root@linuxsir001 root]#

如果您用的是xinetd模式来启动vsFTPd,我们要重启xinetd服务器
[root@linuxsir001 root]# service xinetd restart
停止 xinetd: [ 确定 ]
启动 xinetd: [ 确定 ]
[root@linuxsir001 root]#

我出现的情况是访问被拒绝!

请大家给点意见,也许只是当事者迷我把哪 给搞错了.:help :help
 楼主| 发表于 2003-9-28 16:03:27 | 显示全部楼层

请版主支持一下!谢谢

我南北老兄的做法在/etc/pam.d/ftp里面加上如下的两行
auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd_login

但当我ftp服务器的时候提示530(未执行连接操作)
而我去掉后登录就没有问题了!
那位老兄下在配置VSFTPD服务器最好是9.0 我们一起研究一下.
 楼主| 发表于 2003-9-29 08:43:06 | 显示全部楼层
怎么没人帮我啊.

自已顶一下
 楼主| 发表于 2003-9-30 09:31:39 | 显示全部楼层

在发一篇关于此类问题的资料,,(以下的测试环境是8.0)

我按照上面的去做还是没有实现.那位老兄有能给点提示.
错误提示还是530,(就是在验证用户的时候错误.)
PAM的应用

  PAM应用也就是在开启了PAM的系统上应用“虚拟用户”功能。下面一个样例演示怎样利用“虚拟用户”来设置vsftpd的PAM。虚拟用户是指不像系统上的真实用户一样客观存在的用户。虚拟用户因此而比真实用户更安全,因为一个像这样有威胁系统安全的账户却仅能使用FTP服务。虚拟用户常用来服务那些不想开放给不被信任用户的内容,一般不影响正常的普通用户。

  1.创建虚拟用户数据库

  使用pam_userdb来鉴别虚拟用户。这需要一个“db”格式的用户名/密码文件。要创建一个“db”格式文件,首先要创建一个在交替行上写有用户名和密码的无格式文本文件,代码如下:

$ vi logins.txt



  编辑文件内容如下:

tom
foo
fred
bar



  上面的“tom”对应着密码“foo”,“fred”对应着密码“bar”。同时用root身份登陆,创建实际的数据库文件,代码如下:

$ db_load -T -t hash -f logins.txt /etc/vsftpd_login.db



  # 要求已安装了Berkeley db 程序

  这样即可创建“/etc/vsftpd_login.db”。如果想改变访问许可权限,可用如下命令:

$ chmod 600 /etc/vsftpd_login.db



  此外,如果想了解更多有关如何维护登陆数据库的知识,可寻找在“Berkeley DB”上的文档资料,网址为http://www.sleepycat.com/docs/utility/index.html。

  2.建一个使用新数据库的PAM文件

  创建编辑文件vsftpd.pam,包含以下两行:

auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login
accound required /lib/security/pam_userdb.so db=/etc/vsftpd_login



  告诉PAM使用新数据库来鉴别用户。把该PAM文件保存到PAM目录(通常为“/etc/pam.d/cp vsftpd.pam /etc/pam.d/ftp”)。

  3.为虚拟用户设置文件位置

  接下来使用以下命令为为虚拟用户设置文件位置:

$ useradd -d /home/ftpsite virtual
$ ls -ld /home/ftpsite



  将显示如下:

drwx------3 virtual  virtual  4096 Jul 30 00:39 /home/ftpsite



  已经创建一个叫做“virtual”的用户,并且有一个主目录“/home/ftpsite”。增加一些内容到这个下载区域,代码如下:

$ cp /etc/hosts /home/ftpsite
$ chown virtual.virtual /home/ftpsite/hosts



  4.定制vsftpd.conf配置文件

  重新定制vsftpd.conf文件:

anonymous_enable=NO
local_enable=YES
# 由于安全因素应关闭匿名FTP,并开启非匿名FTP(虚拟用户需使用)。
write_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
# 出于安全目的写下这些确保命令,不许写命令执行
chroot_local_user=YES
# 限制虚拟用户到我们上面设置的虚拟FTP区域 /home/ftpsite。
guest_enable=YES
guest_username=virtual
# guest_enable很重要,能激活虚拟用户。guest_username表示所有
的虚拟用户都被映射到上面设置的真实用户“virtual”。这也将确定在文件系统上
虚拟用户的最终归宿,用户“virtual”的主目录“/home/ftpsite”。
listen=YES
listen_port=10021
# 这置vsftpd在“standalone”模式,不从inetd运行。这意味着仅需执行vsftpd
运行命令一次,它就开始运行起来。这也使得vsftpd监听在10021的非标准端口上
的FTP需求(FTP通常使用端口21)。
pasv_min_port=30000
pasv_max_port=30999
# 这些命令在被动FTP接收端放置一个端口序列。对配置防火墙很有用。



  5.开始运行vsftpd

  进入vsftpd源代码所在的目录,并执行“./vsftpd”,如果光标一直停在那里说明无误;否则将会看到一些错误信息。
发表于 2003-9-30 12:56:11 | 显示全部楼层
仔细读一读,能做成功的。
关键是,/etc/pam.d/vsftpd 里只能包括上述两行
auth ...
account ...
其余的得注释掉。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表