lxgi&

导航

Linux下使用vsftp搭建ftp服务器

Linux下FTP Server评估(vsftpd、pure-ftpd、proftpd)

首先大家可以看看这篇文章
我觉得其中写得很不错,结合自己的部分测试经验,很是认同其中的观点
 
根据各人的需求不同,所以FTP选择也是不一样,就几个方面介绍一下
假如你是需要一个支持很多外部模块和可以灵活配置的FTP服务器,那你可以选择: ProFTPd
假如你是需要一个很容易配置而且很安全的的FTP服务器,向你推荐:  PureFTPd
假如你需要的是超高性能且高安全性的FTP服务器,那就是: vsftpd
 
个人认为(分以下几方面说(左边最优)):
易用性
PureFTPd > ProFTPd > vsftpd
功能性
ProFTPd > PureFTPd > vsftpd
安全性
vsftpd > PureFTPd > ProFTPd
性能
vsftpd > PureFTPd > ProFTPd
附:就易用性和功能性来说,这个评定我是认为没问题的
而其中pureftpd的安全性优于proftpd的理由是:proftpd是由wu-ftpd增加安全性重新修改而来,旧版的proftpd如果不会打安全补丁反而容易受攻击(当然也是这个软件很受欢迎的原因),新版本的安全性应该是比较好了。另外pure-ftpd在设计之初就是考虑安全,个人认为pure-ftpd稍微好一点,这个是个人主观感觉,没有测试过,仅供参考。
性能方面也把pureftpd放在proftpd之前,其实也是主观感觉,实际上这两者应该是差不多的,但是有数据表明,pure-ftpd进程的内存占用方面是比proftpd占用得较少。所以这个也只得委屈proftpd了。
总结:总体来说,这几款FTP软件选择主要看你的实际需求,是否偏重于哪方面。另外pureftpd和proftpd实际上差不多,具体选择也看个人喜好。
 
下面则是这些FTP软件的主站点和管理工具站点,记录一下
Pure-FTPD
Pure-FTPd管理工具
PureUserAdmin
User manager for PureFTPd
ProFTPD
proFTPd Administrator
 
 
 

1.安装vsftp,yum install vsftpd,我用的是ubuntu,直接apt-get就完了

2.配置vsftpd.conf, vim /etc/vsftpd.conf

下面说说里面比较重要的选项

 
 1 anonymous_enable=NO #不允许匿名用户
 2 
 3 local_enable=YES #允许使用本地用户账号登陆
 4 
 5 write_enable=YES #允许ftp用户写数据
 6 
 7 connect_from_port_20=YES #通过20端口传输数据
 8 
 9 chroot_local_user=YES #将用户锁定在自己的主目录,如 /home/ftpuser,这样ftpuser这个用户就不能访问除此目录之外的目录
10 
11 chroot_list_enable=YES #启用不锁定用户在主目录的名单
12 
13 chroot_list_file=/etc/vsftpd.chroot_list #当 chroot_list_enable 启用时,此列表生效,列表中的用户将不受锁定限制,格式为一行一个用户名
 

 

3.创建用户组合用户

1 groupadd ftpgroup
2 
3 useradd ftpuser -g ftpgroup -d /home/XOX/ftproot -M  #创建一个group为ftpgroup,-d 为指定home目录,-M为系统不创建home目录,ftp用户一般是指定一个文件目录为主目录,不会像普通系统用户那样指定/home/xxx为home目录,所以这个目录之前一般是存在的
4 
5 usermod -s /sbin/nologin ftpuser #将ftpuser设为不可作为普通用户登录

 

4.启动vsftp

1 /etc/init.d/vsftpd start

 

5.使用客户端(filezilla、flashfxp等)或者直接在浏览器上输入你的ftp服务器ip,登录即可使用

 

后记

6.安全

1. 什么是PASV模式和PORT模式?

ftp port模式(主动模式)
       主动方式的FTP是这样的:客户端从一个任意的非特权端口N(N>1024)连接到FTP服务器的命令端口(即tcp 21端口)。紧接着客户端开始监听端口N+1,并发送FTP命令“port N+1”到FTP服务器。最后服务器会从它自己的数据端口(20)连接到客户端指定的数据端口(N+1),这样客户端就可以和ftp服务器建立数据传输通 道了。

