用Linux构建高效FTP服务器(3)

来源:Asp之家 时间:2010-08-23 19:05:00 

在实际应用中,有时为了增加安全性,会将FTP服务器置于防火墙之后。如本文开头所述,被动传输模式适合于带有防火墙的情况。下面就来创建一个防火墙后的FTP服务器,该服务器FTP端口为2121,数据传输端口为2020。

执行以下两行指令,只允许2121和2020端口打开,其余端口关闭:

#iptables -A INPUT -p tcp -m multiport --dport 2121,2020 -j ACCEPT

#iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset

修改/etc/vsftpd/vsftpd.conf文件,在文本最后添加以下两行:

listen_port=2121

ftp_data_port=2020

重新启动vsftpd:

#service vsftpd restart

有时希望直接在/etc/hosts.allow中定义允许或拒绝某一源地址,可以通过以下配置来实现。先确保/etc/vsftpd/vsftpd.conf中tcp_wrappers=YES,Red Hat 9.0中,这是默认值。重新启动vsftpd

#service vsftpd restart

假设提供168.192.2.1和210.31.8.1到210.31.8.254的连接,则可对/etc/hosts.allow进行如下设定:

vsftpd : 168.192.2.1 210.31.8. : allow

ALL : ALL : DENY

配置虚拟用户FTP

上面配置的FTP服务器有一个特点,就是FTP服务器的用户本身也是系统用户。这显然是一个安全隐患,因为这些用户不仅能够访问FTP,也能够访问其它的系统资源。如何解决这个问题呢?答案就是创建一个虚拟用户的FTP服务器。虚拟用户的特点是只能访问服务器为其提供的FTP服务,而不能访问系统的其它资源。所以,如果想让用户对FTP服务器站内具有写权限,但又不允许访问系统其它资源,可以使用虚拟用户来提高系统的安全性。

在VSFTP中,认证这些虚拟用户使用的是单独的口令库文件(pam_userdb),由可插入认证模块(PAM)认证。使用这种方式更加安全,并且配置更加灵活。

下面介绍配置过程。

1.生成虚拟用户口令库文件。为了建立此口令库文件,先要生成一个文本文件。该文件的格式如下,单数行为用户名,偶数行为口令:

#vi account.txt

ylg

1234

zhanghong

4321

gou

5678

2.生成口令库文件,并修改其权限:

#db_load -T -t hash -f 。/account.txt /etc/vsftpd/account.db

#chmod 600 /etc/vsftpd/account.db

3.新建一个虚拟用户的PAM文件。加上如下两行内容:

#vi /etc/pam.d/vsftp.vu

auth required /lib/security/pam_userdb.so db=/etc/vsftpd/account

account required /lib/security/pam_userdb.so db=/etc/vsftpd/account

4.建立虚拟用户,设置该用户所要访问的目录,并设置虚拟用户访问的权限:

#useradd -d /ftpsite virtual_user

#chmod 700 /ftpsite

经过该步骤的设置,/ftpsite就是virtual_user用户的主目录,该用户也是/ftpsite目录的拥有者。除root用户之外,只有该用户具有对该目录的读、写和执行的权限。

5.生成一个测试文件。先切换至virtual_user用户身份,然后在/ftpsite目录下创建一个文件:

#su -virtual_user

$vi /ftpsite/mytest

This is a test file.

$su - root

6.编辑/etc/vsftpd/vsftpd.conf文件,使其整个文件内容如下所示(去掉了注释内容):

anonymous_enable=NO

local_enable=YES

local_umask=022

xferlog_enable=YES

connect_from_port_20=YES

xferlog_std_format=YES

listen=YES

write_enable=YES

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

one_process_model=NO

chroot_local_user=YES

ftpd_banner=Welcom to my FTP server.

anon_world_readable_only=NO

guest_enable=YES

guest_username=virtual_user

pam_service_name=vsftp.vu

上面代码中,guest_enable=YES表示启用虚拟用户;guest_username=virtual则是将虚拟用户映射为本地用户,这样虚拟用户登录后才能进入本地用户virtual的目录/ftpsite;pam_service_name=vsftp.vu指定PAM的配置文件为vsftp.vu。

标签:服务器,FTP,Linux
0
投稿

猜你喜欢

  • MSN骤启强制升级 微软:月初已提前公示

    2009-11-26 12:41:00
  • 全国百所高校大学生参加奥运观方站 前五名可得一百万创业基金

    2008-06-30 14:08:00
  • 如何删除GODADDY主机免费空间?

    2010-04-17 13:17:00
  • 教您为Discuz!论坛轻松“换装”

    2009-03-05 13:23:00
  • Discuz!7.0论坛帮助功能详解

    2009-03-11 16:24:00
  • 原创:使用nginx实现网站负载均衡测试实例

    2009-11-21 12:15:00
  • 金子(搜索引擎)与掘金者(SEOer)

    2009-09-26 11:28:00
  • 七个维护服务器安全的技巧

    2008-12-30 14:22:00
  • 淘宝再掀网络打黑风暴 宣战炒信黑色产业链

    2009-11-10 08:48:00
  • 虚拟机备份应该注意的五个问题

    2009-09-19 20:29:00
  • Google Adsense的技巧、诀窍和秘密

    2008-02-28 12:09:00
  • IIS网站服务器安全设置

    2009-08-01 16:28:00
  • 《商业大亨》狂欢趣味万圣节 迎月晋级赛8强

    2009-10-30 11:05:00
  • 在Windows系统下搭建SVN服务器

    2009-08-30 08:00:00
  • WordPress模板的image.php

    2011-09-22 20:41:26
  • 解读Hishop网店系统货源代理分销模式

    2009-11-21 11:50:00
  • 使用反向代理技术保护Web服务器

    2008-11-03 13:10:00
  • 站长购买美国主机选择10个基本参考 别给空间商忽悠

    2010-03-25 14:21:00
  • phpwind6.3关于IE下当生成html时帖子页面右下角的跳转功能问题

    2009-02-20 15:56:00
  • 网络营销无难事:逃走的浏览者

    2009-02-25 18:46:00
  • asp之家 网站运营 m.aspxhome.com