Einrichtung eines sicheren Dienstzugangs mit DDNS, Docker und NGINX

Erweiterte Einrichtung eines sicheren Dienstzugangs mit DDNS, Docker und NGINX

Einleitung

Dieser Leitfaden bietet eine umfassende Anleitung, um Dynamic DNS (DDNS) mit Cloudflare, Docker, und NGINX-Proxyserver einzurichten, ergänzt durch Firewall-Konfigurationen und Cloudflare DNS-Einstellungen für sicheren Zugriff auf interne Dienste über das Internet. Besonderes Augenmerk liegt auf der Implementierung eines sicheren und dynamischen Zugriffs auf Anwendungen, wie SuiteCRM, die in einem Docker-Container laufen.

Grundlagen und Vorteile

Dynamic DNS (DDNS) mit Cloudflare

DDNS ist ein System, das es ermöglicht, die IP-Adresse eines Domainnamens automatisch zu aktualisieren, wenn sich die IP-Adresse des Netzwerks ändert. Dies ist besonders nützlich für Benutzer mit dynamischer IP-Zuweisung durch ihren Internetdienstanbieter. Cloudflare erweitert diese Funktionalität durch zusätzliche Sicherheits- und Performance-Features, wie DDoS-Schutz und CDN-Dienste, die die Zugänglichkeit und Sicherheit Ihrer Anwendungen verbessern.

Docker

Docker revolutioniert die Art und Weise, wie Anwendungen entwickelt, verteilt und ausgeführt werden, durch Containerisierung. Container ermöglichen es, Anwendungen und ihre Abhängigkeiten in einem leichtgewichtigen, portablen und isolierten Paket zu kapseln. Vorteile von Docker umfassen konsistente Umgebungen, Skalierbarkeit und eine schnelle Bereitstellung, die Entwicklungs- und Betriebskosten signifikant reduzieren können.

NGINX als Reverse-Proxy und SSL-Terminator

NGINX ist ein vielseitig einsetzbarer Webserver, der als Reverse-Proxy, Load Balancer und SSL-Terminator fungieren kann. Es verbessert die Sicherheit, Skalierbarkeit und Zuverlässigkeit von Webanwendungen durch Funktionen wie SSL/TLS-Verschlüsselung, Caching, Lastverteilung und Rate Limiting. Die Nutzung von NGINX als Reverse-Proxy ermöglicht es, Anfragen effizient an die entsprechenden Backend-Dienste weiterzuleiten, während SSL-Zertifikate eine verschlüsselte Verbindung zwischen dem Endbenutzer und dem Server sicherstellen.

Schritt-für-Schritt-Anleitung

1. Einrichtung von Cloudflare DDNS

Ein Docker-Container, wie `oznu/cloudflare-ddns`, wird verwendet, um die öffentliche IP-Adresse bei Cloudflare zu aktualisieren, damit der DNS-Eintrag Ihrer Domain immer aktuell ist.


version: '3'
services:
  cloudflare-ddns:
    image: oznu/cloudflare-ddns
    container_name: cloudflare_ddns
    environment:
      - ZONE=ihredomain.de
      - SUBDOMAIN=crm
      - API_KEY=IhrCloudflareAPIKey
      - PROXIED=true
    restart: unless-stopped
            

2. NGINX Proxy Manager

Der NGINX Proxy Manager erleichtert die Konfiguration des Reverse-Proxies und der SSL-Zertifikate durch eine benutzerfreundliche Web-Oberfläche.


version: '3'
services:
  app:
    image: 'jc21/nginx-proxy-manager'
    container_name: nginx_proxy_manager
    ports:
      - '80:80'
      - '443:443'
      - '81:81'
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt
    restart: unless-stopped
            

3. SuiteCRM Docker Container

SuiteCRM wird in Docker-Containern bereitgestellt, um eine skalierbare und isolierte Umgebung zu gewährleisten.


version: '3'
services:
  suitecrm:
    image: suitecrm/suitecrm
    container_name: suitecrm_app
    environment:
      - DB_HOST=db
      - DB_USER=suitecrm_user
      - DB_PASSWORD=suitecrm_pass
      - DB_NAME=suitecrm
    depends_on:
      - db
    ports:
      - '8080:80'
    restart: unless-stopped

  db:
    image: mysql:5.7
    container_name: suitecrm_db
    environment:
      - MYSQL_DATABASE=suitecrm
      - MYSQL_USER=suitecrm_user
      - MYSQL_PASSWORD=suitecrm_pass
      - MYSQL_ROOT_PASSWORD=root_pass
    volumes:
      - suitecrm_db_data:/var/lib/mysql
    restart: unless-stopped

volumes:
  suitecrm_db_data:
            

Firewall-Konfiguration und Weiterleitung

Firewall-Konfiguration

