<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Firewall – Serverküche</title><link>https://serverkueche.de/tags/firewall/</link><description>Firewall – Neueste Beiträge von Serverküche</description><generator>Hugo</generator><language>de-DE</language><managingEditor>feedback@serverkueche.de (Serverküche)</managingEditor><webMaster>feedback@serverkueche.de (Serverküche)</webMaster><copyright>2026 Serverküche</copyright><lastBuildDate>Fri, 17 Jul 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://serverkueche.de/tags/firewall/index.xml" rel="self" type="application/rss+xml"/><item><title>Firewall mit UFW einrichten</title><link>https://serverkueche.de/tutorials/firewall-ufw-einrichten/</link><pubDate>Fri, 17 Jul 2026 00:00:00 +0000</pubDate><author>feedback@serverkueche.de (Serverküche)</author><guid>https://serverkueche.de/tutorials/firewall-ufw-einrichten/</guid><description>Mit UFW in wenigen Minuten eine Host-Firewall aufsetzen: alles blocken außer SSH, HTTP und HTTPS – ohne dich dabei selbst auszusperren.</description><content:encoded><![CDATA[<p>Dein Server nimmt standardmäßig Verbindungen auf allen offenen Ports entgegen. Eine
<strong>Firewall</strong> dreht das um: Sie blockt alles und lässt nur durch, was du ausdrücklich
erlaubst. <strong>UFW</strong> („Uncomplicated Firewall&quot;) macht das mit wenigen, gut lesbaren
Befehlen – die perfekte erste Verteidigungslinie.</p>
<h2 id="was-bauen-wir">Was bauen wir?</h2>
<p>Am Ende läuft <strong>UFW</strong> auf deinem <strong>Debian 13</strong> mit der Grundregel „<strong>alles eingehende
blocken</strong>&quot;, geöffnet sind nur <strong>SSH</strong> (dein Zugang) sowie <strong>HTTP/HTTPS</strong> (Port 80/443,
die du später für Traefik brauchst). Ausgehende Verbindungen bleiben erlaubt. Das
Wichtigste dabei: Wir gehen so vor, dass du dich <strong>nicht selbst aussperrst</strong>.</p>
<h2 id="voraussetzungen">Voraussetzungen</h2>
<ul>
<li>Ein <a href="/tutorials/ssh-absichern/">abgesicherter Server</a> mit sudo-Benutzer</li>
<li>Du weißt, auf welchem <strong>Port dein SSH</strong> läuft (Standard: 22)</li>
</ul>
<h2 id="schritt-für-schritt">Schritt für Schritt</h2>
<h3 id="schritt-1-ufw-installieren">Schritt 1: UFW installieren</h3>
<div class="sk-code">
  <span class="sk-code-head">Terminal</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo apt update
</span></span><span class="line"><span class="cl">sudo apt install -y ufw</span></span></code></pre></div>
</div>
<p>Prüfe die Version – UFW ist zunächst <strong>inaktiv</strong>, das ist gewollt:</p>
<div class="sk-code">
  <span class="sk-code-head">Terminal</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">ufw version</span></span></code></pre></div>
</div>
<h3 id="schritt-2-grundregeln-festlegen">Schritt 2: Grundregeln festlegen</h3>
<p>Zuerst die Standardrichtung: alles Eingehende ablehnen, alles Ausgehende erlauben.</p>
<div class="sk-code">
  <span class="sk-code-head">Terminal</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo ufw default deny incoming
</span></span><span class="line"><span class="cl">sudo ufw default allow outgoing</span></span></code></pre></div>
</div>
<div class="sk-code">
  <span class="sk-code-head">Ausgabe</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">Default incoming policy changed to &#39;deny&#39;
</span></span><span class="line"><span class="cl">(be sure to update your rules accordingly)
</span></span><span class="line"><span class="cl">Default outgoing policy changed to &#39;allow&#39;
</span></span><span class="line"><span class="cl">(be sure to update your rules accordingly)</span></span></code></pre></div>
</div>
<p>Diese Regeln greifen noch nicht – UFW ist ja inaktiv. Deshalb kommen jetzt die
Ausnahmen, <strong>bevor</strong> wir einschalten.</p>
<h3 id="schritt-3-ssh-freigeben--zuerst-sonst-aussperrung">Schritt 3: SSH freigeben – zuerst, sonst Aussperrung</h3>
<div class="not-prose my-6 rounded-lg border-l-4 p-4 border-paprika-400 bg-paprika-50 dark:border-paprika-700 dark:bg-paprika-900/20">
  <p class="mb-1 flex items-center gap-2 font-semibold text-slate-900 dark:text-white">
    <span aria-hidden="true">🔥</span>Erst SSH erlauben, dann aktivieren
  </p>
  <div class="prose-kitchen text-sm">Schaltest du UFW mit der Regel „deny incoming&quot; ein, <strong>ohne</strong> vorher SSH erlaubt zu
