Inhaltsverzeichnis

Usg

Das Unified Security Gateway ist das Firewall/Router Gerät von Ubiquity.

Konsole

Verbinden per RJ45 to DB9 Kabel mit folgenden Einstellungen:

IP-Adresse setzen

Per Konsole oder SSH zur USG verbinden (Login ubnt:ubnt)

  1. configure
  2. edit interfaces ethernet eth1
  3. delete address 192.168.1.1/24
  4. set address <NEW_IP-ADDRESS/NETMASK>
  5. show address
  6. [commit|commit-confirm]
  7. ping neue IP-Adresse

Custom DNS Hosts

DHCP

NAT

Hier ein Beispiel für Source-NAT (DAs LAN soll mit dem WAN-Interface eth0 Maskiert werden, wenn die Zieladresse 192.168.175.1 erreicht werden soll)

configure
set service nat rule 6500 description "BESCHREIBUNG"
set service nat rule 6500 type masquerade
set service nat rule 6500 log disable
set service nat rule 6500 destination address 192.168.175.1
set service nat rule 6500 outbound-interface eth0
set service nat rule 6500 protocol all
set service nat rule 6500 source group network-group "corporate_network"
commit;save;exit

Weiter unten sieht man auch die Konfiguration in der config.gateway.json

Konfiguration ausgeben

mca-ctrl -t dump-cfg [> FILE.TXT]

Custom JSON-Config

In der Datei config.gateway.json können eigene Konfigurationen für die USG erstellt werden.
Möchte man sehen wie die aktuelle Konfiguration auf der USG (also quasi die aktuelle config.gateway.json der USG) aussieht, so nutzt man den o.g. „dump“ befehl per mca-ctrl.
Beispiele und Quelle: help.ui.com
Einige Konfigurationen können noch nicht im Unifi-Controller gemacht werden, diese müssen dann in der JSON-Datei eingerichtet werden.
ACHTUNG: Die JSON-Anweisungen müssen richtig formatiert sein, sonst läuft das Provisionieren in eine Schleife.
Wurde die config.gateway.json falsch formatiert gespeichert und provisioniert, einfach die Änderungen wieder entfernen und warten bis die USG nach einem erneuten Provisionieren (ist ja noch in der Schleife) die neue (alte) Konfig erhält und bootet.
Daher die Datei immer vom JSON-Format her prüfen, z.B. hier https://jsonformatter.curiousconcept.com, hier https://jsonlint.com/ oder auf der Konsole:

python -m json.tool config.gateway.json

Damit die Konfiguration übernommen wird, muss im Controller die Provisionierung der USG erzwungenwerden.

touch <UNIFI BASE>/data/sites/<SITE_ID>/config.gateway.json
chmod abc. <UNIFI BASE>/data/sites/<SITE_ID>/config.gateway.json

Inhalt:

{
    "system": {
        "static-host-mapping": {
            "host-name": {
                "<DNS_HOST_NAME>": {
                    "alias": [
                        "setup",
                        "<DNS_ALIAS_NAME>"
                    ],
                    "inet": [
                        "<IP_ADDRESS>"
                    ]
                },
                "<DNS_HOST_NAME>": {
                    "inet": [
                        "<IP_ADDRESS>"
                    ]
                },
                "<DNS_HOST_NAME>": {
                    "inet": [
                        "<IP_ADDRESS>"
                    ]
                }
            }
        }
    },
    "service": {
        "nat": {
            "rule": {
                "6001": {
                    "description": "MASQ corporate_network to WAN",
                    "log": "disable",
                    "destination":{  
                        "address":"192.168.175.1",
                    },
                    "outbound-interface": "eth0",
                    "protocol": "all",
                    "source": {
                        "group": {
                            "network-group": "corporate_network"
                        }
                    },
                    "type": "masquerade"
                }
            }
        }
    }
}

VPN

