Brute force атаки на входа на администрация към joomla & wordpress - как да се справим?

Brute force атаки на входа на администрация към joomla & wordpress - как да се справим?

Здравейте, в тази статия ще Ви запознаем как да защитите максимално приложението Ви от зачестили в последните няколко дни bruteforce атаки към OpenSource CMS от доста големи botnet мрежи, като разбира се най-засегнатите приложения са joomla и wordpress.

Как да разберем дали подлежим на bruteforce атака?
Нужно е да проверим заявките в access лога на сайт, който се намира в /home/user/access-logs/ като заявките от самия Bruteforce изглеждат по сления начин в лога:

*31.59.139.88 - - [09/Apr/2013:13:45:06 +0300] "POST /wp-login.php HTTP/1.1" 200 3146 "-" "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:16.0.1) Gecko/20121011 Firefox/16.0.1"

31.59.139.88 - - [09/Apr/2013:13:45:06 +0300] "POST /wp-login.php HTTP/1.1" 200 3146 "-" "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:16.0.1) Gecko/20121011 Firefox/16.0.1"

31.59.139.88 - - [09/Apr/2013:13:45:06 +0300] "POST /wp-login.php HTTP/1.1" 200 3146 "-" "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:16.0.1) Gecko/20121011 Firefox/16.0.1"

31.59.139.88 - - [09/Apr/2013:13:45:06 +0300] "POST /wp-login.php HTTP/1.1" 200 3146 "-" "Mozilla/5.0 (Windows; U; MSIE 9.0; WIndows NT 9.0; en-US))"

31.59.139.88 - - [09/Apr/2013:13:45:06 +0300] "POST /wp-login.php HTTP/1.1" 200 3146 "-" "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:16.0.1) Gecko/20121011 Firefox/16.0.1"

31.59.139.88 - - [09/Apr/2013:13:45:06 +0300] "POST /wp-login.php HTTP/1.1" 200 3146 "-" "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)"

31.59.139.88 - - [09/Apr/2013:13:45:06 +0300] "POST /wp-login.php HTTP/1.1" 200 3146 "-" "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.15 (KHTML, like Gecko) Chrome/24.0.1295.0 Safari/537.15"*

В този access_log забелязваме, доста заявки в един и същ интервал от време, като с тези заявки се забелязва опит да се направи bruteforce и да бъде разбита паролата за достъп до администрацията на приложението. POST заявките към страницата с вход към администрацията са реални опити за налучкване на паролата.

Как да се защитим максимално?

Wordpress:
1) Нужно е да използвате максимално сложна парола за достъп до администрацията на приложението, пример: "93fK)G!I29%"
2) Вариант 1: Можете да защитите самата директория в която се намира Вашия сайт с парола, но по този начин всеки посетител който се опита да достъпи сайта Ви ще му изисква тази парола, поради тази причина Ви предлагаме да бъде защитен само скрипта wp-login.php с парола и ако някой се опита да го достъпи да му изиска нужната оторизация, за да може той да изпълни самия скрипт. В този вариант няма да използваме опцията на cPanel "Password Protect Directories", тъй като с нея се прави паролно защитена директория, а ние ще направим защита само за скрипта wp-login.php. Ето как можем да направим това:
2.1) Нужно е първо да си генерираме парола в криптиран вид в който е доста трудно да бъде дешифрирана. Това можем да направим като отидем на следния линк: http://www.web2generators.com/apache/htpasswd
generator подадем потребителско име по избор от Вас(не е нужно да бъде cPanel потребителя Ви) след което подадем и желаната парола:

*Username: ivan

Password: Tz5dMG8byC5o

**Резултат: ivan:$apr1$ig6q0msc$szoyacGVyfuHzRWzD2UJd1***

2.2) Създаваме един файл в директория /home/user/.htpasswds/ в който файл ще поставим резултата от генерираните по-горе данни, нека файл да бъде с името на домейна Ви: mysite след което поставяме в него резултата от генератора:

***ivan:$apr1$ig6q0msc$szoyacGVyfuHzRWzD2UJd1***

2.3) Отваряме с текстов редактор .htaccess файла на приложението и задаваме следите редове в него, за да може да защитим с парола отварянето на wp-login.php скрипта:

*AuthType Basic

AuthName "Admin secure"

AuthUserFile "/home/user/.htpasswds/mysite"

<files "wp-login.php">

ErrorDocument 401 "Unauthorized Admin Access"

require valid-user

</files>*

След като сме изпълнили всичко това при опит някой да зареди wp-login.php първо ще му изиска потребител и парола, след което ще го допусне да може да изпълни скрипта:


3) Вариант 2: Можете да ограничите директно достъп до скрипт wp-login.php като подадете само достъп от определени IP адреси(тези от които администрирате приложението си). По този начин ако бот/посетител на сайта се опита да отвори wp-login.php и негово IP не е в разрешените, той ще забележи следната грешка:

***Forbidden



You don't have permission to access /wp-login.php on this server.***

За да постигнете това е нужно да отворите с текстов редактор .htaccess файла на Вашето приложение и да добавите следните редове:

*<files wp-login.php>

order allow,deny   

allow from 91.215.218.14

</files>*

Като на мястото на 91.215.218.14 поставяте Вашето IP, ако желаете да добавите още IP адреси е нужно по реда с IP адрес да добавите ред със същия текст само, че с новото IP, пример:

*<files wp-login.php>

order allow,deny   

allow from 91.215.218.14

allow from 91.215.218.15

</files>*

Joomla:
Тук отново ще направим защита на администрацията на приложението по два начина, единия е с паролно защитена директория от cPanel, а другия с ограничение по IP адрес чрез .htaccess файла.

Вариант1:
1) Логваме се в cPanel и избираме опцията "Защита на директории с парола":

2) Избираме сайта за който ще направим паролна защита на директория administrator:

3) Избираме директория administrator, която ще защитим с парола:

4) Подаваме параметри на за безопасност:

5) Създаваме потребител и парола за директорията:


Директорията за достъп до администрацията вече е защитена с парола.

Вариант2:
6) Създаваме в директория administrator .htaccess файл в който описваме кой IP адреси да разполагат с достъп по следния начин:

*<files wp-login.php>

order allow,deny   

allow from 91.215.218.14

</files>*

Какви могат да бъдат последствията ако не защитите максимално Вашето приложение?
Освен ъпладване на зловреден код и заразяване на целия акаунт, то също така може да бъде използван акаунта Ви за изпращане на СПАМ съобщения. При подобен опит за brute force на входа на администрацията може да доведе и до повишение процесорни минути поради многото заявки за опит за логин.

Постоянно има вълни от атаки към подобни приложения, когато се открие уязвимост в тях и поради тази причина е нужно винаги да се обновяват версиите към най-актуалната.