CCU2 absichern

Im HomeMatic-Forum wird eine sehr elegante Lösung von blackhole vorgestellt, mit der du deine CCU2 absichern kannst. Die Lösung baut auf dem betriebssystemeigenen iptables-Befehl und erweitert damit die Firewall der CCU2 um die Möglichkeit auf MAC-Adressen einschränken zu können. Wenn du diese Lösung einsetzt und aktivierst, wird die Konfiguration der CCU2-Firewall überschrieben!

Bevor du mit der Umsetzung auf deiner CCU2 beginnst, solltest du unbedingt ein System-Backup als Rettungsschim erstellen.

Nach erfolgreicher Umsetzung sollte auch der Zugriff von einem nicht legitimierten Gerät geprüft werden, dieser darf dann nicht zum Erfolg führen. Erst dann ist deine CCU2 richtig abgesichert!
Nach jeder Veränderung der firewall.conf müssen die Veränderungen durch das Starten des Programm „Firewall an“ aktiviert werden.

Ich gehe davon aus, dass du CUxD bereits installierst hast! Falls dies noch nicht geschehen ist, findest du hier eine Anleitung.

Dazu ein kleiner Installationsleitfaden:

  • Systemvariable Firewall mit Typ Textstring in der CCU2 anlegen
  • aktuelle Version von CCU-Protect aus dem Forum laden
  • ssh-Zugang auf der CCU2 aktivieren und unbedingt ein sicheres Kennwort vergeben und gut merken!

Jetzt hast die Wahl, ob du das Windows-Programm WinSCP zum Kopieren, Entpacken & Bearbeiten nutzen willst oder ob du es ganz zu Fuß und Schritt für Schritt mit Bordmitteln erledigen willst.

Mit Windows-Programm:

  • Unter winscp.net die kostenlose Version von WinSCP zum Bearbeiten und Installieren der Installationsdateien laden und installieren.
WinSCP Download
WinSCP Download
  • Nach dem Programmaufruf eine neue Verbindung zur CCU2 einrichten und starten. Auf CCU2-Seite (rechtes Fenster) das Verzeichnis „/usr/local/addons/“ anwählen. Anschliessend in das Download-Verzeichnis auf deinem PC wechseln und die Datei „ccu-protect-install-2.92.tar.gz“ per „Hochladen“ in das Verzeichnis „/usr/local/addons/“ auf der CCU2 laden. Im rechten Fenster (CCU2 Seite) per Rechtsklick auf „ccu-protect-install-2.92.tar.gz“ das Paket mit „Benutzerdefinierte Befehle“ > „UnTar/Gzip“ entpacken.
CCU2 absichen -Zip-File mit WinSCP auf CCU2 übertragen
Zip-File mit WinSCP auf CCU2 übertragen
  • Im rechten Fenster (CCU2 Seite) in das neu angelegte Verzeichnis ccu-protect wechseln und die Datei „firewall.conf“ anwählen und bearbeiten.

Update 20.09.20: iPhone-Nutzer mit einem Update auf iOS 14 können aufgrund der automatisch aktivierten Funktion „Private WLAN-Adresse“ bei aktivierter CCU-Protect nicht mehr auf die CCU zugreifen. Diese Funktion läßt sich zum Glück für jedes einzelne WLAN separat deaktivieren. Ich habe dazu eine kleine Anleitung verfasst.

Update 22.04.17: Die MAC-Adresse der Fritz!Box kann folgendermaßen ermittelt werden:
Windows
Windows-Taste + R drücken und Eingabefeld „Öffnen“ „cmd“ eintragen.
Mit „nslookup fritz.box“ die IP-Adresse der Fritz!Box ermitteln.
Mit „arp -a [IP-Adresse der Fritz!Box]“ die MAC-Adresse Ethernet-Schnittstelle anzeigen lassen.
MacOS
[Programme]/[Dienstprogramme]/[Terminal] das Terminal aufrufen.
Mit „arp“ die MAC-Adresse der Ethernet-Schnittstelle anzeigen lassen

Update 30.03.16: Wenn du neben der CCU2 eventuell noch eine Mediola-Box und/oder einen Raspberry einsetzt, müssen aus diese Geräte per MAC- oder IP-Adresse in der firewall.conf berechtigt werden.

Update 13.03.16: Neben den IP-/MAC-Adressen der legitimierten Geräte bei Verwendung eines VPN-Zugangs auch die IP-/MAC-Adresse der internen Netzwerkkarte des VPN-Routers eintragen. Bei Verwendung einer Fritz!Box ist das die MAC-Adresse der Fritz!Box.

