云网牛站
所在位置:首页 > Linux云服务器 > 在CentOS 8上安装并使用VSFTPD配置FTP Server的方法

在CentOS 8上安装并使用VSFTPD配置FTP Server的方法

2020-03-31 09:51:09作者:自源稿源:云网牛站

本文介绍在CentOS 8系统上安装和配置安全快速的FTP Server,将在CentOS 8上安装vsftpd(非常安全的Ftp守护程序),还将展示如何使用vsftpd以限制用户访问其主目录,以及如何使用SSL/TLS加密数据传输。额外建议:为了更安全、更快地进行数据传输,应使用SCP或SFTP。

在CentOS 8上安装并使用VSFTPD配置FTP Server的方法

 

在CentOS 8上安装vsftpd

vsftpd软件包在默认的CentOS 8存储库中可用,要安装它,请以root或具有sudo特权的用户身份运行以下命令:

sudo dnf install vsftpd

安装软件包后,启动vsftpd守护程序并使其在启动时自动启动:

sudo systemctl enable vsftpd --now

验证服务状态:

sudo systemctl status vsftpd

输出将类似于以下内容,表明vsftpd服务处于活动状态并正在运行:

在CentOS 8上安装并使用VSFTPD配置FTP Server的方法

 

使用vsftpd以配置FTP Server

vsftpd服务器设置存储在/etc/vsftpd/vsftpd.conf配置文件中,大多数设置在文件中都有详细记录。

在以下各节中,我们将介绍配置安全的vsftpd安装所需的一些重要设置。

首先打开vsftpd配置文件:

sudo nano /etc/vsftpd/vsftpd.conf

1.FTP访问

我们将仅允许本地用户访问FTP服务器,找到anonymous_enable和local_enable指令,并确保您的配置与以下行匹配,在/etc/vsftpd/vsftpd.conf文件中:

/etc/vsftpd/vsftpd.conf

anonymous_enable=NO

local_enable=YES

2.启用上传

取消注释write_enable设置以允许更改文件系统,例如上载和删除文件,在/etc/vsftpd/vsftpd.conf文件中:

/etc/vsftpd/vsftpd.conf

write_enable=YES

3.Chroot Jail

通过取消注释chroot指令,防止FTP用户访问其主目录之外的任何文件,在/etc/vsftpd/vsftpd.conf文件中:

chroot_local_user=YES

默认情况下,启用chroot时,如果用户锁定的目录是可写的,则vsftpd将拒绝上传文件,这是为了防止安全漏洞。

启用chroot时,请使用以下方法之一允许上传。

方法1、建议的允许上传的方法是保持chroot启用并配置FTP目录,在本教程中,我们将在用户主目录内创建一个ftp目录,它将用作chroot和一个可写的目录,用于上传文件,在/etc/vsftpd/vsftpd.conf文件中:

user_sub_token=$USER

local_root=/home/$USER/ftp

方法2、另一个选项是在vsftpd配置文件中添加以下指令,如果必须将用户的可写访问权限授予其主目录,请使用此选项,在/etc/vsftpd/vsftpd.conf文件中:

allow_writeable_chroot=YES

4.被动FTP连接

vsftpd可以使用任何端口进行被动FTP连接,我们将指定端口的最小和最大范围,然后在防火墙中打开该范围。

将以下行添加到/etc/vsftpd/vsftpd.conf配置文件:

pasv_min_port=30000

pasv_max_port=31000

5.限制用户登录

要仅允许某些用户登录FTP服务器,请在userlist_enable=YES行之后添加以下行,在/etc/vsftpd/vsftpd.conf文件中:

userlist_file=/etc/vsftpd/user_list

userlist_deny=NO

启用此选项后,需要通过将用户名添加到/etc/vsftpd/user_list文件(每行一个用户)来显式指定哪些用户可以登录。

6.使用SSL/TLS保护传输安全

为了使用SSL/TLS加密FTP传输,您需要具有SSL证书并配置FTP服务器以使用它。

您可以使用由受信任的证书颁发机构签名的现有SSL证书,也可以创建自签名证书。

如果您有指向FTP服务器IP地址的域或子域,则可以轻松生成免费的Let’s Encrypt SSL证书,可参考在CentOS 8服务器上用Let‘s Encrypt加密来保护Apache安全

在本教程中,我们将使用openssl工具生成一个自签名SSL证书。

以下命令将创建一个有效期为10年的2048位私钥和自签名证书,私钥和证书都将保存在同一文件中:

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

创建SSL证书后,打开vsftpd配置文件:

sudo nano /etc/vsftpd/vsftpd.conf

找到rsa_cert_file和rsa_private_key_file指令,将其值更改为pam文件路径,并将ssl_enable指令设置为YES,在/etc/vsftpd/vsftpd.conf文件中:

rsa_cert_file=/etc/vsftpd/vsftpd.pem

rsa_private_key_file=/etc/vsftpd/vsftpd.pem

ssl_enable=YES

如果没有另外指定,则FTP服务器将仅使用TLS建立安全连接。

7.重新启动vsftpd服务

完成编辑后,vsftpd配置文件(不包括注释)应如下所示,即/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

chroot_local_user=YES

listen=NO

listen_ipv6=YES

pam_service_name=vsftpd

userlist_enable=YES

userlist_file=/etc/vsftpd/user_list

userlist_deny=NO

tcp_wrappers=YES

user_sub_token=$USER

local_root=/home/$USER/ftp

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

 

打开防火墙

如何在centos 8上配置和管理防火墙?如果您正在运行,则需要允许FTP流量。

要打开21端口(FTP命令端口),20端口(FTP数据端口)和30000-31000(被动端口范围),请在防火墙上输入以下命令:

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

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

通过输入以下命令重新加载防火墙规则:

firewall-cmd --reload

参考:在CentOS 8系统上配置和管理防火墙(Firewall)的方法

 

创建一个FTP用户

为了测试FTP Server,我们将创建一个新用户。

如果您已经有要授予FTP访问权限的用户,请跳过第一步。

如果在配置文件中设置allow_writeable_chroot=YES,请跳过第3步。

1、创建一个名为newftpuser的新用户:

sudo adduser newftpuser

接下来,您需要设置用户密码:

sudo passwd newftpuser

2、将用户添加到允许的FTP用户列表中:

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

3、创建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/upload目录。

此时,您的FTP Server已完全正常运行,您应该能够使用任何可配置为使用TLS加密的FTP客户端(例如FileZilla)连接到服务器。

 

禁用Shell访问

默认情况下,在创建用户时,如果未明确指定,则该用户将具有对服务器的SSH访问权限。

要禁用Shell程序访问,我们将创建一个新的Shell程序,该Shell程序将仅打印一条消息,告诉用户其帐户仅限于FTP访问。

运行以下命令来创建/bin/ftponly shell并使它可执行:

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

sudo chmod a+x /bin/ftponly

将新的shell附加到/etc/shells文件中的有效shell列表中:

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

将用户shell更改为/bin/ftponly:

sudo usermod newftpuser -s /bin/ftponly

使用相同的命令为仅希望授予FTP访问权限的其他用户更改Shell程序。

 

相关主题

在CentOS 7系统下vsftpd的三种模式搭建方法

精选文章
热门文章