wordpress wp-login.php attack

Добро утро,

Днес ще драсна по темата : wordpress wp-login.php attack или как да защитим блога си от brute force атаки.

Предполагам че всеки по-голям блог в интернет често или рядко е подложен на подобни атаки тип:

91.185.209.4 - - [11/Jul/2014:06:35:07 +0100] "POST /wp-login.php HTTP/1.0" 200 5117 "-" "-"
216.58.248.30 - - [11/Jul/2014:06:35:08 +0100] "POST /wp-login.php HTTP/1.0" 200 5117 "-" "-"
91.185.209.4 - - [11/Jul/2014:06:35:08 +0100] "POST /wp-login.php HTTP/1.0" 200 5117 "-" "-"
91.185.209.4 - - [11/Jul/2014:06:35:09 +0100] "POST /wp-login.php HTTP/1.0" 200 5117 "-" "-"
216.58.248.30 - - [11/Jul/2014:06:35:09 +0100] "POST /wp-login.php HTTP/1.0" 200 5117 "-" "-"
216.58.248.30 - - [11/Jul/2014:06:35:10 +0100] "POST /wp-login.php HTTP/1.0" 200 5117 "-" "-"
216.58.248.30 - - [11/Jul/2014:06:35:11 +0100] "POST /wp-login.php HTTP/1.0" 200 5117 "-" "-"
216.58.248.30 - - [11/Jul/2014:06:35:13 +0100] "POST /wp-login.php HTTP/1.0" 200 5117 "-" "-"

Които сами по себе си водят до натоварване на машината и евентуално забавяне на сайта ни.

Аз лично предпочитам хард защитата – тип iptables или htaccess пред разни плугини за security, които не е ясно колко ефективни могат да бъдат в този случай.

Ето и моето решение за този проблем:

1. Защита тип htaccess на nginx уеб сървър :

location ~ ^/(wp-login\.php$) {
root /var/www/root.bg/;
allow 127.0.0.1;
allow 87.97.123.123; # нашето айпи
allow 87.97.100.100; # друго наше айпи
allow 192.168.1.0/24; # цялата ни локална мрежа
deny all;

2. Защита тип htaccess на apache уеб сървър :

# Options None
# AllowOverride None
Order deny,allow
Allow from 87.97.123.123; # нашето айпи
Allow from 87.97.100.100; # друго наше айпи
Allow from 192.168.1.0/24; # цялата ни локална мрежа
Deny from all

3. Защита тип iptables на сървъра която ограничава “wp-login” да се отваря само от дадени айпи адреси:

iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 80 -m string --algo kmp --string 'wp-login.php' -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 80 -m string --algo bm --string 'wp-login.php' -j ACCEPT
iptables -A INPUT -d 0.0.0.0/0 -p tcp --dport 80 -m string --algo kmp --string 'wp-login.php' -j DROP
iptables -A INPUT -d 0.0.0.0/0 -p tcp --dport 80 -m string --algo bm --string 'wp-login.php' -j DROP

Това е… дано съм бил полезен на някой с този пост 🙂