У меня есть веб-сайт, работающий в Linux с Apache. Я вижу в файле журнала доступа несколько IP-адресов, пытающихся получить доступ к какому-нибудь распространенному и хорошо известному приложению, например PhpMyAdmin, возможно, для взлома сервера, если он найден.
Конечно, у меня нет общедоступного phpmyadmin, но мне интересно, как защититься от такого рода атак. Может быть, в Linux есть инструмент, который может это обнаружить и автоматически заблокировать IP-адрес? Может быть, другой инструмент сможет автоматически отправить мне письмо при обнаружении этого.
Что для этого нужно сделать?
Спасибо за вашу помощь.
Правильный подход к этому - не блокировать попытки вредоносных ботов сканировать содержимое вашего веб-сервера.
Сосредоточение внимания на блокировке сканирований для достижения безопасность неизвестностью не обеспечит никакой защиты от настоящего злоумышленника или даже от бота, который хорошо угадывает уязвимый URL-адрес в первые несколько попыток, прежде чем сработают ваши контрмеры - не говоря уже о влиянии реального пользователя, оказавшегося в ловушке бот-сеть.
Вместо этого вам нужно направить свои усилия на обеспечение безопасности контента, который вы открываете миру.
Знайте свой след в Интернете, защитите его и будьте уверены, что боты могут сканировать ваше присутствие в Интернете в течение всего дня, не нанося никакого ущерба.
ModSecurity (TM) - это механизм обнаружения и предотвращения вторжений с открытым исходным кодом для веб-приложений. Его также можно назвать брандмауэром веб-приложений. Он встроен в веб-сервер, выступая в качестве мощного зонтика, защищающего приложения от атак.
Вы можете скачать mod_security из http://www.modsecurity.org/download/
Директивы конфигурации ModSecurity добавляются непосредственно в ваш файл конфигурации (обычно httpd.conf).
<IfModule mod_security.c>
# mod_security configuration directives
# ...
</IfModule>
Вы можете предотвратить атаки, настроив его следующими способами
Атаки межсайтового скриптинга
SecFilter "<script"
SecFilter "<.+>"
Первый фильтр защитит только от внедрения JavaScript с тегом. Второй фильтр является более общим и запрещает любой HTML-код в параметрах.
SQL / атаки на базы данных
SecFilter "delete[[:space:]]+from"
SecFilter "insert[[:space:]]+into"
SecFilter "select.+from"
Он может защитить вас от большинства атак, связанных с SQL. Это только примеры, вам необходимо тщательно создавать фильтры в зависимости от того, какой механизм базы данных вы используете.
Такой фильтр:
SecFilterSelective ARGS "bin/"
обнаружит попытки выполнить двоичные файлы, находящиеся в различных папках в операционной системе, связанной с Unix.
Атаки переполнения буфера
SecFilterByteRange 32 126
он будет принимать только запросы, состоящие из байтов из этого диапазона.
Если вы хотите поддерживать несколько диапазонов, на помощь приходят регулярные выражения. Вы можете использовать что-то вроде:
SecFilterSelective THE_REQUEST "!^[\x0a\x0d\x20-\x7f]+$"
Для получения дополнительной информации о mod_security перейдите по следующему URL-адресу
http://modsecurity.org/documentation/modsecurity-apache/1.9.3/html-multipage/index.html
Я бы рекомендовал взглянуть на fail2ban - он чаще всего используется для блокировки ssh-атак, но он может работать со всем, что записывает анализируемые файлы журналов. Демон fail2ban (обычно) внедряет новые правила iptables, что намного эффективнее / масштабируемо, чем попытка применить фильтрацию в пользовательском пространстве. Но fail2ban не исключает возможности фильтрации на основе сложного кода в пользовательском пространстве, например, с использованием реферер, браузер, файлы cookie и т. д.
Вы можете настроить его так, чтобы он просто выявлял большую часть ошибок 404 - или вставлял скрипт на целевые URL-адреса, который выскакивает fail2ban, чтобы закрыть дверь.
Наверное, самый простой и легкий способ - это сделать контроль доступа. Мне тоже не терпится узнать об инструментах, которые могут существовать, чтобы делать это автоматически :)