Wenn man den Statistiken Glauben schenkt, nimmt das Datenverkehrsvolumen jedes Jahr um etwa 50 % zu. Dies führt zu einer Erhöhung der Belastung der Geräte und insbesondere zu höheren Anforderungen an die Leistung von IDS/IPS. Man kann teure spezialisierte Hardware kaufen, aber es gibt eine günstigere Möglichkeit – die Implementierung eines der Open-Source-Systeme. Viele Anfänger-Administratoren glauben, dass die Installation und Konfiguration eines kostenlosen IPS ziemlich schwierig ist. Im Fall von Suricata ist das jedoch nicht ganz korrekt – man kann sie installieren und beginnen, typische Angriffe mit einem Set kostenloser Regeln in wenigen Minuten abzuwehren.
Warum braucht man ein weiteres offenes IPS?
Das lange Zeit als Standard angesehene System Snort wird seit Ende der neunziger Jahre entwickelt, daher war es ursprünglich ein einsträngiges System. Über die Jahre hat es alle modernen Funktionen erhalten, wie die Unterstützung von IPv6, die Möglichkeit zur Analyse von Protokollen der Anwendungsebene oder ein universelles Datenzugriffsmodul.
Die Basis-Engine Snort 2.X hat gelernt, mit mehreren Kernen zu arbeiten, blieb aber einsträngig und konnte daher die Vorteile moderner Hardwareplattformen nicht optimal nutzen.
Das Problem wurde in der dritten Version des Systems gelöst, aber sie wurde so lange getestet, dass Suricata, die von Grund auf als mehrsträngige Alternative zu Snort entwickelt wurde, auf den Markt kam. Ihre Entwicklung begann 2009 und sie bietet von Haus aus IPS-Funktionen. Der Code wird unter der GPLv2-Lizenz verbreitet, aber finanzielle Partner des Projekts haben Zugang zu einer geschlossenen Version der Engine. Einige Skalierungsprobleme in den frühen Versionen des Systems traten auf, wurden aber recht schnell gelöst.
Warum Suricata?
Suricata verfügt über mehrere Module (wie auch Snort): Erfassen, Sammeln, Dekodieren, Erkennen und Ausgeben. Standardmäßig wird der erfasste Verkehr in einem einzigen Stream dekodiert, was die Systemlast erhöht. Bei Bedarf können die Streams in den Einstellungen aufgeteilt und auf Prozessoren verteilt werden – Suricata ist sehr gut auf spezielle Hardware optimiert, obwohl dies kein Einsteigerthema ist. Es ist auch erwähnenswert, dass Suricata über fortschrittliche HTTP-Inspektionswerkzeuge verfügt, die auf der HTP-Bibliothek basieren. Diese können auch zur Protokollierung von Verkehr ohne Erkennung verwendet werden. Das System unterstützt außerdem die Dekodierung von IPv6, einschließlich IPv4-in-IPv6-Tunneln, IPv6-in-IPv6 und anderen.
Für den Verkehrsdurchsatz können verschiedene Schnittstellen verwendet werden (NFQueue, IPFRing, LibPcap, IPFW, AF_PACKET, PF_RING), und im Unix-Socket-Modus können automatisch von einem anderen Sniffer erfasste PCAP-Dateien analysiert werden. Darüber hinaus erleichtert die modulare Architektur von Suricata das Hinzufügen neuer Elemente zum Erfassen, Dekodieren, Analysieren und Verarbeiten von Netzwerkpaketen. Es ist auch wichtig zu beachten, dass die Verkehrssperre in Suricata durch die integrierten Filter des Betriebssystems durchgeführt wird. In GNU/Linux stehen zwei Möglichkeiten für den Betrieb von IPS zur Verfügung: über die NFQUEUE (NFQ-Modus) und über Zero Copy (AF_PACKET-Modus). Im ersten Fall wird das in iptables gefilterte Paket in die NFQUEUE geleitet, wo es auf Benutzerebene verarbeitet werden kann. Suricata prüft es anhand ihrer Regeln und gibt eines von drei Urteilen ab: NF_ACCEPT, NF_DROP und NF_REPEAT. Die ersten beiden benötigen keine Erläuterung, während die letzte Möglichkeit es erlaubt, Pakete zu kennzeichnen und sie an den Anfang der aktuellen iptables-Tabelle zurückzusenden. Der AF_PACKET-Modus ist leistungsfähiger, bringt jedoch eine Reihe von Einschränkungen mit sich: Das System muss über zwei Netzwerkinterfaces verfügen und als Gateway agieren.
Ein wichtiges Merkmal von Suricata ist die Möglichkeit, auf Entwicklungen von Snort zurückzugreifen. Administratoren stehen unter anderem die Regelsets von Sourcefire VRT und OpenSource Emerging Threats sowie die kommerziellen Emerging Threats Pro zur Verfügung. Die einheitliche Ausgabe kann mit beliebten Backends analysiert werden, zudem wird die Ausgabe in PCAP und Syslog unterstützt. Die Systemeinstellungen und Regeln werden in YAML-Dateien gespeichert, die leicht lesbar sind und automatisch verarbeitet werden können. Die Suricata-Engine erkennt viele Protokolle, daher müssen die Regeln nicht an Portnummern gebunden werden. Zudem wird in den Suricata-Regeln aktiv das Konzept der flowbits praktiziert. Zur Verfolgung von Ereignissen werden Sitzungsvariablen verwendet, die die Erstellung und Anwendung verschiedener Zähler und Flags ermöglichen. Viele IDS betrachten verschiedene TCP-Verbindungen als separate Entitäten und können Verbindungen, die auf einen Angriff hindeuten, nicht erkennen. Suricata versucht, das Gesamtbild zu erfassen und erkennt in vielen Fällen bösartigen Datenverkehr, der über verschiedene Verbindungen verteilt ist. Man kann lange über ihre Vorteile diskutieren, stattdessen gehen wir besser zur Installation und Konfiguration über.
Wie installiert man?
Wir werden Suricata auf einem virtuellen Server installieren, der unter Ubuntu 18.04 LTS läuft. Alle Befehle müssen mit Administratorrechten (root) ausgeführt werden. Die sicherste Variante ist es, sich über SSH mit einem normalen Benutzerkonto auf dem Server anzumelden und dann das Tool sudo zu verwenden, um die Privilegien zu erhöhen. Zunächst müssen wir die Pakete installieren, die wir benötigen:
sudo apt -y install libpcre3 libpcre3-dev build-essential autoconf automake libtool libpcap-dev libnet1-dev libyaml-0-2 libyaml-dev zlib1g zlib1g-dev libmagic-dev libcap-ng-dev libjansson-dev pkg-config libnetfilter-queue-dev geoip-bin geoip-database geoipupdate apt-transport-httpsBinden Sie das externe Repository ein:
sudo add-apt-repository ppa:oisf/suricata-stable
sudo apt-get updateInstallieren Sie die neueste stabile Version von Suricata:
sudo apt-get install suricataBei Bedarf passen wir die Konfigurationsdateien an, indem wir den standardmäßig verwendeten eth0 durch den tatsächlichen Namen der externen Netzwerkoberfläche des Servers ersetzen. Die Standardkonfigurationen werden in der Datei /etc/default/suricata gespeichert, während die benutzerdefinierten in /etc/suricata/suricata.yaml. Die Einrichtung von IDS beschränkt sich hauptsächlich auf die Bearbeitung dieser Konfigurationsdatei. Sie enthält viele Parameter, die in Namen und Zweck mit den entsprechenden in Snort übereinstimmen. Der Syntax ist jedoch völlig anders, aber die Datei ist viel einfacher zu lesen als die Snort-Konfigurationen, außerdem ist sie gut kommentiert.
sudo nano /etc/default/suricata 
und
sudo nano /etc/suricata/suricata.yaml 
Achtung! Vor dem Start sollten die Werte der Variablen im Abschnitt vars überprüft werden.
Um die Einrichtung abzuschließen, muss suricata-update zur Aktualisierung und zum Herunterladen von Regeln installiert werden. Das ist ziemlich einfach:
sudo apt install python-pip
sudo pip install pyyaml
sudo pip install <a href="https://github.com/OISF/suricata-update/archive/master.zip">https://github.com/OISF/suricata-update/archive/master.zip</a>
sudo pip install --pre --upgrade suricata-updateDann müssen wir den Befehl suricata-update ausführen, um das Regelpaket Emerging Threats Open zu installieren:
sudo suricata-update 
Um die Liste der Regelquellen anzuzeigen, führen wir den folgenden Befehl aus:
sudo suricata-update list-sources 
Wir aktualisieren die Regelquellen:
sudo suricata-update update-sources 
Wir überprüfen die aktualisierten Quellen erneut:
sudo suricata-update list-sourcesFalls notwendig, können die verfügbaren kostenlosen Quellen aktiviert werden:
sudo suricata-update enable-source ptresearch/attackdetection
sudo suricata-update enable-source oisf/trafficid
sudo suricata-update enable-source sslbl/ssl-fp-blacklistDanach müssen die Regeln erneut aktualisiert werden:
sudo suricata-updateDamit kann die Installation und Erstkonfiguration von Suricata unter Ubuntu 18.04 LTS als abgeschlossen betrachtet werden. Jetzt wird es interessant: Im nächsten Artikel werden wir den virtuellen Server mit dem Büronetzwerk über VPN verbinden und beginnen, den gesamten eingehenden und ausgehenden Traffic zu analysieren. Besonderes Augenmerk wird auf die Blockierung von DDoS-Attacken, bösartiger Software und dem Versuch der Ausnutzung von Schwachstellen in öffentlich zugänglichen Diensten gelegt. Zur Veranschaulichung werden Angriffe der gängigsten Typen simuliert.
Quelle: habr.com
