Jump to content

Защита админки сайтов от подбора паролей


Recommended Posts

Привет всем!

Наткнулся недавно на вот эту страничку: http://forum.antichat.ru/threads/290902/

и решил проверить, а не подбирает ли кто то пароли к моим сайтам.

Воспользовался простеньким скриптом:

 

Думаю, любого вабмастера донимают искатели админок и системных папок вида:

http://сайт/admin.phphttp://сайт/phpmyadmin/http://сайт/administrator/http://сайт/login.php'>http://сайт/admin.phphttp://сайт/phpmyadmin/http://сайт/administrator/http://сайт/login.php

Как бороться с такими искателями? Думаю, баном. Скрипт работает следующим образом: идет запрос на http://сайт/admin.php ==> идет перенаправление на PHP-скрипт бана ==> скрипт добавляет в файл .htaccess запись "Deny from 1.2.3.4", где 1.2.3.4 - ip-адрес искателя ==> уведомляет по email админа сайта о бане. Всё просто =)
У меня по этим адресам ничего нет, но я всё равно использую этот скрипт, ибо нефиг лезть куда не надо =)
 

Установка


  • Сам PHP-скрипт бана. Назовем его ban.php
    <?// PHP-скрипт автоматического бана по IP в .htaccess при посещении запрещенного URL $tomail = 'admin@dimlife.com'; // email владельца сайта$frommail = 'robot@dimlife.com'; // условный email отправителя$date = date('d.m.Y H:i:s');$ip = $_SERVER['REMOTE_ADDR'];$url = $_SERVER['REQUEST_URI'];$useragent = $_SERVER['HTTP_USER_AGENT'];$refer = $_SERVER['HTTP_REFERER'];$ban = "# ".$date." ".$url." \r\nDeny from ".$ip." \r\n"; // эта строка запишется в .htaccess$htaccess = $_SERVER['DOCUMENT_ROOT'].'/.htaccess'; // путь до .htaccess$str = file_get_contents($htaccess);$fn = 'Deny from '.$ip;$pos = strpos($str,$fn); // если IP-адрес не забанен в .htaccessif ($pos === false){  $o = @fopen($htaccess, "a+"); // открывает .htaccess  $write = @fputs($o, $ban); // пишет строку о бане  // уведомление на email админа сайта  mail (         $tomail,         'Новый бан! ('.$url.')',         'дата: '.$date.' | IP: '.$ip."\r\n".'юзерагент: '.$useragent."\r\n".'Запрос: '.$url.' | реферал: '.$refer,         'From:'.$frommail       );  fclose($o);  // показывает нарушителю страницу с уведомлением о бане  echo '        <html><head></head><body style="background:#363636;font-family:Century Gothic;color:#CFCFCF">        <div style="position:fixed;top:25%;left:25%;width:400px;height:400px;        top:expression((document.documentElement.scrollTop + screen.height/2 - 200) + \'px\');;">        <span style="font-size:300px">БАН!</span></div>        </body></html>      '; } // если IP-адрес уже забанен в .htaccesselse{  // только уведомление на email админа сайта  mail (         $tomail,         'Уже забанен ('.$ip.')',         'дата: '.$date.' | IP: '.$ip."\r\n".'юзерагент: '.$useragent."\r\n".'Запрос: '.$url.' | реферал: '.$refer,         'From:'.$frommail       );}?>
    Этот же скрипт можно взять на gist.github.com/dimlife/5799050, pastebin.com/itc4a5Cw
    Сохраняем ban.php в любом удобном месте.
  • Теперь определимся, за посещение каких ссылок будем банить. В файле .htaccess добавим
    RewriteRule admin.php /путь/до/ban.php [NC]RewriteRule login /путь/до/ban.php [NC]RewriteRule administrator /путь/до/ban.php [NC] // админка joomlaRewriteRule wp-login.php /путь/до/ban.php [NC] // админка wordpress
    Добавить можете кучу ссылок.

Дополнения


Чтобы добавить в исключения свой IP-адрес, делаем так

RewriteCond %{REMOTE_ADDR} !1.2.3.4RewriteRule admin.php /путь/до/ban.php [NC]

где "1.2.3.4" - ваш IP-адрес. Если у вас динамический IP, можно обрезать, например, до "1.2.".
Если IP-адресов больше одного, то это будет выглядеть так

RewriteCond %{REMOTE_ADDR} !1.2.3.4 [OR]RewriteCond %{REMOTE_ADDR} !3.2.3. [OR]RewriteCond %{REMOTE_ADDR} !2.1.RewriteRule admin.php /путь/до/ban.php [NC]
Link to post
Share on other sites
  • VIP

 

 

