Stateful Firewall vs. Stateless Firewall

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

ipchains Client-Only Firewall (strenger Block)

Ziel

  • Default Policy DENY
  • Nur ausgehende TCP-Verbindungen zu 80, 443, 993, 25
  • Antwortverkehr nur von diesen Ports
  • Nur Ephemeral-Zielports (1024–65535)
  • Keine pauschalen ! -y Regeln

Reset und Default Policies

  • ipchains -F
  • ipchains -P input DENY
  • ipchains -P output DENY
  • ipchains -P forward DENY

Loopback erlauben

  • ipchains -A input -i lo -j ACCEPT
  • ipchains -A output -i lo -j ACCEPT

Ausgehende Verbindungen (strikt mit Ephemeral Source Ports)

  • ipchains -A output -p tcp --sport 1024:65535 --dport 80 -j ACCEPT
  • ipchains -A output -p tcp --sport 1024:65535 --dport 443 -j ACCEPT
  • ipchains -A output -p tcp --sport 1024:65535 --dport 993 -j ACCEPT
  • ipchains -A output -p tcp --sport 1024:65535 --dport 25 -j ACCEPT

Eingehende Antworten (kein reines SYN, nur erlaubte Service-Ports)

  • ipchains -A input -p tcp ! -y --sport 80 --dport 1024:65535 -j ACCEPT
  • ipchains -A input -p tcp ! -y --sport 443 --dport 1024:65535 -j ACCEPT
  • ipchains -A input -p tcp ! -y --sport 993 --dport 1024:65535 -j ACCEPT
  • ipchains -A input -p tcp ! -y --sport 25 --dport 1024:65535 -j ACCEPT

Ergebnis

  • Nur definierte Client-Verbindungen erlaubt
  • Keine eingehenden neuen TCP-Verbindungen möglich
  • Antwortverkehr nur passend zu erlaubten Zielports
  • Maximal saubere Umsetzung innerhalb der ipchains-Architektur

iptables Client-Only Firewall (stateful, sauber)

Ziel

  • Default Policy DROP
  • Nur ausgehende TCP-Verbindungen zu 80, 443, 993, 25
  • Antwortverkehr ausschließlich ESTABLISHED,RELATED
  • Keine Pseudo-State-Tricks notwendig

Reset und Default Policies

  • iptables -F
  • iptables -X
  • iptables -P INPUT DROP
  • iptables -P OUTPUT DROP
  • iptables -P FORWARD DROP

Loopback erlauben

  • iptables -A INPUT -i lo -j ACCEPT
  • iptables -A OUTPUT -o lo -j ACCEPT

Bereits bestehende Verbindungen erlauben

  • iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
  • iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

Neue ausgehende Verbindungen erlauben

  • iptables -A OUTPUT -p tcp --dport 80 -m conntrack --ctstate NEW -j ACCEPT
  • iptables -A OUTPUT -p tcp --dport 443 -m conntrack --ctstate NEW -j ACCEPT
  • iptables -A OUTPUT -p tcp --dport 993 -m conntrack --ctstate NEW -j ACCEPT
  • iptables -A OUTPUT -p tcp --dport 25 -m conntrack --ctstate NEW -j ACCEPT

Ergebnis

  • Nur definierte Client-Verbindungen möglich
  • Keine eingehenden neuen TCP-Verbindungen
  • Antwortverkehr nur für tatsächlich bestehende Sessions
  • Echtes Stateful Filtering durch Conntrack