如何在CentOS 7上设置PureFTPd

时间:2020-03-05 15:29:35  来源:igfitidea点击:

在本教程中,我们将在CentOS 7上从源代码编译和安装PureFTPd。
Pure-ftpd是一个轻量级且稳定的FTP守护程序,它支持各种身份验证后端,例如Linux系统用户,puredb,MySQL和PostgeSQL。

1.安装Pureftpd

安装CentOS开发工具链。

# yum -y groupinstall 'Development Tools'

安装MariaDB开发文件。

# yum -y install mariadb-devel

下载纯ftpd源文件并解压缩存档。

# cd /usr/local/src
# wget http://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.36.tar.bz2
# tar xvjpf pure-ftpd-1*.tar.bz2
# cd pure-ftpd-1*

运行configure命令准备构建。
要获得所有编译概述,请运行./configure --help。

# ./configure --prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin \
--libexecdir=/usr/libexec --datadir=/usr/share --sysconfdir=/etc \
 --sharedstatedir=/usr/com --localstatedir=/var --libdir=/usr/lib64 \
 --includedir=/usr/include --infodir=/usr/share/info --mandir=/usr/share/man \
 --with-mysql --with-virtualchroot --with-everything

并编译纯ftpd二进制文件:

# make
# make install

2.创建配置文件和开始脚本

首先,我们创建启动脚本。
对于此构建,我们将使用CentOS 6.5中的启动脚本,该脚本在CentOS 7上仍然可以正常运行。

# nano /etc/init.d/pure-ftpd
#!/bin/bash
 #
 # Startup script for the pure-ftpd FTP Server $Revision: 1.1 $
 #
 # chkconfig: - 85 15
 # description: Pure-FTPd is an FTP server daemon based upon Troll-FTPd
 # processname: pure-ftpd
 # pidfile: /var/run/pure-ftpd.pid
 # config: /etc/pure-ftpd/pure-ftpd.conf
# Source function library.
 . /etc/init.d/functions
# Source networking configuration.
 . /etc/sysconfig/network
# Check that networking is configured.
 # [ ${NETWORKING} = "no" ] && exit 0
RETVAL=0
prog="pure-ftpd"
# Path to the pure-ftp binaries.
 fullpath=/usr/sbin/pure-ftpd
 pureftpwho=/usr/sbin/pure-ftpwho
 pure_config=/etc/pure-ftpd/pure-ftpd.conf
 pure_launch_script=/usr/sbin/pure-config.pl
 start() {
 echo -n $"Starting $prog: "
 daemon "$pure_launch_script $pure_config --daemonize > /dev/null"
 RETVAL=$?
 [ $RETVAL = 0 ] && touch /var/lock/subsys/pure-ftpd
 echo
 }
stop() {
 echo -n $"Stopping $prog: "
 killproc pure-ftpd
 RETVAL=$?
 [ $RETVAL = 0 ] && rm -f /var/lock/subsys/pure-ftpd
 echo
 }
# See how we were called.
 case "" in
 start)
 start
 ;;
 stop)
 stop
 ;;
 restart)
 stop
 start
 ;;
 reload)
 echo -n $"Reloading $prog: "
 killproc pure-ftpd -HUP
 RETVAL=$?
 echo
 ;;
 condrestart)
 if [ -f /var/lock/subsys/pure-ftpd ] ; then
 stop
 # avoid race
 sleep 3
 start
 fi
 ;;
 status)
 status pure-ftpd
 RETVAL=$?
 if [ -f $pureftpwho ] && [ $RETVAL -eq 0 ] ; then
 $pureftpwho
 fi
 ;;
 *)
 echo $"Usage: pure-ftpd {start|stop|restart|reload|condrestart|status}"
 RETVAL=1
 esac
 exit $RETVAL

3.配置文件权限

现在,我们需要通过以下命令提供所需的文件权限,其中包括配置安装后的东西。

# chmod +x /etc/init.d/pure-ftpd
# mkdir /etc/pure-ftpd/
# cp configuration-file/pure-ftpd.conf /etc/pure-ftpd/pure-ftpd.conf
# cp configuration-file/pure-config.pl /usr/sbin/pure-config.pl
# chmod 744 /etc/pure-ftpd/pure-ftpd.conf
# chmod 755 /usr/sbin/pure-config.pl

然后创建系统启动链接并启动PureFTPd:

# chkconfig --levels 235 pure-ftpd on
# systemctl start pure-ftpd.service

4.使用OpenSSL配置TLS

现在,我们将PureFTPd配置为允许FTP和TLS会话。
没有TLS的FTP是非常不安全的协议,因为所有密码和所有数据均以明文形式传输。
通过使用TLS,可以加密整个通信,从而使FTP更加安全。

TLS需要使用OpenSSL。
要安装OpenSSL,我们只需运行:

# yum -y install openssl

打开/etc/pure-ftpd/pure-ftpd.conf ...

# nano /etc/pure-ftpd/pure-ftpd.conf

如果要允许FTP和TLS会话,请将TLS设置为1:
此选项可以接受三个值:
0:禁用SSL/TLS加密层(默认)。

1:既接受传统会话也接受加密会话。

2:拒绝不使用SSL/TLS安全机制的连接,
包括匿名会话。

不要盲目地取消注释。
请确保:
1)服务器已经过SSL/TLS支持(--with-tls)的编译,
2)有效的证书已经到位,
3)只有兼容的客户端才能登录。

为了使用TLS,我们必须创建一个SSL证书。
我在/etc/ssl/private /中创建它,因此我首先创建该目录:
mkdir -p/etc/ssl/private /

之后,我们可以生成SSL证书,如下所示:

# openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem

更改SSL证书的权限:

# chmod 600 /etc/ssl/private/pure-ftpd.pem

最后重启PureFTPd:

# systemctl stop pure-ftpd.service
# systemctl start pure-ftpd.service