用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
投稿

猜你喜欢

  • 搜索引擎如何判断文章是否原创?

    2007-10-22 22:49:00
  • 新站的站长,你需要怎么去推广新站

    2009-03-16 06:30:00
  • 使用Docker Compose搭建部署ElasticSearch的配置过程

    2021-12-14 13:41:33
  • 马云时隔十年或将重办中国黄页

    2008-03-24 17:00:00
  • 美国当前较流行十大Windows主机提供商推荐

    2010-02-28 13:13:00
  • UCenter Home2.0“道具转让许可证”道具使用说明

    2009-08-20 12:07:00
  • 口碑式营销 向权威博客站投稿的十个技巧

    2009-02-05 15:00:00
  • 地图网站怎么赚钱?

    2007-11-19 14:20:00
  • 与实力站长的对话

    2007-09-18 23:00:00
  • 遭“钓鱼”网骗光生活费 大学生发帖人肉骗子

    2009-10-13 13:46:00
  • 让百度三天就收录的诀窍

    2009-04-02 11:25:00
  • 在Fedora上建立自己的邮件服务器(2)

    2007-09-07 14:02:00
  • adsense如何更改收款人姓名

    2008-03-16 15:30:00
  • 提高网站浏览量的方法

    2007-08-24 13:03:00
  • 百度或将成为腾讯王国的时代终结者

    2008-02-21 11:49:00
  • 关于网站流量的一些想法

    2008-02-15 07:39:00
  • 有些网站不需要SEO SEO要看什么样条件

    2008-12-19 14:40:00
  • Wordpress3.0中文标签链接出现404错误页的BUG

    2011-04-21 16:08:00
  • Node.js环境在linux上的部署教程

    2023-11-04 20:44:07
  • 分享购买ixwebhosting主机的过程

    2010-03-23 13:40:00
  • asp之家 网站运营 m.aspxhome.com