Assignment Chef icon Assignment Chef
All German tutorials

Programming lesson

SDN-Firewall mit POX: Schritt-für-Schritt-Tutorial für OMSCS/OMSCY (Fall 2025)

Lerne, wie du mit POX und OpenFlow eine konfigurierbare SDN-Firewall implementierst – inklusive praktischer Tipps zu Mininet, Wireshark und Fehlerbehebung. Ideal für OMSCS/OMSCY-Studierende.

SDN Firewall mit POX OMSCS SDN Projekt OpenFlow Firewall Tutorial POX Controller Firewall configure.pol Regeln Mininet Firewall Test Wireshark SDN Analyse sdn-firewall.py Implementierung Flow-Mod Nachricht POX Netzwerksicherheit SDN OMSCY Fall 2025 SDN Firewall Fehlerbehebung OpenFlow Switch Firewall POX API Flow-Mod SDN Firewall Schritt-für-Schritt CS6250 Projekt Firewall

Einführung in die SDN-Firewall mit POX

Software-Defined Networking (SDN) revolutioniert die Art und Weise, wie Netzwerke gesteuert werden. In diesem Tutorial erfährst du, wie du mit dem POX-Controller eine konfigurierbare Firewall für ein OpenFlow-fähiges Switch-Netzwerk erstellst. Das Projekt basiert auf der OMSCS/OMSCY-Aufgabe „SDN Firewall with POX Fall 2025“ und ist ideal, um die Grundlagen von SDN, OpenFlow und Netzwerksicherheit zu verstehen.

Projektübersicht und Ziele

In diesem Projekt implementierst du eine Firewall, die den Datenverkehr zwischen Hosts in einer Mininet-Topologie filtert. Du wirst:

  • Die Konfigurationsdatei configure.pol erstellen, die die Firewall-Regeln definiert.
  • Den Python-Code in sdn-firewall.py schreiben, der die Regeln auswertet und Flow-Mod-Nachrichten an den Switch sendet.
  • Mit Wireshark und tshark den Netzwerkverkehr analysieren und die Firewall testen.
  • Die Kommunikation zwischen Hosts wie us1, us2, europe1 und europe2 steuern.

Voraussetzungen und Setup

Stelle sicher, dass du die neueste POX-Version verwendest. Führe dazu folgende Befehle in deiner VM aus:

cd /home/mininet/pox
git pull
git checkout ichthyosaur
chown -R mininet:mininet ~/pox

Entpacke dann die Projektdatei SDNFirewall-Fall2025.zip in dein Home-Verzeichnis:

unzip SDNFirewall-Fall2025.zip -d ~/SDNFirewall

Wechsle in das Verzeichnis und mache dich mit der Dateistruktur vertraut:

  • sdn-topology.py – Startet die Mininet-Topologie
  • sdn-firewall.py – Deine Firewall-Implementierung
  • configure.pol – Regeln für die Firewall
  • run.sh – Startet POX mit der Firewall
  • clean.sh – Bereinigt die Umgebung

Firewall-Implementierung im Detail

Teil 1: Die Konfigurationsdatei configure.pol

Die Datei configure.pol definiert die Firewall-Regeln im Format rule<nummer>:<aktion>:<src-ip>:<dst-ip>:<protokoll>:<src-port>:<dst-port>. Eine beispielhafte Regel könnte so aussehen:

rule1:allow:10.0.0.1:10.0.0.2:TCP:80:*

Diese Regel erlaubt TCP-Verkehr von Host 10.0.0.1 zu 10.0.0.2 auf Port 80. Die Aktion kann allow oder deny sein. Fehlende Felder werden mit * als Platzhalter gekennzeichnet.

Teil 2: Der Python-Code sdn-firewall.py

In dieser Datei implementierst du die Logik, die eingehende Pakete mit den Regeln abgleicht. Der POX-Controller ruft bei jedem neuen Flow den Event-Handler _handle_PacketIn auf. Dein Code muss:

  1. Die Regeln aus configure.pol parsen.
  2. Die Paket-Header (IP, Ports, Protokoll) extrahieren.
  3. Prüfen, ob eine Regel zutrifft.
  4. Bei allow eine Flow-Mod-Nachricht mit ofp_action_output senden, bei deny das Paket verwerfen (keine Aktion).

Ein minimales Grundgerüst könnte so aussehen:

from pox.core import core
import pox.openflow.libopenflow_01 as of
from pox.lib.packet import ipv4, tcp, udp

rules = []  # Wird beim Start geladen

def _handle_PacketIn(event):
    packet = event.parsed
    # Extrahiere IP- und Transport-Header
    # Prüfe gegen rules
    # Sende Flow-Mod oder verwerfe

core.openflow.addListenerByName("PacketIn", _handle_PacketIn)

Teil 3: Testen mit Mininet und Wireshark

Starte die Topologie mit:

sudo python sdn-topology.py

Öffne dann ein xterm für jeden Host:

mininet> xterm us1 us2 europe1 europe2

Um den Datenverkehr zu analysieren, starte tshark auf us1:

sudo tshark -i us1-eth0 -w /tmp/packetcapture.pcap

Führe einen Ping von us1 zu us2 aus und beobachte, ob die Firewall greift. Öffne die PCAP-Datei in Wireshark, um die Pakete im Detail zu sehen.

Häufige Fehler und Lösungen

  • POX startet nicht: Stelle sicher, dass der Pfad zu POX korrekt ist und führe clean.sh aus.
  • Firewall-Regeln werden ignoriert: Überprüfe, ob configure.pol im richtigen Format ist und keine Leerzeichen enthält.
  • Flow-Mod wird nicht gesendet: Verwende event.connection.send(msg) und setze msg.buffer_id korrekt.
  • Wireshark zeigt keine Pakete: Starte tshark mit sudo und wähle das richtige Interface.

Best Practices und Tipps

  • Teste jede Regel einzeln, bevor du mehrere kombinierst.
  • Nutze die POX-API aus Appendix C des Projekts, um Flow-Mod-Objekte korrekt zu erstellen.
  • Verwende print-Anweisungen im Code, um den Regelabgleich zu debuggen.
  • Halte die Firewall-Regeln so spezifisch wie möglich, um Fehlkonfigurationen zu vermeiden.

Zusammenfassung

Mit diesem Tutorial hast du die Grundlagen für die Implementierung einer SDN-Firewall mit POX gelernt. Du kannst jetzt:

  • Regeln in configure.pol definieren,
  • den Python-Code für die Firewall schreiben,
  • das Verhalten mit Mininet und Wireshark testen.

Diese Fähigkeiten sind nicht nur für die OMSCS/OMSCY-Aufgabe relevant, sondern auch für reale Anwendungen in Cloud-Netzwerken, IoT-Sicherheit und Datencenter-Automatisierung. Viel Erfolg!