如何在CentOS上设置FTP服务器
在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访问权限。