Думаю, любого вабмастера донимают искатели админок и системных папок вида:

Как бороться с такими искателями? 

 

Я решил пока так в .htacess:

 

<Files 403.shtml>

order allow,deny

allow from all

</Files>

 

<Files wp-login.php>

Order Deny,Allow

Deny from all

</Files>

 

В итоге все попытки войти в админку по любому адресу отбрасывает на страницу 404.

Как это работает - не заморачивался. 

Link to post
Share on other sites
  • Administrators

На joomla ставлю плагин, который прячет админку. Пять раз стукнулся по несуществующему адресу админки - блок на год. 

Link to post
Share on other sites

Результаты проверки для одного из сайтов с нулевыми показателями:

Deny from 62.133.162.123
# 17.08.2015 00:02:14 /admin.php
Deny from 176.213.90.234
# 17.08.2015 00:28:36 /admin.php
Deny from 178.35.51.227
# 17.08.2015 00:37:26 /admin.php
Deny from 95.32.225.222
# 17.08.2015 00:44:02 /admin.php
Deny from 83.237.101.106
# 17.08.2015 01:02:06 /admin.php
Deny from 5.165.53.87
# 17.08.2015 01:05:36 /admin.php
Deny from 37.76.191.12
# 17.08.2015 01:07:17 /admin.php
Deny from 5.166.167.237
# 17.08.2015 01:11:54 /admin.php
Deny from 46.39.53.62
# 17.08.2015 01:12:06 /admin.php
Deny from 5.79.245.119
# 17.08.2015 01:15:04 /admin.php
Deny from 128.70.52.157
# 17.08.2015 01:36:41 /admin.php
Deny from 176.14.177.247
# 17.08.2015 01:40:12 /admin.php
Deny from 95.53.117.101
# 17.08.2015 01:41:02 /admin.php
Deny from 46.172.215.136
# 17.08.2015 07:25:34 /admin.php
Deny from 78.25.122.210
# 17.08.2015 07:27:15 /admin.php
Deny from 46.180.24.130
# 17.08.2015 07:28:12 /admin.php
Deny from 188.17.193.125
# 17.08.2015 07:31:13 /admin.php
Deny from 46.0.220.58
# 17.08.2015 07:47:02 /admin.php
Deny from 109.184.62.101
# 17.08.2015 07:49:04 /admin.php
Deny from 91.185.24.158
# 17.08.2015 08:13:32 /admin.php
Deny from 95.85.75.225
# 17.08.2015 08:17:30 /admin.php
Deny from 46.200.39.15
# 17.08.2015 08:23:32 /admin.php
Deny from 136.169.139.240
# 17.08.2015 08:27:42 /admin.php
Deny from 109.225.200.175
# 17.08.2015 08:40:17 /admin.php
Deny from 37.54.11.94
# 17.08.2015 08:40:41 /admin.php
Deny from 95.78.15.184
# 17.08.2015 08:48:07 /admin.php
Deny from 178.121.248.0
# 17.08.2015 08:58:49 /admin.php
Deny from 46.61.242.201
# 17.08.2015 09:00:25 /admin.php
Deny from 94.41.146.99
# 17.08.2015 09:06:13 /admin.php
Deny from 188.162.36.18
# 17.08.2015 09:08:55 /admin.php
Deny from 217.23.187.6
# 17.08.2015 09:12:07 /admin.php
Deny from 5.165.148.217
# 17.08.2015 09:12:30 /admin.php
Deny from 46.158.7.38
# 17.08.2015 09:19:54 /admin.php
Deny from 176.101.236.185
# 17.08.2015 09:24:09 /admin.php
Deny from 62.133.162.96
# 17.08.2015 09:36:28 /admin.php
Deny from 31.23.246.63
# 17.08.2015 09:44:04 /admin.php
Deny from 178.187.109.98
# 17.08.2015 09:48:48 /admin.php
Deny from 109.61.194.55
# 17.08.2015 09:49:07 /admin.php
Deny from 128.75.92.16
# 17.08.2015 09:52:05 /admin.php
Deny from 95.78.14.230
# 17.08.2015 09:56:15 /admin.php
Deny from 46.158.11.58
# 17.08.2015 09:59:11 /admin.php
Deny from 178.206.57.72
# 17.08.2015 10:03:46 /admin.php
Deny from 176.52.124.245
# 17.08.2015 10:05:43 /admin.php
Deny from 46.72.200.196
# 17.08.2015 10:17:04 /admin.php
Deny from 95.179.93.231
# 17.08.2015 10:25:33 /admin.php
Deny from 79.172.68.11
# 17.08.2015 10:39:24 /admin.php
Deny from 81.4.230.185
# 17.08.2015 10:45:28 /admin.php
Deny from 95.67.203.149
# 17.08.2015 10:53:57 /admin.php
Deny from 95.30.151.41
# 17.08.2015 11:05:50 /admin.php
Deny from 109.184.33.212
# 17.08.2015 11:10:36 /admin.php
Deny from 178.121.220.178
# 17.08.2015 11:20:05 /admin.php
Deny from 46.41.82.153
# 17.08.2015 11:31:58 /admin.php
Deny from 46.233.196.49
# 17.08.2015 11:38:12 /admin.php
Deny from 188.162.132.50
# 17.08.2015 11:38:47 /admin.php
Deny from 95.30.255.169
# 17.08.2015 11:52:57 /admin.php
Deny from 77.247.239.213
# 17.08.2015 11:53:58 /admin.php
Deny from 213.191.13.233
# 17.08.2015 11:55:40 /admin.php
Deny from 109.194.111.231
# 17.08.2015 12:01:36 /admin.php
Deny from 37.78.132.6
# 17.08.2015 12:13:23 /admin.php
Deny from 85.173.92.226
# 17.08.2015 12:23:53 /admin.php
Deny from 95.67.161.200
# 17.08.2015 12:26:38 /admin.php
Deny from 217.118.83.233
# 17.08.2015 12:29:09 /admin.php
Deny from 95.179.13.134
# 17.08.2015 12:43:15 /admin.php
Deny from 94.230.43.7
# 17.08.2015 12:44:51 /admin.php
Deny from 37.113.176.12
# 17.08.2015 12:46:14 /admin.php
Deny from 176.194.28.145
# 17.08.2015 12:46:58 /admin.php
Deny from 95.188.0.210
# 17.08.2015 12:58:40 /admin.php
Deny from 37.78.234.253
# 17.08.2015 13:07:13 /admin.php
Deny from 85.15.122.129
# 17.08.2015 13:12:57 /admin.php
Deny from 46.72.66.23