Die USG bietet von haus aus eine Verbindung zu Remote Usern per L2TP/IPSec an.
Hier eine Konfiguration für die USG, welche über einen anderen Router ins Internet gelangt (NAT-T).
Generell sollte die Konfiguration auch mit einer direkten Verbindung zum Internet laufen.

Konfiguration auf USG

  1. Radius: Settings:GATEWAY:RADIUS
    1. Radius einschalten
    2. „Secret“ vergeben
    3. Alles andere auf Default lassen
  2. Radius-User (Benutzer für VPN-Verbindung): Settings:GATEWAY:RADIUS
    1. Benutzernamen und Password vergeben (ACHTUNG: Benutzername und Password sind case sensitive)
    2. VLAN-ID angeben in dem die VPN-Verbindung landen soll (nur wenn mit VLANs gearbeitet wird)
    3. Tunnel Type auf „…(L2TP)“
    4. Tunnel Medium Type auf „IPv4…“ stellen.
  3. Radius-Profil: Settings:CONFIGURATION PROFILES:RADIUS
    1. im „Default“ Profil „Enable Wired“ aktivieren, wenn mit VLANs garbeitet wird
  4. VPN-Verbindung: Settings:VPN:VPN Servers
    1. Neuen VPN Server erstellen
    2. VPN Type „L2TP Server“
    3. Pre-Shared Key eintragen
    4. Gateway IP / Subnet vergeben
    5. Radius Profil auf „Default“
    6. MS-CHAP-v2 aktivieren

Verbindung von Android aus

  1. neue VPN-Verbindung erstellen
    1. Typ auf „L2TP/IPSec PSK“ stellen
    2. Serveradresse auf öffentliche IP stellen
    3. L2TP-Schlüssel leer lassen
    4. IPSec-ID leer lassen
    5. vorinstallierter IPSec-Schlüssle auf „Pre-Shared Key“ der USG stellen
    6. Nutzername auf RADIUS Benutzer stellen
    7. Passwort auf das Passwort des RADIUS Benutzer stellen

Verbindung von Ubuntu aus

Gestestet mit Ubuntu 18.04.4 LTS:

  1. VPN-Tunnel Software installieren und Betriebssystem danach neustarten
    apt install network-manager-l2tp-gnome
  2. VPN-Verbindung vom Typ „Layer 2 Tunneling Protocol (L2TP)“ erstellen
    1. Namen nach belieben vergeben
    2. bei Gateway die Öffentliche IP angeben
    3. User auf RADIUS Benutzer stellen (ist Case Sensitive)
    4. „IPsec Settings“ öffnen
      1. „Enable IPsec tunnel to L2TP host“ anhaken
      2. Gateway ID leer lassen wenn USG hinter NAT-Router
      3. Pre-shared key auf „Pre-Shared Key“ der USG stellen
      4. unter Advanced einen Phase 1/2 Algorithmus angeben, welchen die USG anbietet (siehe: /etc/ipsec.d/tunnels/remote-access auf USG; stehen unter „ike=…“ und „esp=…“)
        Phase1 Algorithms z.B. „aes128-sha1-modp2048“
        Phase2 Algorithms z.B. „aes256-sha1-modp1024“
      5. unter „PPP Settings“ Haken setzen bei „Point-to-Point Verschlüsselung (MPPE) verwenden“
      6. Sicherheit auf „128Bit (am sichersten)“ setzen
    5. VPN-Verbindung speichern

IPsec zwischen USG und Fritzbox

Funktioniert nicht, da auf der USG keine Hostnames, sondern nur feste IP-Adressen verwendet werden dürfen!

Auf der USG und Fritzbox werden jeweils eine manuelle Konfiguration installiert. Die Konfiguration mittels GUI ist nicht möglich.

Fritzbox vpn_config.cfg

