Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
gatekeeper — Первая система защиты от DDoS с открытым исходным кодом | Kitploit
Инструменты/GitHubGitHub/altramayor/gatekeeper
Оборонительные ИнструментыСканеры уязвимостейСетевая безопасностьОбнаружение Вторжений
GitHubaltramayor/gatekeeper

gatekeeper

Первая система защиты от DDoS с открытым исходным кодом

Репозиторий
1.6k2519 месяцев назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Сайт

Gatekeeper

Статус компиляции Gatekeeper

Что такое Gatekeeper?

Gatekeeper — это первая система с открытым исходным кодом для защиты от DDoS-атак. Она спроектирована так, чтобы масштабироваться до любой пиковой пропускной способности, и может выдерживать DDoS-атаки как сегодняшние, так и будущие. Несмотря на географически распределенную архитектуру Gatekeeper, сетевая политика, описывающая все решения, которые должны применяться к входящему трафику, является централизованной. Эта централизованная политика позволяет сетевым операторам использовать распределенные алгоритмы, которые были бы нежизнеспособны при очень высокой задержке (например, распределенные базы данных), и одновременно бороться с множественными многовекторными DDoS-атаками.

Предполагаемые пользователи Gatekeeper — это сетевые операторы учреждений, поставщиков услуг и контента, корпоративных сетей и т.д. Он не предназначен для использования отдельными пользователями Интернета.

Для получения дополнительной информации см. вики Gatekeeper.

Как настроить

Настройка огромных страниц

DPDK требует использования огромных страниц; инструкции по монтированию огромных страниц доступны в документации по требованиям. На многих системах достаточно следующей настройки огромных страниц:

root@kitploit:~
$ echo 256 | sudo tee /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages

Включение модуля ядра vfio-pci

Модуль ядра Linux vfio-pci необходим для привязки сетевых интерфейсов к DPDK/Gatekeeper. Чтобы vfio-pci работал, его должны поддерживать как BIOS, так и ядро. В BIOS должна быть включена технология VT-d. BIOS может обозначать VT-d как "Intel (R) VT for Directed I/O", "Intel (R) VT-d Feature", "Intel VT-d", "VT-d" или аналогичными вариациями; дополнительные примеры можно найти, выполнив поиск "BIOS VT-d" в Google Images. В некоторых BIOS может потребоваться включить опцию "Intel (R) Virtualization Technology" (или её вариации) до того, как VT-d станет доступна.

Чтобы проверить, включена ли VT-d в BIOS, выполните следующую команду после загрузки Linux:

root@kitploit:~
$ dmesg | grep -e DMAR

Если указанная выше команда выводит какие-либо строки, VT-d должна быть включена. В противном случае необходимо вернуться в BIOS и включить её. Дополнительная информация о проверке включения VT-d в BIOS доступна на этой странице.

После включения VT-d в BIOS необходимо убедиться, что ядро поддерживает IOMMU. Обратите внимание, что для поддержки IOMMU требуется версия ядра выше 3.6. Проверить, включен ли IOMMU в текущем ядре по умолчанию, можно с помощью следующей команды:

root@kitploit:~
$ grep CONFIG_INTEL_IOMMU_DEFAULT_ON /boot/config-`uname -r`

Скорее всего, указанная выше команда выведет # CONFIG_INTEL_IOMMU_DEFAULT_ON is not set, то есть текущее ядро не имеет IOMMU, включенного по умолчанию. Альтернативные способы проверки параметров сборки ядра (например, CONFIG_INTEL_IOMMU_DEFAULT_ON) доступны на этой странице.

Если ядро не имеет IOMMU, включенного по умолчанию, необходимо передать параметр загрузки ядра intel_iommu=on через GRUB. Информацию о том, зачем нужен параметр загрузки intel_iommu=on, см. на этой странице. Проверить, получил ли текущее ядро этот параметр, можно с помощью следующей команды:

root@kitploit:~
$ cat /proc/cmdline | grep intel_iommu=on

Если текущее ядро не получило параметр intel_iommu=on, добавьте его в GRUB и перезагрузите машину. Информация о том, как добавить параметр загрузки в GRUB, находится здесь.

После включения VT-d в BIOS и поддержки IOMMU ядром, можно проверить, что всё настроено, с помощью одной из следующих команд:

root@kitploit:~
$ ls /sys/kernel/iommu_groups

ИЛИ

root@kitploit:~
$ dmesg | grep -ie 'IOMMU\s\+enabled'

Всё настроено, если выводы указанных выше команд не пусты.

Вариант 1: Получение пакетов

Пакеты Gatekeeper Debian доступны для Ubuntu 24.04 LTS на странице Releases проекта.

Установка

После загрузки пакетов их можно установить следующими командами:

root@kitploit:~
$ tar -zxvf gatekeeper-ubuntu-24.04-packages.tar.gz
$ cd gatekeeper-ubuntu-24.04-packages
$ sudo dpkg -i gatekeeper-bird_*_amd64.deb gatekeeper_*_amd64.deb

Настройка Gatekeeper

При установке через пакеты Debian файлы конфигурации Gatekeeper находятся в /etc/gatekeeper. Вам следует отредактировать как минимум файл net.lua и задать переменные front_ports, front_ips, back_ports и back_ips в соответствии с вашим окружением.

Остальные файлы Lua настраивают различные функциональные блоки Gatekeeper. Пожалуйста, обратитесь к вики проекта за дополнительной информацией о том, нужно ли их изменять в вашей конфигурации.

Вам также необходимо отредактировать файл /etc/gatekeeper/envvars и задать переменную GATEKEEPER_INTERFACES, указав адреса PCI сетевых адаптеров, которые будут привязаны к DPDK. Их можно найти с помощью команды lshw. Например:

