

如何在Raspberry Pi Vsftpd设置FTP服务器
source link: https://www.myfreax.com/how-to-setup-ftp-server-with-vsftpd-on-raspberry-pi/
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.

如何在Raspberry Pi Vsftpd设置FTP服务器
FTP 文件传输协议,是用于将文件传输到远程网络的标准网络协议。 有几种可用于Linux的开源FTP服务器

如何在Raspberry Pi Vsftpd设置FTP服务器
本教程介绍如何在Raspbian安装和配置,用于在设备之间共享文件的FTP服务器。
FTP 文件传输协议,是用于将文件传输到远程网络的标准网络协议。 有几种可用于Linux的开源FTP服务器。
最着名和广泛使用的是pureftpd,Proftpd,VSFTPD。 我们将安装VSFTPD,稳定,安全和快速的FTP服务器。
我们还将向您展示如何配置服务器以将用户限制在其家目录,并使用SSL/TLS加密传输。
在开始本教程之前,您已在Raspberry Pi安装 Raspbian。运行FTP服务器不需要图形界面,因此我们的建议是使用Raspbian Lite镜像并启用SSH 。
虽然FTP是一个非常流行的协议,但对于更安全和更快的数据传输,您应该使用SCP 或SFTP。
vsftpd包在Raspbian存储库中可用。 要安装它,请运行命令sudo apt update && sudo apt install vsftpd
。
当安装完成后,FTP服务将自动启动。要验证它,可以运行命令sudo systemctl status vsftpd
打印vsftpd服务状态。输出应显示VSFTPD服务处于active状态。
sudo apt update
sudo apt install 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.conf。
sudo vim /etc/vsftpd.conf
FTP 本地用户
我们仅允许本地用户访问FTP服务器。搜索anonymous_enable
和local_enable
指令并将anonymous_enable
的值改为NO,local_enable
的值改为YES。
anonymous_enable=NO
local_enable=YES
/etc/vsftpd.conf搜索write_enable
并取消注释write_enable
指令,允许文件系统的更改,例如上载和删除文件。
write_enable=YES
/etc/vsftpd.confChroot 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.conf被动 FTP 连接
默认情况下,VSFTPD使用主动模式。要使用被动模式,请设置端口的最小和最大范围。
您可以使用任何端口进行被动的FTP连接。启用被动模式时,FTP客户端在所选范围内的随机端口上打开与服务器的连接。
pasv_min_port=30000
pasv_max_port=31000
/etc/vsftpd.conf限制用户登录
您可以配置VSFTPD以仅允许某些用户登录。要执行此操作,请在文件末尾添加以下配置。
当启用这些选项时,您需要明确将用户名添加到/etc/vsftpd.user_allow_list
文件来指定允许登录的用户。
该文件每一行用户,仅可指定一个用户名。vsftpd.user_allow_lis
文件默认是不存在的,你可以使用vim创建文件/etc/vsftpd.user_allow_list
。
userlist_enable
表示启用user列表,userlist_file
表示指定用户列表的文件,文件的名称可以你喜欢的任何名称。
userlist_deny
指定是允许用户列表的用户还是拒绝用户列表的用户。
当userlist_deny
的值为NO时,这将会拒绝所有用户。仅在用户列表文件的用户是允许的。
当userlist_deny
的值为YES时,这将会允许所有用户,仅在用户列表文件的用户是拒绝的。
注意:用户名是Linux系统的用户名,也就是说使用useradd命令创建的用户。
userlist_enable=YES
userlist_file=/etc/vsftpd.user_allow_list
userlist_deny=NO
/etc/vsftpd.conf重启 vsftpd 服务
这是本教程的vsftpd配置文件。这将配置vsftpd限制用户在其家目录中,允许用户上传文件到家目录任何文件夹。
仅允许指定用户可以访问FTP服务器,你可以在/etc/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
secure_chroot_dir=/var/run/vsftpd/empty
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.user_allow_list
userlist_deny=NO
/etc/vsftpd.confsudo systemctl restart vsftpd
设置防火墙
如果您正在运行UFW防火墙,您需要允许FTP流量。打开FTP命令端口21
,FTP数据端口端口20
和被动端口范围30000-31000
,运行ufw命令。
为了避免被锁定,确保SSH打开端口22
,运行命令sudo ufw allow OpenSSH。然后重新启用UFW来重新加载UFW规则。
运行命令sudo ufw disable && sudo ufw enable
。你也可以运行命令sudo ufw status
查看对防火墙的更改。
sudo ufw allow 20:21/tcp
sudo ufw allow 30000:31000/tcp
sudo ufw allow OpenSSH
sudo ufw disable
sudo ufw enable
Status: active
To Action From
-- ------ ----
20:21/tcp ALLOW Anywhere
30000:31000/tcp ALLOW Anywhere
OpenSSH ALLOW Anywhere
20:21/tcp (v6) ALLOW Anywhere (v6)
30000:31000/tcp (v6) ALLOW Anywhere (v6)
OpenSSH (v6) ALLOW Anywhere (v6)
禁用 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
我们向您展示如何在Raspbian安装和配置FTP服务器。如果您有任何问题或反馈,请随时留下评论。
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK