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

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)。简单配置,被动模式,并且允许匿名登录和上传文件。

  1. 先获得root权限,如果没有ftp,装ftp,取决于服务器上有什么package manager,这里用yum
    $ yum install ftp
  2. 装vsftpd
    $ yum install vsftpd
  3. $service vsftpd start
    即可启动ftp服务。 可以在vsftpd后面跟不同的指令start、stop、status、reload、restart。在重新配置了ftp之后,可以reload一下让新配置生效。
  4. 现在可以服务器本地测试一下ftp:
    $ ftp localhost
    如果能连上即说明ftp已经搭建好,但此时应该会被询问用户名和密码。

  5. 设置匿名登录:
    先确定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

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

  6. 现在要设置一下防火墙,打开端口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

    清理所有规则。

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

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

    $ ftp ip

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

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

    FTP匿名上传

    至此,大功告成!下一篇则介绍如何在Android上搭建客户端。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值