WP fail2ban

plugin banner

Write all login attempts to syslog for integration with fail2ban.

Author:Charles Lecklider (profile at wordpress.org)
WordPress version required:4.2
WordPress version tested:6.5
Plugin version:5.2.2.1
Added to WordPress repository:19-10-2012
Last updated:04-04-2024
Rating, %:86
Rated by:66
Plugin URI:https://wp-fail2ban.com/
Total downloads:1 569 704
Active installs:70 000+
plugin download
Click to start download

fail2ban is one of the simplest and most effective security measures you can implement to protect your WordPress site.

WP fail2ban provides the link between WordPress and fail2ban:

Oct 17 20:59:54 foobar wordpress(www.example.com)[1234]: Authentication failure for admin from 192.168.0.1
Oct 17 21:00:00 foobar wordpress(www.example.com)[2345]: Accepted password for admin from 192.168.0.1

WPf2b comes with three fail2ban filters: wordpress-hard.conf, wordpress-soft.conf, and wordpress-extra.conf. These are designed to allow a split between immediate banning (hard) and the traditional more graceful approach (soft), with extra rules for custom configurations.

Features

  • Failed Login Attempts
    The very first feature of WPf2b: logging failed login attempts so the IP can be banned. Just as useful today as it was then.

  • Block User Enumeration
    One of the most common precursors to a password-guessing brute force attack is user enumeration. WPf2b can block it, stopping the attack before it starts.

  • Block username logins
    Sometimes it’s not possible to block user enumeration (for example, if your theme provides Author profiles). WPf2b can require users to login with their email address instead of their username.

  • Blocking Users
    Anther of the older WPf2b features: the login process can be aborted for specified usernames.
    Say a bot collected your site’s usernames before you blocked user enumeration. Once you’ve changed all the usernames, add the old ones to the list; anything using them will trigger a “hard” fail.

  • Empty Username Login Attempts
    Some bots will try to login without a username; harmless, but annoying. These attempts are logged as a “soft” fail so the more persistent bots will be banned.

  • Spam
    WPf2b will log a spammer’s IP address as a “hard” fail when their comment is marked as spam; the Premium version will also log the IP when Akismet discards “obvious” spam.

  • Attempted Comments
    Some spam bots try to comment on everything, even things that aren’t there. WPf2b detects these and logs them as a “hard” fail.

  • Pingbacks
    Pingbacks are a great feature, but they can be abused to attack the rest of the WWW. Rather than disable them completely, WPf2b effectively rate-limits potential attackers by logging the IP address as a “soft” fail.

  • Block XML‑RPC Requests [Premium]
    The only reason most sites need XML‑RPC (other than Pingbacks) is for Jetpack; WPf2b Premium can block XML‑RPC while allowing Jetpack and/or Pingbacks.

  • Block Countries [Premium]
    Sometimes you just need a bigger hammer – if you’re seeing nothing but attacks from some countries, block them!

  • Cloudflare and Proxy Servers
    WPf2b will work with Cloudflare, and the Premium version will automatically update the list of Cloudflare IP addresses.
    You can also configure your own list of trusted proxies.

  • syslog Dashboard Widget
    Ever wondered what’s being logged? The dashboard widget shows the last 5 messages; the Premium version keeps a full history to help you analyse and prevent attacks.

  • Site Health Check
    WPf2b will (try to) check that your fail2ban configuration is sane and that the filters are up to date; out-of-date filters are the primary cause of WPf2b not working as well as it can.
    When did you last run the Site Health tool?

  • mu-plugins Support
    WPf2b can easily be configured as a “must-use plugin” – see Configuration.

  • API to Extend WPf2b
    If your plugin can detect behaviour which should be blocked, why reinvent the wheel?

  • Event Hooks [Premium]
    Need to do something special when WPf2b detects a particular event? There’s a hook for that.

Premium

  • Web Application Firewall (WAF)
  • Akismet support.
  • Block XML‑RPC while allowing Jetpack and/or Pingbacks.
  • Block Countries.
  • Auto-update Cloudflare IPs.
  • Event log.
  • Event hooks.

ChangeLog