В результате владелец сайта может потерять репутацию и вложенные в раскрутку ресурса средства, оказаться один на один с заблокированным сервером или получить штраф за утечку клиентских данных. Сегодня мы расскажем, как обнаружить и заблокировать большую часть кибератак с помощью инструмента CrowdSec.
Как выглядит кибератака
Современный сайт — сложный программный комплекс, который состоит из множества компонентов: это и сервер, на котором размещается сайт, и веб-сервер, и различные вспомогательные службы, например PHP или MySQL.
Операционная система сервера также включает различные сетевые службы, которые ожидают подключений на закрепленных за ними портах. Пример таких служб в Linux — samba, sshd, ftpd, почтовый сервер postfix. Количество, перечень и доступность служб для внешних подключений зависят от настроек конкретного сервера.
Первая стадия практически любой атаки — разведка: хакеры пытаются подключиться к различным службам сервера по стандартным портам — выполняют их сканирование. И дополнительно с помощью различных техник стараются выяснить версию ПО служб и ОС сервера. В результате в распоряжении атакующих оказывается перечень доступных для подключения служб и их версий. Если в нем окажутся службы, содержащие известные уязвимости, появляется возможность провести атаку, проэксплуатировать уязвимость и проникнуть на сервер с привилегиями суперпользователя (root).
Если провести аналогию с реальным миром, кибератаки напоминают бактериальные или вирусные инфекции, которые атакуют людей и пытаются нанести вред организму.
Что происходит на сервере при атаке
Попытки подключения к службам фиксируются в специальных лог-файлах. В теории администратор может просмотреть их, обнаружить потенциально опасные действия и вручную заблокировать с помощью iptables IP-адрес, с которого идет атака.
Однако на практике атаки могут происходить в любое время суток, причем заранее неизвестно, какую именно службу будут атаковать. Организовать круглосуточный мониторинг всех логов для выявления одного из множества признаков атак — нетривиальная задача, которая требует серьезных технических знаний и навыков. А ведь все выявленные атаки нужно еще и заблокировать.
Блокировка атак вручную
В этом случае процесс может выглядеть следующим образом:
просмотр лог-файла веб-сервера на предмет подозрительной активности (DDoS-атаки на уровне приложения, попытки SQL-инъекций, поиск XSS-уязвимостей и т. п.);
при обнаружении такой активности вызов iptables. Например, если источник активности имеет IP-адрес 8.8.8.8, команда может выглядеть так: sudo iptables -t filter -A INPUT -s 8.8.8.8/32 -j DROP.
Проблема ручной блокировки заключается в том, что записей с разными IP-адресами в логе может быть несколько сотен или даже тысяч, если происходит атака на отказ в обслуживании (DDoS). Пытаться блокировать адреса по одному — все равно что искать в крови заболевшего гриппом каждый экземпляр вируса и уничтожать его точечным ударом.
Иммунная система человека работает более эффективно: выявляет вирусные атаки по характерным для каждого вируса белкам и вырабатывает соответствующие антитела. Применение подобного подхода в компьютерной среде позволило бы качественно блокировать кибератаки с минимальными усилиями.
“Умная” блокировка атак
Алгоритм блокировки кибератак, в значительной степени повторяющий работу человеческого иммунитета, реализован в инструменте CrowdSec, который представляет собой систему мониторинга и анализа системных лог-файлов, написанную на Go. Благодаря тому что код на Go компилируется в двоичные исполняемые файлы, CrowdSec, в отличие от реализованных на python и других скриптовых языках аналогов, работает чрезвычайно быстро и потребляет минимум системных ресурсов.
Подобно тому как иммунитет сопоставляет фрагменты белка вирусов с известными ему, CrowdSec в режиме реального времени читает логи и сопоставляет входящий сетевой трафик с известными шаблонами. При совпадении выполняются указанные в конфигурации действия, например блокировка вредоносного IP-адреса, запрос на многофакторную аутентификацию, CAPTCHA и т. д.
Кроме того, CrowdSec позволяет добавлять вредоносные IP в глобальную базу репутации, подключать индивидуальные бан-листы и пользоваться глобальными списками, сформированными сообществом пользователей решения.
Архитектура CrowdSec
Решение состоит из трех компонентов:
службы мониторинга CrowdSec, которая в реальном времени ищет признаки атак или потенциально опасных действий в логах, указанных в настройке системных сервисов, например nginx, Apache2, WordPress, netfilter;
утилиты cscli для управления службой из командной строки;
баунсеров (bouncers) — модулей интеграции с другими инструментами типа Cloudflare или WordPress для реального обеспечения блокировок.
Архитектура CrowdSec
Для упрощения настройки CrowdSec в типовых случаях на сайте проекта имеются доступные для загрузки коллекции и конфигурации. Коллекции можно рассматривать в качестве фрагментов белка вирусов, известных иммунной системе, а конфигурации — как варианты иммунной реакции на известные киберинфекции.
Коллекции — это наборы парсеров и сценариев для разных ситуаций. Например, в Nginx входят парсер логов nginx-logs и базовые http-сценарии. С их помощью можно выявить вредоносные боты, которые выполняют агрессивный краулинг, сканирование/пробы портов, выделить user-agent’ы из черного списка, обнаружить атаки path traversal и многое другое.
Конфигурации — фрагменты настроек для всех распространенных сервисов. Например, если на сервере установлена cpanel и администратор хочет отслеживать попытки подбора паролей, он может воспользоваться конфигурацией cpanel-bf.
На сегодняшний день на сайте CrowdSec представлено 20 коллекций и 56 конфигураций.
Ключевые возможности платформы:
обнаружение атак и реагирование на всех уровнях;
простая установка и обслуживание с помощью консольного мастера;
интеграция с другими системными компонентами;
чтение логов и автоматическая блокировка нарушителей на уровне CDN;
при необходимости отправка собранных сведений о вредоносных IP-адресах в глобальную БД репутации;
минимум потребления оперативной памяти и ресурсов процессора;
работа с архивными логами для расследований и симуляций;
предустановленные панели мониторинга;
формирование глобальной базы данных вредоносных IP-адресов.
Почему блокировки IP-адресов эффективны
Наибольшую ценность для организаторов кибератак имеют IP-адреса — они, как маски, обеспечивают их анонимность. Однако свободных адресов в адресном пространстве IPv4 практически не осталось, а массового перехода на IPv6 пока не наблюдается.
В результате каждый злоумышленник имеет ограниченный пул адресов. Его расширение будет обходиться все дороже и дороже как в плане финансов, так и в плане трудозатрат. Если для каждой атаки придется добывать всё новые и новые IP-адреса или искать чистые, не засвеченные в других «проектах», порог входа в мир киберзлодеев может стать непреодолимым для большинства искателей нелегального заработка.
Концепция бана IP-адресов не гарантирует абсолютной защиты и не спасет от профессионалов, которые преодолевают любые барьеры. Однако блокировка позволяет отсечь основную массу хакеров, которые не имеют огромных ресурсов и ценят свое время и деньги.
Для хакера IP-адрес ценен тем, что является его точкой входа в Интернет. Для компании же информация о том, с какого адреса была проведена атака, не представляет ценности и не угрожает ее секретам. Передача информации о вредоносных IP-адресах в глобальный бан-лист CrowdSec формирует глобальный цифровой иммунитет, благодаря чему появляется возможность больно бить по важным для злоумышленников активам, закрывая возможность нанести вред.
Заключение
Благодаря набору шаблонов атак, возможных действий по их блокировке и глобальной базе репутации, CrowdSec можно рассматривать как кибервакцину, которая эффективно защитит сайты от кибератак. Чем больше компаний будут использовать это решение, тем более качественным станет глобальная база репутации и выше уровень коллективного цифрового иммунитета.