haben, kappt der nächste Befehl deine eigene Verbindung – und du kommst per SSH nicht
mehr rein. Diese Reihenfolge ist nicht verhandelbar.</div>
</div>
<p>Wenn dein SSH auf dem Standardport 22 läuft (und <code>openssh-server</code> installiert ist),
gibt es dafür ein fertiges Profil:</p>
<div class="sk-code">
  <span class="sk-code-head">Terminal</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo ufw allow OpenSSH</span></span></code></pre></div>
</div>
<p>Hast du den SSH-Port geändert (z. B. auf 2222), erlaube stattdessen genau diesen Port:</p>
<div class="sk-code">
  <span class="sk-code-head">Terminal</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo ufw allow 2222/tcp</span></span></code></pre></div>
</div>
<h3 id="schritt-4-http-und-https-freigeben">Schritt 4: HTTP und HTTPS freigeben</h3>
<p>Für den späteren <a href="/tutorials/reverse-proxy-traefik/">Reverse Proxy mit Traefik</a>
brauchst du die Web-Ports. Öffne sie gleich mit:</p>
<div class="sk-code">
  <span class="sk-code-head">Terminal</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo ufw allow 80/tcp
</span></span><span class="line"><span class="cl">sudo ufw allow 443/tcp</span></span></code></pre></div>
</div>
<p>Jede Regel bestätigt UFW mit <code>Rules updated</code> und <code>Rules updated (v6)</code> (die
IPv6-Variante).</p>
<h3 id="schritt-5-firewall-aktivieren-und-prüfen">Schritt 5: Firewall aktivieren und prüfen</h3>
<p>Jetzt einschalten:</p>
<div class="sk-code">
  <span class="sk-code-head">Terminal</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo ufw enable</span></span></code></pre></div>
</div>
<div class="sk-code">
  <span class="sk-code-head">Ausgabe</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
</span></span><span class="line"><span class="cl">Firewall is active and enabled on system startup</span></span></code></pre></div>
</div>
<p>Kontrolliere das Ergebnis:</p>
<div class="sk-code">
  <span class="sk-code-head">Terminal</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo ufw status verbose</span></span></code></pre></div>
</div>
<div class="sk-code">
  <span class="sk-code-head">Ausgabe</span>
  <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">Status: active
