Verhindern von Malware-Ausbreitung in Datennetzen

Preview:

Citation preview

Verhindern von Malware-Ausbreitung inDatennetzen

Jakob DöringLucas SchröderNils Trampel

Chemnitzer StudentenNetz

14. März 2021

CSN Ausgangssituation Prozess Umsetzung Ergebnis

Inhalt

1 Chemnitzer StudentenNetz (CSN)

2 Ausgangssituation

3 Prozess

4 UmsetzungMailverarbeitungWebsiteQuarantänenetz-Router - Existierende LösungQuarantänenetz-Router - Eigenimplementation

5 Ergebnis

CSN Ausgangssituation Prozess Umsetzung Ergebnis

Überblick

Internetprovider für Studenten in Wohnheimen10 Wohnheime am Campus Reichenhainer Straßeetwa 1800 aktive NutzerUplink: URZ, Deutsches Forschungsnetz

CSN Ausgangssituation Prozess Umsetzung Ergebnis

DFN Warnmails

Information über MalwarebefallManuelle Bearbeitung

Abbildung: Ausschnitt aus einer DFN Warnmail

CSN Ausgangssituation Prozess Umsetzung Ergebnis

Netzwerk

Identifizierung der Nutzer im NetzNutzernetzwerke:

Geteilte /23Gateway am Router

Quarantänenetzwerke:Gleiche Adressierung wie normale NetzeGateway an Proxy VM

Verschieben von Nutzerports in Quarantänenetze

CSN Ausgangssituation Prozess Umsetzung Ergebnis

Proxy

squidSelbstsignierte Zertifikate für HTTPSNur Whitelist erlaubt

TU Chemnitz Debian MirrorAntivirusWindows Updates

CSN Ausgangssituation Prozess Umsetzung Ergebnis

Prozess

Mailparser Webseite/ NutzerverwaltungDFN Warnmails Sperrung

QuarantänegatewaySperrung

Sperrung

Bereinigung QuarantänegatewayInternetzugriff

Webseite/ Nutzerverwaltung

Internetzugriffzur Bereinigung

Freischalten

Abbildung: Prozessablauf

CSN Ausgangssituation Prozess Umsetzung Ergebnis

Mailverarbeitung

ImplementierungMailverarbeitung

Informationen aus der DFN Warnmail extrahierenSperrung des Nutzers auslösen

CSN Ausgangssituation Prozess Umsetzung Ergebnis

Mailverarbeitung

ImplementierungInformationen in der Warnmail

IP-Adresse des NutzersZeitpunktGrund der WarnungAngriffszieleInformationen über Malware

CSN Ausgangssituation Prozess Umsetzung Ergebnis

Mailverarbeitung

ImplementierungVerarbeitung

Python SkriptDOM-ParserREST-API

CSN Ausgangssituation Prozess Umsetzung Ergebnis

Website

ImplementierungWebseite - Überblick

Django ProjektVerwaltung von

NutzernNutzerhostPortzuordnungenInfrastrukturInterne Hosts

Statusseite

CSN Ausgangssituation Prozess Umsetzung Ergebnis

Website

ImplementierungWebseite - APIs

POST /api/v2/ quarantine /lock

NutzerstatusRuft RPC von Gateway auf (Blockierung des Angriffsziels)Plausibilitätsprüfung

GET /api/v2/ quarantine / grants

Liste aller vollständig gesperrter IPs

CSN Ausgangssituation Prozess Umsetzung Ergebnis

Website

ImplementierungWebseite - Nutzerseite

GET / quarantine /< encrypted_mac >

Abbildung: Quarantäneansicht für Nutzer

CSN Ausgangssituation Prozess Umsetzung Ergebnis

Website

ImplementierungWebseite - Administrationsseite

GET / secure /user/<user_id >/ quarantine

Netzzugriffe überwachen, hinzufügenQuarantäne beenden

Abbildung: Verwaltung der Nutzerquarantäne

CSN Ausgangssituation Prozess Umsetzung Ergebnis

Quarantänenetz-Router - Existierende Lösung

ImplementierungAnforderungen Quarantänegateway

Ziele:Personalisierte InformationenEingebunden in CSN-WebsiteZeitlich beschränkte SelbstfreischaltungKein Zugriff auf restliches Netzwerk oder AngriffszieleExistierende Lösung verwenden:

Frei und Open SourceAktuellGut dokumentiertEinfach automatisiert konfigurierbar

CSN Ausgangssituation Prozess Umsetzung Ergebnis

Quarantänenetz-Router - Existierende Lösung

ImplementierungBetrachtete Anwendungen

WiFiDogPacketFenceCoovaChillipfSenseOPNsense

CSN Ausgangssituation Prozess Umsetzung Ergebnis

Quarantänenetz-Router - Existierende Lösung

ImplementierungProblem 1 - Personalisierte Website

Persönliche Informationen nur in NutzerdatenbankOPNsense hat keinen direkten Zugriff

CSN Ausgangssituation Prozess Umsetzung Ergebnis

Quarantänenetz-Router - Existierende Lösung

ImplementierungProblem 2 - Freischaltung

Voucher können nur vom CSN-Webserver aus generiert werdenOPNsense geht von ”physischen” Vouchern ausFreischaltung nur über HTML-Template möglich

CSN Ausgangssituation Prozess Umsetzung Ergebnis

Quarantänenetz-Router - Existierende Lösung

