tofuwurst schrieb
# Pakete erlauben, die zu bestehenden Verbindungen gehoeren
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
müsste hier nicht auch eine output regel angelegt werden?
korrigiere meine erste Aussage dazu, die ich anscheinend während einer Phase der geistigen Umnachtung gemacht habe.
hier braucht es in der Tat auch eine entsprechende OUTPUT-Regel:
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
dann werden auch die "Antwort-Pakete" zu Verbindungen erlaubt, die über die Regel
iptables -A INPUT -i eth1 -p tcp --dport XZY -m state --state NEW -j ACCEPT
erlaubt sind.
Das erspart dann diese Schweinereien:
iptables -A OUTPUT -o eth1 -p tcp --sport XYZ --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT
midan23 schrieb
# STATEFUL INSPECTION
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
Ich weiss nicht, was die beiden Zeilen mit "stateful inspection" zu tun haben, da ja alles so läuft.
Aber bei den beiden Zeilen darunter gefällt mir so einiges nicht:
- Es fehlt die Angabe der Protokoll-Familie TCP
- Es handelt sich um pauschale Regeln, die ich normalerweise vermeide wo ich nur kann
Da die beiden Regeln nur bei bereits bestehenden Verbindungen matchen können (RELATED,ESTABLISHED), kommt
es darauf an wie die Regel aussieht die die Verbindung erlaubt (-m state --state NEW).
Die NEW-Regel fasse ich auch immer so eng wie möglich (
mit Protokoll-Familie,
mit Source-Adresse,
mit Ziel-Adresse,
mit Ziel-Port, ggf mit Incoming Interface, etc....)
Die RELATED,ESTABLISHED-Regel enthält diese Einschränkungen bewusst nicht, weil damit auch z.B. auch ICMP-Pakete die eine bestehende Verbindung betrteffen erlaubt sind (z.B. Source Quench, TTL Exceeded, Port Not Reachable, etc...)
Die RELATED,ESTABLISHED-Regel steht vorteilhafterweise am Anfang einer Chain (INPUT, OUTPUT, FORWARD,...). Dann muss nicht bei jedem Paket die ganze Chain ausgewertet werden um festzustellen, ob ein Paket erlaubt ist oder nicht.
midan23 schrieb
# SET FILTER FOR ETH1
iptables -A INPUT -i eth1 -p tcp --dport 80 -m state --state NEW -j ACCEPT
iptables -A INPUT -i eth1 -p tcp --dport 8118 -m state --state NEW -j ACCEPT
#iptables -A INPUT -i eth1 -p tcp --dport 9981 -m state --state NEW -j ACCEPT
Auf den ersten Blick sieht es so aus, als ob nur neue Verbindungen erlaubt sind ... und keine Antwortmöglichkeit besteht, weil die dazu gehörigen Regeln fehlen ...
Erst wenn man die beiden pauschalen Regeln weiter oben mit dazu nimmt, machen diese Regeln Sinn ...
die Kombination aus NEW-Regeln und den RELATED,ESTABLISHED-Regeln trägt ausserdem gut dazu bei die Anzahl der
Regeln möglichst klein zu halten.
Man denke wieder an viele tausend Regeln. Wenn man für jede Verbindung eine Regel braucht, die die Antwortpakete
zulässt, dann verdoppelt sich auf einen Schlag die Anzahl der Regeln und die "Fehlersuche" wird womöglich unnötig erschwert...