</span></span><span class="line"><span class="cl">Logging: on (low)
</span></span><span class="line"><span class="cl">Default: deny (incoming), allow (outgoing), disabled (routed)
</span></span><span class="line"><span class="cl">New profiles: skip
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">To                         Action      From
</span></span><span class="line"><span class="cl">--                         ------      ----
</span></span><span class="line"><span class="cl">OpenSSH                    ALLOW IN    Anywhere
</span></span><span class="line"><span class="cl">80/tcp                     ALLOW IN    Anywhere
</span></span><span class="line"><span class="cl">443/tcp                    ALLOW IN    Anywhere
</span></span><span class="line"><span class="cl">OpenSSH (v6)               ALLOW IN    Anywhere (v6)
</span></span><span class="line"><span class="cl">80/tcp (v6)                ALLOW IN    Anywhere (v6)
</span></span><span class="line"><span class="cl">443/tcp (v6)               ALLOW IN    Anywhere (v6)</span></span></code></pre></div>
</div>
<p><code>Status: active</code> und deine drei Freigaben – fertig. Teste <strong>zur Sicherheit in einer
zweiten SSH-Sitzung</strong>, dass du dich weiterhin verbinden kannst, bevor du die erste
schließt.</p>
<h2 id="wenn-es-nicht-funktioniert">Wenn es nicht funktioniert</h2>
<p><strong>Symptom:</strong> Nach <code>ufw enable</code> kommst du per SSH nicht mehr rein.</p>
<p><strong>Ursache &amp; Lösung:</strong> Die SSH-Regel fehlte oder betraf den falschen Port. Verbinde
dich über die <strong>Konsole im netcup SCP</strong> (VNC, unabhängig von SSH), erlaube dort
deinen SSH-Port (<code>sudo ufw allow …</code>) und teste erneut. Genau davor warnt Schritt 3.</p>
<p><strong>Symptom:</strong> <code>ERROR: Could not find a profile matching 'OpenSSH'</code></p>
<p><strong>Ursache &amp; Lösung:</strong> Das OpenSSH-Profil existiert nur, wenn <code>openssh-server</code>
installiert ist. Nutze stattdessen die Portnummer: <code>sudo ufw allow 22/tcp</code> (bzw.
deinen Port). <code>sudo ufw app list</code> zeigt die verfügbaren Profile.</p>
<p><strong>Symptom:</strong> Ein Docker-Container ist von außen erreichbar, obwohl UFW den Port
nicht freigibt.</p>
<p><strong>Ursache &amp; Lösung:</strong> Kein Fehler von dir – <strong>Docker umgeht UFW</strong>. Docker schreibt
seine Regeln direkt in <code>iptables</code> und hängt sie vor die UFW-Ketten. Ein
veröffentlichter Container-Port (<code>ports:</code> in der compose.yaml) ist damit offen,
egal was UFW sagt. Die saubere Lösung ist eine zweite Firewall-Ebene <strong>vor</strong> dem
Server (ein vorgelagerter Perimeter, z. B. eine Cloud-/Provider-Firewall). Auf dem
Host hilft außerdem, Container-Ports nur an <code>127.0.0.1</code> zu binden statt an <code>0.0.0.0</code>.</p>
<h2 id="wartung--backups">Wartung &amp; Backups</h2>
<ul>
<li><strong>Regeln ansehen und löschen:</strong> <code>sudo ufw status numbered</code> nummeriert alle Regeln;
<code>sudo ufw delete 3</code> entfernt Regel 3. So räumst du auf, wenn ein Dienst wegfällt.</li>
<li><strong>Neue Dienste:</strong> Für jeden zusätzlichen öffentlichen Port eine gezielte Regel –
nie „mal eben alles&quot; öffnen. Was nicht offen sein muss, bleibt zu.</li>
<li><strong>Kein Backup nötig,</strong> aber notiere dir deine Freigaben (oder halte sie im selben
Dokument wie deine DNS-Records fest). Der Regelsatz ist in Sekunden neu getippt.</li>
<li><strong>Grenzen kennen:</strong> UFW schützt den Host, aber nicht gegen die Docker-Lücke oben.
Eine vorgelagerte Provider-/Perimeter-Firewall ergänzt UFW zu zwei Ebenen, die
sich gegenseitig absichern – ideal, sobald Container mit offenen Ports laufen.</li>
</ul>
]]></content:encoded></item><item><title>netcup-Firewall im SCP einrichten (mit stateless-UDP-Kniff)</title><link>https://serverkueche.de/tutorials/netcup-firewall-einrichten/</link><pubDate>Fri, 17 Jul 2026 00:00:00 +0000</pubDate><author>feedback@serverkueche.de (Serverküche)</author><guid>https://serverkueche.de/tutorials/netcup-firewall-einrichten/</guid><description>Die netcup-Firewall als Netzwerk-Schutz vor dem Server einrichten: komponierbare Policy-Templates im SCP – mit dem Kniff für stateless UDP (DNS &amp; NTP).</description><content:encoded><![CDATA[<p>netcup bringt eine <strong>Firewall schon vor deinem Server</strong> mit – im Server Control Panel,
noch bevor ein Paket das Betriebssystem erreicht. Richtig gebaut ist sie ein starker
Schutzschild. Es gibt dabei aber einen Kniff, an dem viele scheitern: Die netcup-Firewall
ist bei <strong>UDP zustandslos</strong>. Dieses Tutorial zeigt dir eine saubere, wiederverwendbare
Firewall – und warum DNS und NTP sonst plötzlich klemmen.</p>
<h2 id="was-bauen-wir">Was bauen wir?</h2>
<p>Wir bauen im <strong>netcup SCP</strong> eine Netzwerk-Firewall aus <strong>komponierbaren Policy-Templates</strong>:
ein <strong>Basis</strong>-Template (das jeder Server braucht), eins für <strong>SSH</strong> und eins für
<strong>Web (HTTP/HTTPS)</strong>. Diese Bausteine weist du deinem Server nach Bedarf zu – ein
Webserver bekommt Basis + SSH + Web, ein Server ohne Website nur Basis + SSH. Am Ende ist
eingehend alles gesperrt außer dem, was du bewusst erlaubst.</p>
<p>Ein netcup-spezifisches Detail macht dabei den Unterschied: Bei <strong>UDP arbeitet die Firewall
zustandslos</strong> – weshalb Dienste wie DNS und NTP eine eigene Eingangs-Regel brauchen, sonst
klemmen sie plötzlich. Warum das so ist und wie das Basis-Template es löst, zeigt Schritt 2.</p>
<div class="not-prose my-6 rounded-lg border-l-4 p-4 border-sky-300 bg-sky-50 dark:border-sky-800 dark:bg-sky-900/20">
  <p class="mb-1 flex items-center gap-2 font-semibold text-slate-900 dark:text-white">
    <span aria-hidden="true">ℹ️</span>Netzwerk-Firewall ≠ Host-Firewall
  </p>
  <div class="prose-kitchen text-sm">Die netcup-Firewall arbeitet im <strong>Netzwerk vor dem Server</strong> und ersetzt <strong>nicht</strong> die
