Linux Sicherheit - Firewall und Netzwerkschutz

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

Linux Sicherheit - Firewall und Netzwerkschutz

  • Der Netzwerkschutz ist ein zentrales Element jeder Linux-Sicherheitsstrategie. Firewalls kontrollieren, welche Verbindungen erlaubt oder blockiert werden, und bilden die erste Verteidigungslinie gegen Angriffe aus dem Netzwerk. Ein gehärtetes System erlaubt nur den ausdrücklich benötigten Verkehr — alles andere wird verworfen.*

Grundlagen

  • Firewalls dienen der Filterung von Netzwerkverkehr auf Basis von IP, Port, Protokoll und Verbindungsstatus.
  • Linux bietet mit nftables, firewalld und ufw mehrere etablierte Frameworks.
  • Ziel: Prinzip „default deny“ – alles blockieren, nur explizit erlauben.
  • Firewalls können sowohl zentral (Server, Gateway) als auch lokal (Personal Firewall) eingesetzt werden.

Überblick über Firewall-Frameworks

  • nftables – moderne, performante Standardlösung ab Debian 10/RHEL 8.
  • firewalld – Abstraktionsschicht über nftables, zonenbasiert, komfortabel via CLI oder GUI.
  • ufw – vereinfachte Firewall für Desktop- oder Einzelplatzsysteme, ideal als Personal Firewall.
  • iptables – ältere Technik, wird zunehmend durch nftables ersetzt.

Systemzustand prüfen

  • systemctl status nftables
  • systemctl status firewalld
  • ufw status verbose
  • Nur eine Firewall gleichzeitig aktivieren, um Konflikte zu vermeiden.
  • Regeln mit `ss -ltnup` oder `netstat -tulpen` prüfen, um offene Ports zu sehen.

nftables - moderne Standardlösung

  • apt install nftables -y
  • systemctl enable --now nftables
  • vi /etc/nftables.conf
table inet filter {
  chain input {
    type filter hook input priority 0;
    policy drop;

    # Lokale Kommunikation
    iif lo accept

    # Bereits bestehende Verbindungen erlauben
    ct state established,related accept

    # SSH- und HTTPS-Zugriff
    tcp dport {22,443} accept

    # Ping erlauben
    ip protocol icmp accept
    ip6 nexthdr icmpv6 accept
  }
}
  • systemctl reload nftables
  • nft list ruleset
  • Standardpolicy ist „drop“, Ausnahmen werden gezielt erlaubt.
  • Regeln regelmäßig dokumentieren und versionieren (z. B. via Git).

firewalld - zonenbasierte Firewall

  • apt install firewalld -y
  • systemctl enable --now firewalld
  • firewall-cmd --state
  • firewall-cmd --get-zones
  • firewall-cmd --get-active-zones
  • Firewalld arbeitet mit vordefinierten Zonen (public, internal, trusted, drop, etc.).
  • Jeder Netzwerkadapter wird einer Zone zugeordnet.

Beispielkonfiguration für firewalld

  • firewall-cmd --set-default-zone=public
  • firewall-cmd --zone=public --add-service=ssh --permanent
  • firewall-cmd --zone=public --add-service=https --permanent
  • firewall-cmd --reload
  • Erlaubt SSH und HTTPS in der Zone „public“.
  • Weitere Dienste können mit „--add-service“ oder „--add-port“ definiert werden.
  • firewall-cmd --zone=public --add-port=8443/tcp --permanent
  • firewall-cmd --reload

firewalld erweiterte Beispiele

  • firewall-cmd --new-zone=management --permanent
  • firewall-cmd --zone=management --add-source=10.0.10.0/24 --permanent
  • firewall-cmd --zone=management --add-service=ssh --permanent
  • firewall-cmd --reload
  • Damit wird ein dedizierter Verwaltungsbereich geschaffen, der nur für bestimmte Netze erreichbar ist.
  • Zonen erlauben granulare Segmentierung: intern, dmz, extern, management.

ufw - einfache Personal Firewall

  • apt install ufw -y
  • ufw default deny incoming
  • ufw default allow outgoing
  • ufw allow 22/tcp
  • ufw allow 443/tcp
  • ufw enable
  • ufw status numbered
  • ufw eignet sich besonders für Einzelplatzsysteme und Workstations.
  • Einfache Syntax für lokale Absicherung.
  • Auch IPv6-Unterstützung aktivierbar:
  • vi /etc/default/ufw
IPV6=yes
  • ufw reload

Logging und Kontrolle

  • ufw logging on
  • firewall-cmd --set-log-denied=all
  • journalctl -u firewalld
  • journalctl -u nftables
  • Firewall-Logs sollten regelmäßig geprüft werden.
  • Verdächtige Muster (z. B. viele Verbindungsversuche von einer IP) können auf Portscans oder Angriffe hindeuten.

Netzwerk-Härtung über sysctl

  • vi /etc/sysctl.d/90-network-security.conf
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.all.log_martians = 1
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.tcp_syncookies = 1
net.ipv6.conf.all.accept_redirects = 0
net.ipv6.conf.all.accept_source_route = 0
  • sysctl -p /etc/sysctl.d/90-network-security.conf
  • Diese Einstellungen härten den Netzwerkstack und reduzieren Angriffsflächen auf Layer 3/4.

Erkennung und Monitoring

  • Tools wie iptraf, nload oder iftop überwachen den Netzwerkverkehr in Echtzeit.
  • IDS/IPS-Systeme (z. B. Suricata, Snort) ergänzen die Firewall durch Angriffserkennung.
  • apt install suricata -y
  • systemctl enable --now suricata
  • Suricata kann auf Basis von nftables-Mirror-Interfaces eingesetzt werden.

Quick Checklist

  • Standard-Policy: DROP für eingehend, ALLOW für ausgehend.
  • SSH nur von definierten IPs zulassen.
  • Unnötige Dienste blockieren (z. B. SMB, RPC, mDNS).
  • IPv6-Regeln separat pflegen und nicht vergessen.
  • Logging aktivieren und regelmäßig prüfen.
  • firewalld oder ufw als Personal Firewall auf Workstations einsetzen.
  • nftables für Server- und Zonenfirewalls bevorzugen.

Zusammenfassung

  • Ein sicher konfigurierter Netzwerkschutz ist unverzichtbar. Firewalls bilden die erste Schutzlinie gegen Angriffe.
  • firewalld bietet flexible Zonenverwaltung für Server, ufw eine einfache Handhabung für Clients.
  • Ergänzend sollten Kernelparameter, Logging und Intrusion Detection eingesetzt werden.
  • Ziel: kontrollierter, nachvollziehbarer und dokumentierter Netzwerkverkehr mit minimaler Angriffsfläche.