之前已经在wheezy中达到了相同目标,比较奇怪的是github中mod_ldap最高只到2.9.3,但proftpd源码中的版本还在增加
官方包中wheezy和stretch的区别
wheezy | stretch | |
proftpd | 1.3.4a | 1.3.5b |
mod_ldap | 2.9.0 | 2.9.4 |
概述:
总结一下我对Linux下FTP服务端的需求
1、服务端支持文件系统UTF-8中文编码,但要允许不支持UTF-8的FTP客户端登录
2、只允许openldap虚拟用户登录,虚拟用户用uniqueMember归属到虚拟用户组
3、数据目录不依赖文件系统属性控制权限,全部由配置文件进行控制
4、配置文件只用组权限配置角色,用户拥有什么角色在openldap通过加入组控制
5、服务用www-data:www-data权限运行,上传文件全部归属于此用户,方便web访问
6、上传目录要支持非管理员只允许上传,不允许下载(包括自己刚上传的文件)
7、所有虚拟用户共用一个HOME目录,无读取权限的子目录直接隐藏
8、隐藏.htaccess .ftpaccess文件等文件名以"."开头的文件
9、隐藏文件名以"_h5ai"开头的文件
10、配置文件中涉及到的主目录框架所有FTP用户都不允许修改,需修改由站点管理员SSH登录Linux操作
11、主目录框架最少分两层,内容管理员对第一层也只有只读权限,并且第一层不存任何文件
12、内容管理员可以在主目录框架第二层以下任意操作:上传、下载、建目录、改名、移动、删除
13、普通用户对除上传目录以外都是只读权限且只能查看有读权限目录,无读取权限的目录直接隐藏
14、数据区域提供web访问,apache和proftpd用相同的openldap组认证(角色)控制权限
15、由于web列表和下载权限分不开,上传目录不提供普通用户web访问
16、定期rsync备份、定期删除旧log
以我目前掌握的信息,要满足以上需求只有proftpd可以做到,pure-ftpd和vsftpd都不行,特别是配置个别目录普通用户可上传但不允许下载
上传目录可以列表,但只能上传文件,禁止建新目录,禁止下载(包括自己刚上传的文件),禁止删除,禁止重上传覆盖、禁止更名,禁止移动到其他目录等
总之和只读目录相比多了一个上传文件权限,少了一个下载权限。这种权限在Serv-U中特别简单就是“-W---L--I”
-W---L--I
文件:-读取 +写入 -追加 -删除 -执行
目录:+列表 -创建 -移除
子目录:+继承
proftpd对比于pure-ftpd、vsftpd特别类似apache对比于nginx。性能和安全性都不是最好的,但是支持的特性却是最全的,当然配置也是最复杂的
随便在网上一搜就搜到了proftpd 1.3.5及以前的mod_copy模块有漏洞CVE-2019-12815,stretch中到1.3.5b-4+deb9u1才修复
debian-9.13.0中提供的是1.3.5b-4+deb9u5,应该是修复此漏洞后的版本
https://nvd.nist.gov/vuln/detail/CVE-2019-12815
https://www.debian.org/security/2019/dsa-4491
wheezy中就只能在ProFTPd配置文件中禁用mod_copy模块:# nano /etc/proftpd/modules.conf,在LoadModule mod_copy.c前加注释,保存后重启proftpd
https://copir.net/how-to-fix-file-copy-vulnerability-in-mod_copy-in-proftpd-cve-2019-12815/
apache是可以多次认证,每进入一个未认证的目录就会弹出认证窗口,但是权限基本只有两种: (1)有权限可访问;(2)无权限访问。
有权限可访问则即可列表也可下载