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

CentOS使用ProFTPd部署FTP服务器

FTP服务被广泛的应用着,常见的,一些大学、组织、机构等等,都有通过FTP服务器向外发布数据…但在这里,我们将要构建的FTP服务器将主要针对用于用户更新自己的网站。也就是说,让用户(root除外)只可以访问自己的Web目录(本站前面介绍的HTTP服务器构建中
  FTP服务被广泛的应用着,常见的,一些大学、组织、机构等等,都有通过FTP服务器向外发布数据…但在这里,我们将要构建的FTP服务器将主要针对 用于用户更新自己的网站。也就是说,让用户(root除外)只可以访问自己的Web目录(本站前面介绍的HTTP服务器构建中以public_html为 例)。

  另外,为了避免通过平文传输时,数据被截获,从而泄漏隐私与密码,我们采用TLS方式,加密FTP传输过程中的数据,以确保安全。

(构建FTP服务器,您将有多种选择,比如通过vsftpd等等FTP服务器软件。但ProFTPD在一些方面,更能够符合我们的实际条件,尤其对于ADSL方式接入网络的服务器,ProFTPD能够很好的应对不断变化的IP地址造成的问题。)


  由于ProFTPD不存在于CentOS中yum的官方库中,所以用yum安装ProFTPD需要定义非官方的库。请先确认相应非官方库文件的存在。
[root@sample ~]# ls -l /etc/yum.repos.d/dag.repo  ← 确认相应库文件的存在性

-rw-r--r-- 1 root root 143 Oct 1 21:33 /etc/yum.repos.d/dag.repo ← 确认其存在(否则不能通过yum安装ProFTPD)

  如果以上,dag.repo文件不存在,则不能通过yum安装ProFTPD,需要定义非官方库。定义非官方库的方法请见 “CentOS的下载、安装及初始环境设置”一节中yum的相关设置。而且,在此前提下也要保证所定义的dag.repo文件的语法的正确性。

  然后,通过yum来在线安装ProFTPD。

[root@sample ~]# yum -y install proftpd  ← 安装ProFTPD

Setting up Install Process
Setting up repositories
Reading repository metadata in from local files
Reducing Dag RPM Repository for Red Hat Enterprise Linux to included packages only
Finished
Parsing package install arguments
Resolving Dependencies
--> Populating transaction set with selected packages. Please wait.
---> Downloading header for proftpd to pack into transaction set.
proftpd-1.2.10-10.2.el4.r 100% |=========================| 15 kB 00:00
---> Package proftpd.i386 0:1.2.10-10.2.el4.rf set to be updated
--> Running transaction check

Dependencies Resolved

=============================================================================
Package Arch Version Repository Size
=============================================================================
Installing:
proftpd i386 1.2.10-10.2.el4.rf dag 699 k

Transaction Summary
=============================================================================
Install 1 Package(s)
Update 0 Package(s)
Remove 0 Package(s)
Total download size: 699 k
Downloading Packages:
(1/1): proftpd-1.2.10-10. 100% |=========================| 699 kB 00:03
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing: proftpd ######################### [1/1]

Installed: proftpd.i386 0:1.2.10-10.2.el4.rf
Complete!



  然后,通过修改相应配置文件配置ProFTPD。
[root@sample ~]# vi /etc/proftpd.conf  ← 修改ProFTPD的配置文件

ServerType        standalone   ← 找到这一行,在行首添加“#”
 ↓
#ServerType        standalone   ← 变为此状态,不使用常驻模式

#ServerType       inetd   ← 找到这一行,去掉行首的“#”
 ↓
ServerType       inetd   ← 变为此状态,通过超级服务器来启动ProFTPD

DefaultRoot        ~ !adm   ← 找到这一行,将“ !adm”改为“/public_html !wheel”
 ↓
DefaultRoot        ~/public_html !wheel   ← 变为此状态,使除wheel组用户的根目录为public_html

找到TLS设置的语句群,如下:
# TLS
# Explained at http://www.castaglia.org/proftpd/modules/mod_tls.html
----------------------------------------------------------------
#TLSEngine         on
#TLSRequired        on
#TLSRSACertificateFile   /usr/share/ssl/certs/proftpd.pem
#TLSRSACertificateKeyFile /usr/share/ssl/certs/proftpd.pem
#TLSCipherSuite      ALL:!ADH:!DES
#TLSOptions        NoCertRequest
#TLSVerifyClient       off
##TLSRenegotiate     ctrl 3600 data 512000 required off timeout 300
#TLSLog           /var/log/proftpd/tls.log
----------------------------------------------------------------

 ↓将以上水平线间部分的语句,每行行首的“#”都去掉,变为下面水平线间的状态:

----------------------------------------------------------------
TLSEngine          on
TLSRequired         on  ← 只允许TLS方式的连接(如果将on改为off,普通方式也被允许)
TLSRSACertificateFile    /usr/share/ssl/certs/proftpd.pem
TLSRSACertificateKeyFile  /usr/share/ssl/certs/proftpd.pem
TLSCipherSuite       ALL:!ADH:!DES
TLSOptions         NoCertRequest
TLSVerifyClient       off
#TLSRenegotiate      ctrl 3600 data 512000 required off timeout 300
TLSLog            /var/log/proftpd/tls.log
----------------------------------------------------------------

然后在配置文件的末尾填如下几行:

ExtendedLog        /var/log/proftpd/access.log WRITE,READ default  ← 记录连接日志到相应日志文件
ExtendedLog        /var/log/proftpd/auth.log AUTH auth  ← 记录认证日志到相应日志文件
MasqueradeAddress    digeast.no-ip.info  ← 定义服务器域名
PassivePorts        50000 50030  ← 为PASV模式连接时指定端口号(1024以后存在的任意端口号)


  然后,为服务器建立证书。
[root@sample ~]# cd /usr/share/ssl/certs  ← 进入相应的目录

[root@sample certs]# make proftpd.pem  ← 建立服务器证书

umask 77 ; \
PEM1=`/bin/mktemp /tmp/openssl.XXXXXX` ; \
PEM2=`/bin/mktemp /tmp/openssl.XXXXXX` ; \
/usr/bin/openssl req -newkey rsa:1024 -keyout $PEM1 -nodes -x509 -days 365 -out $PEM2 ; \
cat $PEM1 > proftpd.pem ; \
echo "" >> proftpd.pem ; \
cat $PEM2 >> proftpd.pem ; \
rm -f $PEM1 $PEM2
Generating a 1024 bit RSA private key
.........++++++
............++++++
writing new private key to '/tmp/openssl.sG3126'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [GB]:CN  ← 输入国家简写
State or Province Name (full name) [Berkshire]:Hei Long Jiang  ← 输入省份
Locality Name (eg, city) [Newbury]:Harbin  ← 输入城市
Organization Name (eg, company) [My Company Ltd]:www.centospub.com  ← 输入组织名(任意)
Organizational Unit Name (eg, section) []:  ← 直接回车跳过
Common Name (eg, your name or your server's hostname) []:www.centospub.com   ← FTP服务器名反馈 
Email Address []:yourname@yourserver.com  ← 输入E-mail地址



  启动之前,先对超级服务器的ProFTPD的启动脚本做一些修改。
[root@sample certs]# vi /etc/xinetd.d/xproftpd  ← 编辑ProFTPD启动脚本

log_on_success += DURATION USERID  ← 找到此行,将“DURATION USERID”改为“HOST PID”
 ↓
log_on_success += HOST PID   ← 变为此状态,防止登录时要等待30秒

log_on_failure += USERID  ← 找到此行,将“USERID”改为“HOST”
 ↓
log_on_failure += HOST   ← 变为此状态,防止登录时要等待30秒

disable = yes  ← 找到此行,将yes改为no
 ↓
disable = no   ← 变为此状态,让ProFTPD通过超级服务器启动


  然后,通过重新启动超级服务器间接启动ProFTPD。
[root@sample certs]# chkconfig xproftpd on  ← 设置ProFTPD自启动

[root@sample certs]# chkconfig --list xproftpd  ← 查看ProFTPD自启动

xproftpd on  ← 确认为on的状态就OK

[root@sample certs]# /etc/rc.d/init.d/xinetd restart  ← 重新启动超级服务器

Stopping xinetd:                [ OK ]
Starting xinetd:                 [ OK ]



  当我们成功的启动了FTP服务之后,就可以通过客户端软件连接到服务器进行文件的上传和下载了。但由于,本站介绍的方法,把安全、传输的保密性放在了 第一位,这也就使得好多不支持TSL的FTP软件无法连接到服务器。支持TSL的FTP客户端软件,比较有代表性的有Staff-FTP, SmartFTP。本站将以SmartFTP为例(下一节),介绍如何从客户端通过FTP连接到服务器的方法。

推荐阅读
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
  • Ubuntu 9.04中安装谷歌Chromium浏览器及使用体验[图文]
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 本文介绍了使用CentOS7.0 U盘刻录工具进行安装的详细步骤,包括使用USBWriter工具刻录ISO文件到USB驱动器、格式化USB磁盘、设置启动顺序等。通过本文的指导,用户可以轻松地使用U盘安装CentOS7.0操作系统。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 禁止程序接收鼠标事件的工具_VNC Viewer for Mac(远程桌面工具)免费版
    VNCViewerforMac是一款运行在Mac平台上的远程桌面工具,vncviewermac版可以帮助您使用Mac的键盘和鼠标来控制远程计算机,操作简 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 成功安装Sabayon Linux在thinkpad X60上的经验分享
    本文分享了作者在国庆期间在thinkpad X60上成功安装Sabayon Linux的经验。通过修改CHOST和执行emerge命令,作者顺利完成了安装过程。Sabayon Linux是一个基于Gentoo Linux的发行版,可以将电脑快速转变为一个功能强大的系统。除了作为一个live DVD使用外,Sabayon Linux还可以被安装在硬盘上,方便用户使用。 ... [详细]
  • CEPH LIO iSCSI Gateway及其使用参考文档
    本文介绍了CEPH LIO iSCSI Gateway以及使用该网关的参考文档,包括Ceph Block Device、CEPH ISCSI GATEWAY、USING AN ISCSI GATEWAY等。同时提供了多个参考链接,详细介绍了CEPH LIO iSCSI Gateway的配置和使用方法。 ... [详细]
author-avatar
潜水的飞机537
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有