仅限 LAN 访问

仅限 LAN 访问

我已经阅读了相当多的安装指南,但却无法弄清楚如何配置 VSFTPD 以进行仅限 LAN 访问,以及如何将访问限制到单个目录(例如:~/Downloads)。

如果可能的话,我甚至不想在互联网上暴露它的存在。任何帮助都将不胜感激。

电脑:Ubuntu Mate 19.04 64 位。

答案1

仅限 LAN 访问

最好使用防火墙规则来完成此操作。我们将ufw使用简单的防火墙为了这。

首先我们检查ufw

sudo ufw status

如果看到Status: inactive则使用以下命令启用ufw

sudo ufw enable

如以下链接所述,我们将允许端口 20 和 21 进行基本的 VSFTPD 访问。我们不会使用简单的 ufw 规则,例如:

sudo ufw allow ftp

因为这样就可以允许从任何地方进行访问。要允许仅 LAN 访问,我们将使用高级语法:

sudo ufw allow  from 192.168.0.0/24 to any port 20 proto tcp
sudo ufw allow  from 192.168.0.0/24 to any port 21 proto tcp

from 192.168.0.0/24是 LAN-Only 部分。您的可能有所不同。一些家用路由器分配 192.168.0.x 范围内的 IP 地址,而其他路由器分配 192.168.1.x 范围内的 IP 地址,其中 x 介于 2-255 之间。子网掩码/24表示允许该范围内的任何 x 值。

to any意味着分配给这台计算机的任何 IP 地址都是可以的。由于这台计算机不充当路由器,因此这种设置是可以的。

port 2021)是此规则打开的端口。

proto tcp唯一可以使用的tcp协议(而不是协议)。udp

如果我们想将端口 990 和 40,000 到 50,000 端口添加到防火墙,如下面的教程所示,我们可以使用一个命令来执行此操作:

sudo ufw allow  from 192.168.0.0/24 to any port 990,40000:50000 proto tcp

关于 IPv6 的说明

我对 IPv6 本地地址和子网掩码了解不够,无法写出包含 IPv6 ufw 规则的答案。没有任何 Ivv6允许规则任何使用 IPv6 地址访问该ftp站点的尝试都将被拒绝。

这个问题的答案表明 IPv6 可能没有简单的解决方案:如何在 ufw 中允许本地 IPv6 子网?

值得一提的是,以下允许规则语法(基于对上述问题的回答)被接受ufw

sudo ufw allow  from fe80::/64 to any port 21 proto tcp

这应该允许从以 开头的链路本地 IPv6 范围进行 ftp 访问fe80

限制用户只能进入一个目录

这在数字海洋教程.主要步骤如下:

在此示例中,用户名是sammy。基本概念是用户sammy 不得具有写权限到用户可访问目录的基目录。使用ftp以下命令创建文件夹、设置其所有权并确保删除写入权限:

sudo mkdir /home/sammy/ftp
sudo chown nobody:nogroup /home/sammy/ftp
sudo chmod a-w /home/sammy/ftp

接下来,我们创建可以上传文件的目录并将所有权分配给用户:

sudo mkdir /home/sammy/ftp/files
sudo chown sammy:sammy /home/sammy/ftp/files

接下来我们在nano中编辑VSFTPD配置文件:

sudo nano /etc/vsftpd.conf

并作以下修改/补充:

. . .
# Allow anonymous FTP? (Disabled by default).
anonymous_enable=NO
#
# Uncomment this to allow local users to log in.
local_enable=YES
. . .
write_enable=YES
. . .
chroot_local_user=YES
. . .
user_sub_token=$USER
local_root=/home/$USER/ftp
. . .

完成更改后,保存并退出文件。

然后,我们创建并将用户添加到文件中。我们将使用 -a 标志附加到文件:

echo "sammy" | sudo tee -a /etc/vsftpd.userlist

最后我们重新启动守护进程来加载配置更改:

sudo systemctl restart vsftpd

希望这可以帮助

相关内容