技术教程 · 2020年2月29日 0

如何在CentOS 8上使用SSL/TLS安装vsftpd FTP服务器

FTP是一种广泛使用的协议,用于在服务器和客户端之间传输文件。现在有很多开放源FTP服务器,包括FTPD,VSFTPD,PROFTPD和pureftpd。其中,VSFTPD是一种安全,快速且使用最广泛的协议。它也被称为“非常安全的文件传输协议守护程序”。它还支持SSL,IPv6,显式和隐式FTPS。

在本教程中,我们将向您展示如何在CentOS 8服务器上安装VSFTPD并使用SSL / TLS保护它。

先决条件

  • 运行CentOS的服务器8。
  • 在您的服务器上配置了root密码。

安装VSFTPD

默认情况下,VSFTPD在CentOS 8默认存储库中可用。您可以通过运行以下命令来安装它:

dnf install vsftpd -y

安装完成后,启动VSFTPD服务,并使用以下命令在系统重新引导后使其启动:

systemctl start vsftpd
 systemctl enable vsftpd

此时,您的VSFTPD服务器已安装并正在运行。现在,您可以继续下一步。

创建VSFTPD用户

接下来,您将需要为VSFTPD创建一个新用户。因此,您可以使用此用户访问FTP服务器。

运行以下命令以创建一个名为vyom的新用户,如下所示:

adduser vyom

接下来,使用以下命令为用户变量设置密码:

passwd vyom

完成后,您可以继续下一步。

配置VSFTPD

接下来,打开位于/ etc / vsftpd目录中的VSFTPD默认配置文件,如下所示:

nano /etc/vsftpd/vsftpd.conf

更改以下行:

anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=NO

完成后保存并关闭文件。然后,重新启动VSFTPD服务,并使用以下命令验证服务的状态:

systemctl restart vsftpd
 systemctl status vsftpd

您应该看到以下输出:

? vsftpd.service - Vsftpd ftp daemon
   Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; disabled; vendor preset: disabled)
   Active: active (running) since Fri 2020-02-21 00:43:57 EST; 6s ago
  Process: 2698 ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf (code=exited, status=0/SUCCESS)
 Main PID: 2699 (vsftpd)
    Tasks: 1 (limit: 6102)
   Memory: 1020.0K
   CGroup: /system.slice/vsftpd.service
           ??2699 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf

Feb 21 00:43:57 centos8 systemd[1]: Stopped Vsftpd ftp daemon.
Feb 21 00:43:57 centos8 systemd[1]: Starting Vsftpd ftp daemon...
Feb 21 00:43:57 centos8 systemd[1]: Started Vsftpd ftp daemon.

此时,您的VSFTPD服务器已配置。现在,您可以通过SELinux和防火墙访问所有VSFTPD。

配置防火墙和SELInux

默认情况下,CentOS 8中启用了SELinux。因此,您需要为VSFTPD配置SELinux。

您可以使用以下命令将SELinux配置为允许FTP访问:

setsebool -P allow_ftpd_full_access=1

接下来,您将需要允许通过firewalld的FTP服务。您可以使用以下命令允许它:

firewall-cmd --zone=public --permanent --add-service=ftp

接下来,重新加载firewalld服务以应用防火墙配置更改:

firewall-cmd --reload

此时,您的防火墙和SELinux已配置为允许来自远程系统的传入FTP连接。现在,您可以继续测试FTP连接。

连接到VSFTPD服务器

现在已安装并配置了VSFTPD服务器。现在,是时候从客户端系统连接FTP服务器了。

为此,请转到客户端系统并运行以下命令以连接FTP服务器:

ftp 172.20.10.3

系统将要求您提供FTP用户和密码,如下所示:

Connected to 172.20.10.3.
220 (vsFTPd 3.0.3)
Name (172.20.10.3:root): vyom
331 Please specify the password.
Password:
230 Login successful.

