我需要配置一个具有上传功能的匿名 FTP。考虑到这个要求,我尝试将此服务器锁定到最低限度。
我希望施加的限制之一是仅允许上传给定的一组文件名。
我尝试禁止对上传文件夹的写权限,并在其中放入一些具有写权限的空文件:
/var/ftp/ [root.root] [drwxr-xr-x]
|-- upload/ [root.root] [drwxr-xr-x]
| |-- upfile1 [ftp.ftp] [--w-------]
| `-- upfile2 [ftp.ftp] [--w-------]
`-- download/ [root.root] [drwxr-xr-x]
`-- ...
但是这种方法不起作用,因为当我尝试上传时upfile1
,它会尝试删除并在其位置创建一个新文件,而没有这样做的权限。
有没有办法让它发挥作用,或者也许使用不同的方法,比如滥用选项deny_file
?
答案1
好的,我已经解决了这个问题:
添加/etc/vsftpd/vsftpd.conf
以下行:
anon_other_write_enable=YES
从man vsftpd.conf (5)
:
anon_other_write_enable
如果设置为 YES,匿名用户将被允许执行除上传和创建目录之外的写入操作,例如删除和重命名。通常不建议这样做,但为了完整性还是包括了。
默认:
NO
然后,ftp 文件布局应该是:
/var/ftp/ [root.root] [drwxr-xr-x]
|-- upload/ [root.root] [drwxr-x--x]
| |-- upfile1 [ftp.users] [--w-r-----]
| `-- upfile2 [ftp.users] [--w-r-----]
...
--x
目录的其他权限upload/
在这里是关键:
r
- 将允许列出目录内容w
- 允许创建和删除文件x
- 将允许读取/写入现有文件。
最后,ftp
所有者-w-
文件权限不允许匿名用户下载该文件,但本地用户r--
可以读取该文件。
如果我在这里透露了一些我错过的攻击媒介,请在下面评论。