Вопрос: Как заблокировать попытки взлома, направленные на phpMyAdmin?


Мой сайт ежедневно получает тысячи запросов от разных IP-адресов, пытающихся получить доступ:

/php-myadmin/
/myadmin/
/mysql/

... и тысячи других вариантов. Ни один из этих каталогов не существует, у меня даже нет phpmyadmin на моем сервере.

Я не думаю, что какие-либо из этих попыток были успешными, однако они должны тратить свои ресурсы на ресурсы сервера и тратить пропускную способность, поэтому я хотел бы остановить их, если это возможно. Я заблокировал несколько этих IP-адресов, но они продолжают возвращаться со свежими IP-адресами, есть ли способ предотвратить это навсегда?


31
2018-01-08 01:04


Источник


Тысячи хитов в день - ничто. Вы на самом деле испытываете трудности с производительностью или просто принимаете? Несколько тысяч 404s в день действительно ничего, - MDMarra
Нет. Я не испытываю проблем с производительностью. Но это меня раздражает, и я подумал, не могу ли я что-нибудь сделать. - amba88
Будьте осторожны с блокировкой на основе IP - многие IP-адреса становятся циклически законными пользователями. Кроме того, некоторые законные пользователи могут быть заражены как часть ботнета. Если вы блокируете IP-соединение, убедитесь, что он имеет достаточно короткий срок действия. - Bob
Не упоминается mod_security в этой теме, так что Проверь это, Обратите внимание на примечание ниже, отметив, что это фактически вызовет большую работу, которую должен выполнить сервер, конечно. Так что, может быть mod_evasive также будет хорошим осуществлять, fail2ban, но это указано ниже. - mbrownnyc


Ответы:


Не беспокойтесь об этом. Обслуживание 404 - крошечный крошечный крошечный объем работы для веб-сервера. Вы могли бы, вероятно, обслуживать десять 404 секунд в секунду, используя 486. Полоса пропускания на 404 пренебрежимо мала; крошечный запрос GET и крошечный ответ 404.

Шутки в сторону; не беспокойтесь об этом. Это всего лишь часть работы с сервером в Интернете.


41
2018-01-08 02:03



Hell-Banning: подавайте обычную страницу (200 OK) с выводом тарабарщины. Инструменты, используемые детьми, сообщают о найденной странице, и они должны будут исследовать вручную (поддельная страница входа, безусловно, будет дьявольским устройством) :) - arul
@arul - Некоторые атакующие могут принять это как вызов и уделять дополнительное внимание вашему серверу из-за злости. Может быть, здесь будет полезно использовать меньшие или разные 404? Например, если хост обычно обслуживает 404 с помощью ссылки поддержки, должен ли он вместо этого обслуживать простой 404 без содержимого для этих целевых URL-адресов? - Freiheit
Цель состоит в том, чтобы заставить противника потратить дополнительные ресурсы (время) для анализа результатов. Если вы получаете 404, вы знаете, что для атаки не было возможности работать. Результат OK с переменной длиной [без дальнейшего изучения] неотличим от ожидаемых результатов. Они запускают эти проверки, потому что терпение не является их достоинством, поэтому демонтируйте ад из них, и они остановятся :) - arul
Для бонусных очков верните статическую страницу, которая выглядит точно как реальная страница phpmyadmin, но полностью не работает. - captncraig
Обратите внимание, что сопоставление строк (например, mod_sec или где-либо еще) на самом деле просто заставит сервер работать сложнее, чем просто отправить 404 (это не было предложено, я просто замечаю это здесь, если кто-то его рассматривает). Это действительно шум, который вы можете спокойно заглушить, при условии, что ваша установка будет правильно защищена. - Tim Post♦


К сожалению для вас это работает Интернет. Просто проигнорируйте это. Тысячи ботов / троянов просматривают Интернет. Исходный IP-адрес всегда будет случайным. Лечения нет.

Единственное 100% -ное решение для устранения этого трафика показано ниже: enter image description here

Альтернативой является:
 - переместить с https / http с порта 80/443 на что-то другое. Боты обычно не ищут http-сервер на всех остальных портах 65k.
 - используйте VPN для подключения к серверу (я думаю, это невозможно, если вы размещаете общедоступный веб-сайт).


