Alas, the standard config does not activate the built-in backoff scaling - people attacking can just figure out the absolute-based bantime and work around it. To activate the scaling ban windows, your amended /etc/fail2ban/jail.local will look sort of like this:
[DEFAULT]
... other settings ...
dbpurgeage = 7d
bantime.increment = true
bantime.rndtime = 900
bantime.factor = 1
bantime.formula = ban.Time * (1<<(ban.Count if ban.Count<20 else 20)) * banFactor
These factor/formula are from the upstream docs, not my invention but they work great. The dbpurge is there to support the scaling backoff calculations, it needs some historical data. The rndtime will be based on whatever ban times you set (I use 3600, so 900 gives me a 15 minute random variance).
I am not sure why it’s not activated by default, but it’s a thing.