我们目前正在定义全球的我们的 ProFTPd 服务器的范围如下:
# Allow max 3 unauthenticated connections by IP
MaxConnectionsPerHost 3 "Sorry, you may not connect more than (%m) times."
# Allow max 3 authenticated connections by IP
MaxClientsPerHost 3 "Sorry, the maximum number clients (%m) from your host are already connected."
# Allow max 10 connection by user
###### MaxClientsPerUser 10 "Sorry, there is already (%m) other connection for this account."
它按有人值守的方式工作,但我们希望允许某些特定的(并非全部)经过身份验证的用户(或 IP 作为缺点)打开比上限指定的更多连接。
使用 ProFTPd 可以实现这个吗?
是的 -> 如能提供任何帮助,我们将不胜感激。
否 -> 是否有其他生产级免费 FTP 服务器(如 PureFTP 或 vsftpd)可以满足这些要求?
答案1
是的,这是可能的,使用mod_ifsession
和部分<IfUser>
。<IfClass>
使用<IfUser>
部分,您可以定义特定于用户的部分,如下所示:
<IfUser user1, user2, user3>
# Special users get special treatment
MaxConnectionsPerHost 30
MaxClientsPerHost 30
MaxClientsPerUser 100
<IfUser>
<IfUser AND !user1, !user2, !user3>
# All other users get the normal treatment
MaxConnectionsPerHost 3
MaxClientsPerHost 3
MaxClientsPerUser 10
</IfUser>
如果你有很多用户,你也可以考虑使用群组而不是单独的用户名,<IfGroup>
部分。
对于 IP 地址/范围的限制,我建议使用 ProFTPD 的类. 有了课程,<IfClass>
部分中mod_ifsession
,您可以执行以下操作:
<Class special-ips>
From 1.2.3.4
From a.b.c.d
</Class
<IfClass special-ips>
# Clients from the special class get special treatment
MaxConnectionsPerHost 30
MaxClientsPerHost 30
MaxClientsPerUser 100
</IfClass>
<IfClass !special-ips>
# All other clients get the normal treatment
MaxConnectionsPerHost 3
MaxClientsPerHost 3
MaxClientsPerUser 10
</IfClass>
请注意,这是一个非常好的主意定义“匹配”规则和“不匹配”规则。
ProFTPD连接 ACLS 指南也涵盖了这一主题,并提到了其他模块(例如 mod_wrap2
,mod_geoip
) 也可以在这方面提供帮助。
希望这可以帮助!