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:
- Ha a kérés POST metódussal érkezett ÉS
- A kérés wp-admin vagy wp-comments-post vagy wp-login vagy wp-signup tartalmú (kis/nagybetű érzéketlen) ÉS
- A kérés referer-ében nem található meg a kérdéses kiszolgáló neve (kis/nagybetű érzéketlen) VAGY
- A kéréshez nem társult USER_AGENT
- 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 !!! 😀