ImplementierungProblem 3 - Ende der temporären Freischaltung

Aktive Sitzungen werden nicht unterbrochenHartes Timeout muss und fest für alle Nutzer gleich konfiguriertwerdenKeine individuellen/veränderbaren Freischaltezeiten möglich

CSN Ausgangssituation Prozess Umsetzung Ergebnis

Quarantänenetz-Router - Existierende Lösung

ImplementierungProblem 4 - Automatische Sperrung von Angriffszielen

Angriffsziele dürfen nicht erreichbar seinFirewallregeln müssen automatisiert hinzugefügt werdenPlugin ist schlecht dokumentiertFehlerhaft

CSN Ausgangssituation Prozess Umsetzung Ergebnis

Quarantänenetz-Router - Existierende Lösung

ImplementierungFazit

Sehr fragile LösungViele ungelöste ProblemeNicht benötigte Funktionalität

CSN Ausgangssituation Prozess Umsetzung Ergebnis

Quarantänenetz-Router - Eigenimplementation

Neu-ImplementierungCaptive Portal

NutzergruppenNicht aktiviertdefault state Aktiviert

Netzblockade* Freischaltung*Umleitung zum Web-Portal

Zeitbeschränkung← automatische Rückkehr

* mit Ausnahmen

CSN Ausgangssituation Prozess Umsetzung Ergebnis

Quarantänenetz-Router - Eigenimplementation

Captive-Portal-RouterArchitektur - Eigenschaften

Adressen: DHCPNutzergruppierung nach Source-MACProtokoll-/Port-/Adress-basiertes FirewallingHTTP-Weiterleitung zu PortalAPI für Nutzerfreischaltung

CSN Ausgangssituation Prozess Umsetzung Ergebnis

Quarantänenetz-Router - Eigenimplementation

Captive-Portal-RouterAufbau

GrundlagenLinux-Host als Router, 2 Interfaces, DHCP-Server, iptables + ipset,Python

Komponentenfw_setup ipsets und iptables-Regeln konfigurieren

http_redirector HTTP-Server für Redirect zum Web-Portalxmlrpcapi Nutzer freischalten, sperren; Firewall-Blacklisting

CSN Ausgangssituation Prozess Umsetzung Ergebnis

Quarantänenetz-Router - Eigenimplementation

Captive-Portal-RouterFirewall

ipsetFreigeschaltete Nutzer

ipset create activated_quarantine_macs hash:macipset add activated_quarantine_macs 01:23:45:67:89: ab

IP-Blacklistipset create blocked_targets hash:ipipset add blocked_targets 192.0.2.1

iptables

DNS-UmleitungUmleitung gesperrter NutzerBlocken nach IP-BlacklistGruppenbasierte Netzfreigabe

CSN Ausgangssituation Prozess Umsetzung Ergebnis

Quarantänenetz-Router - Eigenimplementation

Captive-Portal-RouterFirewall

ipset

Freigeschaltete NutzerIP-Blacklist

iptablesDNS-Umleitung

iptables -t nat -A PREROUTING -p udp--dport 53 -j DNAT --to - destination [DNS - Server ]

Umleitung gesperrter Nutzeriptables -t nat -A PREROUTING_DEACTIVATED_USERS -p tcp

--dport 80 -j DNAT --to - destination [Device -IP ]:80

Blocken nach IP-Blacklistiptables -A FORWARD -m set --match -set

blocked_targets dst -j DROP

Gruppenbasierte Netzfreigabeiptables -A FORWARD_DEACTIVATED_USERS -p tcp -m multiport

--dports 80 ,443 ,[...] -m set --match -set important dst-j ACCEPT

iptables -A FORWARD_ACTIVATED_USERS -p tcp-m multiport --dports 80 ,443 ,[...] -j ACCEPT

CSN Ausgangssituation Prozess Umsetzung Ergebnis

Quarantänenetz-Router - Eigenimplementation

Captive-Portal-RouterHTTP-Umleitung

Ermittlung der MAC-AdresseLinux-Bordmittel:$ ip neigh show[...]192.0.2.5 dev eth1 lladdr 01:23:45:67:89: ba REACHABLE

→ HTTP-302-Redirect nachhttps :// example .org/ portal /? mac =01:23:45:67:89: ba

Verschlüsselung möglichProblem: Manipulation fremder Freischaltungen in gemeinsamerLayer-2-Domain → Verschlüsselung der MAC mit AES Crypt

CSN Ausgangssituation Prozess Umsetzung Ergebnis

Quarantänenetz-Router - Eigenimplementation

Captive-Portal-RouterAPI

auf Basis von XML RPCreload Neukonfiguration der Firewall

activate Nutzerfreischaltung für n Minutenclear_activations Entfernen aller Nutzerfreischaltungen

block Neufassung der Blacklist

CSN Ausgangssituation Prozess Umsetzung Ergebnis

Ergebnis

voll funktionales selbstgebautes System1

Inbetriebnahme Oktober 2020Rund 30 QuarantänefälleBegrenzte Stabilität des HTTPServers aus Python

Abstürze durch HTTP-Requests von Nutzergeräten aus exotischenLändernAlternative: Flask-Framework mit uWSGI

kaum Meldungen zur Nutzererfahrung

1https://github.com/camelusferus/cpob

Vielen Dank fürdie Aufmerksamkeit

Fragen?

web: www.csn.tu-chemnitz.demail: kontakt@csn.tu-chemnitz.de

Recommended