Firewall auf dem Server selbst (<a href="/tutorials/firewall-ufw-einrichten/">UFW</a>). Beide
zusammen sind „Defense in Depth&quot;: Fällt eine Schicht aus oder ist falsch konfiguriert,
greift die andere. Richte ruhig beide ein.</div>
</div>
<h2 id="voraussetzungen">Voraussetzungen</h2>
<ul>
<li>Ein netcup-Server, z. B. dein <a href="/tutorials/erste-schritte-netcup-vps/">erster VPS</a>.</li>
<li>Deine <strong>SCP-Zugangsdaten</strong> (Kundennummer + SCP-Passwort aus der netcup-Willkommensmail –
andere als dein SSH-Login).</li>
<li>Klarheit über deinen <strong>SSH-Port</strong>: Standard ist <code>22</code>. Hast du ihn beim
<a href="/tutorials/ssh-absichern/">SSH-Absichern</a> verlegt, nimm deinen echten Port – sonst
sperrst du dich beim Aktivieren aus.</li>
</ul>
<div class="not-prose my-6 overflow-hidden rounded-xl border border-paprika-200 bg-paprika-50 dark:border-paprika-800 dark:bg-paprika-900/20">
  <div class="flex items-center justify-between border-b border-paprika-200 bg-paprika-100 px-4 py-1.5 text-xs font-semibold uppercase tracking-wide text-paprika-700 dark:border-paprika-800 dark:bg-paprika-900/40 dark:text-paprika-300">
    <span>🍳 Empfehlung</span>
    <span title="Mit * markierte Links sind Affiliate-Links.">Anzeige</span>
  </div>
  <div class="flex flex-col gap-4 p-4 sm:flex-row sm:items-center sm:justify-between">
    <div>
      <p class="text-lg font-bold text-slate-900 dark:text-white">VPS 1000 G12</p>
      <p class="mt-1 text-sm text-slate-600 dark:text-slate-300">4 vCore · 8 GB RAM · 256 GB NVMe</p>
      <p class="mt-1 text-sm font-semibold text-paprika-700 dark:text-paprika-400">ab 10,36 €/Monat</p>
      <p class="mt-2 text-sm text-slate-600 dark:text-slate-400">Die Firewall ist bei jedem netcup-Server im SCP inklusive.</p>
    </div>
    <a href="https://www.netcup.com/de/server/vps?ref=44083" rel="sponsored noopener" target="_blank"
   class="inline-flex shrink-0 items-center justify-center rounded-lg bg-paprika-600 px-5 py-2.5 font-semibold text-white transition-colors hover:bg-paprika-700">
  Zu netcup →
</a>

  </div>
</div>

