Snort oder Suricata. Teil 3: Schützen Sie Ihr Bühnennetzwerk

Im vorherigen Artikel Wir haben erklärt, wie man eine stabile Version von Suricata unter Ubuntu 18.04 LTS startet. Das Einrichten eines IDS auf einem Knoten und das Verbinden mit kostenlosen Regelsets ist ziemlich einfach. Heute werden wir uns ansehen, wie man mit dem auf einem virtuellen Server installierten Suricata das Unternehmensnetzwerk gegen die häufigsten Angriffsarten schützt. Dazu benötigen wir einen VDS unter Linux mit zwei Rechenkernen. Der Arbeitsspeicher hängt von der Last ab: Manche kommen mit 2 GB aus, während für ernsthaftere Aufgaben 4 oder sogar 6 erforderlich sein können. Der Vorteil virtueller Maschinen liegt in der Möglichkeit zu experimentieren: Man kann mit einer minimalen Konfiguration beginnen und die Ressourcen nach Bedarf erweitern.

Snort oder Suricata. Teil 3: Schützen Sie Ihr BühnennetzwerkFoto: Reuters

Netzwerke zusammenführen

Das Auslagern des IDS auf eine virtuelle Maschine kann in erster Linie für Tests erforderlich sein. Wenn Sie noch nie mit solchen Lösungen gearbeitet haben, sollten Sie nicht sofort physische Hardware bestellen und die Netzwerkarchitektur ändern. Es ist besser, das System sicher und ohne unnötige Kosten zu testen, um die Bedürfnisse an den Rechenressourcen zu ermitteln. Es ist wichtig zu verstehen, dass der gesamte Unternehmensverkehr über einen einzigen externen Knoten geleitet werden muss: Zum Anschluss des lokalen Netzwerks (oder mehrerer Netzwerke) an den VDS mit dem installierten IDS Suricata kann man SoftEther — ein einfach einzurichtender plattformübergreifender VPN-Server, der zuverlässige Verschlüsselung bietet. Der Internetanschluss des Büros könnte keine echte IP haben, weshalb es besser ist, ihn auf einem VPS zu betreiben. In den Ubuntu-Repositories gibt es keine fertigen Pakete, die Software muss entweder von der Projektwebsite, oder aus einem externen Repository auf dem Dienst Launchpad (wenn Sie ihm vertrauen):

sudo add-apt-repository ppa:paskal-07/softethervpn
sudo apt-get update

Die Liste der verfügbaren Pakete kann mit folgendem Befehl abgerufen werden:

apt-cache search softether

Snort oder Suricata. Teil 3: Schützen Sie Ihr Bühnennetzwerk

Wir benötigen softether-vpnserver (der Server in einer Testkonfiguration läuft auf dem VDS) sowie softether-vpncmd – die Kommandozeilen-Tools zur Konfiguration.

sudo apt-get install softether-vpnserver softether-vpncmd

Zur Konfiguration des Servers wird ein spezielles Kommandozeilenwerkzeug verwendet:

sudo vpncmd

Snort oder Suricata. Teil 3: Schützen Sie Ihr Bühnennetzwerk

Wir werden nicht im Detail auf die Konfiguration eingehen: Das Verfahren ist relativ einfach und gut in zahlreichen Veröffentlichungen beschrieben, daher gehört es nicht direkt zum Thema des Artikels. Kurz gesagt, nach dem Start von vpncmd müssen Sie Punkt 1 wählen, um zur Serververwaltungskonsole zu gelangen. Dazu müssen Sie den Namen localhost eingeben und Enter drücken, anstatt den Namen des Hubs einzugeben. In der Konsole wird das Administratorpasswort mit dem Befehl serverpasswordset festgelegt, der virtuelle Hub DEFAULT wird mit dem Befehl hubdelete gelöscht, und ein neuer mit dem Namen Suricata_VPN wird erstellt, wobei auch dessen Passwort gesetzt wird (Befehl hubcreate). Anschließend müssen wir zur Verwaltungskonsole des neuen Hubs mit dem Befehl hub Suricata_VPN wechseln, um eine Gruppe und einen Benutzer mit den Befehlen groupcreate und usercreate zu erstellen. Das Benutzerpasswort wird mit userpasswordset festgelegt.

