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

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

 

Когда брутят в 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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...