Link to post
Share on other sites

Вот для другого сайта:

 

# 02.08.2015 11:06:10 /wp-login.php?action=register
Deny from 142.54.172.210
# 03.08.2015 15:40:17 /wp-login.php
Deny from 91.200.12.20
# 03.08.2015 21:37:19 /wp-login.php
Deny from 188.234.82.23
# 04.08.2015 02:20:31 /administrator/Editor/assetmanager/assetmanager.asp
Deny from 192.187.126.162
# 04.08.2015 17:02:26 /wp-login.php
Deny from 94.153.10.0
# 06.08.2015 11:56:27 /wp-login.php
Deny from 188.232.25.1
# 06.08.2015 13:57:44 /wp-login.php
Deny from 122.176.119.182
# 06.08.2015 21:28:23 /wp-login.php
Deny from 52.26.248.203
# 07.08.2015 04:27:56 /wp-login.php
Deny from 83.172.8.222
# 08.08.2015 21:27:14 /wp-login.php
Deny from 31.177.83.38
# 09.08.2015 04:15:27 /wp-login.php
Deny from 82.81.7.168
# 09.08.2015 13:15:50 /wp-login.php
Deny from 62.16.2.210
# 11.08.2015 02:26:10 /administrator/index.php
Deny from 46.119.115.165
# 11.08.2015 11:01:42 /wp-login.php
Deny from 5.165.194.119
# 12.08.2015 09:59:23 /wp-login.php
Deny from 142.54.184.181
# 12.08.2015 20:46:21 /administrator/fckeditor1/editor/fckeditor.html
Deny from 198.204.245.202
# 13.08.2015 02:43:08 /wp-login.php
Deny from 91.90.15.144
# 13.08.2015 15:39:33 /wp-login.php
Deny from 52.8.194.255
# 13.08.2015 18:07:56 /wp-login.php
Deny from 193.201.224.166
# 13.08.2015 21:08:41 /wp-login.php
Deny from 81.4.150.214
# 14.08.2015 19:38:11 /admin.php
Deny from 193.201.227.116
# 16.08.2015 21:10:56 /admin.php?mod=addnews&action=addnews
Deny from 5.105.148.129

Link to post
Share on other sites

Да ну нафиг. В итоге htaccess разрастется до монстра и будет грузить похлеще этих горехакеров. Как вариант поставить на денек, другой и отследить наиболее частые запросы в админку и потом уже прописать в таком стиле:

<Files wp-login.php>
Order Deny,Allow
Deny from all
</Files>

И пусть болт грызут и нагрузки не будет

Link to post
Share on other sites

Брут — занятие весьма сложное и малоэффективное, а если в пароль добавить несколько сложных символов, то вероятность вообще стремится к нулю. Спрашивается, зачем все это колдовство с .htacces?

