OPNsense Intrusion Prevention System

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

Intrusion Prevention System (IPS) in OPNsense

Überblick

Das Intrusion Prevention System (IPS) von OPNsense basiert auf Suricata und verwendet Netmap, um die Leistung zu verbessern und die CPU-Auslastung zu minimieren. Dieses Deep Packet Inspection System ist sehr leistungsfähig und kann Sicherheitsbedrohungen bei Leitungsgeschwindigkeit erkennen und abwehren.

IDS und IPS

Es ist wichtig, die in diesem Dokument verwendeten Begriffe zu definieren. Ein Intrusion Detection System (IDS) überwacht den Netzwerkverkehr auf verdächtige Muster und kann Administratoren benachrichtigen, wenn ein Muster mit bekannten Verhaltensweisen übereinstimmt. Ein Intrusion Prevention System (IPS) geht einen Schritt weiter, indem es jedes Paket überprüft, während es eine Netzwerkschnittstelle passiert, um festzustellen, ob das Paket verdächtig ist. Wenn es mit einem bekannten Muster übereinstimmt, kann das System das Paket verwerfen, um eine Bedrohung abzuwehren.

Suricata kann sowohl als IDS als auch als IPS betrieben werden.

Auswahl des Interfaces

Man kann das System auf verschiedenen Interfaces konfigurieren. Eine der häufigsten Fragen ist, welches Interface ausgewählt werden soll. Aufgrund der Nutzung von IPv4 in Kombination mit NAT ist die richtige Auswahl entscheidend. Wenn man den Datenverkehr auf dem WAN-Interface aufzeichnet, sieht man nur den Verkehr nach der Adressübersetzung. Das bedeutet, dass sämtlicher Traffic von der Firewall selbst stammt und nicht von dem eigentlichen Host hinter der Firewall, der wahrscheinlich den Alarm auslöst.

Regeln für ein IDS/IPS benötigen ein klares Verständnis über das interne Netzwerk; diese Information geht verloren, wenn man Pakete hinter NAT überwacht.

Beispielregel

alert tls $HOME_NET any -> $EXTERNAL_NET any 
(msg:"ET TROJAN Observed Glupteba CnC Domain in TLS SNI";
flow:established,to_server; tls_sni; content:"myinfoart.xyz"; depth:13;
classtype:trojan-activity; sid:2029751; rev:2;)

$HOME_NET kann angepasst werden, normalerweise ist es jedoch ein RFC1918-Netz. Mit „Advanced Mode“ kann auch eine externe Adresse gewählt werden, allerdings weiß man dann nicht, welcher interne Rechner tatsächlich beteiligt war. $EXTERNAL_NET ist definiert als „nicht Home-Net“. Deshalb darf man nicht den gesamten Traffic als Home markieren, da sonst keine Regeln mehr greifen.

Da die Firewall eingehende Pakete per Default verwirft, bringt es im IPS-Modus keine zusätzliche Sicherheit, das WAN-Interface zu verwenden – die Pakete wären ohnehin von der Firewall geblockt worden.

Hinweis

IDS-Modus funktioniert auf fast allen (virtuellen) Netzwerktypen. Wenn eine Netzwerkkarte nicht vollständig unterstützt wird, kann man den Tunable „dev.netmap.admode“ auf den Wert 2 setzen, wodurch der emulierte Modus erzwungen wird (konfigurierbar unter System ‣ Settings ‣ Tunables). Eine Liste der unterstützten Adapter findet sich in der FreeBSD-Manpage.

Allgemeine Einstellungen

Die Seite „Settings“ enthält die Standardoptionen, um IDS/IPS zu aktivieren.

Option Beschreibung
Enable Suricata aktivieren
IPS mode Wenn aktiviert, können verdächtige Pakete verworfen werden. Die Netzwerkkarte muss Netmap unterstützen. Damit Pakete gedroppt werden, muss die Action der Regel auf „drop“ stehen.
Promiscuous mode Interface empfängt allen Traffic, nicht nur an die eigene Adresse gerichtete Pakete.
Enable syslog alerts Alerts im Syslog (fast log format) protokollieren.
Enable eve syslog output Alerts im EVE-Format ins Syslog schreiben (Level info). Drop-Logs gehen nur an den internen Logger.
Pattern matcher Algorithmus für Mustervergleich. Standard: Aho–Corasick. Hyperscan ist empfohlen (falls unterstützt).
Interfaces Zu schützende Interfaces. Im IPS-Modus müssen dies physische Interfaces sein, die Netmap unterstützen. Bei VLANs Parent-Interface aktivieren.
Rotate log Logrotation (Intervall).
Save logs Anzahl aufzubewahrender Logs.