CCU2 absichern - Datei firewall.conf bearbeiten
Datei firewall.conf bearbeiten
IP-/MAC-Adressen der zugelassenen Geräte eintragen
IP-/MAC-Adressen der zugelassenen Geräte eintragen
  • Die Datei „firewall.conf“ speichern und das Editor-Fenster schliessen. Im rechten Fenster mit winscp03 ein Verzeichnis nach oben wechseln und die Datei „ccu-protect-install-2.92.tar.gz“ löschen. Jetzt kannst du WinSCP beenden und zu „Und hier geht’s jetzt für alle wieder weiter …springen!

Mit Bordmitteln:

  • Terminal-Programm auf deinem Mac/PC starten und in das Download-Verzeichnis auf deinem Mac/PC wechseln
  • den Download von CCU-Protect per scp-Befehl auf die CCU2 in das Verzeichnis /usr/local/addons kopieren:
    scp ccu-protect-install-2.92.tar.gz root@IP_deiner_CCU2:/usr/local/addons/ccu-protect-install-2.92.tar.gz
  • Per ssh auf der CCU2 anmelden:
    ssh root@IP_deiner_CCU2
  • Auf der CCU2 in das Verzeichnis /usr/local/addons wechseln:
    cd /usr/local/addons
  • Die Dateirechte neu setzten:
    chmod 777 ccu-protect-install-2.92.tar.gz
  • Download entpacken:
    tar -xvf ccu-protect-install-2.92.tar.gz
  • .tar-File löschen:
    rm ccu-protect-install-2.92.tar.gz
  • In das Verzeichnis der entpacken Dateien wechseln:
    cd ccu-protect
  • CCU2 absichern. Config-File entsprechend anpassen, dabei bitte die spitzen Klammern ebenfalls löschen. Ich habe bei meiner Installation lediglich die MAC-Adressen eingetragen:
    vi firewall.conf

    Falls du den vi-Editor nicht kennst:
    Zum Einfügen bzw. Ändern: [ESC]-Taste drücken und loslassen, anschliessend die Tastenfolge „a“ für Anhängen und „i“ für Einfügen betätigen! Zum Löschen [ESC]-Taste drücken und loslassen anschliessend mit der [Backspace]-Taste löschen!
    Zum Speichern & Beenden: [ESC]-Taste drücken und loslassen, anschliessend die Tastenfolge „:wq“ betätigen!

    ###########################################################################
    #                                                                         #
    # CCU-Protect-Config | Minimalistic firewall script created by blackhole  #
    #                                                                         #
    # Protects your CCU2 from unwanted incoming traffic that is sent by       #
    # devices located in your local LAN.                                      #
    #                                                                         #
    # Use your router/firewall to protect your CCU2 from unwanted traffic     # 
    # that is sent by devices located in the internet.                        #
    #                                                                         #
    # Sadly, the CCU2 does not support stateful packet inspection. SPI would  #
    # be very helpful to generate a way better firewall for the CCU2.         #
    #                                                                         #
    ###########################################################################
    
    # IP addresses of allowed devices have to be space-separated
    allowed_devices_ip=<IP-Adresse deines Mac/PC und Smartphone>
    
    # MAC addresses of allowed devices have to be space-separated
    allowed_devices_mac=<Hardware-Adresse deines Mac/PC und Smartphone
    
    # Valid settings are 'yes' and 'no'
    allow_ping_from_everywhere=yes
    
    # Valid settings are 'yes' and 'no'
    allow_ssh_from_everywhere=yes
  • Firewall auf der CCU2 aktivieren:
    /usr/local/addons/ccu-protect/firewall_enable.sh
  • Kontrollieren ob die iptables richtig geschrieben wurde:
    iptables -L
    Chain INPUT (policy DROP)
    target     prot opt source               destination         
    ACCEPT     all  --  anywhere             anywhere            
    ACCEPT     all  --  fritz.box            anywhere            
    ACCEPT     all  --  homematic.fritz.box  anywhere            
    ACCEPT     all  --  anywhere             anywhere             MAC 80:C8:3D:EA:8C:B5
    ACCEPT     all  --  anywhere             anywhere             MAC 70:C3:32:FA:3C:A5
    ACCEPT     icmp --  anywhere             anywhere            
    ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh
    REJECT     all  --  10.0.0.0/8           anywhere             reject-with icmp-port-unreachable
    REJECT     all  --  172.16.0.0/12        anywhere             reject-with icmp-port-unreachable
    REJECT     all  --  192.168.0.0/16       anywhere             reject-with icmp-port-unreachable
    REJECT     all  --  169.254.0.0/16       anywhere             reject-with icmp-port-unreachable
    ACCEPT     all  --  anywhere             anywhere            
    
    Chain FORWARD (policy ACCEPT)
    target     prot opt source               destination         
    
    Chain OUTPUT (policy ACCEPT)
    target     prot opt source               destination

