Röviden kezdve, én is kaptam egy jó kis brute force próbálkozást, ami látványosan megpörgette a szervereket…

Google barátunk sokféle segítséget hozott, amit én kicsit továbbfejlesztettem és most itt közkincsé teszek…

Az Apache mod_rewrite moduljával bármely szolgáltatott weboldalt védeni tudjuk. Ehhez csak az alábbi részletet kell felvenni a fő konfigurációba.

RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} ^(|.*/)wp-(admin|comments-post|login|signup) [NC]
RewriteCond expr "! %{HTTP_REFERER} -strcmatch '*://%{HTTP_HOST}/*'" [OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule (.*) http://%{REMOTE_HOST}/$ [R=302,L]

Sorról sorra:

  1. Ha a kérés POST metódussal érkezett ÉS
  2. A kérés wp-admin vagy wp-comments-post vagy wp-login vagy wp-signup tartalmú (kis/nagybetű érzéketlen) ÉS
  3. A kérés referer-ében nem található meg a kérdéses kiszolgáló neve (kis/nagybetű érzéketlen) VAGY
  4. A kéréshez nem társult USER_AGENT
  5. Akkor irányítsuk vissza 302-es “hibakóddal” saját magára a brute force-olós gépet…

Eddigi tapasztalatok alapján 100%-osan bevállt. 😀

A 4. sort lehetne így is írni:

RewriteCond %{HTTP_HOST}==%{HTTP_REFERER} !^(.*?)==https?://\1/(.*)? [NC,OR]

A szépségek:

  • Normál “GET” kéréseket nem bánt.
  • A védett modulok listája könnyedén bővíthető, bármilyen mappastruktúrában helyezkedhetnek el.
  • Az átirányítás 302-es kóddal történik, ami sikeres belépést jelent !!! 😀