Ist dies ein guter Ausgangspunkt für iptables unter Linux?

Ist dies ein guter Ausgangspunkt für iptables unter Linux?

Ich bin neu bei iptables und habe versucht, eine Firewall zusammenzustellen, deren Zweck es ist, einen Webserver zu schützen. Die folgenden Regeln sind die, die ich bisher zusammengestellt habe, und ich würde gerne wissen, ob die Regeln Sinn ergeben – und ob ich etwas Wesentliches ausgelassen habe?

Zusätzlich zu Port 80 muss ich auch die Ports 3306 (MySQL) und 22 (SSH) für externe Verbindungen geöffnet haben.

Wir freuen uns über jedes Feedback!

#!/bin/sh

# Clear all existing rules.
iptables -F

# ACCEPT connections for loopback network connection, 127.0.0.1.
iptables -A INPUT -i lo -j ACCEPT

# ALLOW established traffic
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# DROP packets that are NEW but does not have the SYN but set.
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP

# DROP fragmented packets, as there is no way to tell the source and destination ports of such a packet.
iptables -A INPUT -f -j DROP

# DROP packets with all tcp flags set (XMAS packets).
iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP

# DROP packets with no tcp flags set (NULL packets).
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP

# ALLOW ssh traffic (and prevent against DoS attacks)
iptables -A INPUT -p tcp --dport ssh -m limit --limit 1/s  -j ACCEPT

# ALLOW http traffic (and prevent against DoS attacks)
iptables -A INPUT -p tcp --dport http -m limit --limit 5/s -j ACCEPT

# ALLOW mysql traffic (and prevent against DoS attacks)
iptables -A INPUT -p tcp --dport mysql -m limit --limit 25/s -j ACCEPT

# DROP any other traffic.
iptables -A INPUT -j DROP

Antwort1

Probieren Sie Shorewall aus, das eine vernünftige, sofort einsatzbereite Firewall bietet. Aktivieren Sie den Zugriff vom Netz für die gewünschten Dienste. Es gibt Beispielregelsätze für eine, zwei und drei Schnittstellen. Die Dokumentation ist gut und wird aktiv gepflegt.

Ich gehe davon aus, dass Sie einschränken möchten, welche Adressen auf MySQL zugreifen können, was problemlos möglich ist. Sie können SSH auch mit Port-Knocking sichern, wobei der Port geschlossen ist, sofern Sie den anderen Port nicht kürzlich getestet haben.

Antwort2

  1. Sie möchten ICMP wirklich zulassen.
  2. 5/Sek. sind für HTTP wahrscheinlich nicht ausreichend
  3. Ich sehe keinen Sinn in Regeln für XMAS/NULL-Pakete
  4. Ich sehe auch keinen Grund für eine spezielle Regel für NEUE Pakete

ETA: 5. Diese Art von Ratenbegrenzungen machen DoS-Angriffe wirklich einfach. Ich muss nur 1 SYN-Paket pro Sekunde an Ihren Server senden, um IHNEN den SSH-Zugriff zu verweigern.

Antwort3

Ich würde darüber nachdenken, für die Konfiguration Ihrer iptables-Regeln etwas wie NARC zu verwenden:

http://www.knowplace.org/pages/howtos/firewalling_with_netfilter_iptables/netfilter_automatic_rule_configurator.php

In diesem Paket sind bereits einige sinnvolle Standardeinstellungen vorhanden, denen Sie vertrauen können.

Antwort4

Filter für ausgehende Kommunikation vom Server zum Internet sind ebenfalls wichtig. Insbesondere SMTP sollte nur für einen Server zugelassen werden.

Ich verwalte Mikrotik-Firewalls und bin beispielsweise an folgende Aufgaben gewöhnt:

  • Verwerfen eingehender Pakete aus dem Internet mit Zieladresse aus privatem Bereich
  • Portscans löschen (über 5 Portprüfungen pro Sekunde)
  • SSH zu einem anderen Port (ich weiß, das ist obskur, aber es funktioniert!:-)) und Begrenzung der Quell-IPs
  • Broadcasts für Router löschen
  • TCP RST löschen

Und noch ein paar mehr. Ich würde empfehlen, dies zu lesen:http://wiki.mikrotik.com/wiki/Dmitry_on_firewallingDie Syntax von Mikrotik ist unkompliziert und enthält gute Hinweise für Anfänger.

verwandte Informationen