{"id":303,"date":"2024-01-31T00:02:11","date_gmt":"2024-01-30T23:02:11","guid":{"rendered":"https:\/\/www.richard-becker.net\/blog\/?p=303"},"modified":"2024-02-03T20:57:11","modified_gmt":"2024-02-03T19:57:11","slug":"reverse-proxy-ins-eigene-lan-trotz-cgnat","status":"publish","type":"post","link":"https:\/\/www.richard-becker.net\/blog\/2024\/01\/31\/reverse-proxy-ins-eigene-lan-trotz-cgnat\/","title":{"rendered":"Reverse-Proxy ins eigene LAN trotz CGNAT"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Bereit f\u00fcr einen Tauchgang in die Welt des Reverse-Proxys? In diesem Beitrag erf\u00e4hrst du, wie du einen Reverse-Proxy nutzt, um trotz CGNAT sicher auf dein LAN zuzugreifen. Wir werden Schritt f\u00fcr Schritt durch die Konfiguration gehen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Das Problem mit CGNAT (Carrier-Grade Network Address Translation)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Carrier-Grade Network Address Translation macht den direkten Zugriff auf deine lokalen Ressourcen zur Herausforderung. Deine \u00f6ffentliche IP-Adresse ist dabei mit weiteren Kunden deines Internet-Providers geteilt, was Remote-Zugriff und Hosting zur Geduldsprobe macht: Stell dir dein Heimnetzwerk wie einen Raum in einem Club vor. Zum Club teilen sich viele Leute denselben Eingang. CGNAT ist sozusagen der T\u00fcrsteher, der sicherstellt, dass alle dieselben &#8222;Namensschilder&#8220; tragen, sprich dieselbe \u00f6ffentliche IP-Adresse nutzen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Jetzt kommt der Haken: Wenn du von au\u00dfen auf <strong>bestimmte<\/strong> R\u00e4ume (lokale Dienste) zugreifen m\u00f6chtest, wird das schwierig, da dein T\u00fcrsteher nicht wirklich unterscheiden kann, wer zu welchem Raum darf. Die T\u00fcr zum Club bleibt zu.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aber keine Sorge, ein Reverse-Proxy ist wie ein kluger Concierge, der vor der T\u00fcr steht, spezielle Anfragen entgegennimmt und sie an die richtigen R\u00e4ume weiterleitet.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Was ist denn bitte ein Reverse-Proxy?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Hast du schon mal von Reverse-Proxies geh\u00f6rt? Es w\u00e4re doch super, wenn du sicher und effizient auf deine lokalen Netzwerkressourcen zugreifen, deine Webanwendungen vor Angriffen sch\u00fctzen und die Geschwindigkeit deiner Websites verbessern k\u00f6nntest \u2013 all das dank eines cleveren Helfers. Wenn du dich jetzt fragst, ob ein Reverse-Proxy das alles kann, ist die Antwort schlicht und ergreifend: Ja! Kann er!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Mit einem Reverse-Proxy kannst du die Kontrolle \u00fcber deinen Datenverkehr \u00fcbernehmen, Lastenausgleich betreiben und sogar SSL\/TLS-Verschl\u00fcsselung handhaben. Klingt spannend, oder? Aber das ist noch nicht alles! Er erm\u00f6glicht dir, auf deine internen Ressourcen zuzugreifen, ohne von Firewalls geblockt zu werden oder zu viele T\u00fcren in dein Netzwerk zu \u00f6ffnen und bietet dir die M\u00f6glichkeit, deine Webanwendungen mit einem zus\u00e4tzlichen Sicherheitspuffer zu umgeben.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Mein Szenario<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"724\" src=\"https:\/\/www.richard-becker.net\/blog\/wp-content\/uploads\/2024\/01\/nginx-1024x724.png\" alt=\"\" class=\"wp-image-304\" srcset=\"https:\/\/www.richard-becker.net\/blog\/wp-content\/uploads\/2024\/01\/nginx-1024x724.png 1024w, https:\/\/www.richard-becker.net\/blog\/wp-content\/uploads\/2024\/01\/nginx-300x212.png 300w, https:\/\/www.richard-becker.net\/blog\/wp-content\/uploads\/2024\/01\/nginx-768x543.png 768w, https:\/\/www.richard-becker.net\/blog\/wp-content\/uploads\/2024\/01\/nginx-1536x1086.png 1536w, https:\/\/www.richard-becker.net\/blog\/wp-content\/uploads\/2024\/01\/nginx-2048x1448.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Voraussetzungen f\u00fcr die Durchf\u00fchrung<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>VPS-Server mit eigener IPv4-IP (z.B. <a href=\"https:\/\/www.ionos.de\/server\/vps#tarife\" target=\"_blank\" rel=\"noreferrer noopener\">einer wie dieser<\/a>)<\/li>\n\n\n\n<li>Domain-Name (z.B. <a href=\"https:\/\/ipv64.net\/\" data-type=\"link\" data-id=\"https:\/\/ipv64.net\/\" target=\"_blank\" rel=\"noreferrer noopener\">einer wie dieser hier<\/a>)<\/li>\n\n\n\n<li>Internet-Zugang zuhause (versteht sich von selbst, oder?!)<\/li>\n\n\n\n<li>Home-Server, der Docker-Container ausf\u00fchren kann (<a href=\"https:\/\/www.richard-becker.net\/blog\/2023\/07\/10\/selfhosting-hardware-fuer-zuhause\/\" data-type=\"link\" data-id=\"https:\/\/www.richard-becker.net\/blog\/2023\/07\/10\/selfhosting-neue-oder-gebrauchte-hardware\/\">mehr dazu hier<\/a>)<\/li>\n\n\n\n<li>Web-Dienste im eigenen Netzwerk, die freigegeben werden sollen (<a href=\"https:\/\/www.richard-becker.net\/blog\/2023\/07\/10\/selfhosting-bare-metal-vs-virtualisierung\/\" data-type=\"link\" data-id=\"https:\/\/www.richard-becker.net\/blog\/2023\/07\/10\/selfhosting-bare-metal-vs-virtualisierung\/\">mehr dazu hier<\/a>)<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Die folgende Anleitung bezieht sich auf ein Szenario, in dem auf beiden Servern (VPS und Home-Server die Linux-Distribution &#8222;<a href=\"https:\/\/ubuntu.com\/\" data-type=\"link\" data-id=\"https:\/\/ubuntu.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">Ubuntu<\/a>&#8220; (genauer: Ubuntu Server) l\u00e4uft. Auf anderen Systemen ist eventuell eine andere Vorgehensweise n\u00f6tig.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Wireguard-Tunnel einrichten<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Du hast vielleicht schon von VPNs geh\u00f6rt: Um zwei Server sicher miteinander zu verbinden, kannst du ein solches nutzen. Und genau hier kommt WireGuard ins Spiel, ein modernes VPN-Protokoll, das nicht nur leistungsstark, sondern auch einfach zu konfigurieren ist. Auf deinem VPS und Home-Server* musst du dazu in der Kommandozeile einige Befehle eingeben. Das Prozedere lehnt sich an die <a href=\"https:\/\/web.andrejansen.de\/32-wireguard-reverse-vpn-tunnel-erstellen\/\" target=\"_blank\" rel=\"noreferrer noopener\">Vorgehensweise von Andre Jansen<\/a> an, unterscheidet sich an einigen Stellen (vor allem den <code>iptables<\/code>) aber davon.<\/p>\n\n\n\n<p class=\"has-small-font-size wp-block-paragraph\"><em>*mein Home-Server f\u00fcr Wireguard und den NGINX Proxy Manager l\u00e4uft \u00fcbrigens nicht &#8222;bare metal&#8220;, sondern selbst in einem Container unter <a href=\"https:\/\/www.proxmox.com\/en\/\" data-type=\"link\" data-id=\"https:\/\/www.proxmox.com\/en\/\" target=\"_blank\" rel=\"noreferrer noopener\">Proxmox<\/a><\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Auf dem <strong>VPS und dem Home-Server<\/strong> f\u00fchrst du zun\u00e4chst folgende Befehle aus, mit denen beide Server erst upgedatet und neugestartet werden und dann diverse n\u00f6tige Software installiert wird:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt update -y &amp;&amp; sudo apt upgrade -y &amp;&amp; sudo shutdown -r now\nsudo apt install software-properties-common unzip -y\nsudo apt install netfilter-persistent -y\nsudo apt install ufw -y\nsudo apt install wireguard -y<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Mit den folgenden befehlen erstellst du nun auf der <strong>VPS und dem Home-Server<\/strong> private Schl\u00fcssel f\u00fcr den Wireguard-Tunnel (VPN-Tunnel), die jeweils in der Konfigurations-Datei <code>\/etc\/wireguard\/wg0.conf<\/code> abgespeichert werden. Zus\u00e4tzlich wird je System ein <mark style=\"background-color:rgba(0, 0, 0, 0);color:#760000\" class=\"has-inline-color\">\u00f6ffentlicher Schl\u00fcssel erstellt, den du dir notieren oder per Copy&amp;Paste abspeichern musst<\/mark>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>(umask 077 &amp;&amp; printf \"&#91;Interface]\\nPrivateKey= \" | sudo tee \/etc\/wireguard\/wg0.conf &gt; \/dev\/null)\n\nwg genkey | sudo tee -a \/etc\/wireguard\/wg0.conf | wg pubkey | sudo tee \/etc\/wireguard\/publickey<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Auf dem VPS<\/strong> editierst du nun die oben genannte Konfigurationsdatei <code>\/etc\/wireguard\/wg0.conf<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo nano \/etc\/wireguard\/wg0.conf<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Die Datei musst du mit den korrekten Parametern f\u00fcllen, die auf dein Netzwerk und deine Konfiguration zutreffen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;Interface]\nPrivateKey = &lt;Privaten Schl\u00fcssel des VPS hier eingeben&gt;\nListenPort = 55107\nAddress = 192.168.4.1\/32\n&#91;Peer]\nPublicKey = &lt;\u00d6ffentlichen Schl\u00fcssel vom Home-Server hier&gt;\nAllowedIPs = 192.168.4.2\/32<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Auf dem Home-Server<\/strong> editierst du auch mit folgendem Befehl die Konfigurationsdatei:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo nano \/etc\/wireguard\/wg0.conf<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Die Datei musst du ebenfalls mit den korrekten Parametern f\u00fcllen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;Interface]\nPrivateKey = &lt;Privater Schl\u00fcssel des Home-Servers hier eingeben>\nAddress = 192.168.4.2\/32\n&#91;Peer]\nPublicKey = &lt;\u00d6ffentlichen Schl\u00fcssel des VPS hier eingeben>\nAllowedIPs = 192.168.4.1\/32\nEndpoint = &lt;\u00f6ffentliche IPv4 Adresse des VPS hier eingeben>:55107\nPersistentKeepalive = 25<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Auf dem VPS<\/strong> musst du nun noch IPv4-Forwarding aktivieren, dazu editierst du folgende Konfigurations-Datei:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo nano \/etc\/sysctl.conf<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">In diese Datei f\u00fcgst du unten folgende Zeilen an:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>net.ipv4.ip_forward=1\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Die so durchgef\u00fchrten \u00c4nderungen aktivierst du nun noch mit folgendem Befehl:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo sysctl -p<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Auf dem VPS und dem Home-Server<\/strong> kannst du den Wireguard-Tunnel nun starten:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo systemctl start wg-quick@wg0\nsudo systemctl enable wg-quick@wg0<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Nun musst du <strong>auf dem VPS<\/strong> noch die korrekten <code>iptables <\/code>setzen, damit der Netzwerkverkehr auch immer das korrekte Ziel erreicht. Ansonsten flie\u00dfen Anfragen an den VPS nicht automatisch durch den Wireguard-Tunnel an deinen NGINX Proxy Manager. <mark style=\"background-color:rgba(0, 0, 0, 0);color:#760000\" class=\"has-inline-color\">Achtung, du musst die Befehle auf deine Konfiguration anpassen!<\/mark><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo iptables -P FORWARD DROP\nsudo iptables -A FORWARD -i ens6 -o wg0 -p tcp --syn --dport 80 -m conntrack --ctstate NEW -j ACCEPT\nsudo iptables -A FORWARD -i ens6 -o wg0 -p tcp --syn --dport 443 -m conntrack --ctstate NEW -j ACCEPT\nsudo iptables -A FORWARD -i ens6 -o wg0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT\nsudo iptables -A FORWARD -i wg0 -o ens6 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT\nsudo iptables -t nat -A PREROUTING -i ens6 -p tcp --dport 80 -j DNAT --to-destination 192.168.4.2\nsudo iptables -t nat -A PREROUTING -i ens6 -p tcp --dport 443 -j DNAT --to-destination 192.168.4.2\nsudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.4.2:80\nsudo iptables -t nat -A PREROUTING -p tcp --dport 443 -j DNAT --to-destination 192.168.4.2:443\nsudo iptables -t nat -A POSTROUTING -o wg0 -p tcp --dport 80 -d 192.168.4.2 -j SNAT --to-source 192.168.4.1\nsudo iptables -t nat -A POSTROUTING -o wg0 -p tcp --dport 443 -d 192.168.4.2 -j SNAT --to-source 192.168.4.1<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dein Wireguard-Interface sollte <code>wg0<\/code> hei\u00dfen. Deine Netzwerkkarte der VPS k\u00f6nnte einen anderen Namen als <code>ens6 <\/code>haben. Diesen kannst du mit <code>ip -c a<\/code> herausfinden.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Damit die <code>iptables <\/code>einen Neustart \u00fcberleben, musst du sie noch sichern:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt install netfilter-persistent -y\nsudo netfilter-persistent save\nsudo systemctl enable netfilter-persistent\nsudo apt install iptables-persistent<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Den letzten Befehl musst du mit der Eingabetaste zweimal best\u00e4tigen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Falls gew\u00fcnscht, schalte <strong>an deiner VPS<\/strong> noch die Firewall ein. <mark style=\"background-color:rgba(0, 0, 0, 0);color:#760000\" class=\"has-inline-color\">Achte dabei darauf, dass du alle Ports \u00f6ffnest, die du ben\u00f6tigst, damit du dich nicht aussperrst &#8211; darunter z.B. Port 22, falls du ihn f\u00fcr SSH nutzt.<\/mark><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo ufw allow 22  \nsudo ufw allow 55107\nsudo ufw enable\nsudo ufw status<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Einrichtung des Reverse-Proxys<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/nginxproxymanager.com\/\" data-type=\"link\" data-id=\"https:\/\/nginxproxymanager.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">NGINX Proxy Manager<\/a> ist eine Software, die dir die Einrichtung von Reverse-Proxies erleichtert und dir dabei eine einfach zu bedienende Web-Oberfl\u00e4che bietet. Du kannst damit auch SSL-Zertifikate f\u00fcr sichere Verbindungen verwalten. Der Manager \u00fcberwacht den Datenverkehr, protokolliert Ereignisse und erleichtert die Verwaltung von Benutzern und Teams. Praktisch f\u00fcr Anf\u00e4nger, da du die Konfigurationsdateien von <a href=\"https:\/\/www.nginx.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">NGINX<\/a> nicht direkt bearbeiten musst. Und genau diese Software kommt bei dir nun zum Einsatz.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Das Ganze l\u00e4uft als <a href=\"https:\/\/docs.docker.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">Docker-Container<\/a>, sodass die Einrichtung an sich auch wirklich einfach ist. Da ich meinen Docker-Container auf einem Home-Server einrichten will, der selbst schon ein Container ist, verwende ich f\u00fcr beide das gleiche Netzwerk, \u00fcber <code>network_mode: host<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Zur Installation muss auf deinem Home-Server Docker installiert sein. Dies kannst du \u00fcber folgende Befehle erreichen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt update &amp;&amp; apt upgrade -y\nsudo apt install docker.io -y\nsudo apt install docker-compose -y<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dann legst du auf deinem Home-Server eine Docker-Konfigurationsdatei an:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cd ~\nmkdir npm\ncd npm\nnano docker-compose.yml<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">In diese Datei kommt dann folgender Inhalt:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>version: '3.8'\nservices:\n  app:\n    image: 'jc21\/nginx-proxy-manager:latest'\n    restart: unless-stopped\n    network_mode: host\n\n    environment:\n      DISABLE_IPV6: 'true'\n\n    volumes:\n      - .\/data:\/data\n      - .\/letsencrypt:\/etc\/letsencrypt\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Letztlich musst du deine Konfiguration nur noch starten. Dazu kannst du folgenden Befehl verwenden, der beim ersten Starten m\u00f6glicherweise etwas Zeit zur Ausf\u00fchrung ben\u00f6tigt:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker-compose up -d<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"575\" src=\"https:\/\/www.richard-becker.net\/blog\/wp-content\/uploads\/2024\/01\/npm-1024x575.png\" alt=\"\" class=\"wp-image-314\" srcset=\"https:\/\/www.richard-becker.net\/blog\/wp-content\/uploads\/2024\/01\/npm-1024x575.png 1024w, https:\/\/www.richard-becker.net\/blog\/wp-content\/uploads\/2024\/01\/npm-300x168.png 300w, https:\/\/www.richard-becker.net\/blog\/wp-content\/uploads\/2024\/01\/npm-768x431.png 768w, https:\/\/www.richard-becker.net\/blog\/wp-content\/uploads\/2024\/01\/npm.png 1202w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u00dcber die IP-Adresse deines Home-Servers kannst du unter <code>Port 81<\/code> nun die Web-Oberfl\u00e4che vom NGINX Proxy Manager in einem Browser erreichen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>http:\/\/&lt;IP DEINES HOME-SERVERS&gt;:81<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Die Standard-Zugangsdaten lauten:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>E-Mail Adresse:    admin@example.com\nPasswort:          changeme<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Und jetzt: Ab mit deinen Diensten ins WWW!<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Die Kombination beider Tools erm\u00f6glicht es dir, deine selbst gehosteten Anwendungen sicher und effizient ins Netz zu \u00f6ffnen. Nun bist du also bereit, mit Leichtigkeit Web-Dienste zu erstellen und mithilfe des NGINX Proxy Managers den Datenverkehr aus dem \u00f6ffentlichen Internet zu deinen Servern zu steuern.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Weiterlesen &amp; Anmerkungen zur Sicherheit<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><mark style=\"background-color:rgba(0, 0, 0, 0);color:#630000\" class=\"has-inline-color\">In jedem Fall solltest du dir aber nocheinmal Gedanken zur Sicherheit deiner Web-Dienste machen, wenn du sie permanent ins Netz stellst.<\/mark> Was deinen <strong>VPS <\/strong>betrifft, so kannst du <a href=\"https:\/\/www.inmotionhosting.com\/support\/product-guides\/vps-hosting\/ways-to-harden-your-vps-hosting\/\" data-type=\"link\" data-id=\"https:\/\/www.inmotionhosting.com\/support\/product-guides\/vps-hosting\/ways-to-harden-your-vps-hosting\/\" target=\"_blank\" rel=\"noreferrer noopener\">unter diesem Link in englischer Sprache<\/a> noch einmal nachlesen, welche Sicherheitsma\u00dfnahmen du ergreifen kannst. Dein Home-Server sollte dann hinter dem VPS und NGINX Proxy Manager recht sicher sein, getunnelt werden ja nur die HTTP-Ports. Was dann aber deine letztlich <strong>selbst gehosteten Web-Dienste<\/strong> betrifft, gibt es keine wirkliche Anleitung zur Absicherung: Am besten, du schaust, wie die Community und die Entwickler zum \u00f6ffentlichen Hosting stehen. Manche empfehlen, dies gar nicht erst zu tun, andere wiederum sch\u00e4tzen ihre Dienste als deutlich sicherer ein.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sicher ist es gut, immer auch wieder vom Access List Feature Gebrauch zu machen. Mehr dazu erf\u00e4hrst du in diesem (englischsprachigen) YouTube-Video:<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n\t\t<div class=\"embed-privacy-container is-disabled embed-youtube\" data-embed-id=\"oembed_beb195f1b0eb4e8a2ad0c52f973f9e2f\" data-embed-provider=\"youtube\" style=\"aspect-ratio: 500\/281;\">\t\t\t\t\t\t<button type=\"button\" class=\"embed-privacy-enable screen-reader-text\">\u201eNginx Proxy Manager &#8211; ACCESS LIST protection for internal services\u201c von YouTube anzeigen<\/button>\t\t\t\t\t\t<div class=\"embed-privacy-overlay\">\t\t\t\t<div class=\"embed-privacy-inner\">\t\t\t\t\t<div class=\"embed-privacy-logo\" style=\"background-image: url(https:\/\/www.richard-becker.net\/blog\/wp-content\/plugins\/embed-privacy\/assets\/images\/embed-youtube.png?ver=1.12.3);\"><\/div>\t\t<p>\t\tHier klicken, um den Inhalt von YouTube anzuzeigen.\t\t\t\t\t<br>\t\t\t\t\tErfahre mehr in der <a href=\"https:\/\/policies.google.com\/privacy?hl=de\" target=\"_blank\">Datenschutzerkl\u00e4rung von YouTube<\/a>.\t\t<\/p>\t\t<p class=\"embed-privacy-input-wrapper\">\t\t\t<input id=\"embed-privacy-store-youtube-beb195f1b0eb4e8a2ad0c52f973f9e2f\" type=\"checkbox\" value=\"1\" class=\"embed-privacy-input\" data-embed-provider=\"youtube\">\t\t\t<label for=\"embed-privacy-store-youtube-beb195f1b0eb4e8a2ad0c52f973f9e2f\" class=\"embed-privacy-label\" data-embed-provider=\"youtube\">\t\t\t\tInhalt von YouTube immer anzeigen\t\t\t<\/label>\t\t<\/p>\t\t\t\t\t\t<\/div>\t\t\t\t\t\t\t\t<div class=\"embed-privacy-footer\"><span class=\"embed-privacy-url\"><a href=\"https:\/\/www.youtube.com\/watch?v=G9voYZejH48&#038;t=39\">\u201eNginx Proxy Manager &#8211; ACCESS LIST protection for internal services\u201c direkt \u00f6ffnen<\/a><\/span><\/div>\t\t\t<\/div>\t\t\t\t\t\t<div class=\"embed-privacy-content\">\t\t\t\t<script>var _oembed_beb195f1b0eb4e8a2ad0c52f973f9e2f = '{\\\"embed\\\":\\\"&lt;iframe title=&quot;Nginx Proxy Manager - ACCESS LIST protection for internal services&quot; width=&quot;500&quot; height=&quot;281&quot; src=&quot;https:\\\\\/\\\\\/www.youtube-nocookie.com\\\\\/embed\\\\\/G9voYZejH48?start=39&amp;feature=oembed&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; allowfullscreen&gt;&lt;\\\\\/iframe&gt;\\\"}';<\/script>\t\t\t<\/div>\t\t<\/div>\t\t\n<\/div><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Happy hosting!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Bereit f\u00fcr einen Tauchgang in die Welt des Reverse-Proxys? In diesem Beitrag erf\u00e4hrst du, wie&hellip; <a class=\"read-more-link\" href=\"https:\/\/www.richard-becker.net\/blog\/2024\/01\/31\/reverse-proxy-ins-eigene-lan-trotz-cgnat\/\">[Weiterlesen]<\/a><\/p>\n","protected":false},"author":2,"featured_media":316,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[24,11,48,49,50,22,8,7,26,47],"class_list":["post-303","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-technologie","tag-heimnetzwerk","tag-homeserver","tag-nginx","tag-nginx-proxy-manager","tag-npm","tag-open-source","tag-selfhosting","tag-technologie","tag-vpn","tag-wireguard"],"_links":{"self":[{"href":"https:\/\/www.richard-becker.net\/blog\/wp-json\/wp\/v2\/posts\/303","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.richard-becker.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.richard-becker.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.richard-becker.net\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.richard-becker.net\/blog\/wp-json\/wp\/v2\/comments?post=303"}],"version-history":[{"count":13,"href":"https:\/\/www.richard-becker.net\/blog\/wp-json\/wp\/v2\/posts\/303\/revisions"}],"predecessor-version":[{"id":320,"href":"https:\/\/www.richard-becker.net\/blog\/wp-json\/wp\/v2\/posts\/303\/revisions\/320"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.richard-becker.net\/blog\/wp-json\/wp\/v2\/media\/316"}],"wp:attachment":[{"href":"https:\/\/www.richard-becker.net\/blog\/wp-json\/wp\/v2\/media?parent=303"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.richard-becker.net\/blog\/wp-json\/wp\/v2\/categories?post=303"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.richard-becker.net\/blog\/wp-json\/wp\/v2\/tags?post=303"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}