root@kitploit:~
# lshw -c network -businfo
Bus info          Device     Class          Description
=======================================================
pci@0000:08:00.0  eth0       network        I350 Gigabit Network Connection
pci@0000:08:00.1  eth1       network        I350 Gigabit Network Connection
...

Учитывая этот вывод, задайте GATEKEEPER_INTERFACES следующим образом:

root@kitploit:~
GATEKEEPER_INTERFACES="08:00.0 08:00.1"

В этом же файле можно дополнительно указать параметры Environmental Abstraction Layer в переменной DPDK_ARGS и специфичные для Gatekeeper параметры в GATEKEEPER_ARGS.

Как запустить

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

root@kitploit:~
$ sudo systemctl start gatekeeper
$ sudo systemctl enable gatekeeper

Вариант 2: Сборка из исходного кода

Установка зависимостей

Установите следующие зависимости программного обеспечения:

root@kitploit:~
$ sudo apt-get update
$ sudo apt-get -y -q install git clang devscripts doxygen libhugetlbfs-bin \
    build-essential gcc-multilib linux-headers-`uname -r` libmnl0 libmnl-dev \
    libkmod2 libkmod-dev libnuma-dev libelf1 libelf-dev libc6-dev-i386 \
    autoconf flex bison libncurses5-dev libreadline-dev python3 \
    python3-pyelftools libcap-dev libcap2 meson ninja-build pkg-config

Примечание: Оба пакета libmnl0 и libmnl-dev необходимы для компиляции и запуска gatekeeper, но только libmnl0 необходим для простого запуска gatekeeper. Оба пакета libkmod2 и libkmod-dev необходимы для компиляции и запуска gatekeeper, но только libkmod2 необходим для простого запуска gatekeeper. libnuma-dev необходим для компиляции последней версии DPDK и поддержки систем NUMA. Пакет libelf-dev необходим для компиляции DPDK с поддержкой чтения программ BPF из ELF-файлов, но для запуска достаточно только libelf1. Пакет libc6-dev-i386 необходим для компиляции программ BPF в папке . Пакеты , , , и предназначены для BIRD. Пакет используется для сборки пакетов Gatekeeper Debian. Пакеты и необходимы для сборки DPDK и запуска скриптов Python, таких как . необходим для компиляции Gatekeeper, но для запуска Gatekeeper достаточно только . и необходимы для сборки DPDK. необходим для компиляции Gatekeeper.

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

Клонирование репозитория

Клонируйте репозиторий Gatekeeper, включая подмодули, которые содержат зависимости Gatekeeper:

root@kitploit:~
$ git clone --recursive http://github.com/AltraMayor/gatekeeper.git

Если вы не использовали опцию --recursive при клонировании, вам необходимо получить подмодули, содержащие зависимости, из каталога gatekeeper:

root@kitploit:~
$ git submodule init
$ git submodule update

Компиляция

В этом разделе объясняется, как собрать Gatekeeper вручную. Если вы хотите собрать пакеты Debian, обратитесь к разделу Как собрать пакеты.

Находясь в каталоге gatekeeper, выполните сценарий настройки:

root@kitploit:~
$ . setup.sh

Этот сценарий компилирует DPDK, LuaJIT и BIRD, а также загружает необходимые модули ядра. Кроме того, он сохраняет имена интерфейсов и их соответствующие адреса PCI в файле lua/if_map.lua, чтобы имена интерфейсов можно было использовать в файлах конфигурации Gatekeeper.

После компиляции DPDK и LuaJIT можно скомпилировать gatekeeper:

root@kitploit:~
$ make

Настройка сетевых адаптеров

Перед использованием gatekeeper сетевые адаптеры должны быть привязаны к DPDK. Для этого можно использовать скрипт dependencies/dpdk/usertools/dpdk-devbind.py. Например:

root@kitploit:~
$ sudo dependencies/dpdk/usertools/dpdk-devbind.py --bind=vfio-pci enp131s0f0

Эта команда привязывает интерфейс enp131s0f0 к драйверу vfio-pci, чтобы кадры могли передаваться напрямую DPDK, минуя ядро. Обратите внимание, что эта привязка должна выполняться после настройки Gatekeeper на шагах выше, чтобы связанный интерфейс появился в списке интерфейсов в lua/if_map.lua.

Как запустить

После компиляции gatekeeper и правильной настройки окружения выполните:

root@kitploit:~
$ sudo build/gatekeeper [EAL OPTIONS] -- [GATEKEEPER OPTIONS]

Где [EAL OPTIONS] указываются перед двойным тире и представляют собой параметры Environmental Abstraction Layer DPDK, а [GATEKEEPER OPTIONS] указываются после двойного тире и представляют специфичные для Gatekeeper параметры.

Начальная конфигурация системы, включая конфигурацию устройств и памяти в DPDK, будет выведена в stdout. После загрузки Gatekeeper вся информация будет выводиться в журнал Gatekeeper.

Как собрать пакеты

Пакеты Gatekeeper Debian можно собрать с помощью следующих команд. Они предназначены для выполнения из корня репозитория и предполагают, что подмодули git были получены, а зависимости сборки установлены, как указано выше. Gatekeeper и подмодули будут автоматически скомпилированы в процессе сборки пакета.

root@kitploit:~
$ tar --exclude-vcs -Jcvf ../gatekeeper_1.2.0.orig.tar.xz -C .. gatekeeper
$ debuild -uc -us

Пакет Gatekeeper будет доступен в родительском каталоге.

Скачать инструмент
bpf/
autoconf
flex
bison
libncurses5-dev
libreadline-dev
devscripts
python3
python3-pyelftools
dpdk-devbind.py
libcap-dev
libcap2
meson
ninja-build
pkg-config