<h2 id="schritt-für-schritt">Schritt für Schritt</h2>
<h3 id="schritt-1-firewall-policys-im-scp-öffnen">Schritt 1: Firewall Policys im SCP öffnen</h3>
<p>Melde dich im <a href="https://www.servercontrolpanel.de/">Server Control Panel</a> an und öffne oben
den Menüpunkt <strong>Firewall Policys</strong>. Hier legst du wiederverwendbare Regelsätze („Policys&quot;)
an – unabhängig vom einzelnen Server. Erst später weist du sie zu.</p>
<h3 id="schritt-2-das-basis-template-bauen">Schritt 2: Das Basis-Template bauen</h3>
<p>Klick auf <strong>Firewall Policy erstellen</strong>, vergib den Namen <code>Serverküche Basis</code> und lege über
<strong>Regel hinzufügen</strong> diese vier Regeln an – alle <strong>EINGEHEND</strong> und <strong>ACCEPT</strong>:</p>
<table>
	<thead>
			<tr>
					<th>Beschreibung</th>
					<th>Protokoll</th>
					<th>Quell-Port (Src)</th>
					<th>Ziel-Port (Dst)</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>DNS-Antworten (stateless)</td>
					<td>UDP</td>
					<td><strong>53</strong></td>
					<td>beliebig</td>
			</tr>
			<tr>
					<td>NTP-Antworten (stateless)</td>
					<td>UDP</td>
					<td><strong>123</strong></td>
					<td>beliebig</td>
			</tr>
			<tr>
					<td>ICMP (Ping/PMTU)</td>
					<td>ICMP</td>
					<td>–</td>
					<td>–</td>
			</tr>
			<tr>
					<td>ICMPv6 (Neighbor Discovery)</td>
					<td>ICMPv6</td>
					<td>–</td>
					<td>–</td>
			</tr>
	</tbody>
</table>
<p><figure class="my-6"><img src="/tutorials/netcup-firewall-einrichten/netcup-fw-basis-regeln_hu_ce5a1ad1ef03dd97.webp" srcset="/tutorials/netcup-firewall-einrichten/netcup-fw-basis-regeln_hu_2b045b5967caf168.webp 480w, /tutorials/netcup-firewall-einrichten/netcup-fw-basis-regeln_hu_ce5a1ad1ef03dd97.webp 768w, /tutorials/netcup-firewall-einrichten/netcup-fw-basis-regeln_hu_35ed128ba5916ce8.webp 1200w, /tutorials/netcup-firewall-einrichten/netcup-fw-basis-regeln_hu_b2a5dd50447478e1.webp 1920w" sizes="(min-width: 768px) 768px, 100vw"
    width="768" height="432"
    data-full="/tutorials/netcup-firewall-einrichten/netcup-fw-basis-regeln_hu_a9bfd715ff3e372.webp"
    alt="Das Basis-Template im netcup SCP mit vier eingehenden ACCEPT-Regeln: DNS und NTP über den Quell-Port, dazu ICMP und ICMPv6" title="Das Basis-Template: DNS/NTP-Antworten kommen über den Quell-Port 53/123 herein"
    loading="lazy" decoding="async" class="rounded-lg"><figcaption class="mt-2 text-sm text-center text-slate-500 italic">Das Basis-Template: DNS/NTP-Antworten kommen über den Quell-Port 53/123 herein</figcaption></figure></p>
<p>Zwei Dinge, die hier den Unterschied machen:</p>
<ul>
<li><strong>DNS/NTP über den <code>Src Port</code>, nicht den Ziel-Port.</strong> Dein Server <em>fragt</em> DNS/NTP an
(ausgehend); die <strong>Antwort</strong> kommt von Port 53 bzw. 123 zurück. Weil UDP zustandslos ist,
brauchst du diese Eingangs-Regel – sonst gibt es keine Namensauflösung und keine
Zeitsynchronisation, obwohl „alles andere&quot; zu funktionieren scheint.</li>
<li><strong>ICMPv6 nie vergessen.</strong> Ohne Neighbor Discovery bricht IPv6 komplett. ICMP (v4) dazu
ist für Ping und die Pfad-MTU-Erkennung sinnvoll. netcups Default-Policy „Ping allow&quot;
deckt ICMP zwar schon ab – im Basis-Template steht es bewusst nochmal drin, damit dein
Fundament auch dann vollständig bleibt, wenn du die netcup-Defaults einmal entfernst.</li>
</ul>
<div class="not-prose my-6 rounded-lg border-l-4 p-4 border-sky-300 bg-sky-50 dark:border-sky-800 dark:bg-sky-900/20">
  <p class="mb-1 flex items-center gap-2 font-semibold text-slate-900 dark:text-white">
    <span aria-hidden="true">ℹ️</span>Sobald eine Regel da ist, sperrt netcup den Rest automatisch
  </p>
  <div class="prose-kitchen text-sm">Ein abschließendes „alles sperren&quot; musst du <strong>nicht</strong> anlegen. <strong>Ohne</strong> zugewiesene Policy
