热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

配置ProFTPd使用FTPS(SSL/TLS)的方法

proftpd是一个Linux下的多功能ftp服务器软件。官网见:http://www.proftpd.org/而FTPS是一个有安全机制的FTP协议,有相应的标准(RFC4217http://www.faqs.org/rfcs/rfc4217.html)。使用源代码安装proftpd#cd/usr/src#wgetf

proftpd是一个Linux下的多功能ftp服务器软件。官网见:http://www.proftpd.org/

而FTPS是一个有安全机制的FTP协议,有相应的标准(RFC 4217 http://www.faqs.org/rfcs/rfc4217.html )。

使用源代码安装proftpd

# cd /usr/src

# wget ftp://ftp.proftpd.org/distrib/source/proftpd-1.2.10.tar.gz

# tar -xvzf proftpd-1.2.10.tar.gz

# cd proftpd-1.2.10

编译之前要确定自己装了以下两个包:

# apt-get install build-essential

# apt-get install libssl-dev

编译的时候加上mod_tls这个模块:

# ./configure --with-modules=mod_tls

# make

# make install

安装成功后查看proftpd是否已经安装好了这个模块:

# proftpd -l

Compiled-in modules:

    mod_core.c

    mod_xfer.c

    mod_auth_unix.c

    mod_auth_file.c

    mod_auth.c

    mod_ls.c

    mod_log.c

    mod_site.c

    mod_tls.c

    mod_cap.c

告诉proftpd应该使用哪个配置文件:

# /usr/local/sbin/proftpd -c /usr/local/etc/proftpd.conf

启动了proftp之后可以做以下简单测试:

# ftp localhost

Connected to localhost.localdomain.

220 ProFTPD 1.2.10 Server (ProFTPD Default Installation) [127.0.0.1]

Name (localhost:troublenow): troublenow

331 Password required for troublenow.

Password:

230 User troublenow logged in.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> ls

200 PORT command successful

150 Opening ASCII mode data connection for file list

226 Transfer complete.

ftp> quit

221 Goodbye.

测试好了之后把proftpd的进程杀死,进行SSL/TLS的配置:

Create SSL Keys

Now lets create a self signed certificate and put that in /usr/local/etc/ftpcert/.

# cd /usr/local/etc/

# mkdir ftpcert

# cd ftpcert/

# openssl genrsa 1024 > host.key

# chmod 400 host.key

# openssl req -new -x509 -nodes -sha1 -days 365 -key host.key > host.cert

下面会出现一些提示,用来加密证书,但是都可以按照默认,一路回车:
-----
Country Name (2 letter code) [AU]:
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []:
Email Address []:
Configure Proftpd

I will log everything in /var/log/ftpd so first we will need to create that directory,设置日志目录:

# mkdir /var/log/ftpd

关键:把配置文件/usr/local/etc/proftpd.conf中的内容更换为下面的内容:

ServerName                      "test FTP server"
ServerType                      standalone
DefaultServer                   on

Port                            21

Umask                           022

AllowStoreRestart               on
AllowRetrieveRestart            on
AllowForeignAddress             on

LogFormat                       default "%h %l %u %t \"%r\" %s %b"
LogFormat                       auth    "%v [%P] %h %t \"%r\" %s"
LogFormat                       write   "%h %l %u %t \"%r\" %s %b"

DefaultTransferMode             binary
UseFtpUsers                     on

MaxInstances                    30

User                            nobody
Group                           nogroup

DefaultRoot                     ~

AllowOverwrite                  on
PassivePorts                    59000 59999
DefaultRoot                     ~
AllowOverwrite                  on

TransferLog                     /var/log/ftpd/xferlog
ExtendedLog                     /var/log/ftpd/access.log WRITE,READ write
ExtendedLog                     /var/log/ftpd/auth.log AUTH auth
ExtendedLog                     /var/log/ftpd/paranoid.log ALL default

TLSEngine on
TLSLog /var/log/ftpd/tls.log
TLSProtocol SSLv23
TLSRequired on
TLSVerifyClient off
TLSRSACertificateFile /usr/local/etc/ftpcert/host.cert
TLSRSACertificateKeyFile /usr/local/etc/ftpcert/host.key

至于这些参数具体是什么意思,可以去在线的文章(http://proftpd.mirror.facebook.com/docs/contrib/mod_tls.html)看。

然后启动proftpd

在windows平台下使用flashfxp/filezilla连接(使用显式的ftps)。连接后会弹出一个证书,询问你是否信任这个站点,接受即可。

在linux下,可以用lftp这个客户端登陆ftps,我会在下篇文章中写出如何使用。


推荐阅读
  • 调试利器SSH隧道
    在开发微信公众号或小程序的时候,由于微信平台规则的限制,部分接口需要通过线上域名才能正常访问。但我们一般都会在本地开发,因为这能快速的看到 ... [详细]
  • 在1995年,Simon Plouffe 发现了一种特殊的求和方法来表示某些常数。两年后,Bailey 和 Borwein 在他们的论文中发表了这一发现,这种方法被命名为 Bailey-Borwein-Plouffe (BBP) 公式。该问题要求计算圆周率 π 的第 n 个十六进制数字。 ... [详细]
  • 本文介绍了SIP(Session Initiation Protocol,会话发起协议)的基本概念、功能、消息格式及其实现机制。SIP是一种在IP网络上用于建立、管理和终止多媒体通信会话的应用层协议。 ... [详细]
  • 从理想主义者的内心深处萌发的技术信仰,推动了云原生技术在全球范围内的快速发展。本文将带你深入了解阿里巴巴在开源领域的贡献与成就。 ... [详细]
  • Docker安全策略与管理
    本文探讨了Docker的安全挑战、核心安全特性及其管理策略,旨在帮助读者深入理解Docker安全机制,并提供实用的安全管理建议。 ... [详细]
  • 对于初学者而言,搭建一个高效稳定的 Python 开发环境是入门的关键一步。本文将详细介绍如何利用 Anaconda 和 Jupyter Notebook 来构建一个既易于管理又功能强大的开发环境。 ... [详细]
  • 本文详细介绍了如何在Oracle VM VirtualBox中实现主机与虚拟机之间的数据交换,包括安装Guest Additions增强功能,以及如何利用这些功能进行文件传输、屏幕调整等操作。 ... [详细]
  • 2023年,Android开发前景如何?25岁还能转行吗?
    近期,关于Android开发行业的讨论在多个平台上热度不减,许多人担忧其未来发展。本文将探讨当前Android开发市场的现状、薪资水平及职业选择建议。 ... [详细]
  • 二维码的实现与应用
    本文介绍了二维码的基本概念、分类及其优缺点,并详细描述了如何使用Java编程语言结合第三方库(如ZXing和qrcode.jar)来实现二维码的生成与解析。 ... [详细]
  • 在日常生活中,支付宝已成为不可或缺的支付工具之一。本文将详细介绍如何通过支付宝实现免费提现,帮助用户更好地管理个人财务,避免不必要的手续费支出。 ... [详细]
  • 问题描述现在,不管开发一个多大的系统(至少我现在的部门是这样的),都会带一个日志功能;在实际开发过程中 ... [详细]
  • 我的读书清单(持续更新)201705311.《一千零一夜》2006(四五年级)2.《中华上下五千年》2008(初一)3.《鲁滨孙漂流记》2008(初二)4.《钢铁是怎样炼成的》20 ... [详细]
  • Web动态服务器Python基本实现
    Web动态服务器Python基本实现 ... [详细]
  • 从CodeIgniter中提取图像处理组件
    本指南旨在帮助开发者在未使用CodeIgniter框架的情况下,如何独立使用其强大的图像处理功能,包括图像尺寸调整、创建缩略图、裁剪、旋转及添加水印等。 ... [详细]
  • 精选10款Python框架助力并行与分布式机器学习
    随着神经网络模型的不断深化和复杂化,训练这些模型变得愈发具有挑战性,不仅需要处理大量的权重,还必须克服内存限制等问题。本文将介绍10款优秀的Python框架,帮助开发者高效地实现分布式和并行化的深度学习模型训练。 ... [详细]
author-avatar
手机用户2602925875
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有