This augments core's ban module to automatic unban IP's after a period of time. Unlike other ban modules (advban and autoban), this works with ban module rather than replacing it.

This is best used with automatic ban modules such as perimeter (requires #3349053: Make perimeter compatible with fast404 module and use DI for ban.ip_manager)

This implements an exponential growth strategy on the period of time that an IP is banned.

1. The first time the IP is banned, set the expiration to the configured number of seconds (defaults to an hour).
2. If the IP has been banned before, and the ban has expired, double the ban period.
3. If the IP is still in their ban period, extend it by the previous ban time by the same amount applied with the current ban (this will usually not happen because banned user's are rejected quickly using core's ban middleware).

Core's ban form can be used to ban user's, but their initial ban time is always determined by the configuration setting. There is a simple configuration form to set this. It would be a nice future enhancement to alter core's ban form to allow setting this per user.

This also adds drush commands to ban, unban, and list the banned.

Supporting organizations: 
Developed for a client

Project information

Releases