Tipp

Für externe Reporting-Tools kann man die EVE-Logs per Syslog weiterleiten. „Enable EVE syslog output“ aktivieren und ein Ziel unter System ‣ Settings ‣ Logging / Targets definieren.

Hinweis

Bei IPS muss Hardware-Offloading (TSO, LRO, Checksum) unter Interfaces ‣ Settings deaktiviert werden. Vor Version 20.7 war „VLAN Hardware Filtering“ nicht deaktiviert, was zu Problemen führen konnte.

Erweiterte Optionen

Option Beschreibung
Home networks Definiert $HOME_NET, wenn abweichend von RFC1918. Wichtig, wenn IPS auf WAN hinter NAT läuft, da Suricata sonst nur übersetzte Adressen sieht.
Default packet size Legt die Standard-Paketgröße fest. Größere Pakete sind möglich, mindern aber die Performance.

Rulesets herunterladen

Wenn IDS/IPS das erste Mal aktiviert wird, sind keine Regeln geladen. Der Tab „Download“ enthält alle verfügbaren Rulesets (erweiterbar durch Plugins).

Vor Version 21.1 konnte man hier das Verhalten (alert → drop) verändern. Ab 21.1 wird dies über Policies gesteuert.

Hinweis

Bei Upgrade von Versionen vor 21.1 werden alte Filter automatisch in Policies umgewandelt.

Policies

Der Tab „Policies“ enthält eine Übersicht, in der Policies definiert werden können. Policies steuern, wie installierte Rulesets angewendet werden. Sie sind die bevorzugte Methode, um das Verhalten zu ändern.

Eine Policy enthält:

  • Allgemeine Infos (Beschreibung, Enabled, Priorität)
  • Zuweisung zu Rulesets
  • Action (disabled, alert, drop)
  • New Action (überschreibt die bestehende Action)
  • Metadaten aus den Regeln (z. B. betroffenes Produkt, Deployment, Schweregrad)

Überlappende Policies werden in Reihenfolge der Priorität abgearbeitet.

Installed Rules

Der Tab „Rules“ bietet eine Übersicht der installierten Regeln und ermöglicht Filterung nach Metadaten. Manuelle Änderungen werden als Policy „__manual__“ gekennzeichnet.

User defined Rules

Der Tab „User defined“ erlaubt das Anlegen eigener Regeln.

Fingerprinting

OPNsense bietet die Möglichkeit, Webseiten basierend auf SSL-Fingerprints zu blockieren.

Bypassing

Mit der Bypass-Option kann Traffic von der Inspektion ausgeschlossen werden (z. B. internes LAN, um Performance zu steigern).

Alerts

Der Tab „Alerts“ zeigt alle erkannten Events. Über den Info-Button können Details eingesehen werden.

Erweiterte Konfiguration

Eigene Suricata-Optionen können in einer Datei custom.yaml unter /usr/local/opnsense/service/templates/OPNsense/IDS/ abgelegt werden (unter Nutzung von Jinja2-Template-Syntax).

Verfügbare Rulesets

Ruleset Beschreibung
ET Open Kostenfreies, BSD-lizenziertes Ruleset. Keine vollständige Abdeckung.
ET Pro Telemetry Kostenfreie Variante von Proofpoint (mit Registrierung).
ET Pro (kommerziell) Kommerzielles Ruleset. Aktivierbar über Plugin und Oinkcode.
abuse.ch SSLBL Blacklist kompromittierter SSL-Zertifikate (SSL Fingerprints).
abuse.ch Feodo Tracker Blacklist zu Feodo/Cridex/Dridex/Emotet C2-Servern.
abuse.ch URLHaus Liste kompromittierter Webseiten mit Malware.
App detection rules Blockiert Webdienste und URLs.