4

如何在CentOS 8 vsftpd设置FTP服务器 | myfreax

 1 year ago
source link: https://www.myfreax.com/how-to-setup-ftp-server-with-vsftpd-on-centos-8/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

如何在CentOS 8 VSFTPD设置FTP服务器

FTP 文件传输协议,是用于将文件传输到远程网络的标准网络协议。 有几种可用于Linux的开源FTP服务器

Updated At 13 Oct 2022 6 min read
By myfreax
如何在CentOS 8 VSFTPD设置FTP服务器

如何在CentOS 8 VSFTPD设置FTP服务器

本教程介绍如何在CentOS 8使用安装和配置,用于在设备之间共享文件的FTP服务器。

FTP 文件传输协议,是用于将文件传输到远程网络的标准网络协议。 有几种可用于Linux的开源FTP服务器。

最着名和广泛使用的是pureftpdProftpdVSFTPD。 我们将安装VSFTPD,稳定,安全和快速的FTP服务器。

我们还将向您展示如何配置服务器以将用户限制在其家目录,并使用SSL/TLS加密传输。

虽然FTP是一个非常流行的协议,但对于更安全和更快的数据传输,您应该使用SCP SFTP

vsftpd包在CentOS仓库中可用。 要安装它,请运行命令sudo dnf install vsftpd

当安装完成后,FTP服务将自动启动。要验证它,可以运行命令sudo systemctl status vsftpd打印vsftpd服务状态。输出应显示VSFTPD服务处于active状态。

vsftpd在CentOS默认不会自动启动,因此,你还需要设置vsftpd服务的自动启动运行命令sudo systemctl enable vsftpd --now

sudo dnf install vsftpd -y
sudo systemctl enable vsftpd --now
sudo systemctl start vsftpd
sudo systemctl status vsftpd
● vsftpd.service - vsftpd FTP server
     Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2021-03-02 15:17:22 UTC; 3s ago
...

配置VSftpd

VSftpd服务器配置文件位于/etc/vsftpd.conf。VSftpd服务器设置都在此文件中。 要查看所有可用选项,请访问VSFTPD文档页面。

在以下章节中,我们将介绍配置安全VSFTPD安装所需的一些重要设置。首先打开VSFTPD配置文件使用你喜欢的文本编辑器。

在本教程中,我们使用vim打开文件/etc/vsftpd/vsftpd.conf。

sudo vim /etc/vsftpd/vsftpd.conf

FTP 本地用户

我们仅允许本地用户访问FTP服务器。搜索anonymous_enablelocal_enable指令并将anonymous_enable的值改为NO,local_enable的值改为YES。

anonymous_enable=NO
local_enable=YES
/etc/vsftpd/vsftpd.conf

搜索write_enable并取消注释write_enable指令,允许文件系统的更改,例如上载和删除文件。

write_enable=YES
/etc/vsftpd/vsftpd.conf

Chroot Jail

为了防止本地FTP用户访问其家目录之外的文件,请更改chroot_local_user的值为YES。

默认情况下,出于安全原因,当启用chroot时,如果用户被锁定的目录是可写的,则VSFTPD将拒绝上传文件。

因此还需要启用allow_writeable_chroot指令,请将allow_writeable_chroot指令改为YES,这将允许用户上传文件chroot的目录。

chroot_local_user=YES
allow_writeable_chroot=YES
/etc/vsftpd/vsftpd.conf

被动 FTP 连接

默认情况下,VSFTPD使用主动模式。要使用被动模式,请设置端口的最小和最大范围。

您可以使用任何端口进行被动的FTP连接。启用被动模式时,FTP客户端在所选范围内的随机端口上打开与服务器的连接。

pasv_min_port=30000
pasv_max_port=31000
/etc/vsftpd/vsftpd.conf

限制用户登录

您可以配置VSFTPD以仅允许某些用户登录。要执行此操作,请在文件末尾添加以下配置。

当启用这些选项时,您需要明确将用户名添加到/etc/vsftpd/vsftpd.user_allow_list文件来指定允许登录的用户。

该文件每一行用户,仅可指定一个用户名。vsftpd.user_allow_lis文件默认是不存在的,你可以使用vim命令创建文件/etc/vsftpd/vsftpd.user_allow_list

userlist_enable表示启用用户列表,userlist_file表示指定用户列表的文件,文件的名称可以你喜欢的任何名称。

userlist_deny指定是允许用户列表的用户还是拒绝用户列表的用户。

userlist_deny的值为NO时,这将会拒绝所有用户。仅在用户列表文件的用户是允许的。

userlist_deny的值为YES时,这将会允许所有用户,仅在用户列表文件的用户是拒绝的。

注意:用户名是Linux系统的用户名,也就是说使用useradd命令创建的用户。

userlist_enable=YES
userlist_file=/etc/vsftpd/vsftpd.user_allow_list
userlist_deny=NO
/etc/vsftpd/vsftpd.conf

重启 vsftpd 服务

这是本教程的vsftpd配置文件。这将配置vsftpd限制用户在其家目录中,允许用户上传文件到家目录任何文件夹。

仅允许指定用户可以访问FTP服务器,你可以在/etc/vsftpd/vsftpd.user_allow_list文件添加允许的用户。

当完成配置后,保存文件并退出vim。然后运行命令sudo systemctl restart vsftpd重启vsftpd服务。

listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log
chroot_local_user=YES
allow_writeable_chroot=YES
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO
pasv_min_port=30000
pasv_max_port=31000
userlist_enable=YES
userlist_file=/etc/vsftpd/vsftpd.user_allow_list
userlist_deny=NO
/etc/vsftpd/vsftpd.conf
sudo systemctl restart vsftpd

设置防火墙

如果您正在运行Firewalld防火墙,您需要允许FTP流量。打开FTP命令端口21,FTP数据端口端口20和被动端口范围30000-31000,运行firewall-cmd命令。

为了避免被锁定,确保SSH打开端口22。然后重新载如firewall来重新加载防火墙规则。

运行命令sudo firewall-cmd --reload。你也可以运行命令sudo firewall-cmd --zone=public --list-all查看对防火墙的更改。

sudo firewall-cmd --permanent --add-port=20-21/tcp
sudo firewall-cmd --permanent --add-port=30000-31000/tcp
sudo firewall-cmd --permanent --zone=public --add-service=ssh

sudo firewall-cmd --reload

禁用 shell 访问

默认情况下,在创建用户时,如果未明确指定,用户也可以通过SSH访问服务器。要禁用 shell 访问权限,

请创建一个新的shell,将打印消息,告诉用户其帐户仅限于ftp访问。运行echo命令chmod命令,创建/bin/ftponly文件并使其可执行。

然后运行命令将新创建的shell追加到/etc/shells文件中,最后将用户登录shell更改为/bin/ftponly

您可以使用相同的命令更改要仅提供FTP访问的所有用户,newftpuser是Linux 用户的名称,记得更改为你用户。

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

sudo chmod a+x /bin/ftponly

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

sudo usermod newftpuser -s /bin/ftponly

我们向您展示如何在CentOS 8安装和配置FTP服务器。如果您有任何问题或反馈,请随时留下评论。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK