您的位置:首页 > 运维架构 > Linux

FTP-Linux虚拟服务器配置笔记

2016-07-27 00:03 387 查看

FTP-Linux虚拟服务器配置笔记

因FTP(File transfer protocol)是一个历史久远的协议了,有诸多安全风险,所以实际建议使用SFTP(SSH-FTP) 或者 FTPS(FTP-SSL)或者SCP(Secure copy protocol)。但因为项目需要,最近需要搭建一个简单的FTP服务器。虽然有很多成熟的服务器端和客户端的软件,但这里先大概记一下怎么从最简单的vsftpd(也支持FTPS)开始。

FTP简介

FTP有两种模式,主动模式和被动模式。两种模式中,服务器都主动监听(一般是端口21,FTP控制端口),等待客户的要求。在主动模式里,客户的端口一般是确定的,在建立起连接后,服务器可以(一般是从端口20,FTP数据端口)主动往商量好的客户的端口发送数据。在被动模式里,客户会先通过控制端口明确要求被动模式,然后服务器返回一个新的端口数(不一定是端口20),客户可以以任意端口跟返回的端口数建立连接。所以FTP需要两个端口去运作。

配置

环境:远程虚拟服务器, 这里用的是Vultr的服务器(CentOS Linux 2.6.32)。简单配置,被动模式,并且允许匿名登录和上传文件。

先获得root权限,如果没有ftp,装ftp,取决于服务器上有什么package manager,这里用yum

$ yum install ftp

装vsftpd

$ yum install vsftpd

$service vsftpd start

即可启动ftp服务。 可以在vsftpd后面跟不同的指令start、stop、status、reload、restart。在重新配置了ftp之后,可以reload一下让新配置生效。

现在可以服务器本地测试一下ftp:

$ ftp localhost

如果能连上即说明ftp已经搭建好,但此时应该会被询问用户名和密码。

设置匿名登录:

先确定ftp已经存在在passwd文件里:

$ grep ftp /etc/passwd

然后确保以下文件夹存在:

$ mkdir /var/ftp/uploads

最后:

$ chmod 777 /var/ftp/uploads

因为vsftpd不让匿名直接在anon_root目录下写入,我们需要在anon_root(预设是/var/ftp)下创建一个uploads目录并且改变它权限,允许匿名用户写入。写入之后的数据是不能够被下载的。只能由root用户读取。

这个时候可以就可以重新试一下:

$ftp localhost

用户名输入anonymous, 密码可以空格跳过,如果有 230 Login successful 即成功了。

也可以通过直接修改vsftpd的配置文件:

$ nano /etc/vsftpd/vsftpd.conf

加入几行:

anonymous_enable=YES

anon_upload_enable=YES

anon_root=/var/ftp/incoming


对于配置文件,可以有很多设置,例如,加入:

write_enable=YES


就能允许客户端写,详细的说明,见文档

现在要设置一下防火墙,打开端口21和端口20:

$ modprobe ip_conntrack_ftp

$ iptables -A INPUT -p tcp -m tcp –dport 21 -m conntrack –ctstate ESTABLISHED,NEW -j ACCEPT -m comment –comment “Allow ftp connections on port 21”

$ iptables -A OUTPUT -p tcp -m tcp –dport 21 -m conntrack –ctstate NEW,ESTABLISHED -j ACCEPT -m comment –comment “Allow ftp connections on port 21”

$ iptables -A INPUT -p tcp -m tcp –dport 20 -m conntrack –ctstate ESTABLISHED,RELATED -j ACCEPT -m comment –comment “Allow ftp connections on port 20”

$ iptables -A OUTPUT -p tcp -m tcp –dport 20 -m conntrack –ctstate ESTABLISHED -j ACCEPT -m comment –comment “Allow ftp connections on port 20”

$ iptables -A INPUT -p tcp -m tcp –sport 1024: –dport 1024: -m conntrack –ctstate ESTABLISHED -j ACCEPT -m comment –comment “Allow passive inbound connections”

$ iptables -A OUTPUT -p tcp -m tcp –sport 1024: –dport 1024: -m conntrack –ctstate ESTABLISHED,RELATED -j ACCEPT -m comment –comment “Allow passive inbound connections”

最后,保存一下:

$ service iptables save

重启防火墙:

$ service iptables restart

如果之前防火墙规则太多可以:

$ iptables –flush

清理所有规则。

测试连接,可以用一个移动端的ftp client测试,或者最直接的:https://ftptest.net/

上传测试,可以用一个client测试,这里以mac为例:

$ ftp ip

输入anonymous作为用户名,跳过密码。

$ put <本地文件路径> /uploads/<文件名>



至此,大功告成!下一篇则介绍如何在Android上搭建客户端。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  FTP Linux