ftp pasv模式(被动模式)
       在被动方式FTP中,命令连接和数据连接都由客户端。当开启一个FTP连接时,客户端打开两个任意的非特权本地端口(N > 1024和N+1)。第一个端口连接服务器的21端口,但与主动方式的FTP不同,客户端不会提交PORT命令并允许服务器来回连它的数据端口,而是提交 PASV命令。这样做的结果是服务器会开启一个任意的非特权端口(P > 1024),并发送PORT P命令给客户端。然后客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。


ftp port模式只要开启服务器的21和20端口,而ftp pasv需要开启服务器大于1024所有tcp端口和21端口。重网络安全的角度来看的话似乎ftp port模式更安全,而ftp pasv更不安全,那么为什么RFC要在ftp port基础再制定一个ftp pasv模式呢?其实RFC制定ftp pasv模式的主要目的是为了数据传输安全角度出发的,因为ftp port使用固定20端口进行传输数据,那么作为黑客很容使用sniffer等探嗅器抓取ftp数据,这样一来通过ftp port模式传输数据很容易被黑客窃取,因此使用pasv方式来架设ftp server是最安全绝佳方案。

结论:如果只是简单的为了文件共享,完全可以禁用pasv模式,解除开放大量端口的威胁,同时也为防火墙的设置带来便利。


2. vsftpd如何设置pasv模式?


pasv_enable=yes (Default: YES )  设置是否允许pasv模式
pasv_promiscuous=no (Default: NO ) 是否屏蔽对pasv进行安全检查,(当有安全隧道时可禁用)
pasv_max_port=10240  (Default: 0 (use any port) ) pasv使用的最大端口
pasv_min_port=1024  (Default: 0 (use any port) ) pasv使用的最小端口
pasv_address (Default: (none - the address is taken from the incoming connected socket) ) pasv模式中服务器传回的ip地址

 

几点疑问:

我在centos 6.7版本上yum安装的vsftpd ,版本是2.2.2-14

这个版本似乎默认就是pasv模式? 理由:如果不在配置文件中显性指定pasv_enable=no,那么客户端在默认为port连接模式的情况下,首先尝试port模式连接,会提示失败,然后会自动改为pasv模式连接却能成功,我的测试情况是,port模式没连成功过,都是pasv模式,而且防火墙只需要做一个端口的nat,并不像本文档上面所说的,用pasv模式的时候,服务器会产生随机端口来传输数据,造成不好配防火墙,以我的测试来看,这种做数据传输的随机端口不需要做防火墙nat也能成功,所以,不管vsftp 2.2.2这个版本支不支持port模式,主要pasv模式能更简单配置起来就可以了,安全性还更高。

我的配置文件

cat /etc/vsftpd/vsftpd.conf |grep -v ^#

anonymous_enable=NO
local_enable=YES
write_enable=YES
file_open_mode=0777  #这两项决定上传的文件权限
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
listen_port=2222
xferlog_std_format=YES
chroot_local_user=YES
listen=YES
pam_service_name=vsftpd
tcp_wrappers=YES
reverse_lookup_enable=NO

#pasv_enable=YES————————若设置为YES使用PASV模式,设置为NO使用PORT模式

参数说明:

anonymous_enable=NO————————是否允许匿名登录

local_enable=YES————————设定本地用户是否可以登录(主要针对虚拟用户)

write_enable=YES————————设定是否可以进行写操作

local_umask=022————————设定上传后文件的权限掩码

dirmessage_enable=YES——————设定开启目录标语功能

connect_from_port_20=YES————————设定端口20进行数据连接

xferlog_file=/var/log/vsftpd.log——————————设定端口使用标准的记录格式

xferlog_enable=YES————————设定开启日志记录功能

log_ftp_protocol=YES——————————是否将所有FTP请求和相应记录到日志中。启动此项时xferlog_std_format不能被启动。

ascii_upload_enable=YES——————————设定支持ASCII模式的上传功能

ascii_download_enable=YES——————————设定支持ASCII模式的下载功能

listen=YES————————设定该vsftpd服务在STANDALONE模式下工作

pam_service_name=vsftpd——————设定PAM服务下Vsftpd的验证配置文件名

tcp_wrappers=YES————————设定支持TCP Wrappers.

chroot_list_enable=NO——————————是否设定chroot_list_file配置制定的用户列表文件。

chroot_local_user=NO——————————用于指定用户列表文件中的用户是否允许切换到上级目录.

pasv_enable=YES————————若设置为YES使用PASV模式,设置为NO使用PORT模式

posted on 2015-09-16 16:24  lxgi&  阅读(269)  评论(0)    收藏  举报