vpncfg {
    connections {
        enabled = yes;
      	conn_type = conntype_lan;
        name = "<NAME_DES_VPN>";
   		always_renew = yes;
        reject_not_encrypted = no;
        dont_filter_netbios = yes;
        localip = 0.0.0.0;
        local_virtualip = 0.0.0.0;
        remoteip = 0.0.0.0;
        remote_virtualip = 0.0.0.0;
        remotehostname = "<PUBLIC_DYNDNS_FQDN_DER_USG>";
        keepalive_ip = 0.0.0.0;
        localid {
            fqdn = "<PUBLIC_DYNDNS_FQDN_DER_FRITZBOX>";
        }
        remoteid {
            fqdn = "<PUBLIC_DYNDNS_FQDN_DER_USG>";
        }
        mode = phase1_mode_idp;
        phase1ss = "all/all/all";
        keytype = connkeytype_pre_shared;
        key = "<PRESHAREDKEY>";
        cert_do_server_auth = no;
        use_nat_t = yes;
        use_xauth = no;
        use_cfgmode = no;
        phase2localid {
            ipnet {
                ipaddr = <LOKALES_SUBNETZ_DER_FRITZBOX>;
                mask = 255.255.255.0;
            }
        }
        phase2remoteid {
            ipnet {
                ipaddr = <LOKALES_SUBNETZ_DER_USG>;
                mask = 255.255.255.0;
            }
        }
        phase2ss = "esp-all-all/ah-none/comp-all/pfs";
        accesslist = "<LOKALES_SUBNETZ_DER_USG> 255.255.255.0";
    }
    ike_forward_rules = "udp 0.0.0.0:500 0.0.0.0:500",
                        "udp 0.0.0.0:4500 0.0.0.0:4500";
}

USG wird in die Standardkonfigurationsdatei hinzugefügt /…/sites/default/config.gateway.json

{
    "vpn": {
        "ipsec": {
            "auto-firewall-nat-exclude": "enable",
            "auto-update": "60",
            "esp-group": {
                "ESP_FritzBox": {
                    "compression": "disable",
                    "lifetime": "3600",
                    "mode": "tunnel",
                    "pfs": "enable",
                    "proposal": {
                        "1": {
                            "encryption": "aes256",
                            "hash": "sha1"
                        }
                    }
                }
            },
            "ike-group": {
                "IKE_FritzBox": {
                    "ikev2-reauth": "no",
                    "key-exchange": "ikev1",
                    "lifetime": "3600",
                    "proposal": {
                        "1": {
                            "dh-group": "2",
                            "encryption": "aes256",
                            "hash": "sha1"
                        }
                    }
                }
            },
            "ipsec-interfaces": {
                "interface": [
                    "eth0"
                ]
            },
            "nat-networks": {
                "allowed-network": {
                    "0.0.0.0/0": "''"
                }
            },
            "nat-traversal": "enable",
            "site-to-site": {
                "peer": {
                    "<PUBLIC_IP_ADRESSE_DER_FRITZBOX>": {
                        "authentication": {
                            "id": "<PUBLIC_IP_ADRESSE_DER_USG>",
                            "mode": "pre-shared-secret",
                            "pre-shared-secret": "<PRESHAREDKEY>",
                            "remote-id": "<PUBLIC_IP_ADRESSE_DER_FRITZBOX>"
                        },
                        "connection-type": "initiate",
                        "ike-group": "IKE_FritzBox",
                        "ikev2-reauth": "inherit",
                        "local-address": "any",
                        "tunnel": {
                            "0": {
                                "allow-nat-networks": "disable",
                                "allow-public-networks": "disable",
                                "esp-group": "ESP_FritzBox",
                                "local": {
                                    "prefix": "<LOKALES_SUBNETZ_DER_USG_IN_CIDR>"
                                },
                                "remote": {
                                    "prefix": "<REMOTE_SUBNETZ_DER_FRITZBOX_IN_CIDR>"
                                }
                            }
                        }
                    }
                }
            }
        }
    },
    "system": {
        ...
    }
}

Troubleshooting