桑海沧田 發表於 2015-9-21 11:38:35

在Fedora系统上配置Proftpd服务器的教程

<p>在Linux系统中,FTP服务器软件有很多,都已经成熟,像vsftpd, wu-ftp, Pure-FTPd等。但这些软件安装配置起来都比较麻烦,搭建个人的FTP服务器,如果不选用发行版自带的FTP软件的话,还是Proftpd比较简单。</p>
<p>Proftpd是一款开放源码的FTP服务器软件,它是原来世界范围使用最广泛的wu-ftpd的改进版,它修正了wu-ftpd的许多缺陷,在许多方面进行了重大的改进,其中一个重要变化就是它学习了Apache 的配置方式,使proftpd的配置和管理更加简单易懂。</p>
<p>ProFTPD设计目标是实现一个安全且易于设定的FTP Server。<br />在项目开始时,Unix或类Unix平台上 FTP Server十分有限,最常使用的恐怕就是wu-ftpd了。虽然wu-ftpd有着极佳的效能同时也是一套很好的软件,然而它却欠缺了许多Win32平台上FTP Server的一些特色,同时wu-ftpd过去也有不少的安全漏洞陆续被发现。ProFTPD的原创者本身就曾经花非常多的时间寻找wu-ftpd 的漏洞加以改进并且增加许多功能。然而十分不幸的是,他很快地发现显然wu-ftpd需要全部重新的改写才能补足欠缺的设定能力以及缺乏的一些功能。</p>
<p>有两种运行方式,独立服务器与超级服务器的子服务器。无论从安全性和稳定性,还是可配置性来说都是非常好的选择。</p>
<p>面是一些 ProFTPD 服务器的主要功能:</p>
<p>每个目录都可以包含 &quot;.ftpaccess&quot; 文件用于访问控制,类似 Apache 的 &quot;.htaccess&quot;<br />支持多个虚拟 FTP 服务器以及多用户登录和匿名 FTP 服务。<br />可以作为独立进程启动服务或者通过 inetd/xinetd 启动<br />它的文件/目录属性、属主和权限是基于 UNIX 方式的。<br />它可以独立运行,保护系统避免 root 访问可能带来的损坏。<br />模块化的设计让它可以轻松扩展其他模块,比如 LDAP 服务器,SSL/TLS 加密,RADIUS 支持,等等。<br />ProFTPD 服务器还支持 IPv6.<br />下面是如何在运行 Fedora 22 操作系统的计算机上使用 ProFTPD 架设 FTP 服务器的一些简单步骤。</p>
<p><strong>1. 安装 ProFTPD</strong><br />首先,我们将在运行 Fedora 22 的机器上安装 Proftpd 软件。因为 yum 包管理器已经被抛弃了,我们将使用最新最好的包管理器 dnf。DNF 很容易使用,是 Fedora 22 上采用的非常人性化的包管理器。我们将用它来安装 proftpd 软件。这需要在终端或控制台里用 sudo 模式运行下面的命令。<br /><br><div class="msgheader"><div class="right"><span style="CURSOR: pointer" class="copybut"><u>复制代码</u></span></div>代码如下:</div><div class="msgborder" id="phpcode143"><br />$ sudo dnf -y install proftpd proftpd-utils</div><br /><strong>2. 配置 ProFTPD</strong><br />现在,我们将修改软件的一些配置。要配置它,我们需要用文本编辑器编辑 /etc/proftpd.conf 文件。/etc/proftpd.conf 文件是 ProFTPD 软件的主要配置文件,所以,这个文件的任何改动都会影响到 FTP 服务器。在这里,是我们在初始步骤里做出的改动。<br /><br><div class="msgheader"><div class="right"><span style="CURSOR: pointer" class="copybut"><u>复制代码</u></span></div>代码如下:</div><div class="msgborder" id="phpcode144"><br />$ sudo vi /etc/proftpd.conf</div><br />之后,在用文本编辑器打开这个文件后,我们会想改下 ServerName 以及 ServerAdmin,分别填入自己的域名和 email 地址。下面是我们改的。<br /><br><div class="msgheader"><div class="right"><span style="CURSOR: pointer" class="copybut"><u>复制代码</u></span></div>代码如下:</div><div class="msgborder" id="phpcode145"><br />ServerName       "ftp.linoxide.com"<br />ServerAdmin      arun@linoxide.com</div><br />在这之后,我们将把下面的设定加到配置文件里,这样可以让服务器将访问和授权记录到相应的日志文件里。<br /><br><div class="msgheader"><div class="right"><span style="CURSOR: pointer" class="copybut"><u>复制代码</u></span></div>代码如下:</div><div class="msgborder" id="phpcode146"><br />ExtendedLog /var/log/proftpd/access.log WRITE,READ default<br />ExtendedLog /var/log/proftpd/auth.log AUTH auth</div><br /><img src="https://img.jbzj.com/file_images/article/201509/2015921115333311.png?2015821115342" alt="" /><br /><strong>3. 添加 FTP 用户</strong><br />在设定好了基本的配置文件后,我们很自然地希望添加一个以特定目录为根目录的 FTP 用户。目前登录的用户自动就可以使用 FTP 服务,可以用来登录到 FTP 服务器。但是,在这篇教程里,我们将创建一个以 ftp 服务器上指定目录为主目录的新用户。</p>
<p>下面,我们将建立一个名字是 ftpgroup 的新用户组。<br /><br><div class="msgheader"><div class="right"><span style="CURSOR: pointer" class="copybut"><u>复制代码</u></span></div>代码如下:</div><div class="msgborder" id="phpcode147"><br />$ sudo groupadd ftpgroup</div><br />然后,我们将以目录 /ftp-dir/ 作为主目录增加一个新用户 arunftp 并加入这个组中。<br /><br><div class="msgheader"><div class="right"><span style="CURSOR: pointer" class="copybut"><u>复制代码</u></span></div>代码如下:</div><div class="msgborder" id="phpcode148"><br />$ sudo useradd -G ftpgroup arunftp -s /sbin/nologin -d /ftp-dir/</div><br />在创建好用户并加入用户组后,我们将为用户 arunftp 设置一个密码。<br /><br><div class="msgheader"><div class="right"><span style="CURSOR: pointer" class="copybut"><u>复制代码</u></span></div>代码如下:</div><div class="msgborder" id="phpcode149"><br />$ sudo passwd arunftp</div><br />Changing password for user arunftp.<br />New password:<br />Retype new password:<br />passwd: all authentication tokens updated successfully.<br />现在,我们将通过下面命令为这个 ftp 用户设定主目录的读写权限(LCTT 译注:这是SELinux 相关设置,如果未启用 SELinux,可以不用)。<br /><br><div class="msgheader"><div class="right"><span style="CURSOR: pointer" class="copybut"><u>复制代码</u></span></div>代码如下:</div><div class="msgborder" id="phpcode150"><br />$ sudo setsebool -P allow_ftpd_full_access=1<br />$ sudo setsebool -P ftp_home_dir=1</div><br />然后,我们会设定不允许其他用户移动或重命名这个目录以及里面的内容。<br /><br><div class="msgheader"><div class="right"><span style="CURSOR: pointer" class="copybut"><u>复制代码</u></span></div>代码如下:</div><div class="msgborder" id="phpcode151"><br />$ sudo chmod -R 1777 /ftp-dir/</div><br /><strong>4. 打开 TLS 支持</strong><br />目前 FTP 所用的加密手段并不安全,任何人都可以通过监听网卡来读取 FTP 传输的数据。所以,我们将为自己的服务器打开 TLS 加密支持。这样的话,需要编辑 /etc/proftpd.conf 配置文件。在这之前,我们先备份一下当前的配置文件,可以保证在改出问题后还可以恢复。<br /><br><div class="msgheader"><div class="right"><span style="CURSOR: pointer" class="copybut"><u>复制代码</u></span></div>代码如下:</div><div class="msgborder" id="phpcode152"><br />$ sudo cp /etc/proftpd.conf /etc/proftpd.conf.bak</div><br />然后,我们可以用自己喜欢的文本编辑器修改配置文件。<br /><br><div class="msgheader"><div class="right"><span style="CURSOR: pointer" class="copybut"><u>复制代码</u></span></div>代码如下:</div><div class="msgborder" id="phpcode153"><br />$ sudo vi /etc/proftpd.conf</div><br />然后,把下面几行附加到我们在第 2 步中所增加内容的后面。</p>
<p>TLSEngine on<br />TLSRequired on<br />TLSProtocol SSLv23<br />TLSLog /var/log/proftpd/tls.log<br />TLSRSACertificateFile /etc/pki/tls/certs/proftpd.pem<br />TLSRSACertificateKeyFile /etc/pki/tls/certs/proftpd.pem<br /><img src="https://img.jbzj.com/file_images/article/201509/2015921115411033.png?2015821115418" alt="" /><br />完成上面的设定后,保存退出。</p>
<p>然后,我们需要生成 SSL 凭证 proftpd.pem 并放到 /etc/pki/tls/certs/ 目录里。这样的话,首先需要在 Fedora 22 上安装 openssl。<br /><br><div class="msgheader"><div class="right"><span style="CURSOR: pointer" class="copybut"><u>复制代码</u></span></div>代码如下:</div><div class="msgborder" id="phpcode154"><br />$ sudo dnf install openssl</div><br />然后,可以通过执行下面的命令生成 SSL 凭证。<br /><br><div class="msgheader"><div class="right"><span style="CURSOR: pointer" class="copybut"><u>复制代码</u></span></div>代码如下:</div><div class="msgborder" id="phpcode155"><br />$ sudo openssl req -x509 -nodes -newkey rsa:2048 -keyout /etc/pki/tls/certs/proftpd.pem -out /etc/pki/tls/certs/proftpd.pem</div><br />系统会询问一些将写入凭证里的基本信息。在填完资料后,就会生成一个 2048 位的 RSA 私钥。</p>
<p>Generating a 2048 bit RSA private key<br />...................+++<br />...................+++<br />writing new private key to '/etc/pki/tls/certs/proftpd.pem'<br />-----<br />You are about to be asked to enter information that will be incorporated<br />into your certificate request.<br />What you are about to enter is what is called a Distinguished Name or a DN.<br />There are quite a few fields but you can leave some blank<br />For some fields there will be a default value,<br />If you enter '.', the field will be left blank.<br />-----<br />Country Name (2 letter code) :NP<br />State or Province Name (full name) []:Narayani<br />Locality Name (eg, city) :Bharatpur<br />Organization Name (eg, company) :Linoxide<br />Organizational Unit Name (eg, section) []:Linux Freedom<br />Common Name (eg, your name or your server's hostname) []:ftp.linoxide.com<br />Email Address []:arun@linoxide.com<br />在这之后,我们要改变所生成凭证文件的权限以增加安全性。<br /><br><div class="msgheader"><div class="right"><span style="CURSOR: pointer" class="copybut"><u>复制代码</u></span></div>代码如下:</div><div class="msgborder" id="phpcode156"><br />$ sudo chmod 600 /etc/pki/tls/certs/proftpd.pem</div><br /><strong>5. 允许 FTP 通过 Firewall</strong><br />现在,需要允许 ftp 端口,一般默认被防火墙阻止了。就是说,需要允许 ftp 端口能通过防火墙访问。</p>
<p>如果 打开了 TLS/SSL 加密,执行下面的命令。<br /><br><div class="msgheader"><div class="right"><span style="CURSOR: pointer" class="copybut"><u>复制代码</u></span></div>代码如下:</div><div class="msgborder" id="phpcode157"><br />$ sudo firewall-cmd --add-port=1024-65534/tcp<br />$ sudo firewall-cmd --add-port=1024-65534/tcp --permanent</div><br />如果 没有打开 TLS/SSL 加密,执行下面的命令。<br /><br><div class="msgheader"><div class="right"><span style="CURSOR: pointer" class="copybut"><u>复制代码</u></span></div>代码如下:</div><div class="msgborder" id="phpcode158"><br />$ sudo firewall-cmd --permanent --zone=public --add-service=ftp</div><br />success<br />然后,重新加载防火墙设定。<br /><br><div class="msgheader"><div class="right"><span style="CURSOR: pointer" class="copybut"><u>复制代码</u></span></div>代码如下:</div><div class="msgborder" id="phpcode159"><br />$ sudo firewall-cmd --reload</div><br />success<br /><strong>6. 启动并激活 ProFTPD</strong><br />全部设定好后,最后就是启动 ProFTPD 并试一下。可以运行下面的命令来启动 proftpd ftp 守护程序。<br /><br><div class="msgheader"><div class="right"><span style="CURSOR: pointer" class="copybut"><u>复制代码</u></span></div>代码如下:</div><div class="msgborder" id="phpcode160"><br />$ sudo systemctl start proftpd.service</div><br />然后,我们可以设定开机启动。<br /><br><div class="msgheader"><div class="right"><span style="CURSOR: pointer" class="copybut"><u>复制代码</u></span></div>代码如下:</div><div class="msgborder" id="phpcode161"><br />$ sudo systemctl enable proftpd.service</div><br />Created symlink from /etc/systemd/system/multi-user.target.wants/proftpd.service to /usr/lib/systemd/system/proftpd.service.<br /><strong>7. 登录到 FTP 服务器</strong><br />现在,如果都是按照本教程设置好的,我们一定可以连接到 ftp 服务器并使用以上设置的信息登录上去。在这里,我们将配置一下 FTP 客户端 filezilla,使用 服务器的 IP 或名称 *作为主机名,协议选择 *FTP,用户名填入 arunftp,密码是在上面第 3 步中设定的密码。如果你按照第 4 步中的方式打开了 TLS 支持,还需要在加密类型中选择 要求显式的基于 TLS 的 FTP,如果没有打开,也不想使用 TLS 加密,那么加密类型选择 简单 FTP。<br /><img src="https://img.jbzj.com/file_images/article/201509/2015921115433969.png?2015821115442" alt="" /><br />要做上述设定,需要打开菜单里的文件,点击站点管理器,然后点击新建站点,再按上面的方式设置。<br /><img src="https://img.jbzj.com/file_images/article/201509/2015921115451147.png?2015821115459" alt="" /><br />随后系统会要求允许 SSL 凭证,点确定。之后,就可以从我们的 FTP 服务器上传下载文件和文件夹了。</p>
<p><strong>总结</strong><br />最后,我们成功地在 Fedora 22 机器上安装并配置好了 Proftpd FTP 服务器。Proftpd 是一个超级强大,能高度定制和扩展的 FTP 守护软件。上面的教程展示了如何配置一个采用 TLS 加密的安全 FTP 服务器。强烈建议设置 FTP 服务器支持 TLS 加密,因为它允许使用 SSL 凭证加密数据传输和登录。本文中,我们也没有配置 FTP 的匿名访问,因为一般受保护的 FTP 系统不建议这样做。 FTP 访问让人们的上传和下载变得非常简单也更高效。我们还可以改变用户端口增加安全性。好吧,如果你有任何疑问,建议,反馈,请在下面评论区留言,这样我们就能够改善并更新文章内容。谢谢!玩的开心 :-)</p>
<p></p>
頁: [1]
查看完整版本: 在Fedora系统上配置Proftpd服务器的教程