Безопасность

  • Как защитить сайт от взлома, спама и легкой DDOS-атаки с помощью скрипта ZBBlock

    16 мая 2015
    Admin
    280
    0

    После очередного взлома сайтов и загрузки на сайт скриптов спамботов и шеллов было принято решение кардинально взяться за повышение безопасности сайта. Обновления CMS сайтов и все стандартные методы предотвращения взломов не помогали, сделав анализ разного рода методов защит выбор пал на скрипт ZBBlock. Он не создает нагрузки, его работа практически незаметна и не влияет на скорость загрузки страницы. Хочу поделиться с вами информацией о скрипте, вся информация взята с официального сайта переведена и доработана, также некоторые пункты были дополнены и изменены для более простого понимания.

    СКАЧАТЬ СКРИПТ ЗАЩИТЫ ZBBlock

    Данный скрипт направлен на анализ запросов к сайту и определения подозрительной активности на сайте. Он  может блокировать спам-ботов и переходы от нежелательных IP-адресов, которые пытаются получить доступ к сайту.
    Если на сайте обнаруживается подозрительная активность или атака с других ресурсов, которая повторяется определенное количество раз, на экране пользователя отображается страница с информацией о том что доступ к сайту запрещен. Эта страница активна в течение 30 секунд, для предотвращения повторной активности злоумышленника. Пользователю при блокировании выводится ошибка «403 Forbidden», а при повторе попыток взлома, ошибка «503 Service Unavailable».

    Возможности скрипта:

    • Останавливает MySQL / msSQL фальсификации или инъекции.
    • Предотвращает SiteDeface (замена главной страницы).
    • Останавливает PHP эксплоиты (уязвимость скриптов).
    • Предотвращает Remote File Include (RFI).
    • Блокирует IP-адреса, которые совпадают с базой известных «вредоносных» IP-адресов.
    • Блокирует подозрительные http-агенты.
    • Останавливает HTTP_REFERER спам.
    • Предотвращает Cross Site Scripting (XSS).

     

    Но данный метод не защищает сайты, которые не были созданы на языке программирования PHP, например ASP.NET. Также не защищает файлы, которые не могут иметь уязвимостей: .jpg, .gif, .swf и т.д.
    Таким образом, при выполнении определенных задач, данный скрипт представляет собой более надежный и удобный метод для защиты сайта, чем методы защиты с помощью файла .htaccess.

    Основные преимущества использования скрипта ZBBlock для защиты в сравнении с использованием методов защиты через файл .htaccess:

    • При блокировании домена, запрос и запись данных в файлы выполняется всего лишь за один запуск.
    • Данный метод быстрее еще потому, что не проверяет файлы, которые не нуждаются в защите, к примеру изображение, звуковые файлы и видео.
    • Не создает нагрузку, за счет того, что проверяет те файлы к которым производится запрос на попытку взлома, но не проверяет под-файлы, которые вызывает страница при генерации содержимого.
    • Может быть использован на web-серверах, которые не поддерживают полный спектр .htaccess команд.
    • Некоторым хостинговым компаниям не нравится клиентская страница ошибки 403, поэтому они не позволяют использовать клиентский файл .htaccess. Поэтому данный метод переключает страницу ошибки 403 на страницу ошибки 503 (постоянный запрет доступа).
    • Вносит данные в лог заблокированных доступов для дальнейшего просмотра в простом и доступном виде с описанием причин блокировки неудачной сессии.
    • Используется кэширование данных для автоматической блокировки плохих IP-адресов, снижает нагрузку на сервер и удаленную БД, с которой он работает.

    Принцип действия скрипта ZBBlock

     

    • Перехват запуска страницы на, как можно более раннем этапе, то есть даже перед запросами к базе данных.
    • Опрашиваются все детали соединения: QUERY, POST, IP, Hostname, Referer и User Agent. Обращаться со всеми полученными данными, как с потенциально враждебными и не позволять загружать в виде отдельных переменных.
    • Проверка полученных данных на наличие проблем методом сравнения со стандартным файлом сигнатур угроз.
    • Проверка полученных данных повторно но уже через кастомный файл сигнатур.
    • Если никаких проблем выявлено не было, выполнение скрипта возвращается к основной части.
    • Все детали неудачного соединения записываются в файл killed_log.txt.
    • В случае если запрос совпадает с какой-либо сигнатурой угроз в файл сигнатур соединение переводится на страницу «You Are Banned / 403 Forbidden».
    • Соединение не возвращается к началу и PHP отправляется команда DIE.

    Основные параметры для настройки и конфигурации скрипта

    Все параметры редактируются в файле zbblock.ini.

    Список основных параметров:

    zbb_pw = «» — пароля для добавления вашего IP в белый список.

    Пример:

    zbb_pw = «ThisIsMyPassw0rd»

    Запрос в браузере для добавления вашего IP в белый список уже после того, как вы установили пароль в файле zbblock.ini и загрузили его на сервер:

    http://<yourwebsite.tld>/zbblock/zbblock.php?wlpw=<your_password>

    debug_mode — этот параметр используется для запуска режима отладки, чтобы найти проблему в сигнатуре. Этот режим не нужно оставлять включенным для предотвращения использования отладочных данных злоумышленниками. При активации данной опции, он будет показывать алгоритм, который нашел проблему, и что именно он искал.
    timer_trap — по умолчанию данному параметру выставлен — 0. Данный параметр вызывает задержку в секундах при регистрации или попытке войти на сайт. Этот параметр используется, чтобы избежать brute-force атаки.
    block_hph_registration — проверяет «черный» список IP-адресов, для того, чтобы узнать или пользователь не спамер. Если это так, то данный параметр (включен по умолчанию) будет блокировать их при регистрации или попытке залогиниться.
    block_sfs_registration — похож на параметр block_hph_registration, но проверяет API. Включен по умолчанию.
    sfs_date — работает с настройками, перечисленными выше, чтобы определить насколько данные актуальны на сегодня. Если выставить 0 — будет актуальна в этом году; 1 — будет актуальна в этом году и в следующем; 99 — будет работать в течение последних 99 лет. По умолчанию данному параметру выставлено 10 лет.
    block_tor_registration — проверяет пользователя не использует ли он TOR-сети для регистрации. Включен по умолчанию.
    block_tor — проверяет пользователей, или не использует Tor, и блокирует их доступ к веб-сайту если это так.
    snooze -это параметр заставляет нарушителя ждать изменения статуса на вывод. Очень полезен для замедления роботов. По умолчанию, ожидание составляет 25 секунд.
    log — данный параметр определяет, хиты, которые записываются в файл killed_log.txt. Значение данного параметра по умолчанию — включен, так как это может быть очень полезно при настройке. Для того чтобы знать, кто был заблокирован. Если логи становятся слишком велики для вашего сайта, его можно удалить. При запуске скрипта, запись начнется снова.
    log_dir — параметр где хранится killed_log.txt.
    сsv и csv_dir — то же что и параметр log_dir, но генерирует файл .csv для импорта в базу данных для анализа. Как правило, используется только для разработчиков и сбора статистики. По умолчанию отключена.
    rdb_timeout — контролирует, как долго скрипт будет ждать ответ от хоста и двигаться дальше, прежде чем выдать ошибку. По умолчанию составляет 10 секунд.
    fault_count — определяет, сколько 403 ошибок злоумышленник увидит, прежде чем пользователь будет заблокирован перманентно и получит ошибку 503. Значение по умолчанию — 3.

    Инструкция для пользователя по установке скрипта на сайт

    Инсталляция скрипта на сайт

    Для того чтобы установить скрипт на сайт, пользователю нужно зайти на сервер с помощью FTP.
    После ввода данных для подключения по ftp, пользователь должен переместить папку zbblock в корневой каталог сайта.

    Для активации скрипта, в адресную строку нужно ввести http://ваш_домен/zbblock/setup.php. После чего, пользователю выдаст меню настройки скрипта, где нужно выбрать определенный метод защиты.

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

    Вам будет предоставлена строка, которую нужно вставить в те файлы вашего сайта, которые вы хотите защитить либо в те файлы, которые грузятся при обращении к вашему сайту самыми первыми. Вставить данную строку надо будет перед первой строкой файла обычно это “<?php”.

    Пример:

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

    А вот так делать нельзя:

    Или так:

    Так тоже делать нельзя:

    Если у вас HTML файл то вставлять инклуд скрипта вам нужно по такому примеру:

    То есть опять же НИКАКИХ пробелов между основным кодом и инклудом скрипта ZBBlock!

    После выполнения данной операции, на вашем сервере в папке скрипта автоматически будет создана папка vault. В данной папке будут добавляться данные, во время работы самого скрипта.

    Тестирование установленного скрипта

    Для тестирования скрипта, пользователю нужно ввести в адресную строку текст: http://ваш_домен/?test=xtestx. После чего пользователю выдаст 403 ошибку, и причину данной ошибки. В данном случае — это ошибка QUERY Test Trigger (тестирование скрипта).

    Более подробная инструкция но на английском языке есть в архиве со скриптом!

    СКАЧАТЬ СКРИПТ ЗАЩИТЫ ZBBlock

    Читать далее