如何在CentOS上设置FTP服务器

时间:2020-02-23 14:39:01  来源:igfitidea点击:

在Linux PC上设置FTP(文件传输协议)服务器将允许我们在系统之间传输文件和远程计算机之间的文件。
我们将向我们展示如何在CentOS上设置FTP服务器。

Linux已经拥有一款我们可以用于作业的开源FTP服务器。
这包括PureFtpd,Proftpd等流行服务器以及VSFTPD。

我们可以根据我们喜欢使用任何一个FTP服务器。
但是,在本教程中,我们将安装并使用VSFTPD,即非常安全的FTP守护程序。
它是一个快速,稳定和安全的FTP服务器,它将将文件传输到跳跃中的远程系统。

在CentOS上设置FTP服务器

安装vsftpd.

首先,我们需要在CentOS上安装VSFTPD。
为此,请在终端中输入以下命令:

$sudo dnf install vsftpd

在CentOS上安装VSFTPD

使用CentOS系统上安装了VSFTPD,我们应该配置它,以便自动启动和启动。
这可以使用以下命令完成:

$sudo systemctl enable vsftpd --now

完成后,通过输入此命令验证VSFTPD服务状态:

$sudo systemctl status vsftpd

将出现类似于下面的输出屏幕。
我们应该看到VSFTPD在CentOS系统上不是"活动"。

vsftpd活动并在CentOS上运行

设置vsftpd.

使用VSFTPD活动和在系统上运行,我们需要配置服务器设置。
为此,我们需要访问/etc/vsftpd/vsftpd.conf配置文件。
这可以通过在终端中输入以下命令来通过在nano编辑器中打开配置文件来完成:

$sudo nano /etc/vsftpd/vsftpd.conf

使用现在在编辑器中打开的文件,我们需要在系统上设置VSFTPD时需要多个更改。
让我们一个接一个地走过来。

1.配置FTP访问

首先,让我们配置FTP服务器以允许仅访问本地用户。
为此,我们需要在文件中找到Anonymous_Enable和Local_EnableDirectes,并将其编辑如下图所示:

FTP访问设置

正如我们所看到的,我们需要设置Anonymous_Enable =否,local_enable =是。

2.启用上传

接下来,我们需要配置FTP服务器以允许上传和删除文件。

为此,我们需要找到Write_enable指令并将其更改为yes,如图所示。

启用VSFTPD上传的选项

3.限制用户登录

一旦完成,我们将希望限制用户登录的总数,即,只希望某些用户登录FTP服务器。
要执行此操作,请首先在.conf文件userlist_enable = yes中找到此行。
之后,将这两行添加到文件中:

userlist_file=/etc/vsftpd/user_list
userlist_deny=NO

使用下面的图像作为参考:

限制用户登录的设置

我们也可以选择启用此选项。
如果我们这样做,我们将不得不明确指定要访问FTP服务器的用户。
要允许用户,我们需要将其用户名添加到/etc/vsftpd/user_list文件中,每行中只有一个用户名。

4.设置被动FTP连接

我们可能还想设置被动FTP连接。

因此,其中我们将向我们展示如何通过在.conf文件中添加几行来指定端口的最小和最大范围。

设置被动FTP连接

我们需要做的就是滚动到文件的末尾并添加这两行,如图所示。

pasv_min_port=30000
pasv_max_port=31000

我们还将在本教程稍后讨论如何在防火墙中打开范围。

5.使用SSL/TLS配置安全传输

最后,通过使用SSL/TLS来保护FTP连接的问题。
为此,我们需要拥有SSL证书并配置FTP服务器以使用它。

但是,为本教程签发,我们将使用OpenSSL工具生成自签名的SSL证书,然后使用它来加密我们的FTP传输。

因此,首先,首先,我们需要使用OpenSSL来生成新的SSL证书。
我们可以通过在终端中输入以下命令来执行此操作:

sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/vsftpd/vsftpd.pem -out /etc/vsftpd/vsftpd.pem

在CentOS中创建一个自签名的openssl证书

运行上述命令将生成2048位私钥以及自签名证书。
这两个都有效期为十年并保存在同一文件中。

