Upload
others
View
1
Download
0
Embed Size (px)
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