ist eingehend alles erlaubt. <strong>Sobald du dem Server aber mindestens eine eigene Policy
zuweist, schaltet netcup den Default auf „block all&quot;</strong> – ab dann ist eingehend alles
gesperrt, was keine deiner Regeln ausdrücklich erlaubt. Die Whitelist entsteht also von
selbst; ausgehend bleibt offen.</div>
</div>
<div class="not-prose my-6 rounded-lg border-l-4 p-4 border-herb-400 bg-herb-50 dark:border-herb-700 dark:bg-herb-900/20">
  <p class="mb-1 flex items-center gap-2 font-semibold text-slate-900 dark:text-white">
    <span aria-hidden="true">🧑‍🍳</span>Nutzt dein Server DHCP?
  </p>
  <div class="prose-kitchen text-sm">netcup-VPS sind in der Regel <strong>statisch</strong> konfiguriert (<code>iface … inet static</code>) – dann ist
hier nichts zu tun. netcups Netz betreibt zwar einen DHCP-Server, aber weil UDP zustandslos
ist, wird die DHCP-<strong>Antwort</strong> (Quell-Port <strong>67</strong>) von der Whitelist verworfen. Ist dein
Server ausnahmsweise per DHCP konfiguriert, ergänze im Basis-Template
<code>EINGEHEND · UDP · ACCEPT · Src 67</code> (für DHCPv6 zusätzlich <code>Src 547</code>) – sonst verliert er
bei der nächsten Lease-Erneuerung seine IP.</div>
</div>
<h3 id="schritt-3-kleine-bausteine-für-ssh-und-web">Schritt 3: Kleine Bausteine für SSH und Web</h3>
<p>Statt eines großen Regel-Monolithen legst du <strong>atomare Templates</strong> an, die du frei
kombinierst. Erstelle nach demselben Muster zwei weitere Policys:</p>
<ul>
<li><strong><code>Serverküche SSH</code></strong> – eine Regel: EINGEHEND, TCP, ACCEPT, Ziel-Port <strong>22</strong>.</li>
<li><strong><code>Serverküche Web</code></strong> – zwei Regeln: EINGEHEND, TCP, ACCEPT, Ziel-Port <strong>80</strong> und <strong>443</strong>.</li>
</ul>
<p><figure class="my-6"><img src="/tutorials/netcup-firewall-einrichten/netcup-fw-policys_hu_68a58a62e79cf7eb.webp" srcset="/tutorials/netcup-firewall-einrichten/netcup-fw-policys_hu_6226a2d0082b8588.webp 480w, /tutorials/netcup-firewall-einrichten/netcup-fw-policys_hu_68a58a62e79cf7eb.webp 768w, /tutorials/netcup-firewall-einrichten/netcup-fw-policys_hu_d33e382db48b4542.webp 1200w, /tutorials/netcup-firewall-einrichten/netcup-fw-policys_hu_5a1d7aa397c7bbb0.webp 1920w" sizes="(min-width: 768px) 768px, 100vw"
    width="768" height="432"
    data-full="/tutorials/netcup-firewall-einrichten/netcup-fw-policys_hu_526d2c6829ec59e7.webp"
    alt="Die drei komponierbaren Firewall-Templates in der netcup-SCP-Übersicht: Basis, SSH und Web" title="Drei kleine, wiederverwendbare Bausteine statt eines Monolithen"
    loading="lazy" decoding="async" class="rounded-lg"><figcaption class="mt-2 text-sm text-center text-slate-500 italic">Drei kleine, wiederverwendbare Bausteine statt eines Monolithen</figcaption></figure></p>
