<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>WordPress login - Matteo Cisilino</title>
	<atom:link href="https://www.cisilino.com/en/tag/wordpress-login/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.cisilino.com/en/</link>
	<description>Guide su WordPress, server e sicurezza</description>
	<lastBuildDate>Mon, 02 Nov 2026 08:00:04 +0000</lastBuildDate>
	<language>en-GB</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.4</generator>
	<item>
		<title>WordPress brute force attacks: how to stop them at the login</title>
		<link>https://www.cisilino.com/en/2026/11/02/wordpress-brute-force-login/</link>
					<comments>https://www.cisilino.com/en/2026/11/02/wordpress-brute-force-login/#respond</comments>
		
		<dc:creator><![CDATA[matteocisilino]]></dc:creator>
		<pubDate>Mon, 02 Nov 2026 08:00:00 +0000</pubDate>
				<category><![CDATA[csdn]]></category>
		<category><![CDATA[brute force]]></category>
		<category><![CDATA[IP blocking]]></category>
		<category><![CDATA[WordPress login]]></category>
		<category><![CDATA[wp-login.php]]></category>
		<guid isPermaLink="false">https://www.cisilino.com/?p=160</guid>

					<description><![CDATA[<p>A brute force attack on wp-login.php can go on all night. How the plugin blocks IPs in .htaccess before WordPress even loads.</p>
<p>The post <a href="https://www.cisilino.com/en/2026/11/02/wordpress-brute-force-login/">WordPress brute force attacks: how to stop them at the login</a> first appeared on <a href="https://www.cisilino.com/en/">Matteo Cisilino</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>This is how it goes: the site is slow at night and nobody knows why. In the logs there are hundreds of requests to <code>wp-login.php</code> from a handful of addresses, with usernames like <em>admin</em> or the domain name. It is a <strong>WordPress brute force</strong> attack: no flaw to exploit, just attempts until a password gives way.</p>
<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" src="https://www.cisilino.com/wp-content/uploads/2026/10/brute-force-attack-wordpress-login.webp" alt="WordPress brute force attack: many thin lines converge on a yellow circle closed by a bar" width="1200" height="630"/></figure>
<h2>What the plugin does against a WordPress brute force attack</h2>
<p>Every failed login is recorded: IP, username tried, outcome, time. Never the password. When an IP goes over the threshold you have set, the plugin blocks what looks like a WordPress brute force attack by adding a rule to <code>.htaccess</code>. It is compatible with Apache 2.4 and 2.2. From then on that address&#8217;s requests stop at the web server. WordPress is not even loaded, so the site can breathe again.</p>
<p>One detail that matters: the counter is an atomic operation on the database. Sending a hundred attempts at the same instant does not let anyone get past the threshold.</p>
<h2>Where to see what happened</h2>
<p>In <em>Settings › Cisilino Site Defense Network</em> you will find the blocked IPs tab, where every WordPress brute force attack ends up. It has a filter and the list of the last 50 detections. If a customer locked themselves out, &#8220;Unblock&#8221; on the row and that&#8217;s it.</p>
<h2>When there are many IPs</h2>
<p>Blocking by IP has a known limit: if the WordPress brute force attack comes from hundreds of different addresses, each one has to cross the threshold first. With the Cisilino network, an IP already seen failing on another of your client&#8217;s sites is blocked before it even arrives. In any case, use non-obvious usernames and long passwords. The plugin removes the noise, but it does not make a weak password strong. The OWASP page on <a href="https://owasp.org/www-community/controls/Blocking_Brute_Force_Attacks" target="_blank" rel="noopener">blocking brute force attacks</a> is a neutral reference for the general principles.</p>
<p>On nginx hosting the plugin records the attempts but cannot write the rule at server level.</p>
<h2>Frequently asked questions</h2>
<h3>How do you stop a WordPress brute force attack?</h3>
<p>By counting failed logins per IP and blocking whoever goes over a threshold. The plugin does it by writing a rule in .htaccess, so the request stops before WordPress.</p>
<h3>Does the plugin store the passwords that were tried?</h3>
<p>No. It records the IP, the username tried, the outcome and the time, never the password.</p>
<h3>Can I unblock an IP that was blocked by mistake?</h3>
<p>Yes, from the blocked IPs list with the Unblock button on each row.</p>
<h2>Read more</h2>
<ul>
<li><a href="https://www.cisilino.com/?p=85">WordPress IP whitelist: manual unblocking and timed bans</a></li>
<li><a href="https://www.cisilino.com/?p=103">Shared IP blocking across WordPress sites with the panel</a></li>
<li><a href="https://www.cisilino.com/en/2026/10/29/cisilino-site-defense-network-security-plugin/">Cisilino Site Defense Network: the WordPress security plugin</a></li>
</ul><p>The post <a href="https://www.cisilino.com/en/2026/11/02/wordpress-brute-force-login/">WordPress brute force attacks: how to stop them at the login</a> first appeared on <a href="https://www.cisilino.com/en/">Matteo Cisilino</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.cisilino.com/en/2026/11/02/wordpress-brute-force-login/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