Und hier geht’s jetzt für alle wieder weiter …

  • Progamm zum Starten der Firewall anlegen:
    Update 16.03.16: Auf Anregung von blackhole und Highfly78 aus dem HomeMatic-Forum habe ich in die Wenn-Bedingung die Abfrage auf die Systemvariable „CCU-Status“ eingefügt und setze nun diese erst nach 5 Minuten nach einem CCU2-Start auf „normal“. Somit kann bei einem Fehler in der „firewall.conf“ der automatische Start des Programms „Firewall ein“ durch das Deaktivieren (Häkchen bei aktiv entfernen) des Programms verhindert werden.
    Die Systemvariable „CCU-Status“ habe ich in meinem Artikel „Systemvariablen …“ genauer beschrieben.
firewall_an_neu
Programm „Firewall an“
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("/usr/local/addons/ccu-protect/firewall_enable.sh 'firewall_on'");
  • Programm zum Stoppen der Firewall anlegen:
firewall_aus_neu
Programm „Firewall aus“
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("/usr/local/addons/ccu-protect/firewall_disable.sh 'firewall_off'");

Über Erfahrungsberichte einer hoffentlich erfolgreichen Umsetzung oder Anmerkungen & Anregungen würde ich mich sehr freuen. Großen Dank an blackhole!

Update 12.01.17: Für einen Zugriff per VPN auf die CCU2, muss die IP- oder MAC-Adresse des VPN-Routers (z.B. Fritz!Box) in die firewall.conf eingetragen werden und anschliessend die Firewall wieder mit firewall_disable.sh und anschliessendem firewall_enable.sh wieder gestartet werden. Sollte es dennoch nicht mit dem VPN-Zugriff klappen, bitte in der Fritz!Box oder in deinem Smartphone unter dem Menüpunkt VPN die der VPN-Verbindung zugewiesene IP-Adresse ermitteln und auch diese in die firewall.conf eintragen. Ich persönlich verwende ausschliesslich die MAC-Adressen der zugelassenen Devices, diese sind immer eindeutig!

Autor: Erhard Simdorn

Am 1. September 2014 habe ich mir meine erste CCU2 gekauft und war von den Möglichkeiten der Hausautomation sofort begeistert. Am 22. November 2014 folgte dann die zweite CCU2 für einen weiteren Standort und bis heute sind es schon acht CCU2 für die ich der "Auslöser" war.

6 Gedanken zu „CCU2 absichern“

  1. Das Addon funktioniert soweit ganz gut, aber:
    Wenn ich mit einen autorisiertem Gerät per VPN einloggen will, werde ich abgewiesen.
    Wenn ich zuhause im WLAN eingebucht bin, geht es.
    Hat jemand einen Tip?
    Gruß,
    Mathias

    1. Hallo Mathias,

      bitte trage auch die IP-Adresse oder die MAC-Adresse deines VPN-Device (z.B. Fritz!Box) ein, dann klappt auch der VPN-Zugang.

      Falls du auch z.B. ein OSRAM Lightify-Gateway oder eine Hue Bridge im Einsatz hast, müssen auch diese Geräte in der firewall.conf eingetragen werden.

      Gruß Erhard

  2. Hallo, und DANKE !

    ich finde den Beitrag „CCU2 absichern“ sehr strukturiert und hilfreich dargestellt.
    Prinzipiell hat bei mir auch alles von Anfang an funktioniert.
    Obwohl ich alles wirklich mehrfach konzentriert gelesen habe, gab es anfänglich bei Verständnisprobleme. Mir war nicht klar, das „IPTABLES“ nur für die interne NIC funktioniert.
    Ich dachte doch glatt “ verzeiht mir … “ ich kann nun meine FW öffnen (HTTP Port-Weiterleitung), um dann eingeschränkt nur die MAC vom Handy freizugeben.
    Vielleicht sollte man das noch als INFo nachtragen ….
    Tausend Dank, hast mir schon off geholfen ohne es zu wissen …. Bernd

    1. Hallo Bernd,

      vielen Dank für den Hinweis, ich werde einen entsprechend Vermerk in den Beitrag einbauen. Ein Port-Weiterleitung ist prinzipiell keine gute Idee, schon garnicht im Rahmen der Hausautomation! Beim Einsatz einer Fritz!Box ist ein VPN auch im Privatumfeld keine große Herausforderung, aber ein ziemlich sicherer Weg um alles aus der Ferne zu steuern.

      Gruß Erhard

  3. Hallo Erhard,
    vielen dank für die tolle Anleitung.
    Ich habe nun das Update auf 2.92 gemacht und habe mich gewundert das in der „firewall_enable.sh“ noch die 2.91 steht. Ich vermute mal das ist aber nur ein Schreibfehler 😉

    Gruß
    Michael

    1. Hallo Michael,

      die Version in der firewall_enable.sh steht im Kommentar und wurde anscheinend vom Autor blackhole nicht aktualisiert, hat also keinen Einfluss auf die Funktion.

      Liebe Grüße Erhard

Kommentare sind geschlossen.