创建新的SSL证书后,使用上一个命令打开VSFTPD配置文件:

sudo nano /etc/vsftpd/vsftpd.conf

滚动并添加以下行,如图所示:

rsa_cert_file=/etc/vsftpd/vsftpd.pem
rsa_private_key_file=/etc/vsftpd/vsftpd.pem
ssl_enable=YES

为VSFTPD配置SSL设置

就是这样。
我们已成功为FTP服务器配置了SSL证书。

6.最终确定

完成后,重新检查VSFTPD配置文件以查看所有以下设置是否正如:

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=YES
userlist_file=/etc/vsftpd/user_list
userlist_deny=NO
pasv_min_port=30000
pasv_max_port=31000
rsa_cert_file=/etc/vsftpd/vsftpd.pem
rsa_private_key_file=/etc/vsftpd/vsftpd.pem
ssl_enable=YES

在我们确保对文件进行了上述所有更改后,我们需要保存它。
保存后,使用以下命令重新启动VSFTPD服务:

$sudo systemctl restart vsftpd

配置防火墙

如果我们与FTP服务器一起启用了防火墙,则需要配置防火墙,以便它允许FTP传输。

为此,我们需要在终端中输入以下命令:

$sudo firewall-cmd --permanent --add-port=20-21/tcp

上面的命令打开了作为FTP命令端口的端口21,而不是FTP数据端口的端口20。

我们还需要输入此命令:

$sudo firewall-cmd --permanent --add-port=30000-31000/tcp

此命令开启了我们之前配置的30000-31000无源端口范围。

允许VSFTPD服务器通过CentOS防火墙

完成后,我们需要使用以下命令重新加载防火墙:

$firewall-cmd --reload

如何创建新的FTP用户

既然我们在CentOS系统上设置了VSFTPD服务器,是时候创建一个新的FTP用户并测试它。

首先,让我们使用以下命令创建新的FTP用户(newftpuser):

$sudo adduser newftpuser

接下来,我们需要为新用户设置密码。
为此,请使用此命令:

$sudo passwd newftpuser

确保密码是强大的一个和超过八个字符。

创建新的FTP用户

创建新用户后,我们需要将其添加到FTP用户列表中。
这可以通过在终端中输入以下命令来完成:

$echo "newftpuser" | sudo tee -a /etc/vsftpd/user_list

最后,我们需要创建一个FTP目录树,我们将设置所有正确的权限。
为此,我们需要在终端中输入以下一系列命令:

$sudo mkdir -p /home/newftpuser/ftp/upload
$sudo chmod 550 /home/newftpuser/ftp
$sudo chmod 750 /home/newftpuser/ftp/upload
$sudo chown -R newftpuser: /home/newftpuser/ftp

创建一个ftp目录树

到目前为止,FTP服务器功能齐全并准备好了。
我们现在可以使用像FileZilla这样的任何FTP客户端连接到它。
只需确保FTP客户端也可以配置为使用TLS加密,因为它被用于加密FTP传输。

禁用shell访问

在创建新的FTP用户时,我们应该记住的一件事是,除非明确指定,否则用户将访问服务器的SSH访问权限。

如果要从用户禁用shell访问权限,则需要创建一个新的shell,该命令将打印通知用户"此帐户仅限于FTP访问"的消息。

为此,我们需要在终端中输入以下命令:

$echo -e '#!/bin/sh\necho "This account is limited to FTP access only."' | sudo tee -a /bin/ftponly
$sudo chmod a+x /bin/ftponly

上面的命令将创建/bin/ftponly shell并执行它。

接下来,我们需要将新shell添加到位于/etc/shells文件中的有效shell列表中。
这是使用以下命令完成的:

$echo "/bin/ftponly" | sudo tee -a /etc/shells

作为最后一步,我们需要做的就是将用户shell更改为/bin/ftponlyusing此命令:

$sudo usermod newftpuser -s /bin/ftponly

此外,对于任何未来的FTP用户,我们可以使用相同的命令来更改它们的shell,以便它们只能具有FTP访问权限。