====== Firewall ====== ===== Erklärungen ===== ==== stateless ==== Jedes Paket wird einzeln analysiert und auf der Grundlage der festgelegten Regeln eine Entscheidung getroffen. Aber ohne den Zusammenhang zwischen den einzelnen Paketen zu beachten. Die Firewall merkt sich nicht ob Pakete zu einer bereits existierenden Verbindung gehören. Vorteil: recht ressourcenschonend, weil bei jedem Paket nur "Hop oder Top" entschieden werden muss ==== stateful ==== Firewall erkennt mithilfe diverser Memory-Techniken Zusammenhänge zwischen einzelnen Paketen und lässt sie dynamisch basiert passieren. Vorteil: flexibler Paketfilter, der nicht "nur" port-basiert arbeitet. Nachteil: höherer Ressourcenverbrauch ===== pfsense ===== Link zur Projektseite: [[https://www.pfsense.org/]] Grundsätzlich kostenlose Firewall Distribution auf Basis von FreeBSD. Bei Bedarf kann ein Service-Level-Agreement abgeschlossen werden. Vorteile: * stateful Firewall * Web-Frontend zur Verwaltung * Bereits viele vordefinierte Regeln für die gängigsten Dienste (VPN usw.) * Bringt nette Features wie Captive-Portal für WLAN mit Nachteile: * Bei hohem Traffic wird starke Hardware benötigt TBD ===== nftables ===== Link zur Projektseite: [[https://netfilter.org/projects/nftables/]] Linux-Kernel-Subsystem zum filtern von Datenpaketen. Wie sein Vorgänger iptables ist nftables eine stateless Firewall. Vorteile: * Auf jeder Linux-Distribution vorhanden * Benötigt keinen eigenen Server/VM Gut Dokumentiert im [[ https://wiki.archlinux.org/index.php/nftables | ArchWiki ]] ===== iptables ===== * Beispielkonfiguration für /etc/iptables/rules.v4 unter Verwendung von iptables-persistent unter Debian *filter :INPUT DROP [0:0] :FORWARD DROP [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -p tcp -j REJECT --reject-with tcp-reset -A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable -A INPUT -j REJECT --reject-with icmp-proto-unreachable COMMIT