linux 配置ftp ssl,在Ubuntu 18.04上,如何使用SSL/TLS配置VSFTPD FTP

FTP是文件传输协议的缩写,用于计算机网络中的计算机和服务器之间传输文件。

本文提供了如何在Ubuntu 18.04上使用SSL/TLS配置安全vsftpd服务器,并且使用终端和GUI工具连接到服务器的详细步骤。

安装VSFTPD服务器

在Linux上有几个FTP服务器,我们要安装vsftp ,要在Ubuntu 18.04上执行这个操作,请在终端中键入以下命令:sudo apt install vsftpd

一旦安装了vsftpd,它的默认配置文件位于/etc/vsftpd.conf中,为了对该文件进行更改,并且测试自定义配置,我们首先创建该文件的备份。sudo mv /etc/vsftpd.conf /etc/vsftpd.conf.bak

然后,我们使用以下命令创建vsftpd.conf文件:sudo vim /etc/vsftpd.conf

并将以下行添加到vsftpd.conf文件listen=NO

listen_ipv6=YES

anonymous_enable=NO

local_enable=YES

write_enable=YES

local_umask=022

dirmessage_enable=YES

use_localtime=YES

xferlog_enable=YES

connect_from_port_20=YES

chroot_local_user=YES

secure_chroot_dir=/var/run/vsftpd/empty

pam_service_name=vsftpd

pasv_enable=Yes

pasv_min_port=10000

pasv_max_port=11000

user_sub_token=$USER

local_root=/home/$USER/ftp

userlist_enable=YES

userlist_file=/etc/vsftpd.userlist

userlist_deny=NO

注意,这些是最常用的配置,你可以根据需要自由更改它们。

Ubuntu 18.04启用了ufw(简单的防火墙),你可以使用以下命令检查ufw是否运行:sudo service ufw status

如果它正在运行,则必须允许传入的流量进入FTP端口(主动连接为20,21,被动连接为10000-10100)。要执行这个操作,运行:sudo ufw allow from any to any port 20,21,10000:11000 proto tcp

如果成功,输出将与下面的结果类似:Rules updated

Rules updated (v6)

完成所有这些步骤后,需要使用以下命令重新启动vsftpd服务器:sudo service vsftpd restart

创建连接到FTP服务器的用户

一旦vsftp服务器根据我们的需要安装和配置好,我们需要创建用户(例如,ftpsuer )连接到ftp服务器,要执行这个操作,你可以运行:sudo useradd -m ftpuser

使用以下命令为新创建的用户创建密码:sudo passwd ftpuser

提示你输入新的UNIX密码,并且重新键入以便应用更改,成功的输出如下所示:passwd: password updated successfully

准备FTP用户目录

要确保FTP连接安全,需要执行的最重要的操作之一就是将用户限制在它主目录中,以便让他们根本无法访问其他目录。要执行这个操作,你可以运行:sudo mkdir /home/ftpuser/ftpsudo chown nobody:nogroup /home/ftpuser/ftpsudo chmod a-w /home/ftpuser/ftp

然后在vsftpd配置文件/etc/vsftpd.conf中添加/更改以下行user_sub_token=$USER

local_root=/home/$USER/ftp

在完成这些步骤之后,我们需要创建另外,/home/ftpuser/ftp 并将其所有权分配给用户sudo mkdir /home/ftpuser/ftp/filessudo chown ftpuser:ftpuser/home/ftpuser/ftp/files

为了测试我们在连接到FTP服务器后,能够在用户目录中查看文件,我们将在该目录中创建测试文件,要执行这个操作,你可以运行:echo"test file for vsftpd" | sudo tee /home/ftpuser/ftp/files/test.txt

为了允许或拒绝特定用户访问vsftpd,我们可以使用userlist文件,并且在vsftpd配置文件中添加适当的记录,要执行这个操作,可以运行以下命令:userlist_enable=YES

userlist_file=/etc/vsftpd.userlist

userlist_deny=NO

如果userlist_deny设置为NO,则只有添加到文件中的用户才能访问FTP服务器;如果设置为YES,则文件中列出的用户将无权访问FTP服务器,其他用户将有访问权限,使用下面的命令将用户名添加到上述文件:echo"ftpuser" | sudo tee -a /etc/vsftpd.userlist

为VSFTPD配置SSL

由于通过FTP传输的数据(连凭据)没有加密,我们可以启用tls/ssl来为我们的FTP服务器提供另一个级别的安全,要使用openssl创建证书,请运行以下命令:sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem

