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:
- Melden Sie sich bei Ihrem Cloudflare-Konto an und wählen Sie Ihre Domain aus.
- Wechseln Sie zum Abschnitt ‚DNS‘.
- Klicken Sie auf ‚Eintrag hinzufügen‘.
- Wählen Sie als Typ ‚A‘ für eine direkte IP-Adresszuweisung oder ‚CNAME‘, wenn Sie auf eine andere Domain verweisen möchten.
- Geben Sie als Namen
crm
ein, um die Subdomaincrm.ihredomain.de
zu erstellen. - 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.
- Stellen Sie sicher, dass der Proxy-Status aktiviert (orange Wolke) ist, um von Cloudflares Sicherheits- und Performance-Features zu profitieren.
- 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.