0%

Linux搭建vsftpd服务

简介

FTP(文件传输协议)全称是:Very Secure FTP Server。 Vsftpd是linux类操作系统上运行的ftp服务器软件。

FTP会话时采用了两种通道:
控制通道:与ftp服务器进行沟通的通道,链接ftp发送ftp指令都是通过控制通道来完成的。
数据通道:数据通道和ftp服务器进行文件传输或则列表的通道

vsftp提供三种登陆方式:

1.匿名登录
2.本地用户登录
3.虚拟用户登录

vsftpd的特点:

1.较高的安全性需求
2.带宽的限制
3.创建支持虚拟用户
4.支持IPV6
5.中等偏上的性能
6.可分配虚拟IP
7.高速

工作原理

ftp协议中控制连接均是由客户端发起,而数据连接有两种工作方式:Port和Pasv方式

Port模式(主动模式)–> 默认

ftp客户端首先和ftp server的tcp 21端口建立连接,通过这个通道发送命令,客户端要接受数据的时候在这个通道上发送Port命令,Port命令包含了客户端用什么端口(一个大于1024的端口)接受数据,在传送数据的时候,服务器端通过自己的tcp 20端口发送数据。这个时候数据连接由server向client建立一个连接。

Port交互流程:
client端:client链接server的21端口,并发送用户名密码和一个随机在1024上的端口及port命令给server,表明采用主动模式,并开放那个随机的端口。
server端:server收到client发来的Port主动模式命令与端口后,会通过自己的20端口与client那个随机的端口连接后,进行数据传输。

Pasv模式(被动方式)

建立控制通道和Port模式类似,当客户端通过这个通道发送Pasv命令的时候,Ftp server打开了一个位于1024和5000之间的随机端口并且通知客户端在这个端口上进行传输数据请求,然后Ftp server将通过这个端口进行数据传输。这个时候数据连接由client向server建立连接。

Pasv交互流程
client端:client连接server的21号端口,发送用户名密码及pasv命令给server,表明采用被动模式。
server端:server收到client发来的pasv被动模式命令之后,把随机开放在1024上的端口告诉client,client再用自己的20 端口与server的那个随机端口进行连接后进行数据传输。

如果从C/S模型这个角度来说,PORT对于服务器来说是OUTBOUND,而PASV模式对于服务器是INBOUND,这一点请特别注意,尤其是在使用防火墙的企业里,这一点非常关键,如果设置错了,那么客户将无法连接。

安装 (安装环境Ubuntu 14.04)

1
$ sudo apt-get install vsftpd

配置:

1
$ sudo vi /etc/vsftpd.conf

找到以下行:去掉#

anonymous_enable=NO //表示不允许匿名登录
local_enable=YES //设定本地用户可以访问
write_enable=YES //设定可以进行写操作
local_umask=022 //设定上传后文件的权限掩码

保存退出。

重启服务:

1
$ sudo service vsftpd restart

访问:
打开电脑资源管理器,输入(example):
ftp://192.168.0.107