Link to post
Share on other sites

Брут — занятие весьма сложное и малоэффективное, а если в пароль добавить несколько сложных символов, то вероятность вообще стремится к нулю. Спрашивается, зачем все это колдовство с .htacces?

Они нагрузку создают

Link to post
Share on other sites
  • Administrators

Брут — занятие весьма сложное и малоэффективное, а если в пароль добавить несколько сложных символов, то вероятность вообще стремится к нулю. Спрашивается, зачем все это колдовство с .htacces?

Когда брутят в 50 запросов с хорошего сервера... Эффект сравнимый с ддос)

Link to post
Share on other sites

На joomla ставлю плагин, который прячет админку. Пять раз стукнулся по несуществующему адресу админки - блок на год. 

Подскажите модуль пожалуйста.

Link to post
Share on other sites

Они нагрузку создают

 

Когда брутят в 50 запросов с хорошего сервера... Эффект сравнимый с ддос)

При подозрениях — глянул логи и раздал всем бананы) Хотя автоматизированный процесс точно получше будет.

Link to post
Share on other sites

 

Да ну нафиг. В итоге htaccess разрастется до монстра и будет грузить похлеще этих горехакеров. Как вариант поставить на денек, другой и отследить наиболее частые запросы в админку и потом уже прописать в таком стиле:

<Files wp-login.php>
Order Deny,Allow
Deny from all
</Files>

И пусть болт грызут и нагрузки не будет

 

 

 

А что насчёт нагрузки?

Какой вариант с наименьшими потерями, если запрос к сайту каждую минуту идёт?

Link to post
Share on other sites

Вот вариант, что я описал. Там тупо 403 ошибку будет выдавать. 

 

Этот код в htaccess, который в корневой директории находится записываем?

И подскажите пожалуйста как правильно прописать несколько значений:

admin.php

administrator

wp-login.php

install.php

Link to post
Share on other sites
  • VIP

Вот вариант, что я описал. Там тупо 403 ошибку будет выдавать. 

 

Я выше описал, как перевести в "ошибка 404" = и закрыть тему.  ;)

 

Этот код в htaccess, который в корневой директории находится записываем?

И подскажите пожалуйста как правильно прописать несколько значений:

admin.php

administrator

wp-login.php

install.php

 

Все закрываются по одному варианту:

 

https://talk.pr-cy.ru/topic/18802-zaschita-adminki-sajtov-ot-podbora-parolej/?p=224858

 

;)

Link to post
Share on other sites

Не советую так делать, у вас в конечном итоге апач ляжет от обработки вашего хтачес файла.

Лучше как тут уже и писали использовать .htaccess + .htpasswd

 

А вобще достаточно изменить путь до админки. Это обычные боты ищут доступы входа в админку, у меня на самописах судя по логам та же картина, но им отдается ошибка 404, так же и с некоторыми JS плагинами в которых есть дырки, тоже боты ищут необходимые файлы.

Link to post
Share on other sites

Не советую так делать, у вас в конечном итоге апач ляжет от обработки вашего хтачес файла.

Лучше как тут уже и писали использовать .htaccess + .htpasswd

 

А вобще достаточно изменить путь до админки. Это обычные боты ищут доступы входа в админку, у меня на самописах судя по логам та же картина, но им отдается ошибка 404, так же и с некоторыми JS плагинами в которых есть дырки, тоже боты ищут необходимые файлы.

 

 

Спасибо. Лучше тогда и правда просто сменить адрес админки и всё!

Нагрузка на сервер возросла в разы.

Link to post
Share on other sites
  • VIP

Тут писали, в подобной теме, что этот вариант так же дает нагрузку )

 

А кто-то измерял? Я использовал такой метод, когда мою админку люто брутили и все нормализовалось. 

Link to post
Share on other sites

А кто-то измерял? Я использовал такой метод, когда мою админку люто брутили и все нормализовалось. 

 

Про замеры не было слова. Но тут же явно есть хостеры. Пусть вот и скажут, правда это или нет ) 

Link to post
Share on other sites

Снёс все правила. Нагрузка нормальная.

 

Решил попробовать вот это:

 

Забаним на сервере весь трафик от/до хостов, кроме RU,UA,BY,KZ:

iptables -I INPUT ! -i lo -m geoip ! --src-cc RU,UA,BY,KZ -j DROP

 

 

С нагрузкой определиться не могу, но канал стал посвободнее, а то до этого по FTP даже подключиться не мог.

 

Меньше чем на  час отменял данное правило и понеслась:

http://s07.flagcounter.com/countries/wDj9/1?

Каких тока стран нет, учу географию.

Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...