
Das erste Open-Source-DDoS-Schutzsystem
Gatekeeper ist das erste Open-Source-DDoS-Schutzsystem. Es ist darauf ausgelegt, auf jede Spitzenbandbreite zu skalieren, sodass es sowohl heutigen als auch zukünftigen DDoS-Angriffen standhalten kann. Trotz der geografisch verteilten Architektur von Gatekeeper ist die Netzwerkrichtlinie, die alle Entscheidungen beschreibt, die für den eingehenden Verkehr durchgesetzt werden müssen, zentralisiert. Diese zentralisierte Richtlinie ermöglicht es Netzwerkbetreibern, verteilte Algorithmen zu nutzen, die unter sehr hoher Latenz (z. B. verteilte Datenbanken) nicht praktikabel wären, und mehrere Multi-Vektor-DDoS-Angriffe gleichzeitig zu bekämpfen.
Die beabsichtigten Benutzer von Gatekeeper sind Netzwerkbetreiber von Institutionen, Dienste- und Inhaltsanbietern, Unternehmensnetzwerken usw. Es ist nicht für die Nutzung durch einzelne Internetnutzer gedacht.
Weitere Informationen finden Sie im Gatekeeper-Wiki.
DPDK erfordert die Verwendung von Hugepages; Anweisungen zum Einbinden von Hugepages finden Sie in der Dokumentation zu den Systemanforderungen. Auf vielen Systemen ist die folgende Hugepages-Einrichtung ausreichend:
$ echo 256 | sudo tee /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages
vfio-pci aktivierenDas Linux-Kernelmodul vfio-pci wird benötigt, um NICs an DPDK/Gatekeeper zu binden.
Damit vfio-pci funktioniert, müssen sowohl das BIOS als auch der Kernel es unterstützen.
BIOS müssen VT-d aktiviert haben.
BIOS können VT-d als "Intel (R) VT for Directed I/O",
"Intel (R) VT-d Feature", "Intel VT-d", "VT-d" oder ähnliche Varianten bezeichnen;
weitere Beispiele finden Sie unter "BIOS VT-d" auf
Google Images.
Manche BIOS erfordern möglicherweise, dass eine Option namens
"Intel (R) Virtualization Technology" (oder Varianten dieser Zeichenfolge) aktiviert wird,
bevor VT-d aktiviert werden kann.
Um zu überprüfen, ob VT-d im BIOS aktiviert ist, führen Sie nach dem Booten von Linux den folgenden Befehl aus:
$ dmesg | grep -e DMAR
Wenn der obige Befehl einige Zeilen ausgibt, sollte VT-d aktiviert sein. Andernfalls muss man zurück ins BIOS gehen, um es zu aktivieren. Weitere Informationen zur Überprüfung, ob VT-d im BIOS aktiviert ist, finden Sie auf dieser Seite.
Sobald VT-d im BIOS aktiviert ist, muss sichergestellt werden, dass der Kernel IOMMU unterstützt. Beachten Sie, dass eine Kernelversion größer als 3.6 erforderlich ist, um IOMMU zu unterstützen. Man kann überprüfen, ob der laufende Kernel IOMMU standardmäßig aktiviert hat, mit dem folgenden Befehl:
$ grep CONFIG_INTEL_IOMMU_DEFAULT_ON /boot/config-`uname -r`
Höchstwahrscheinlich wird der obige Befehl
# CONFIG_INTEL_IOMMU_DEFAULT_ON is not set ausgeben, d.h.
der laufende Kernel hat IOMMU nicht standardmäßig aktiviert.
Alternative Möglichkeiten zur Überprüfung der Kernel-Build-Optionen
(z. B. CONFIG_INTEL_IOMMU_DEFAULT_ON) finden Sie auf
dieser Seite.
Wenn der Kernel IOMMU nicht standardmäßig aktiviert hat,
muss der Kernel-Boot-Parameter intel_iommu=on über GRUB übergeben werden.
Informationen dazu, warum der Boot-Parameter intel_iommu=on benötigt wird,
finden Sie auf dieser Seite.
Man kann überprüfen, ob der laufende Kernel diesen Parameter erhalten hat, mit
dem folgenden Befehl:
$ cat /proc/cmdline | grep intel_iommu=on
Wenn der laufende Kernel den Parameter intel_iommu=on nicht erhalten hat,
fügen Sie ihn zu GRUB hinzu und starten Sie die Maschine neu.
Informationen zum Hinzufügen eines Boot-Parameters zu GRUB finden Sie
hier.
Sobald VT-d im BIOS aktiviert ist und der Kernel IOMMU unterstützt, kann man mit einem der folgenden Befehle überprüfen, ob alles bereit ist:
$ ls /sys/kernel/iommu_groups
ODER
$ dmesg | grep -ie 'IOMMU\s\+enabled'
Alles ist bereit, wenn die Ausgaben der obigen Befehle nicht leer sind.
Gatekeeper-Debian-Pakete sind für Ubuntu 24.04 LTS auf der Seite Releases des Projekts verfügbar.
Sobald die Pakete heruntergeladen sind, können sie mit den folgenden Befehlen installiert werden:
$ 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
Bei Installation über Debian-Pakete befinden sich die Gatekeeper-Konfigurationsdateien
in /etc/gatekeeper. Sie sollten mindestens die Datei net.lua bearbeiten und die
Variablen front_ports, front_ips, back_ports und back_ips entsprechend Ihrer
Umgebung setzen.
Die anderen Lua-Dateien konfigurieren verschiedene funktionale Blöcke von Gatekeeper. Bitte lesen Sie das Wiki des Projekts für weitere Informationen darüber, ob diese in Ihrer Einrichtung geändert werden müssen.
Sie müssen auch die Datei /etc/gatekeeper/envvars bearbeiten und die
Variable GATEKEEPER_INTERFACES auf die PCI-Adressen der Netzwerkadapter setzen,
die an DPDK gebunden werden sollen. Diese können mit dem Befehl lshw ermittelt werden. Beispiel:
# 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
...
Bei dieser Ausgabe setzen Sie GATEKEEPER_INTERFACES wie folgt:
GATEKEEPER_INTERFACES="08:00.0 08:00.1"
In derselben Datei können Sie optional
Environmental Abstraction Layer-Optionen
in der Variable DPDK_ARGS und
Gatekeeper-spezifische Optionen
in GATEKEEPER_ARGS angeben.
Führen Sie die folgenden Befehle aus, um Gatekeeper zu starten und sicherzustellen, dass es automatisch bei Neustarts gestartet wird.
$ sudo systemctl start gatekeeper
$ sudo systemctl enable gatekeeper
Installieren Sie die folgenden Softwareabhängigkeiten:
$ 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