Um den sicheren Zugriff von außen auf Ihren Dienst zu ermöglichen, ist es notwendig, die Portweiterleitung auf Ihrer Firewall oder Ihrem Router zu konfigurieren. Dabei muss der Port 443 (HTTPS) an die IP-Adresse weitergeleitet werden, auf der der NGINX Proxy Server läuft. Diese Einstellung ermöglicht es, dass Anfragen aus dem Internet über Cloudflare und den NGINX Proxy Server sicher an den internen Dienst geleitet werden.

Weiterleitung basierend auf Präfixen

Im NGINX Proxy Manager können Sie Weiterleitungsregeln basierend auf Präfixen (Subdomains) einrichten. Zum Beispiel können Anfragen an crm.ihredomain.de an Ihren SuiteCRM-Dienst weitergeleitet werden, während mail.ihredomain.de zu einem E-Mail-Server führen könnte. Dies wird durch das Hinzufügen von Proxy-Hosts im NGINX Proxy Manager Dashboard erreicht, wobei für jede Subdomain ein eigenes SSL-Zertifikat generiert werden kann.

Beispiel für die Konfiguration im NGINX Proxy Manager

Um eine Weiterleitung für crm.ihredomain.de einzurichten, erstellen Sie einen neuen Proxy-Host mit folgenden Einstellungen:

  • Domainname: crm.ihredomain.de
  • Ziel-IP: IP-Adresse Ihres Docker-Containers
  • Zielport: Port, auf dem Ihr SuiteCRM-Container läuft (z.B. 8080)
  • SSL: Aktivieren Sie SSL, wählen Sie „Let’s Encrypt“ für die Zertifikaterstellung und aktivieren Sie HTTP/2

Cloudflare DNS-Konfiguration für Subdomain-Weiterleitung

Konfigurieren der Subdomain crm.ihredomain.de in Cloudflare

Um sicherzustellen, dass alle Anfragen an die Subdomain crm.ihredomain.de korrekt an Ihren Server weitergeleitet werden, müssen Sie die DNS-Einstellungen in Ihrem Cloudflare-Konto konfigurieren. Folgen Sie diesen Schritten, um die Weiterleitung einzurichten:

  1. Melden Sie sich bei Ihrem Cloudflare-Konto an und wählen Sie Ihre Domain aus.
  2. Wechseln Sie zum Abschnitt ‚DNS‘.
  3. Klicken Sie auf ‚Eintrag hinzufügen‘.
  4. Wählen Sie als Typ ‚A‘ für eine direkte IP-Adresszuweisung oder ‚CNAME‘, wenn Sie auf eine andere Domain verweisen möchten.
  5. Geben Sie als Namen crm ein, um die Subdomain crm.ihredomain.de zu erstellen.
  6. Im Feld ‚IPv4-Adresse‘ geben Sie die IP-Adresse Ihres Servers an, auf dem der NGINX Proxy Server läuft, oder, wenn Sie ‚CNAME‘ gewählt haben, den Ziel-Domainnamen.
  7. Stellen Sie sicher, dass der Proxy-Status aktiviert (orange Wolke) ist, um von Cloudflares Sicherheits- und Performance-Features zu profitieren.
  8. Klicken Sie auf ‚Speichern‘, um den Eintrag zu bestätigen.

Durch diese Konfiguration werden alle Anfragen an crm.ihredomain.de durch Cloudflare geleitet und an die angegebene Adresse weitergeleitet, wobei die Vorteile von Cloudflares Netzwerk, wie DDoS-Schutz und SSL-Verschlüsselung, genutzt werden.

Zusammenfassung und strategische Betrachtung

Die Kombination von Cloudflare DDNS, Docker, NGINX und sorgfältig konfigurierten Firewall-Regeln bietet eine umfassende Lösung für den sicheren und effizienten Zugriff auf interne Dienste über das Internet. Diese Technologiestapel ermöglichen es, dynamische IP-Adressierung effektiv zu verwalten, Dienste in isolierten Umgebungen zu betreiben und den Datenverkehr sicher über verschlüsselte Verbindungen zu leiten.

Die Fähigkeit, Zugriff basierend auf Subdomains zu steuern und zu verwalten, erweitert die Flexibilität und Skalierbarkeit Ihrer Netzwerkarchitektur erheblich. Es ermöglicht eine fein abgestimmte Kontrolle über den Zugriff auf verschiedene Dienste, während gleichzeitig die Sicherheit durch den Einsatz von SSL/TLS-Zertifikaten aufrechterhalten wird. Durch die Implementierung dieser Konfigurationen können Unternehmen und Entwickler ihre internen Ressourcen sicher und effizient für externe Zugriffe öffnen, ohne die Sicherheit zu kompromittieren.

Post teilen:

Brauchen Sie technische Unterstützung?

Ich stehe Ihnen zur Verfügung, um Ihnen bei allen technischen Problemen zu helfen. Kontaktieren Sie mich jetzt!