Relution Shield (Add-on)
Relution Shield ermöglicht einen sicheren Zugriff vom Internet auf das organisationsinterne Intranet und kombiniert Virtual Private Network (VPN), Private Key Infrastructure (PKI) und UEM - MDM. Weitere Informationen: Relution Shield.
Voraussetzungen
- Relution-Server
- Eine Zielorganisation auf dem Server mit Relution Shield-Lizenz
Vorbereitung von Relution
- Erstellen Sie einen neuen Benutzer ohne Passwort in der Zielorganisation
- Erstellen Sie eine neue Berechtigungsrolle mit der Berechtigung „Relution Shield Access Check“
- Weisen Sie die Rolle dem Benutzer zu
- Erstellen Sie einen API-Zugriffsschlüssel für den Benutzer
Relution Shield Server
Voraussetzungen
- Relution Server 5.26+
- Ubuntu 22.04+
- UDP Port 500 und 4500
- Ausgehender Datenverkehr zu allen Zielen, die durch Relution Shield geschützt werden sollen
- Empfohlen: Öffentlicher DNS-Eintrag
Erforderliche Parameter
- Relution Host: Hostname des Relution-Servers, z.B.
yourserver.relution.io
- Relution API key: Siehe vorherigen Schritt
- VPN CIDR: Der gewünschte IP-Bereich, aus dem Relution Shield interne IPs zuweist, z.B.
10.1.0.0/16
- Network interface: Name der Netzwerkschnittstelle für Relution Shield, z.B.
eth0
- Relution Shield Host: Hostname von Relution Shield, z.B.
vpn.yourserver.relution.io
- DNS-Server: IP-Adressen der internen DNS-Server, z.B.
10.1.0.1,10.1.0.2
Installation
Führen Sie
apt update
aus.Installieren Sie Docker inklusive docker-compose: Docker Installationsanleitung.
Erstellen Sie das Installationsverzeichnis und das Compliance-Verzeichnis:
mkdir -p /opt/relution-shield/compliance
.Erstellen Sie eine Umgebungsdatei
/opt/relution-shield/.env
(stellen Sie sicher, dass Sie<%Relution Host%>
ersetzen):RELUTION_HOSTNAME=<%Relution Host%> REST_API_ACCESS_TOKEN=<access token generated above>
Ubuntu-Firewall
ufw
Ändern Sie die Standard-Weiterleitungsrichtlinie in
/etc/default/ufw
zuDEFAULT_FORWARD_POLICY="ACCEPT"
Erlauben Sie SSH und die erforderlichen IPSec UDP-Ports
ufw allow ssh ufw allow 500,4500/udp
Fügen Sie die folgenden Zeilen am Anfang der Datei
/etc/ufw/before.rules
hinzu, vor den erforderlichen Zeilen, die*filter
enthalten (stellen Sie sicher, dass Sie<%VPN CIDR%>
und<%Network interface%>
ersetzen):# Relution Shield additional rules *nat -A POSTROUTING -s <%VPN CIDR%> -o <%Network interface%> -m policy --pol ipsec --dir out -j ACCEPT -A POSTROUTING -s <%VPN CIDR%> -o <%Network interface%> -j MASQUERADE COMMIT *mangle -A FORWARD --match policy --pol ipsec --dir in -s <%VPN CIDR%> -o <%Network interface%> -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1361:1536 -j TCPMSS --set-mss 1360 COMMIT # Don't delete these required lines, otherwise there will be errors *filter ...
Fügen Sie die folgenden Zeilen am Ende der Datei
/etc/ufw/before.rules
hinzu, nach den erforderlichen Zeilen, die*filter
enthalten (stellen Sie sicher, dass Sie<%VPN CIDR%>
ersetzen):... # End required lines # Relution Shield additional rules -A ufw-before-forward --match policy --pol ipsec --dir in --proto esp -s <%VPN CIDR%> -j ACCEPT -A ufw-before-forward --match policy --pol ipsec --dir out --proto esp -d <%VPN CIDR%> -j ACCEPT
Passen Sie
/etc/ufw/sysctl.conf
, an und fügen Sie die folgenden Zeilen am Ende der Datei hinzu:# Relution Shield IPv4 forwarding kernel configuration net/ipv4/ip_forward=1 net/ipv4/conf/all/accept_redirects=0 net/ipv4/conf/all/send_redirects=0 net/ipv4/ip_no_pmtu_disc=1
Starten Sie die Ubuntu-Firewall neu
ufw disable && ufw enable
Bereiten Sie die Konfiguration von Relution Shield vor:
Erstellen Sie die Verzeichnisse für Konfigurationsdateien:
mkdir -v -p /opt/relution-shield/etc/ipsec.d/{aacerts,acerts,cacerts,certs,crls,ocspcerts,private}
Erstellen Sie die erforderlichen Zertifikate und Schlüssel (stellen Sie sicher, dass Sie
<%Relution Shield Host%>
ersetzen):# Create mounted directories mkdir -v -p pki/{cacerts,certs,private} docker run -ti --volume "$(pwd)/pki:/opt/pki" relution/relution-shield:latest bash # Now in docker container cd /opt # Create CA private key and certificate pki --gen --type rsa --size 4096 --outform pem > pki/private/ca-key.pem pki --self --ca --lifetime 3650 --in pki/private/ca-key.pem \ --type rsa --dn "CN=ca.<%Relution Shield Host%>" --outform pem > pki/cacerts/ca-cert.pem # Generate server key and certificate, signed by the CA pki --gen --type rsa --size 4096 --outform pem > pki/private/server-key.pem pki --pub --in pki/private/server-key.pem --type rsa \ | pki --issue --lifetime 1825 \ --cacert pki/cacerts/ca-cert.pem \ --cakey pki/private/ca-key.pem \ --dn "CN=<%Relution Shield Host%>" --san "<%Relution Shield Host%>" \ --flag serverAuth --flag ikeIntermediate --outform pem \ > pki/certs/server-cert.pem # Prepare Key Pair archive, will be needed for Relution later openssl pkcs12 -export -out "pki/ca.<%Relution Shield Host%>.p12" -inkey pki/private/ca-key.pem -in pki/cacerts/ca-cert.pem # Exit the docker container exit
Verschieben Sie die Zertifikatsdateien an die entsprechenden Orte:
mv pki/private/ca-key.pem /opt/relution-shield/etc/ipsec.d/private/ca-key.pem mv pki/cacerts/ca-cert.pem /opt/relution-shield/etc/ipsec.d/cacerts/ca-cert.pem mv pki/private/server-key.pem /opt/relution-shield/etc/ipsec.d/private/server-key.pem mv pki/certs/server-cert.pem /opt/relution-shield/etc/ipsec.d/certs/server-cert.pem
Erstellen Sie die Server-Authentifizierungsdatei
/opt/relution-shield/etc/ipsec.secrets
: RSA "server-key.pem"
Erstellen Sie die Konfigurationsdatei
/opt/relution-shield/etc/strongswan.conf
# strongswan.conf - strongSwan configuration file # # Refer to the strongswan.conf(5) manpage for details # # Configuration changes should be made in the included files charon { load_modular = yes threads = 64 processor { priority_threads { high = 2 medium = 8 } } filelog { stdout { default = 0 enc = 0 } } plugins { include strongswan.d/charon/*.conf bypass-lan { interfaces_use = lo } } }
Erstellen Sie die Konfigurationsdatei
/opt/relution-shield/etc/ipsec.conf
(stellen Sie sicher, dass Sie<%Relution Shield Host%>
,<%VPN CIDR%>
,<%Relution Host%>
and<%DNS Servers%>
ersetzen)# see <https://wiki.strongswan.org/projects/strongswan/wiki/Ipsecconf> config setup uniqueids=no # see <https://wiki.strongswan.org/projects/strongswan/wiki/ConnSection> conn %default dpdaction=clear # DPD disabled since covered in IKEv2 dpddelay=0s fragmentation=yes mobike=yes compress=yes conn <%Relution Shield Host%>-base keyexchange=ikev2 left=%any leftauth=pubkey leftid=<%Relution Shield Host%> leftca=ca-cert.pem leftcert=server-cert.pem leftsendcert=always leftsubnet=0.0.0.0/0 leftfirewall=yes right=%any rightsourceip=<%VPN CIDR%> rightdns=<%DNS Servers%> type=tunnel auto=add forceencaps=yes reauth=yes rekey=yes eap_identity=%identity ike=chacha20poly1305-sha512-curve25519-prfsha512,aes256gcm16-sha384-prfsha384-ecp384,aes256-sha384-modp4096,aes256-sha256-modp4096,aes256-sha384-ecp384! esp=chacha20poly1305-sha512,aes256gcm16-ecp384,aes256-sha256,aes256-sha384-modp4096,aes256-sha256-modp4096,aes256-sha384-ecp384! conn <%Relution Shield Host%>-eaptls also=<%Relution Shield Host%>-base rightauth=eap-tls rightid="%*@<%Relution Host%>" rightca=ca-cert.pem rightsendcert=always conn <%Relution Shield Host%>-eaptls-windows also=<%Relution Shield Host%>-base rightauth=eap-tls rightid=%any rightca=ca-cert.pem rightsendcert=always
Relution Shield mit Docker installieren
Erstellen Sie die Datei
/opt/relution-shield/compose.yml
services: relution-shield: image: relution/relution-shield:latest restart: unless-stopped cap_add: - NET_ADMIN - NET_RAW - SYS_MODULE network_mode: host ports: - "500:500/udp" - "4500:4500/udp" environment: RELUTION_HOSTNAME: ${RELUTION_HOSTNAME} REST_API_ACCESS_TOKEN: ${REST_API_ACCESS_TOKEN} volumes: - '/dev/net/tun:/dev/net/tun' - './etc/ipsec.conf:/etc/ipsec.conf:ro' - './etc/ipsec.d:/etc/ipsec.d:ro' - './etc/ipsec.secrets:/etc/ipsec.secrets:ro' - './etc/strongswan.conf:/etc/strongswan.conf:ro' - '/lib/modules:/lib/modules:ro' - './compliance:/opt/strongswan/compliance'
Starten Sie Relution Shield in
/opt/relution-shield
viadocker compose up -d
Relution Shield Auto-Start einrichten. Erstellen Sie dazu die Datei
/etc/systemd/system/relution-shield-networkd-post-restarter.service
[Unit] Requires=systemd-networkd.service After=systemd-networkd.service network-online.target [Service] Type=oneshot ExecStart=docker compose -f /opt/relution-shield/compose.yml restart RemainAfterExit=yes [Install] WantedBy=multi-user.target
Starten Sie den Dienst mit
systemctl enable relution-shield-networkd-post-restarter --now
Relution konfigurieren
Zertifikat-Einrichtung
- Importieren Sie die Zertifikate in die Zielorganisation:
- Navigieren Sie zu “Einstellungen” > “Zertifikate”
- Laden Sie das Zertifikat unter
/opt/relution-shield/etc/ipsec.d/cacerts/ca-cert.pem
hoch und geben Sie ihm einen Namen wie ‘<%Relution Shield Host%> CA-Zertifikat’ - Laden Sie das Zertifikat unter
/opt/relution-shield/etc/ipsec.d/certs/server-cert.pem
hoch und geben Sie ihm einen Namen wie ‘<%Relution Shield Host%> Server-Zertifikat’ - Laden Sie das PKCS12-Archiv unter
/opt/relution-shield/pki/ca.vpn.staging.relution.xyz.p12
hoch und geben Sie ihm einen Namen wie ‘<%Relution Shield Host%> CA-Schlüsselpaar’
- Erstellen Sie eine Zertifizierungsstelle und ein Zertifikat-Template:
- Navigieren Sie zu “Einstellungen” > “Zertifizierungsstellen”
- Fügen Sie eine neue Zertifizierungsstelle vom Typ “Eingebaut” hinzu und wählen Sie das zuvor hochgeladene Zertifikat ‘<%Relution Shield Host%> CA-Schlüsselpaar’
- Navigieren Sie zu “Einstellungen” > “Zertifikat-Vorlagen”
- Fügen Sie eine neue Zertifikat-Vorlage hinzu:
- Wählen Sie die zuvor erstellte Zertifizierungsstelle aus
- Setzen Sie “Betreffname” auf
CN=${device.uuid}@<%Relution Host%>
(Beachten Sie dasCN=
am Anfang) - Aktivieren Sie “Signatur” und “Verschlüsselung”
- Fügen Sie einen “Subject Alternative Name” vom Typ “Email” mit
${device.uuid}@<%Relution Host%>
hinzu (KeinCN=
am Anfang) - Aktivieren Sie “automatische Erneuerung” und setzen Sie passende Werte, z.B. 60 Tage und 180 Tage
Beispiel iOS-Konfiguration
- Erstellen Sie eine neue iOS-Richtlinie oder erweitern Sie eine bestehende
- Fügen Sie eine VPN-Konfiguration hinzu:
- Wählen Sie den Typ “IKEv2”
- Aktivieren Sie “Per App und Konto-VPN” (siehe auch Relution Hub Docs)
- Setzen Sie “Server” und “Remote-Identifier” auf den Wert von
<%Relution Shield Host%>
- Setzen Sie “Lokaler Bezeichner” auf
${device.uuid}@<%Relution Host%>
- Setzen Sie “Maschinenauthentifizierung” auf “Zertifikat” und wählen Sie die zuvor erstellte Zertifikat-Vorlage
- Aktivieren Sie “Erweiterte Authentifizierung (EAP)”
- Setzen Sie sowohl die IKE SA-Parameter als auch die Child SA-Parameter auf “AES-256”, “SHA-256”, “DH-Gruppe 16: 4096-Bit-Gruppe”, “1440” Minuten
- Optional: Fügen Sie unten eine Test-Domain zu “Safari-Domains” hinzu, um die VPN automatisch zu aktivieren, wenn die Domain über Safari aufgerufen wird
- Fügen Sie eine “Zertifikat”-Konfiguration zur Richtlinie hinzu und wählen Sie das zuvor hochgeladene “<%Relution Shield Host%> CA-Zertifikat”
- Optional fügen Sie eine “App zu VPN Mapping”-Konfiguration hinzu und wählen die zuvor erstellte VPN-Konfiguration sowie eine weitere Browser-App wie Firefox oder Chrome, um den VPN-Zugang zu testen. Es wird empfohlen, auch eine App-Konformität hinzuzufügen, damit sichergestellt wird, dass diese App installiert ist.
- Veröffentlichen Sie die Richtlinie und weisen Sie sie einem Gerät zu. Die VPN kann jetzt manuell über “Einstellungen” > “Allgemein” > “VPN & Geräteverwaltung” > “VPN” verbunden werden. Relution Shield wird auch automatisch verbunden, wenn die in Safari konfigurierten Domains aufgerufen oder die Browser-App geöffnet wird.
- Passen Sie die Konfiguration an, um die Konten, Apps und Domains einzuschließen, die nur über Relution Shield zugänglich sein sollen.
Beispiel Android Enterprise-Konfiguration
- Erstellen Sie eine neue Android Enterprise-Richtlinie oder erweitern Sie eine bestehende
- Fügen Sie eine “StrongSwan VPN Profil”-Konfiguration hinzu:
- Wählen Sie “IKEv2 EAP-TLS” als “VPN-Typ”
- Setzen Sie “Server” und “Server-Identität” auf den Wert von
<%Relution Shield Host%>
- Setzen Sie “Benutzerzertifikat” auf die zuvor erstellte Zertifikat-Vorlage
- Setzen Sie “CA-Zertifikat” auf das zuvor hochgeladene “<%Relution Shield Host%> CA-Zertifikat”
- Setzen Sie “Client-Identität” auf
${device.uuid}@<%Relution Host%>
- Setzen Sie “Nur diese Apps verwenden das VPN” auf einen Browser wie Firefox
- Fügen Sie eine “StrongSwan VPN Einschränkungen”-Konfiguration hinzu und wählen Sie das zuvor erstellte VPN-Profil als Standardprofil aus.
- Veröffentlichen Sie die Richtlinie und weisen Sie sie einem Gerät zu. Die VPN kann nun manuell über die StrongSwan-App verbunden werden. Relution Shield wird auch automatisch verbunden, wenn die zuvor konfigurierte Browser-App geöffnet wird.
- Passen Sie die Konfiguration an, um die Apps einzuschließen, die nur über Relution Shield zugänglich sein sollen.