<p>Der Gewinn: Die Basis-Regeln stehen nur <strong>einmal</strong> da, nicht in jeder Policy dupliziert.
Kommt später ein Dienst dazu (z. B. ein Mailserver oder WireGuard), baust du dafür ein
weiteres kleines Template und steckst es dazu – ohne die bestehenden anzufassen.</p>
<h3 id="schritt-4-templates-dem-server-zuweisen">Schritt 4: Templates dem Server zuweisen</h3>
<p>Wechsle zu <strong>Server → deinen Server → Reiter „Firewall&quot;</strong> und klick auf <strong>Firewall Policys
editieren</strong>. Schieb aus <strong>Verfügbare Firewall Policys</strong> die passenden nach <strong>Ausgewählte</strong>:
für einen Webserver <code>Serverküche Basis</code> + <code>Serverküche SSH</code> + <code>Serverküche Web</code>.</p>
<p><figure class="my-6"><img src="/tutorials/netcup-firewall-einrichten/netcup-fw-zuweisen_hu_d4a583142ca9fc6a.webp" srcset="/tutorials/netcup-firewall-einrichten/netcup-fw-zuweisen_hu_ed780878fc8ca3a0.webp 480w, /tutorials/netcup-firewall-einrichten/netcup-fw-zuweisen_hu_d4a583142ca9fc6a.webp 768w, /tutorials/netcup-firewall-einrichten/netcup-fw-zuweisen_hu_e4fdda1a1d671eb9.webp 1200w, /tutorials/netcup-firewall-einrichten/netcup-fw-zuweisen_hu_b600d8c88e74d5e4.webp 1920w" sizes="(min-width: 768px) 768px, 100vw"
    width="768" height="432"
    data-full="/tutorials/netcup-firewall-einrichten/netcup-fw-zuweisen_hu_164078baa966f345.webp"
    alt="Der Zuweisungs-Dialog im netcup SCP: links die verfügbaren Templates, rechts die für diesen Server ausgewählten" title="Zuweisen = zusammenstecken: Basis &#43; SSH &#43; Web auf einen Webserver"
    loading="lazy" decoding="async" class="rounded-lg"><figcaption class="mt-2 text-sm text-center text-slate-500 italic">Zuweisen = zusammenstecken: Basis &#43; SSH &#43; Web auf einen Webserver</figcaption></figure></p>
<p>Bestätige mit <strong>Übernehmen</strong> und dann <strong>Speichern</strong>. Prüfe, dass der Schalter <strong>„Firewall
aktiv&quot;</strong> eingeschaltet ist. Die zugewiesenen Regeln erscheinen jetzt in der Liste –
zusammen mit netcups <strong>Default-Policys</strong> (dazu unten mehr).</p>
<p><figure class="my-6"><img src="/tutorials/netcup-firewall-einrichten/netcup-fw-server_hu_649eca4ce2a02761.webp" srcset="/tutorials/netcup-firewall-einrichten/netcup-fw-server_hu_b2c43f56e34f4142.webp 480w, /tutorials/netcup-firewall-einrichten/netcup-fw-server_hu_649eca4ce2a02761.webp 768w, /tutorials/netcup-firewall-einrichten/netcup-fw-server_hu_b733c1f040996465.webp 1200w, /tutorials/netcup-firewall-einrichten/netcup-fw-server_hu_235df9cff5707f4e.webp 1920w" sizes="(min-width: 768px) 768px, 100vw"
    width="768" height="432"
    data-full="/tutorials/netcup-firewall-einrichten/netcup-fw-server_hu_eebc56ac5719503a.webp"
    alt="Der Firewall-Reiter des Servers mit aktiver Firewall und den zugewiesenen Regeln" title="Firewall aktiv – Regeln werden von oben nach unten ausgewertet, erste Übereinstimmung greift"
    loading="lazy" decoding="async" class="rounded-lg"><figcaption class="mt-2 text-sm text-center text-slate-500 italic">Firewall aktiv – Regeln werden von oben nach unten ausgewertet, erste Übereinstimmung greift</figcaption></figure></p>
<div class="not-prose my-6 rounded-lg border-l-4 p-4 border-amber-400 bg-amber-50 dark:border-amber-700 dark:bg-amber-900/20">
  <p class="mb-1 flex items-center gap-2 font-semibold text-slate-900 dark:text-white">
    <span aria-hidden="true">⚠️</span>Nicht aussperren
  </p>
  <div class="prose-kitchen text-sm">Aktiviere die Firewall nur, wenn die <strong>SSH-Regel</strong> (Port 22 bzw. dein echter Port) drin