其中-days 365用于添加一年的证书,并且为-out添加相同的值,-keyout参数以在同一文件中定位私钥和证书。 你将被提示添加所有必要的信息以创建证书,如下面所示,Generating a 2048 bit RSA private key

.................+++

..............................................................................................+++

writing new private key to '/etc/ssl/private/vsftpd.pem'

-----

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) [AU]:AU

State or Province Name (full name) [Some-State]:SY

Locality Name (eg, city) []:Sydney

Organization Name (eg, company) [Internet Widgits Pty Ltd]:Linoxide

Organizational Unit Name (eg, section) []:

Common Name (e.g. server FQDN or YOUR name) []:ubuntu

Email Address []:[email protected]

创建证书后,我们需要将它添加到vsftpd配置文件,并且启用SSL ,为此,请将以下行添加到上述文件中:rsa_cert_file=/etc/ssl/private/vsftpd.pemrsa_private_key_file=/etc/ssl/private/vsftpd.pemssl_enable=YES

之后,我们需要拒绝通过SSL的匿名连接,并要求SSL进行数据传输和登录。要这样做,请将以下行添加到/etc/vsftpd.conf文件:allow_anon_ssl=NO

force_local_data_ssl=YES

force_local_logins_ssl=YES

添加上述行后,我们将配置服务器以便使用TLS,这是SSL的首选继承者,为此,请在同一文件中添加以下行:

ssl_tlsv1=YES

ssl_sslv2=NO

ssl_sslv3=NO

完成所有步骤后,我们的vsftpd配置文件将如下所示:listen=NO

listen_ipv6=YES

anonymous_enable=NO

local_enable=YES

write_enable=YES

local_umask=022

dirmessage_enable=YES

use_localtime=YES

xferlog_enable=YES

connect_from_port_20=YES

chroot_local_user=YES

secure_chroot_dir=/var/run/vsftpd/empty

pam_service_name=vsftpd

pasv_enable=Yes

pasv_min_port=10000

pasv_max_port=11000

user_sub_token=$USER

local_root=/home/$USER/ftp

userlist_enable=YES

userlist_file=/etc/vsftpd.userlist

userlist_deny=NO

rsa_cert_file=/etc/ssl/private/vsftpd.pem

rsa_private_key_file=/etc/ssl/private/vsftpd.pem

ssl_enable=YES

allow_anon_ssl=NO

force_local_data_ssl=YES

force_local_logins_ssl=YES

ssl_tlsv1=YES

ssl_sslv2=NO

ssl_sslv3=NO

在vsftpd文件配置更改后,我们需要通过以下命令重新启动服务:sudo service vsftpd restart

你还可以将vsftpd配置为对sftp使用letencrypt证书,但是要确保你有一个要验证的域名。你可以在vsftpd配置中添加路径变量,其中ssl证书和私有存储是密钥存储的。

rsa_cert_file=/ssl/letsencrypt/ftpdomain.com/chain-bundle.pem

rsa_private_key_file=/ssl/letsencrypt/ftpdomain.com/private-key.pem

连接到FTP服务器

有两种方法可以连接到ftp服务器:使用终端将FTP客户端与GUI

使用终端连接

要通过命令行连接到ftp服务器,请在终端中键入以下命令:ftp ubuntu

其中ubuntu是安装了ftp服务器的机器的主机名,

连接后,将提示你输入用于连接到ftp服务器的用户名和密码:Connected to ubuntu.

220 (vsFTPd 3.0.3)

Name (ubuntu:ubuntu): ftpuser

331 Please specify the password.

Password:

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp>

键入ls以检查在测试文件之前创建的是:ftp> ls

200 PORT command successful. Consider using PASV.

150 Here comes the directory listing.

drwxr-xr-x 2 1001 1001 4096 May 21 13:39 files

226 Directory send OK.

使用FTP客户端与GUI连接

我们将使用Filezilla连接到Linux上安装的FTP服务器。要执行这个操作,请打开计算机上的Filezilla客户端,输入FTP服务器IP地址ftpuser凭据以进行连接,然后按connect 按钮,如下图所示,将提示你将证书添加到信任,之后你将能够连接到FTP服务器。

linux 配置ftp ssl,在Ubuntu 18.04上,如何使用SSL/TLS配置VSFTPD FTP_第1张图片

linux 配置ftp ssl,在Ubuntu 18.04上,如何使用SSL/TLS配置VSFTPD FTP_第2张图片

连接之后,我们可以看到前面创建的test.txt 。

正如你从该文章中学到的那样,安装vsftpd服务器,并且连接到它非常容易,只需几个步骤即可完成。

你可能感兴趣的:(linux,配置ftp,ssl)