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

  1. Relution-Server
  2. Eine Zielorganisation auf dem Server mit Relution Shield-Lizenz

Vorbereitung von Relution

  1. Erstellen Sie einen neuen Benutzer ohne Passwort in der Zielorganisation
  2. Erstellen Sie eine neue Berechtigungsrolle mit der Berechtigung „Relution Shield Access Check“
  3. Weisen Sie die Rolle dem Benutzer zu
  4. 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

  1. Relution Host: Hostname des Relution-Servers, z.B. yourserver.relution.io
  2. Relution API key: Siehe vorherigen Schritt
  3. VPN CIDR: Der gewünschte IP-Bereich, aus dem Relution Shield interne IPs zuweist, z.B. 10.1.0.0/16
  4. Network interface: Name der Netzwerkschnittstelle für Relution Shield, z.B. eth0
  5. Relution Shield Host: Hostname von Relution Shield, z.B. vpn.yourserver.relution.io
  6. DNS-Server: IP-Adressen der internen DNS-Server, z.B. 10.1.0.1,10.1.0.2

Installation

  1. Führen Sie apt update aus.

  2. Installieren Sie Docker inklusive docker-compose: Docker Installationsanleitung.

  3. Erstellen Sie das Installationsverzeichnis und das Compliance-Verzeichnis: mkdir -p /opt/relution-shield/compliance.

  4. 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>
    
  5. Ubuntu-Firewall ufw

    1. Ändern Sie die Standard-Weiterleitungsrichtlinie in /etc/default/ufw zu DEFAULT_FORWARD_POLICY="ACCEPT"

    2. Erlauben Sie SSH und die erforderlichen IPSec UDP-Ports

      ufw allow ssh
      ufw allow 500,4500/udp
      
    3. 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
      ...
      
    4. 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
      
    5. 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
      
    6. Starten Sie die Ubuntu-Firewall neu ufw disable && ufw enable

  6. Bereiten Sie die Konfiguration von Relution Shield vor:

    1. Erstellen Sie die Verzeichnisse für Konfigurationsdateien: mkdir -v -p /opt/relution-shield/etc/ipsec.d/{aacerts,acerts,cacerts,certs,crls,ocspcerts,private}

    2. 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
      
    3. 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
      
    4. Erstellen Sie die Server-Authentifizierungsdatei /opt/relution-shield/etc/ipsec.secrets

      : RSA "server-key.pem"
      
    5. 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
              }
      
          }
      }
      
    6. 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
      
  7. Relution Shield mit Docker installieren

    1. 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'
      
    2. Starten Sie Relution Shield in/opt/relution-shield via docker compose up -d

    3. 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
      
    4. Starten Sie den Dienst mit systemctl enable relution-shield-networkd-post-restarter --now

Relution konfigurieren

Zertifikat-Einrichtung

  1. Importieren Sie die Zertifikate in die Zielorganisation:
    1. Navigieren Sie zu “Einstellungen” > “Zertifikate”
    2. 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’
    3. 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’
    4. 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’
  2. Erstellen Sie eine Zertifizierungsstelle und ein Zertifikat-Template:
    1. Navigieren Sie zu “Einstellungen” > “Zertifizierungsstellen”
    2. Fügen Sie eine neue Zertifizierungsstelle vom Typ “Eingebaut” hinzu und wählen Sie das zuvor hochgeladene Zertifikat ‘<%Relution Shield Host%> CA-Schlüsselpaar’
    3. Navigieren Sie zu “Einstellungen” > “Zertifikat-Vorlagen”
    4. Fügen Sie eine neue Zertifikat-Vorlage hinzu:
      1. Wählen Sie die zuvor erstellte Zertifizierungsstelle aus
      2. Setzen Sie “Betreffname” auf CN=${device.uuid}@<%Relution Host%> (Beachten Sie das CN= am Anfang)
      3. Aktivieren Sie “Signatur” und “Verschlüsselung”
      4. Fügen Sie einen “Subject Alternative Name” vom Typ “Email” mit ${device.uuid}@<%Relution Host%> hinzu (Kein CN= am Anfang)
      5. Aktivieren Sie “automatische Erneuerung” und setzen Sie passende Werte, z.B. 60 Tage und 180 Tage

Beispiel iOS-Konfiguration

  1. Erstellen Sie eine neue iOS-Richtlinie oder erweitern Sie eine bestehende
  2. Fügen Sie eine VPN-Konfiguration hinzu:
    1. Wählen Sie den Typ “IKEv2”
    2. Aktivieren Sie “Per App und Konto-VPN” (siehe auch Relution Hub Docs)
    3. Setzen Sie “Server” und “Remote-Identifier” auf den Wert von <%Relution Shield Host%>
    4. Setzen Sie “Lokaler Bezeichner” auf ${device.uuid}@<%Relution Host%>
    5. Setzen Sie “Maschinenauthentifizierung” auf “Zertifikat” und wählen Sie die zuvor erstellte Zertifikat-Vorlage
    6. Aktivieren Sie “Erweiterte Authentifizierung (EAP)”
    7. 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
    8. 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
  3. Fügen Sie eine “Zertifikat”-Konfiguration zur Richtlinie hinzu und wählen Sie das zuvor hochgeladene “<%Relution Shield Host%> CA-Zertifikat”
  4. 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.
  5. 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.
  6. 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

  1. Erstellen Sie eine neue Android Enterprise-Richtlinie oder erweitern Sie eine bestehende
  2. Fügen Sie eine “StrongSwan VPN Profil”-Konfiguration hinzu:
    1. Wählen Sie “IKEv2 EAP-TLS” als “VPN-Typ”
    2. Setzen Sie “Server” und “Server-Identität” auf den Wert von <%Relution Shield Host%>
    3. Setzen Sie “Benutzerzertifikat” auf die zuvor erstellte Zertifikat-Vorlage
    4. Setzen Sie “CA-Zertifikat” auf das zuvor hochgeladene “<%Relution Shield Host%> CA-Zertifikat”
    5. Setzen Sie “Client-Identität” auf ${device.uuid}@<%Relution Host%>
    6. Setzen Sie “Nur diese Apps verwenden das VPN” auf einen Browser wie Firefox
  3. Fügen Sie eine “StrongSwan VPN Einschränkungen”-Konfiguration hinzu und wählen Sie das zuvor erstellte VPN-Profil als Standardprofil aus.
  4. 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.
  5. Passen Sie die Konfiguration an, um die Apps einzuschließen, die nur über Relution Shield zugänglich sein sollen.