FTP Server程序库方案探究
【引言】
FTP(文件传输协议),顾名思义就是两台计算机之间的文件传输协议,本地计算机和远程服务器。FTP服务器是一种运行在Web服务器上的网络服务器,在服务器端使用FTP协议来管理文件传输、连接和用户。
【Apache FtpServer】
【授权与概述】
Apache FtpServer是一个100%纯Java的FTP服务器。它被设计成一个基于当前可用的开放协议的、完整的、可移植的FTP服务器引擎。FtpServer可以作为一个Windows服务或Unix/Linux守护进程独立运行,也可以嵌入到Java应用程序中。
使用GPL授权模式。
其功能列表如下:
l 100%纯Java,免费,免费,开源的FTP服务器
l 多平台支持,多线程设计,。
l 用户虚拟目录,写权限,空闲超时,支持上传/下载带宽限制。
l 支持匿名登录。
l 上传和下载文件均可断点续传。
l 同时处理ASCII和二进制数据传输。
l 支持IP限制,支持禁止IP。
l 数据库和文件可用于存储用户数据。
l 所有的FTP消息都可以自定义。
l 隐式/显式SSL/TLS支持。
l 支持MDTM - 你的用户可以改变文件的日期时间戳。
l "MODE Z "支持更快的数据上传/下载。
l 可轻松添加自定义用户管理器、IP限制器、记录器。
l 可以添加用户事件通知(Ftplet)。
【安全性】
https://nvd.nist.gov/view/vuln/search-results?query=FtpServer&search_type=all&cves=on
有59个漏洞。
【使用分布状况】
https://www.shodan.io/search?query=FtpServer
搜索到5500个用户。
【工程网站】
https://mina.apache.org/ftpserver-project/
【最新发布】
最新版本:1.1.1
发布时间:2017年5月15日
【编程语言】
Java
现在我们来看看有哪些FTP Server的替代方案,本文我们会讨论三个可替代方案,在最后我们会小结一下。
【1 缩略语】
GPL: The GNU General Public License (GNU GPL or GPL) 通用公共许可证
CVE:Common Vulnerabilities and Exposures常见的漏洞和风险
LGPL: GNU Lesser General Public License (LGPL) version 3 :较小的一般公共许可证版本3
【2 ProFTPd】
2.1授权与概述
ProFTPd有很多的插件,是以Apache的配置架构为模型,也使用了GPL的授权。
ProFTPd是一个模块化的FTP服务器,已经有很长一段时间了。大型的控制面板(cPanel、DirectAdmin)都支持ProFTPd,而且已经支持多年。
ProFTPd的配置相当简单,在Google上快速搜索一下就能看到很多配置文件的例子。
ProFTPd可用于各种系统架构和操作系统。
2.2安全性
在所有的可替代方案中,ProFTPd的CVE(常见的漏洞和风险)漏洞最多,有54个。这么高的数字,很可能是ProFTPd的广泛使用,使它成为黑客的目标。
下面是ProFTPd安全性相关问题列表:
https://nvd.nist.gov/view/vuln/search-results?query=proftpd&search_type=all&cves=on
2.3使用分布状况
共搜到一百万以上的使用结果。
https://www.shodan.io/search?query=ProFTPd+
2.4工程网站
2.5最新发布
最新版本:1.3.7rc3
发布时间:2020年2月18日
2.6编程语言
C语言
2.7主要亮点
l 每个目录配置中的".ftpaccess "类似于Apache的".htaccess"。
l 匿名FTP支持
l 配置单个或多个虚拟FTP服务器或匿名FTP服务
l 支持基于Linux文件系统权限的隐藏文件和目录。
l 日志管理
l 支持IPv6
l 过期账户选项
l 在独立模式下,作为可配置的非特权用户运行。
【3 PureFTPd】
3.1授权与概述
PureFTPd的口号是「安全第一」。PureFTPd使用BSD授权,可在多种操作系统上使用(但不包括Windows)。
PureFTPd的配置很简单,有一个免配置文件选项。虽然PureFTPd不像ProFTPd那样被广泛使用,但PureFTPd在线上也有许多配置范例。
3.2安全性
PureFTPd的 "安全第一 "口号让它在安全方面中处于领先的位置,安全漏洞最少。
搜到有8个漏洞:
https://nvd.nist.gov/view/vuln/search-results?query=pure-ftpd&search_type=all&cves=on
3.3使用分布状况
共搜到124条使用结果。
https://www.shodan.io/search?query=PureFTPd&language=en#
3.4工程网站
https://www.pureftpd.org/project/pure-ftpd/
3.5最新发布
最新版本:1.0.49
发布时间:2020年4月3日
3.6编程语言
C语言
【4 vsftpd】
4.1授权与概述
vsftpd是另一个GPL授权的FTP服务器,它的字面意思是 "非常安全的FTP守护进程"。它是一款以安全为前提的轻量级FTP服务器。
它的轻量级特性使它能够非常有效地扩展,许多大型站点(ftp.redhat.com、ftp.debian.org、ftp.freebsd.org)目前都使用vsftpd作为他们的首选FTP服务器。
4.2安全性
vsftpd在CVE中列出的漏洞数目比ProFTPd少,但比PureFTPd多。这可能是因为它的名字暗示了它是一个安全的FTP服务,也可能是因为它在大型网站中的使用非常广泛,所以它比其他的服务更受关注。
搜到有16个漏洞:
https://nvd.nist.gov/view/vuln/search-results?query=vsftpd&search_type=all&cves=on
4.3使用分布状况
共搜到68万以上的使用结果。
https://www.shodan.io/search?query=vsFTPd
4.4工程网站
https://security.appspot.com/vsftpd.html
4.5最新发布
最新版本:3.0.3
发布时间:2015年
4.6编程语言
C语言
4.7 主要亮点
l 虚拟IP配置
l 用户创建、管理、删除、虚拟用户
l 每个用户的配置
l 带宽节流
l 每源IP配置
l 每个来源-IP限制设置
l 支持IPv6
l SSL:支持
【5 uFTP】
5.1授权与概述
uFTP是一个开源的、轻量级的、可移植的FTP服务器。它主要是为基于Unix/Linux (POSIX)的服务器编写的。
它是在MIT授权下发布的,但它包含了OpenSSL项目开发的OpenSSL工具包的软件,所以我们也要查看OpenSSL授权。
5.2安全性
https://nvd.nist.gov/view/vuln/search-results?query=uftp&search_type=all&cves=on
共发现10个安全问题。
5.3使用分布状况
https://www.shodan.io/search?query=uftp
共有18个使用记录。
5.4工程网站
5.5最新发布
最新版本:NA
发布时间:2019年3月26日
5.6编程语言
C语言
5.7主要亮点
l 易于安装
l 易于配置
l 便携式二进制应用程序
l 开放源码许可的MIT许可
l 轻量级C语言软件
l 只有一个配置文件
l 不需要特殊技能来设置
l 官方维基上有详细的记录
l 该代码和软件可用于商业应用。
l 可移植的C语言源码
l 适用于Unix/Linux和POSIX操作系统。
【6 glFTPd】
6.1授权与概述
glFTPd 是一个开放源码的免费FTP服服器,适用于 Unix/Linux 作业系统。这款免费软体的第一次公开发行可以追溯到1998年初,glFTPd是GreyLine FTP的缩写(GreyLine FTP的原创者)。它可以在FreeBSD、OpenBSD等Unix系统和Ubuntu服务器等Linux发行版中顺利运行。
glFTP支持许多FTP/站点命令,并且在chroot环境下运行,这使得它相对安全。
6.2安全性
https://nvd.nist.gov/view/vuln/search-results?query=glftpd&search_type=all&cves=on
共发现6个安全问题。
6.3使用分布状况
https://www.shodan.io/search?query=glFTPd
共有230个使用记录。
6.4工程网站
6.5最新发布
最新版本:2.10a
发布时间:2019年12月30日
6.6编程语言
C语言
6.7主要亮点
l 在chroot模式下运行
l 虚拟用户管理
l 全局或每个用户的带宽节流
l 加密:通过TLS/SSL
l 上传/下载率控制
l 用户管理:创建、更新、删除
l 使用情况监测和计算
l 支持IPv6
l 用户可以有一个IP掩码
l 下载(DL)和上传(UL)使用量统计
l 支持cookies
l 支持ECDHE的密钥交换,从而使PFS为ECC证书发挥作用。
l 允许向用户添加IPv6掩码
l 显示磁盘空间、使用量、空闲空间、使用过的空间
l 在文件列表中隐藏真实用户名和组名
l 支持 "dirlog "缓存
l 支持XCWD/XMKD/XRMD/XPWD/XCUP FTP命令
l 支持SSCN命令作为SSL FXL的另一种方法。
【7 FileZilla】
7.1授权与概述
FileZilla是一个开源的免费FTP客户端和服务器,它可以作为FTP客户端在多个平台上运行,也可以作为FTP服务器在Windows上运行。FileZilla已经有多年的历史了,它与许多商业付费软件竞争。
FileZilla服务器是Windows的FTP服务器应用程序,它不支持其他平台,但支持Windows 7, 8, 8, 8.1和10,包括32位和64位。FileZilla服务器和客户端是在GPL v2.0下发布的。
2.2安全性
https://nvd.nist.gov/view/vuln/search-results?query=FileZilla&search_type=all&cves=on
共发现17个安全问题。
7.3使用分布状况
共有48万多个使用记录。
7.4工程网站
https://filezilla-project.org/
7.5最新发布
最新版本:3.47.2.1
发布时间:2020年03月11日
7.6编程语言
C++语言
7.7主要亮点
l 仅适用于Windows系统。
l 支持32位,和64位。
l 易于最终用户安装和使用
l 用于家庭服务器和小公司的个人使用。
l 多协议支持
l 通过简单的用户界面进行简单的安装
l 设置管理器
l 定制端口
l 用户经理
l 速度限制
l 支持被动模式和易于使用的管理器
l 支持通过TLS/SSL的FTP
l IP过滤器和管理器
l 每个用户的连接限制
l 共享文件夹管理器
l 支持文件传输压缩
l 文件夹/目录权限设置选项
l 线程限制控制
l 连接、无传输和登录的超时设置
l 支持网络上的另一台机器上的远程文件夹共享。
l 匿名用户登录支持。
【小结】
现在做一下总结,Apache FtpServer库使用的是Java语言,我在搜索的过程中发现了几个使用Java的开源Ftp Server,比如ColoradoFTP, DrFTPD, Java FTP Server。但是他们都比较老旧了,因此就没有列出来。
因此:
如果是部署FTP服务器的话,我们的选项很多,可以从上面的列表中选择合适的项目软件。
如果是Java代码开发集成的话,目前没有找到直接的替代品。可以通过Fork Apache FTPServer的方式自研。
- 点赞
- 收藏
- 关注作者
评论(0)