{"id":153602,"date":"2022-02-27T18:18:02","date_gmt":"2022-02-27T18:18:02","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/wpf2b-addon-blocklist\/"},"modified":"2025-05-01T12:27:30","modified_gmt":"2025-05-01T12:27:30","slug":"wpf2b-addon-blocklist","status":"publish","type":"plugin","link":"https:\/\/hat.wordpress.org\/plugins\/wpf2b-addon-blocklist\/","author":8584657,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"2.2.2","stable_tag":"2.2.2","tested":"6.8.5","requires":"4.9","requires_php":"7.4","requires_plugins":null,"header_name":"WP fail2ban Blocklist","header_author":"Charles Lecklider","header_description":"A collaborative preemptive blocklist.","assets_banners_color":"668348","last_updated":"2025-05-01 12:27:30","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/addons.wp-fail2ban.com\/blocklist\/","header_author_uri":"https:\/\/invis.net\/","rating":5,"author_block_rating":0,"active_installs":4000,"downloads":27084,"num_ratings":1,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"invisnet","date":"2022-02-27 18:20:13"},"1.0.1":{"tag":"1.0.1","author":"invisnet","date":"2022-03-06 16:22:05"},"1.0.2":{"tag":"1.0.2","author":"invisnet","date":"2022-03-07 11:54:37"},"1.1.0":{"tag":"1.1.0","author":"invisnet","date":"2022-03-08 03:10:57"},"1.1.1":{"tag":"1.1.1","author":"invisnet","date":"2022-03-20 19:24:33"},"1.1.2":{"tag":"1.1.2","author":"invisnet","date":"2022-03-23 16:26:26"},"2.0.0":{"tag":"2.0.0","author":"invisnet","date":"2022-06-01 13:47:13"},"2.0.1":{"tag":"2.0.1","author":"invisnet","date":"2022-06-06 13:20:19"},"2.1.0":{"tag":"2.1.0","author":"invisnet","date":"2022-06-21 16:25:21"},"2.1.1":{"tag":"2.1.1","author":"invisnet","date":"2022-11-13 23:39:40"},"2.2.0":{"tag":"2.2.0","author":"invisnet","date":"2023-02-25 00:47:11"},"2.2.1":{"tag":"2.2.1","author":"invisnet","date":"2024-09-12 10:05:54"},"2.2.2":{"tag":"2.2.2","author":"invisnet","date":"2025-05-01 12:27:30"}},"upgrade_notice":{"2.2.2":"<p>This is a bug-fix release. You do not need to update your filters from 2.0.0.<\/p>","2.2.1":"<p>This is a bug-fix release. You do not need to update your filters from 2.0.0.<\/p>","2.2.0":"<p>This is a minor feature release. You do not need to update your filters from 2.0.0.<\/p>","2.1.1":"<p>This is a bug-fix release. You do not need to update your filters from 2.0.0.<\/p>","2.1.0":"<p>This is a minor feature release. You do not need to update your filters from 2.0.0.<\/p>","2.0.1":"<p>This is a bug-fix release. You do not need to update your filters from 2.0.0.<\/p>","2.0.0":"<p>This is a feature release. Please update your filters from 1.0.0. Please note that the filter files have been renamed.<\/p>","1.1.2":"<p>This is a bug-fix release. You do not need to update your filters from 1.0.0.<\/p>","1.1.1":"<p>This is a bug-fix release. You do not need to update your filters from 1.0.0.<\/p>","1.1.0":"<p>This is a feature release. You do not need to update your filters from 1.0.0.<\/p>","1.0.2":"<p>This is a bug-fix release. You do not need to update your filters from 1.0.0.<\/p>","1.0.1":"<p>This is a bug-fix release. You do not need to update your filters from 1.0.0.<\/p>","1.0.0":"<p>Requires <em>WP fail2ban<\/em> <strong>4.4.0<\/strong> or later.<\/p>"},"ratings":{"1":0,"2":0,"3":0,"4":0,"5":1},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":2814742,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":2814742,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":2814742,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":2814742,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.0.1","1.0.2","1.1.0","1.1.1","1.1.2","2.0.0","2.0.1","2.1.0","2.1.1","2.2.0","2.2.1","2.2.2"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":2696682,"resolution":"1","location":"assets","locale":""}},"screenshots":{"1":"Dashboard widget"},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[131228,9229,600],"plugin_category":[54],"plugin_contributors":[78764],"plugin_business_model":[],"class_list":["post-153602","plugin","type-plugin","status-publish","hentry","plugin_tags-blocklist","plugin_tags-fail2ban","plugin_tags-security","plugin_category-security-and-spam-protection","plugin_contributors-invisnet","plugin_committers-invisnet"],"banners":{"banner":"https:\/\/ps.w.org\/wpf2b-addon-blocklist\/assets\/banner-772x250.png?rev=2814742","banner_2x":"https:\/\/ps.w.org\/wpf2b-addon-blocklist\/assets\/banner-1544x500.png?rev=2814742","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/wpf2b-addon-blocklist\/assets\/icon-128x128.png?rev=2814742","icon_2x":"https:\/\/ps.w.org\/wpf2b-addon-blocklist\/assets\/icon-256x256.png?rev=2814742","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/wpf2b-addon-blocklist\/assets\/screenshot-1.png?rev=2696682","caption":"Dashboard widget"}],"raw_content":"<!--section=description-->\n<p>There are many plugins that use a database to check for malicious IPs <strong>after<\/strong> they connect, and of course <code>fail2ban<\/code> stops <em>repeated<\/em> attacks, but what if bad IPs could be blocked <strong>before<\/strong> they attack?<\/p>\n\n<p>By working collaboratively - sharing attack data - <em>WP fail2ban Blocklist<\/em> does exactly that.<\/p>\n\n<p>The Blocklist Network Service (BNS) collects attack data from participating sites, performs some analytical magic, and sends back a list of IPs that are attacking sites now but haven't yet attacked that site. In other words, each site periodically gets a unique list of IPs to block <strong>preemptively<\/strong>.<\/p>\n\n<h4>GDPR<\/h4>\n\n<p>The BNS doesn't collect personal data, and bots don't have rights.<\/p>\n\n<p>That said, the BNS only collects the minimum data required (time, IP, event), and only for IPs that have behaved maliciously.<\/p>\n\n<p>Of course, it is possible that some data is generated by <em>people<\/em> behaving maliciously, but the BNS has no way to differentiate - and nor should it: an attack is an attack.<\/p>\n\n<h4>Freemius<\/h4>\n\n<p>To work, the BNS <strong>must<\/strong> know:<\/p>\n\n<ul>\n<li>which sites are running the blocklist add-on,<\/li>\n<li>which version is in use,<\/li>\n<li>and a shared secret for secure communication.<\/li>\n<\/ul>\n\n<p>Freemius already provides all these, and <em>WP fail2ban<\/em> already uses Freemius; why reinvent the wheel?<\/p>\n\n<p>Therefore, unlike the core <em>WP fail2ban<\/em> plugin, you <em>must<\/em> opt into Freemius for the blocklist to work.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Ensure <a href=\"https:\/\/wordpress.org\/plugins\/wp-fail2ban\/\"><em>WP fail2ban<\/em><\/a> is installed. <strong>N.B.<\/strong> Requires version <strong>4.4.0<\/strong> or later.<\/li>\n<li>Install via the Plugin Directory, or upload to your plugins directory.<\/li>\n<li>Activate the plugin through the 'Plugins' menu in WordPress.<\/li>\n<li>Opt into Freemius; the Blocklist will not work without without this.<\/li>\n<li>The Blocklist Network Service (BNS) uses the WordPress REST API to communicate. If there is another security plugin installed be sure it allows access to the blocklist endpoint: <code>\/wp-json\/wp-fail2ban\/v1\/blocklist<\/code><\/li>\n<li><strong>Important:<\/strong> ensure you set <code>maxretry = 1<\/code> in your <code>wordpress\u2011hard<\/code> or <code>wpf2b\u2011blocklist\u2011hard<\/code> jail; the add-on will not work otherwise.<\/li>\n<\/ol>\n\n<p>Details of the configuration steps can be found <a href=\"https:\/\/docs.wp-fail2ban.com\/projects\/wp-fail2ban-blocklist\/?utm_source=wordpress.org&amp;utm_medium=readme&amp;utm_campaign=wp-fail2ban-addon-blocklist-2.2.2\">here<\/a>.<\/p>\n\n<!--section=changelog-->\n<h4>2.2.2<\/h4>\n\n<ul>\n<li>Fix issue with parsing jails which use journald.<\/li>\n<li>Fix harmless warning with PHP 8.3.<\/li>\n<li>Fix documentation links in Site Health checks.<\/li>\n<\/ul>\n\n<h4>2.2.1<\/h4>\n\n<ul>\n<li>Fix issue with opting into Freemius (h\/t @Nyanchovy).<\/li>\n<li>Fix Site Health passing test reported as failing (h\/t @Patmos).<\/li>\n<li>Improve debug code.<\/li>\n<\/ul>\n\n<h4>2.2.0<\/h4>\n\n<ul>\n<li>Add <a href=\"https:\/\/docs.wp-fail2ban.com\/projects\/wp-fail2ban-blocklist\/en\/2.2\/defines\/constants\/WP_FAIL2BAN_ADDON_BLOCKLIST_DEBUG.html?utm_source=wordpress.org&amp;utm_medium=readme&amp;utm_campaign=wp-fail2ban-addon-blocklist-2.2.2\"><code>WP_FAIL2BAN_ADDON_BLOCKLIST_DEBUG<\/code><\/a>.<\/li>\n<li>Add <a href=\"https:\/\/docs.wp-fail2ban.com\/projects\/wp-fail2ban-blocklist\/en\/2.2\/defines\/constants\/WP_FAIL2BAN_ADDON_BLOCKLIST_DEBUG_TRY_ALL_KEYS.html?utm_source=wordpress.org&amp;utm_medium=readme&amp;utm_campaign=wp-fail2ban-addon-blocklist-2.2.2\"><code>WP_FAIL2BAN_ADDON_BLOCKLIST_DEBUG_TRY_ALL_KEYS<\/code><\/a>.<\/li>\n<li>Improve i18n.<\/li>\n<\/ul>\n\n<h4>2.1.1<\/h4>\n\n<ul>\n<li>Fix harmless warning with PHP 8.1.<\/li>\n<li>Compatibility changes for upcoming <code>WPf2b<\/code> release.<\/li>\n<\/ul>\n\n<h4>2.1.0<\/h4>\n\n<ul>\n<li>Add Site Health checks.<\/li>\n<li>Fix REST authentication issue (CORS headers) with some web servers.<\/li>\n<\/ul>\n\n<h4>2.0.1<\/h4>\n\n<ul>\n<li>Fix harmless warning in dashboard widget; appears only before first polling.<\/li>\n<li>Fix REST authentication when both free and premium installed.<\/li>\n<li>Fix help links.<\/li>\n<\/ul>\n\n<h4>2.0.0<\/h4>\n\n<ul>\n<li><strong>IPv6 support.<\/strong> (Requires WP fail2ban 5.0 or later).<\/li>\n<li>Change filter filenames to start with <code>wpf2b-<\/code> instead of <code>wordpress-<\/code>.<\/li>\n<li>Add queue info to admin dashboard widget.<\/li>\n<\/ul>\n\n<h4>1.1.2<\/h4>\n\n<ul>\n<li>Add mouseover hints to dashboard widget.<\/li>\n<li>Improve secret key lookup.<\/li>\n<\/ul>\n\n<h4>1.1.1<\/h4>\n\n<ul>\n<li>Fix bug with secret key lookup.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Add event queue info to dashboard widget.<\/li>\n<li>Increase maximum queue to 16384 events.<\/li>\n<li>Fix bug handling too many events.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Minor bug-fix.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Minor bug-fix.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First WordPress directory release.<\/li>\n<\/ul>","raw_excerpt":"WP fail2ban Blocklist is a collaborative preemptive blocklist for WordPress.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/hat.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/153602","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hat.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/hat.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/hat.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=153602"}],"author":[{"embeddable":true,"href":"https:\/\/hat.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/invisnet"}],"wp:attachment":[{"href":"https:\/\/hat.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=153602"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/hat.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=153602"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/hat.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=153602"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/hat.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=153602"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/hat.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=153602"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/hat.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=153602"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}