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软件:
接下来,如下所示打开站点管理器:
单击“ 新建站点”按钮以添加新的FTP连接,如下所示:
提供您的FTP服务器IP,选择FTP协议,选择“在TLS上使用显式FTP”,选择询问密码,提供FTP服务器的用户名,然后单击“ 连接”按钮。将要求您提供FTP用户的密码,如下所示:
提供您的FTP密码,然后单击“ 确定”按钮。您将被要求验证用于SSL / TLS连接的证书,如下所示:
单击确定按钮以验证证书。成功建立连接后,您将看到以下屏幕:
结论
在以上指南中,我们已在CentOS 8上安装了VSFTPD服务器。我们还将VSFTPD服务器配置为使用SSL / TLS证书。您的FTP服务器现已安全。
原文:https://www.howtoforge.com/how-to-install-vsftpd-server-on-centos-8/