成功建立连接后,您将看到以下输出:

Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

现在,键入exit并按Enter键退出FTP会话。

使用TLS支持配置VSFTPD

出于安全原因,最好使用SSL / TLS加密FTP传输。为此,您将需要生成一个SSL证书并配置VSFTPD服务器以使用它。

首先,您需要在系统中安装OpenSSL软件包。您可以使用以下命令进行安装:

dnf install openssl -y

安装后,创建一个新目录来存储SSL证书:

mkdir /etc/ssl/private

接下来,使用以下命令生成自签名证书:

openssl req -newkey rsa:2048 -nodes -keyout /etc/ssl/private/vsftpd.key -x509 -days 365 -out /etc/ssl/private/vsftpd.crt

提供所有必需的信息,如下所示:

Generating a RSA private key
...+++++
...........+++++
writing new private key to '/etc/ssl/private/vsftpd.key'
-----
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) [XX]:IN
State or Province Name (full name) []:GUJ
Locality Name (eg, city) [Default City]:JUN
Organization Name (eg, company) [Default Company Ltd]:IT
Organizational Unit Name (eg, section) []:IT
Common Name (eg, your name or your server's hostname) []:ftpserver
Email Address []:hitjethva@gmail.com

生成SSL证书后,您将需要配置VSFTPD以使用此证书。

打开VSFTPD默认配置文件,如下所示:

nano /etc/vsftpd/vsftpd.conf

在文件末尾添加以下行:

#Path of the SSL certificate
rsa_cert_file=/etc/ssl/private/vsftpd.crt
rsa_private_key_file=/etc/ssl/private/vsftpd.key
#Enable the SSL
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
#TSL is more secure than SSL so enable ssl_tlsv1_2.
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
require_ssl_reuse=NO
ssl_ciphers=HIGH
#Enable SSL debugging to store all VSFTPD log.
debug_ssl=YES

完成后保存并关闭文件。然后,重新启动VSFTPD服务以应用更改:

systemctl restart vsftpd

此时,您的VSFTPD服务器已配置为使用SSL证书。现在,您可以继续下一步。

验证VSFTPD TLS连接

VSFTPD服务器现已通过SSL / TLS支持得到保护。接下来,尝试从命令行连接FTP服务器,如下所示:

ftp 172.20.10.3

您应该在以下输出中看到错误:

Connected to 172.20.10.3.
220 (vsFTPd 3.0.2)
Name (172.20.10.3:root): vyom
530 Non-anonymous sessions must use encryption.
Login failed.
421 Service not available, remote server has closed connection
ftp>

您无法从命令行客户端连接到VSFTP服务器。因为它不支持SSL / TLS支持。

因此,您将需要使用支持TLS连接的FTP客户端下载并测试VSFTPD连接。

为此,请转到客户端系统并安装FileZilla客户端软件包。

安装FileZilla后,如下所示打开FileZilla软件:

FileZilla FTP客户端

接下来,如下所示打开站点管理器:

网站管理员

单击“ 新建站点”按钮以添加新的FTP连接,如下所示:

添加FTP服务器详细信息

提供您的FTP服务器IP,选择FTP协议,选择“在TLS上使用显式FTP”,选择询问密码,提供FTP服务器的用户名,然后单击“ 连接”按钮。将要求您提供FTP用户的密码,如下所示:

输入密码

提供您的FTP密码,然后单击“ 确定”按钮。您将被要求验证用于SSL / TLS连接的证书,如下所示:

接受SSL证书

单击确定按钮以验证证书。成功建立连接后,您将看到以下屏幕:

成功连接到FTP服务器

结论

在以上指南中,我们已在CentOS 8上安装了VSFTPD服务器。我们还将VSFTPD服务器配置为使用SSL / TLS证书。您的FTP服务器现已安全。

原文:https://www.howtoforge.com/how-to-install-vsftpd-server-on-centos-8/