Firewall Upcycling


Ich hatte ganz früher mal eine Firewall mit Iptables hinter meinem Provider Router laufen. Weil ich Bastel-Router und Debian mag, war das ein Banana Pi R1. Irgendwann habe ich dann gelesen, dass die Kiste vom Hardware-Design nicht so der Burner ist (zumindest nicht als Firewall) und hab sie durch was "richtiges" ersetzt. Seitdem lag das Ding eigentlich nur noch irgendwo im Weg rum.

Letztens hab ich für mein Labor einen VLAN-fähigen Switch gebraucht und der Banane noch eine Chance gegeben. Läuft prima. Die Performance ist okay, ein einfacher iperf Test sagt, dass ca. 940 Mbps durch den Switch gehen, was für den Einsatzzweck absolut in Ordnung ist. Und ein Klickibunti-Interface brauch ich eh nicht... :-P

Und so gehts

  1. OpenWRT Image von OpenWRT Website herunterladen und auf MicroSD (muss nicht gross sein, ich hab ne alte 512MB Karte genommen) installieren
  2. Serielle Konsole anschliessen. Belegung siehe Banana Pi Warehouse, RX/TX von J13, GND von J12 nehmen
  3. SD-Karte stecken und Gerät mit OpenWRT Image booten
  4. Die Konsole verlangt kein Passwort und es ist für root auch keines vergeben, deswegen erst einmal eines setzen (passwd) und dann alle unnötigen Dienste deaktivieren
    service firewall disable
    service uhttpd disable
    service dnsmasq disable
    
  5. Netzwerk-Konfiguration in /etc/config/network anpassen
    config interface 'loopback'
            option ifname 'lo'
            option proto 'static'
            option ipaddr '127.0.0.1'
            option netmask '255.0.0.0'
    
    config interface 'lan'
            option type 'bridge'
    
    config interface 'wan'
            option ifname 'eth0.10'
            option proto 'static'
            option ipaddr '192.168.10.10'
            option netmask '255.255.255.0'
            option gateway '192.168.10.1'
            option dns '192.168.10.1'
    
    config switch
            option name 'switch0'
            option reset '1'
            option enable_vlan '1'
    
    config switch_vlan
            option device 'switch0'
            option vlan '12'
            option ports '1 0 4 3t 8t'
    
    config switch_vlan
            option device 'switch0'
            option vlan '13'
            option ports '2 3t 8t'
    
    config switch_vlan
            option device 'switch0'
            option vlan '10'
            option ports '3 8t'
    
    VLAN 10 ist das Management VLAN (untagged), VLAN 12 und 13 kommen tagged auf den WAN-Port (3) und untagged auf die jeweiligen LAN-Ports (2,1,0,4)
  6. Die Port Nummerierung beachten: Von vorne gesehen ist das [2][1][0][4]  [3] - Also 2,1,0 und 4 sind die LAN Ports, der WAN-Port 3 ist in diesem Fall der Uplink zum Core-Switch
  7. Hostname, NTP Server und Zeitzone in /etc/config/system
    config system
            option hostname 'bpi'
            option 'zonename' 'Europe/Berlin'
            option 'timezone' 'CET-1CEST,M3.4.0,M10.5.0/3'
            option ttylogin '0'
            option log_size '64'
            option urandom_seed '0'
    
    config timeserver 'ntp'
            option enabled '1'
            option enable_server '0'
            list server '192.168.10.1'
    
  8. Nach einem reboot kanns losgehen
  9. Tipp: Wenn Du in /etc/dropbear einen Symlink zu /root/.ssh/authorized_keys setzt, kannst Du Deinen Pubkey per ssh-copy-id übertragen, bevor Du Passwort-Auth für den Root-User abschaltest
    config dropbear
    option PasswordAuth 'on'
    option RootPasswordAuth 'off'
    option Port '22'
    option Interface 'wan'
    
    Die hierfür zu bearbeitende Datei ist /etc/config/dropbear, aktiv wird die Konfiguration nach einen "service dropbear restart". Die "Interface" Zeile bewirkt, dass auf den LAN-Interfaces kein SSH Daemon lauscht, was auch relativ sinnfrei wäre...

Natürlich brauchst Du als "Core-Switch" einen Switch, der VLANs und Trunking beherrscht. Gut und günstig sind die kleinen OfficeConnect Switches von HPE. Noch besser gefallen mir persönlich die Switches von Mikrotik, aber da musst Du dann erst mal ein bisschen lesen, da reicht's nicht so ein bisschen in nem Web Interface rumzuklicken.

Und natürlich musst Du die verwendeten Adressen und VLANs auf Deine Umgebung anpassen. Aber wenn Du das bis hier hin geschafft hast, sollte das kein Problem mehr sein.