Proftpd 用户连接限制规则

Proftpd 用户连接限制规则

我们目前正在定义全球的我们的 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_wrap2mod_geoip) 也可以在这方面提供帮助。

希望这可以帮助!

相关内容