SoftEther unterstützt zwei Modi zur Übertragung von Datenverkehr: SecureNAT und Local Bridge. Ersterer ist eine hauseigene Technologie zum Aufbau eines virtuellen privaten Netzwerks mit eigenem NAT und DHCP. SecureNAT erfordert kein TUN/TAP sowie keine Konfiguration von Netfilter oder einer anderen Firewall. Die Datenübertragung berührt nicht den Systemkernel, und alle Prozesse sind virtualisiert und funktionieren auf jeder VPS/VDS, unabhängig vom verwendeten Hypervisor. Dies führt zu einer höheren CPU-Last und einer verringerten Geschwindigkeit im Vergleich zum Local Bridge-Modus, der den virtuellen Hub von SoftEther mit einem physischen Netzwerkadapter oder einem TAP-Gerät verbindet.

In diesem Fall wird die Konfiguration komplizierter, da die Routingeinstellungen auf der Kernel-Ebene mithilfe von Netfilter erfolgen. Unsere VDS sind auf Hyper-V aufgebaut, daher erstellen wir im letzten Schritt eine lokale Bridge und aktivieren das TAP-Gerät mit dem Befehl bridgecreate Suricate_VPN -device:suricate_vpn -tap:yes. Nachdem wir die Verwaltungskonsole des Hubs verlassen haben, sehen wir in der Systemübersicht eine neue Netzwerkschnittstelle, der noch keine IP-Adresse zugewiesen wurde:

ifconfig

Snort oder Suricata. Teil 3: Schützen Sie Ihr Bühnennetzwerk

Nun müssen wir das Routing von Paketen zwischen den Schnittstellen aktivieren (ip forward), falls es nicht aktiv ist:

sudo nano /etc/sysctl.conf

Entkommentieren Sie die folgende Zeile:

net.ipv4.ip_forward = 1

Speichern Sie die Änderungen in der Datei, verlassen Sie den Editor und wenden Sie sie mit dem folgenden Befehl an:

sudo sysctl -p

Nun müssen wir für das virtuelle Netzwerk ein Subnetz mit fiktiven IPs festlegen (zum Beispiel 10.0.10.0/24) und die Adresse der Schnittstelle zuweisen:

sudo ifconfig tap_suricata_vp 10.0.10.1/24

Dann müssen Netfilter-Regeln erstellt werden.

1. Bei Bedarf eingehende Pakete auf den überwachten Ports erlauben (das proprietäre SoftEther-Protokoll verwendet HTTPS und Port 443)

sudo iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
sudo iptables -A INPUT -p tcp -m tcp --dport 992 -j ACCEPT
sudo iptables -A INPUT -p tcp -m tcp --dport 1194 -j ACCEPT
sudo iptables -A INPUT -p udp -m udp --dport 1194 -j ACCEPT
sudo iptables -A INPUT -p tcp -m tcp --dport 5555 -j ACCEPT

2. Wir konfigurieren NAT für das Subnetz 10.0.10.0/24 auf die Haupt-IP des Servers

sudo iptables -t nat -A POSTROUTING -s 10.0.10.0/24 -j SNAT --to-source 45.132.17.140

3. Wir erlauben durchgehende Pakete aus dem Subnetz 10.0.10.0/24

sudo iptables -A FORWARD -s 10.0.10.0/24 -j ACCEPT

4. Wir erlauben durchgehende Pakete für bereits etablierte Verbindungen

sudo iptables -A FORWARD -p all -m state --state ESTABLISHED,RELATED -j ACCEPT

Die Automatisierung des Prozesses beim Neustart des Systems mithilfe von Initialisierungsskripten überlassen wir den Lesern als Hausaufgabe.

Wenn Sie Kunden automatisch IP-Adressen zuweisen möchten, müssen Sie auch einen DHCP-Dienst für den lokalen Bridge installieren. Damit ist die Konfiguration des Servers abgeschlossen, und Sie können zu den Kunden übergehen. SoftEther unterstützt viele Protokolle, deren Verwendung von den Möglichkeiten der Hardware im lokalen Netzwerk abhängt.