36
2018-01-08 02:00



LOL +1 для диаграммы :-) У меня есть эта неприятная проблема (как и все мы) на статическом сайте, и это самый полезный ответ. - Dave Everitt


Что вы хотите Fail2ban (предполагая, что это Linux-машина, вы не сказали ...)

Что такое Fail2ban?

Fail2ban будет анализировать системные журналы, ища определенные регулярные выражения для блокировки. Когда он находит совпадение (или несколько совпадений от одного и того же IP-адреса, в зависимости от того, как вы его настроите), он будет блокироваться, как правило, через IP-таблицы. Обычно это используется для блокировки неудачных попыток аутентификации с SSH или веб-серверами.

Вы настраиваете его на запрет на определенное количество времени (могут быть минуты, могут быть дни ... зависит от того, насколько они настойчивы), после чего запрет истекает, если они не попробуют снова.

Как это помогает блокировать сканирование ботов phpmyadmin?

Его можно так же легко использовать, чтобы соответствовать общим признакам атаки, например, пытаться получить доступ к несуществующим папкам phpmyadmin. Вам нужно будет найти правильное регулярное выражение, чтобы соответствовать таким попыткам, и убедитесь, что вы не блокируете законных пользователей.

Конфигурация, приведенная в это сообщение в блоге может работать в стенограмме или требовать некоторой настройки для вашей настройки.

Почему я должен их блокировать? Ошибки 404 не стоят дорого

Блокировка их в iptables. У некоторых есть смысл - если они проверяют уязвимости phpmyadmin, они могут попробовать другие службы для уязвимостей, пока они не ударят что-то, что работает. Запрет на них заставит большинство ботов / скриптов сдаться через некоторое время, и они перейдут к лучшим целям.

Даже при сканировании не стоит много (если только они не находят уязвимости), они наводняют ваши журналы, что затрудняет просмотр успешных атак и проблем с вашим веб-сервером.

Как говорится в комментарии ниже, Fail2ban действительно требует некоторых системных ресурсов. Но не много. По крайней мере, я могу сказать, что у меня никогда не было проблемы с производительностью, которую я мог бы назвать Fail2ban. Тем не менее, у меня были проблемы с производительностью из очень агрессивных сценариев, пытаясь перебросить пароли силы или бросая тысячи попыток внедрения SQL и других эксплойтов в секунду на моем сервере. Блокирование их на уровне брандмауэра требует FAR меньше ресурсов, чем блокирование их на уровне сервера / приложения. Он также может быть расширен для запуска пользовательских сценариев для запрета IP-адресов - поэтому вместо того, чтобы запрещать их в IPtables, вы можете заблокировать их на аппаратном брандмауэре или отправить по электронной почте кому-либо, если тот же человек пытается напасть на вас, чтобы вы могли жаловаться их интернет-провайдеру или ваш центр обработки данных блокирует их на своих брандмауэрах.

Любые другие советы?

ВЫСОКО РЕКОМЕНДУЕТСЯ, что вы белеете несколько IP-адресов, которые вы контролируете, чтобы вы случайно не заблокировали себя.


28
2018-01-08 02:22



это будет растрата ресурса :) Я думаю, вы будете использовать больше циклов процессора на Fail2ban, чем на просто обслуживании иногда 404 :) - Bartłomiej Zarzecki
@ BartłomiejZarzecki Лучшая безопасность всегда требует больше ресурсов - user11153
@ heinrich5991 он будет блокироваться после первый попытки. Не имеет значения для некоторых сканирований, но огромная разница для сканирования, которое пытается выполнить несколько попыток на сервере. - Grant
Fail2ban (или аналогичный), мы надеемся, будет больше, чем просто / phpmyadmin. Предполагая, что у него есть какой-либо удаленный доступ, блокировка типа F2B (3 пароля и вы ... ушли!) Составляет не более 404. - WernerCD
Если вы сделаете что-то вроде этого, убедитесь, что запрет истекает относительно быстро (несколько часов, максимум), или вы рискуете заблокировать законных пользователей, если атака происходит из динамически выделенного IP. - Jens Neubauer


