Usg
Das Unified Security Gateway ist das Firewall/Router Gerät von Ubiquity.
Konsole
Verbinden per RJ45 to DB9 Kabel mit folgenden Einstellungen:
- Baud rate 115200
- Data bits 8
- Parity NONE
- Stop bits 1
- Flow control NONE
IP-Adresse setzen
Per Konsole oder SSH zur USG verbinden (Login ubnt:ubnt
)
configure
edit interfaces ethernet eth1
delete address 192.168.1.1/24
set address <NEW_IP-ADDRESS/NETMASK>
show address
[commit|commit-confirm]
- ping neue IP-Adresse
Custom DNS Hosts
- dnsmasq
Die Datei/etc/dnsmasq.d/dnsmasq.static.conf
kann selbst editiert werden, um weitere aufzulösende Hostnamen per DNS-Namen im Netzwerk zu erreichen.
Nach dem Editieren muss derdnsmasq
Daemon neugestartet werden/etc/init.d/dnsmasq force-reload
Besser ist es die Datei und den Daemon mit diesen Befehlen zu steuern:
configure set system static-host-mapping host-name <HOSTNAME> inet <IP_ADDRESS> commit;save;exit
- default dns server
Die eigenen Host Einträge müssen in derconfig.gateway.json
Datei gepflegt werden, siehe custom_json-config
DHCP
- Leases anzeigen
show dhcp leases
- alle Leases bereinigen
clear dhcp leases
- bestimmte Leas bereinigen
clear dhcp lease ip <IP_ADRESS>
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
- Radius: Settings:GATEWAY:RADIUS
- Radius einschalten
- „Secret“ vergeben
- Alles andere auf Default lassen
- Radius-User (Benutzer für VPN-Verbindung): Settings:GATEWAY:RADIUS
- Benutzernamen und Password vergeben (ACHTUNG: Benutzername und Password sind case sensitive)
- VLAN-ID angeben in dem die VPN-Verbindung landen soll (nur wenn mit VLANs gearbeitet wird)
- Tunnel Type auf „…(L2TP)“
- Tunnel Medium Type auf „IPv4…“ stellen.
- Radius-Profil: Settings:CONFIGURATION PROFILES:RADIUS
- im „Default“ Profil „Enable Wired“ aktivieren, wenn mit VLANs garbeitet wird
- VPN-Verbindung: Settings:VPN:VPN Servers
- Neuen VPN Server erstellen
- VPN Type „L2TP Server“
- Pre-Shared Key eintragen
- Gateway IP / Subnet vergeben
- Radius Profil auf „Default“
- MS-CHAP-v2 aktivieren
Verbindung von Android aus
- neue VPN-Verbindung erstellen
- Typ auf „L2TP/IPSec PSK“ stellen
- Serveradresse auf öffentliche IP stellen
- L2TP-Schlüssel leer lassen
- IPSec-ID leer lassen
- vorinstallierter IPSec-Schlüssle auf „Pre-Shared Key“ der USG stellen
- Nutzername auf RADIUS Benutzer stellen
- Passwort auf das Passwort des RADIUS Benutzer stellen
Verbindung von Ubuntu aus
Gestestet mit Ubuntu 18.04.4 LTS:
- VPN-Tunnel Software installieren und Betriebssystem danach neustarten
apt install network-manager-l2tp-gnome
- VPN-Verbindung vom Typ „Layer 2 Tunneling Protocol (L2TP)“ erstellen
- Namen nach belieben vergeben
- bei Gateway die Öffentliche IP angeben
- User auf RADIUS Benutzer stellen (ist Case Sensitive)
- „IPsec Settings“ öffnen
- „Enable IPsec tunnel to L2TP host“ anhaken
- Gateway ID leer lassen wenn USG hinter NAT-Router
- Pre-shared key auf „Pre-Shared Key“ der USG stellen
- 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“ - unter „PPP Settings“ Haken setzen bei „Point-to-Point Verschlüsselung (MPPE) verwenden“
- Sicherheit auf „128Bit (am sichersten)“ setzen
- 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
- VPN-Konfiguration und -Verbindungen auf USG einsehen und kontrollieren
- Konfiguration
/etc/ipsec.d/tunnels/remote-access
- Status von Strongswan anzeigen
ipsec statusall
- bestehende VPN-Verbindungen anzeigen
show vpn ipsec sa
- Verbindungsanfragen zeigen
- auf Netzwerk
tcpdump -i eth0 -n udp dst port 500 [or 4500]
- auf Strongswan
swanctl –log