netstat -ap |grep vpnserver

Snort oder Suricata. Teil 3: Schützen Sie Ihr Bühnennetzwerk

Da unser Test-Router ebenfalls unter Ubuntu arbeitet, installieren wir die Pakete softether-vpnclient und softether-vpncmd aus einem externen Repository, um das proprietäre Protokoll zu nutzen. Sie müssen den Client starten:

sudo vpnclient start

Für die Konfiguration verwenden wir das Dienstprogramm vpncmd und wählen localhost als die Maschine, auf der der vpnclient läuft. Alle Befehle erfolgen in der Konsole: Es wird erforderlich sein, ein virtuelles Interface (NicCreate) und ein Konto (AccountCreate) zu erstellen.

In einigen Fällen ist es notwendig, die Authentifizierungsmethode mit den Befehlen AccountAnonymousSet, AccountPasswordSet, AccountCertSet und AccountSecureCertSet festzulegen. Da wir DHCP nicht verwenden, wird die Adresse für den virtuellen Adapter manuell festgelegt.

Wir müssen außerdem ip forwarding aktivieren (Parameter net.ipv4.ip_forward=1 in der Datei /etc/sysctl.conf) und statische Routen konfigurieren. Bei Bedarf kann auf dem VDS mit Suricata eine Portweiterleitung für die Verwendung in der lokalen Netzwerkdiensten eingerichtet werden. Damit ist das Netzwerken abgeschlossen.

Die von uns vorgeschlagene Konfiguration sieht ungefähr so aus:

Snort oder Suricata. Teil 3: Schützen Sie Ihr Bühnennetzwerk

Wir konfigurieren Suricata

Im vorherigen Artikel Wir haben über zwei Betriebsarten von IDS gesprochen: über die Warteschlange NFQUEUE (NFQ-Modus) und über Zero Copy (AF_PACKET-Modus). Letzterer erfordert zwei Schnittstellen, bietet jedoch eine höhere Leistung — wir werden tatsächlich ihn verwenden. Der Parameter ist standardmäßig in /etc/default/suricata festgelegt. Außerdem müssen wir den Abschnitt vars in /etc/suricata/suricata.yaml bearbeiten, um dort das virtuelle Subnetz als Heimnetzwerk anzugeben.

Snort oder Suricata. Teil 3: Schützen Sie Ihr Bühnennetzwerk

Um IDS neu zu starten, verwenden wir den Befehl:

systemctl restart suricata

Die Lösung ist bereit, jetzt müssen Sie möglicherweise ihre Widerstandsfähigkeit gegen die Aktionen von Angreifern überprüfen.

Angriffe simulieren

Es kann mehrere Szenarien für den Einsatz des externen IDS-Dienstes geben:

Schutz vor DDoS-Angriffen (Hauptzweck)

Es ist schwierig, eine solche Variante innerhalb eines Unternehmensnetzwerks zu implementieren, da die zu analysierenden Pakete auf die ins Internet gerichtete Schnittstelle des Systems gelangen müssen. Selbst wenn IDS sie blockiert, kann der parasitäre Datenverkehr die Übertragungsleitung überlasten. Um dies zu vermeiden, sollte man einen VPS mit einer ausreichend leistungsfähigen Internetverbindung bestellen, die in der Lage ist, den gesamten Datenverkehr des lokalen Netzwerks und den gesamten externen Verkehr zu übertragen. Oft ist es einfacher und günstiger, dies zu tun, als den Bürokabel auszubauen. Alternativ sind spezialisierte Dienste zum Schutz vor DDoS zu erwähnen. Die Kosten ihrer Dienste sind mit denen eines virtuellen Servers vergleichbar, und es ist keine aufwendige Einrichtung erforderlich, aber es gibt auch Nachteile — für sein Geld erhält der Kunde nur Schutz vor DDoS, während ein eigenes IDS beliebig konfiguriert werden kann.

Schutz vor anderen Arten von externen Angriffen