Что я делаю, это положить небольшой скрипт в соответствующий каталог, поэтому он запускается, если кто-то обращается / phpmyadmin /. Этот скрипт ничего не делает, кроме вызова iptables (под Linux), который блокирует IP-адрес, доступ к скрипту, в течение 30 минут (после чего cron-задание сбрасывает цепочку iptables, к которой добавляется IP-адрес).

Преимущество над fail2ban заключается в том, что вы не используете никаких ресурсов для разбора журнала syslog / access-log. Недостатком, конечно же, является то, что вы не проверяете ничего, кроме доступа к этому очень конкретному адресу.

Почему я это делаю? Конечно, обслуживание 404 было бы легко для сервера, но я не хочу, чтобы они ковыляли, просто так. Я хочу потратить время на время своего инструмента, ожидая ответа сервера, повторюсь, пока он, наконец, не сдастся. Кроме того, если вы их не заблокируете, они попытаются много из разных URL-адресов, прежде чем, наконец, переместиться - иногда более тысячи. В зависимости от инструмента, он может быть «приятным» и пропустить их в течение нескольких часов, или это может просто не волновать и забивать ваш сервер всеми их в течение нескольких минут.

Почему я не могу служить действующей странице? Их инструмент может перестать сканировать вас и предупредить о скейдди, которая его запускает - кто затем должен проверить вручную. Это означает, что они придадут вашему серверу гораздо более близкий вид, чем у них, если их сканирование не заставит вас появиться в их результатах. Может быть, они будут мешать еще немного, может быть, несколько сканирований портов, может быть, вы сошли с ума, и они запустили DoS, чтобы посмотреть, смогут ли они что-либо сделать. Просто блокируя их - что с их точки зрения делает серверным тайм-аутом в тот момент, когда они обращаются к скрипту phpmyadmin, эффективно тратит время их инструмента, избегая при этом нежелательного внимания.

Если у вас есть phpMyAdmin на сервере, эффективное решение может помещать его в отдельный каталог и использовать управление паролями вашего веб-сервера (.htpasswd для Apache), чтобы блокировать доступ, прежде чем что-либо дойдет до него.


3
2018-01-08 13:17



Звучит как хороший альтернативный вариант ... но не требует ли веб-сервер запуска сценария с правами root? - Grant
Отрегулируйте псевдоним для таких инструментов, как phpMyAdmin. Простое изменение в файле конфигурации, чтобы изменить его на adminMyPhp или chrisPhpAdmin ... или что-то, что не будет написано сценарием. - WernerCD
Извините за поздний ответ - это не (обязательно). Вы можете использовать sudo (с файлом sudoers), чтобы веб-сервер мог выполнить один известный скрипт (и только этот скрипт) с правами root. Этот скрипт будет принимать (как параметр) IP, и вы проверяете его на регулярное выражение ([0-9] + \. [0-9] + \. [0-9] + \. [0-9] + ), чтобы убедиться, что он не вводит ничего странного. - Aaa


FWIW мы ограничиваем доступ к / phpmyadmin / только для белых адресов IP.

Мы также используем mod_evasive (на apache2), чтобы сдерживать DOS / плохо управляемые сценарии атаки.


0
2018-01-09 09:04





связать средство администрирования mysql с адресом loopback вашего устройства 127.0.0.1

затем используйте ssh с переадресацией портов, чтобы получить доступ к контенту администратора.

добавьте дополнительный уровень безопасности, который может быть достаточно прозрачным.


0
2018-01-13 12:19





Лучший способ, который мы нашли, - защитить паролем папку, в которой находится phpmyadmin. Кроме того, не используйте ничего, что связано с phpmyadmin в качестве имени папки: pma, phpmy и т. Д.


-4
2018-01-08 14:39



Из вопроса: None of these directories exist, I don't even have phpmyadmin on my server. - Он не спрашивает, как закрепить свои существующие установки ... он спрашивает, что делать с вещами, которых нет. Вы не можете переименовать PMA или что у вас, если оно не существует. - WernerCD