The blacklist is your last line of defense before brute force succeeds. It needs to be: durable (survives restart), liftable (you can release a wrongly-blacklisted IP — your own, usually), and auditable (you can see why each entry was added).
Releasing an entry — admin-only
Auto-lift vs manual-lift — the trade
| Mode | How | Pro | Con |
|---|---|---|---|
| Manual | Admin clicks unblock when needed | Forces a human in the loop; you notice patterns | You lock yourself out, you can't unblock from the locked-out machine |
| Time-based auto-lift | Entries expire after, e.g., 24 hours | Self-healing; can't permanently lock yourself out | Persistent attackers just wait 24h and retry |
| Hybrid | "exceeded_retry" auto-lifts after 1h; "honeypot" stays forever | Best of both | More code (worth it) |