Suricata kann mit Versuchen umgehen, verschiedene Schwachstellen in den aus dem Internet zugänglichen Diensten des Unternehmensnetzwerks auszunutzen (Mailserver, Webserver und Webanwendungen usw.). Normalerweise wird IDS innerhalb des lokalen Netzwerks nach den Grenzgeräten installiert, aber auch die externe Platzierung ist möglich.

Schutz vor internen Angreifern

Trotz aller Bemühungen des Systemadministrators können die Computer des Unternehmensnetzwerks mit schädlicher Software infiziert werden. Außerdem gibt es im lokalen Netzwerk manchmal Unruhestifter, die versuchen, unerlaubte Operationen durchzuführen. Suricata kann helfen, solche Versuche zu blockieren, obwohl es besser ist, sie innerhalb des Perimeters zu installieren und in Kombination mit einem Switch, der Verkehrsverkehr auf einen Port spiegeln kann, zu verwenden. Eine externe IDS ist in diesem Fall auch nicht nutzlos — sie kann zumindest die Versuche erkennen, dass Schadhafter Software im LAN versucht, sich mit einem externen Server zu verbinden.

Zunächst erstellen wir einen weiteren testenden Angreifer-VPS und richten auf dem Router des lokalen Netzwerks einen Apache mit der Standardkonfiguration ein, bevor wir den Port 80 vom IDS-Server auf ihn weiterleiten. Dann werden wir einen DDoS-Angriff von der angreifenden Maschine simulieren. Dazu laden wir ein kleines Programm namens xerxes von GitHub herunter, kompilieren und starten es auf der Angreifermaschine (möglicherweise muss das gcc-Paket installiert werden):

git clone https://github.com/Soldie/xerxes-DDos-zanyarjamal-C.git
cd xerxes-DDos-zanyarjamal-C/
gcc xerxes.c -o xerxes
./xerxes 45.132.17.140 80

Das Ergebnis seiner Arbeit war folgendes:

Snort oder Suricata. Teil 3: Schützen Sie Ihr Bühnennetzwerk

Suricata blockiert den Angreifer, und die Standardseite von Apache öffnet sich trotz unseres improvisierten Angriffs und des ziemlich schwachen Kanals des „Büro-“ (tatsächlich häuslichen) Netzwerks. Für ernsthaftere Aufgaben sollte man Metasploit Frameworkverwenden. Es ist für Penetrationstests gedacht und ermöglicht die Simulation verschiedenster Angriffe. Die Installationsanleitung ist verfügbar findet man auf der Projektseite. Nach der Installation ist ein Update erforderlich:

sudo msfupdate

Für Tests starten wir msfconsole.

Snort oder Suricata. Teil 3: Schützen Sie Ihr Bühnennetzwerk

Leider fehlt in den letzten Versionen des Frameworks die Möglichkeit zum automatischen Hacken, sodass Exploits manuell durchgegangen und mit dem Befehl use gestartet werden müssen. Zunächst sollte man die offenen Ports auf der angegriffenen Maschine bestimmen, zum Beispiel mit nmap (in unserem Fall kann netstat auf der angegriffenen Maschine das durchaus ersetzen), und dann passende Metasploit-Module auswählen und verwenden.

Es gibt auch andere Werkzeuge zur Überprüfung der Widerstandsfähigkeit von IDS gegen Angriffe, einschließlich Online-Dienste. Aus Neugier kann man ein Stresstest mit einer Testversion durchführen IP Stresser. Um die Reaktion auf die Aktionen interner Angreifer zu überprüfen, sollten spezielle Werkzeuge auf einem der Maschinen im lokalen Netzwerk installiert werden. Es gibt zahlreiche Optionen, die regelmäßig nicht nur auf dem Experimentalgelände, sondern auch auf den produktiven Systemen angewendet werden sollten, aber das ist eine ganz andere Geschichte.

Snort oder Suricata. Teil 3: Schützen Sie Ihr Bühnennetzwerk

Snort oder Suricata. Teil 3: Schützen Sie Ihr Bühnennetzwerk

Quelle: habr.com

60GB SSD 8Gb DDR4