ist. Lass während der Umstellung eine <strong>zweite SSH-Sitzung offen</strong> und öffne parallel eine
neue Verbindung, um den Zugang zu testen – erst wenn die klappt, die alte Sitzung
schließen. Kommst du gar nicht mehr rein, hilft die VNC-Konsole unter <strong>Bildschirm</strong> im SCP.</div>
</div>
<h2 id="wenn-es-nicht-funktioniert">Wenn es nicht funktioniert</h2>
<p><strong>Symptom:</strong> Nach dem Aktivieren geht keine Namensauflösung mehr (<code>apt update</code> hängt,
<code>ping domain.de</code> scheitert, aber <code>ping 1.1.1.1</code> geht).</p>
<p><strong>Ursache &amp; Lösung:</strong> Die DNS-<strong>Antworten</strong> werden geblockt. Prüfe im Basis-Template die
Regel <em>EINGEHEND UDP ACCEPT, Src-Port 53</em>. Wichtig: <strong>Quell</strong>-Port, nicht Ziel-Port.</p>
<p><strong>Symptom:</strong> Die Uhr driftet, oder TLS-Zertifikate werden wegen falscher Zeit abgelehnt.</p>
<p><strong>Ursache &amp; Lösung:</strong> Die NTP-Antworten fehlen. Ergänze <em>EINGEHEND UDP ACCEPT, Src-Port 123</em>.</p>
<p><strong>Symptom:</strong> IPv6 funktioniert nicht mehr (v4 schon).</p>
<p><strong>Ursache &amp; Lösung:</strong> Es fehlt die <strong>ICMPv6</strong>-Regel. Ohne Neighbor Discovery kann der
Server über IPv6 nicht einmal seinen Nachbarn (Router) finden.</p>
<p><strong>Symptom:</strong> Du kommst nach dem Aktivieren nicht mehr per SSH rein.</p>
<p><strong>Ursache &amp; Lösung:</strong> Die SSH-Regel fehlt oder nennt den falschen Port. Über die
<strong>VNC-Konsole</strong> (SCP → Bildschirm) kommst du trotzdem auf den Server; korrigiere die Policy
und speichere neu. Genau dagegen hilft die „zweite Sitzung offen lassen&quot;-Regel oben.</p>
<p><strong>Symptom:</strong> Der Server kann keine E-Mails versenden (Port 25 raus geht nicht).</p>
<p><strong>Ursache &amp; Lösung:</strong> Das ist <strong>kein</strong> Fehler deiner Policy, sondern netcups
<strong>Default-Policy „netcup Mail block&quot;</strong> – sie sperrt ausgehendes SMTP (Port 25/465/587) als
Spam-Schutz. Für einen echten Mailversand musst du dieses netcup-Template am Server deaktivieren.</p>
<p><strong>Symptom:</strong> Der Server läuft zunächst normal und ist nach ein bis zwei Wochen plötzlich
offline.</p>
<p><strong>Ursache &amp; Lösung:</strong> Nutzt der Server DHCP, wird die <strong>Lease-Erneuerung</strong> von der Whitelist
geblockt – die DHCP-Antwort kommt von UDP-Quell-Port <strong>67</strong>, den keine Regel erlaubt, und
UDP ist zustandslos. Ergänze <code>EINGEHEND · UDP · ACCEPT · Src 67</code> im Basis-Template.
Statisch konfigurierte netcup-VPS (der Standard) sind davon nicht betroffen.</p>
<h2 id="wartung--backups">Wartung &amp; Backups</h2>
<ul>
<li><strong>Nach jeder Änderung den Zugang testen.</strong> Firewall-Regeln sind der klassische Weg, sich
selbst auszusperren. Zweite Sitzung offen halten, neue Verbindung prüfen, erst dann fertig.</li>
<li><strong>Neue Dienste = neues Template.</strong> Brauchst du später einen weiteren Port (Game-Server,
WireGuard-VPN über UDP, Datenbank), leg ein kleines eigenes Template an und weise es
zusätzlich zu. Die bestehenden Bausteine bleiben unberührt.</li>
<li><strong>Reihenfolge beachten.</strong> netcup wertet die Regeln <strong>von oben nach unten</strong> aus; die
<strong>erste</strong> zutreffende Regel greift. Bei reinen ACCEPT-Regeln ist das egal – sobald du aber
eigene DROP-Regeln einsetzt, achte auf die Reihenfolge relativ zu den ACCEPTs.</li>
<li><strong>netcups Default-Policys kennen.</strong> „netcup Mail block&quot; (ausgehendes SMTP auf Port
25/465/587 gesperrt) und „netcup Ping allow&quot; sind vorgegeben. Über <strong>Default Policys
wiederherstellen</strong> kommst du im Notfall auf einen bekannten, funktionierenden
Grundzustand zurück, falls du dich mit eigenen Regeln ausgesperrt hast – zusammen mit
der VNC-Konsole dein zweites Sicherheitsnetz.</li>
</ul>
]]></content:encoded></item></channel></rss>