Die Wartung von iptables wird vereinfacht

13

Mein Netzwerk ist bis auf einige Websites, die auf der Whitelist stehen, vollständig gesperrt. Dies wird alles über iptables erledigt, was ungefähr so ​​aussieht:

# Allow traffic to google.com
iptables -A zone_lan_forward -p tcp -d 1.2.3.0/24 -j ACCEPT
iptables -A zone_lan_forward -p udp -d 1.2.3.0/24 -j ACCEPT
iptables -A zone_lan_forward -p tcp -d 11.12.13.0/24 -j ACCEPT
iptables -A zone_lan_forward -p udp -d 11.12.13.0/24 -j ACCEPT
iptables -A zone_lan_forward -p tcp -d 101.102.103.0/24 -j ACCEPT
iptables -A zone_lan_forward -p udp -d 101.102.103.0/24 -j ACCEPT
...

Offensichtlich sind diese Adressen hypothetisch, aber Sie bekommen die Idee. Meine Firewall wird enorm. Es wäre viel einfacher zu pflegen, wenn ich das einfach machen könnte:

# Allow traffic to google.com
iptables -A zone_lan_forward -p tcp -d google.com -j ACCEPT
iptables -A zone_lan_forward -p udp -d google.com -j ACCEPT

Ich glaube das ist möglich, da man iptablessagt:

Die Adresse kann entweder ein Netzwerkname, ein Hostname (bitte beachten Sie, dass die Angabe eines Namens, der mit einer Remote-Abfrage wie DNS aufgelöst werden soll, eine sehr schlechte Idee ist), eine Netzwerk-IP-Adresse (mit / mask) oder eine reine IP-Adresse sein.

Was mich jedoch beunruhigt, ist der Teil, der besagt, dass "es eine wirklich schlechte Idee ist, einen Namen anzugeben, mit dem aufgelöst werden soll ... DNS". Warum ist das eine schlechte Idee? Verlangsamt es nur alles?

Wenn ich wirklich keine Hostnamen in iptables-Regeln verwenden sollte, was soll ich dann tun, um meine Firewall zu vereinfachen?

David Kennedy
quelle
Sie erhalten eine bessere Antwort auf security.stackexchange.com
Jim B
Möglicherweise haben Sie Recht, dass diese Frage auf dieser Website steht. Wenn Sie jedoch ein Problem mit der akzeptierten Antwort haben, erläutern Sie bitte, warum.
David Kennedy
Wenn Sie wissen möchten, wie Sie Ihr Netzwerk sperren und wie Sie dies tun, fragen Sie nach der Sicherheit, wenn Sie iptables verwenden möchten (im Gegensatz zu IPtables), dann ist dies der richtige Ort.
Jim B

Antworten:

27
  • DNS-Namen werden aufgelöst, wenn die Regeln hinzugefügt werden, nicht, wenn Pakete überprüft werden. Dies verstößt gegen die Erwartungen, die die meisten Menschen haben.
    • Die Regel wird nicht aktualisiert, um geänderte DNS-Ergebnisse widerzuspiegeln. Es wird aufgelöst, wenn es hinzugefügt wird und das ist es. Sie müssen entweder die Regeln in regelmäßigen Abständen neu laden, da andere Websites möglicherweise nicht mehr funktionieren.
  • In gewisser Hinsicht besteht ein Sicherheitsproblem darin, dass Sie die Kontrolle über Ihre Firewall-Regeln an eine externe Instanz delegieren.
    • Was ist, wenn Ihr übergeordneter DNS-Server kompromittiert ist und falsche Daten zurückgibt?

Wenn Sie den HTTP-Zugriff blockieren möchten, ist es in der Regel weitaus besser, eine Software einzurichten, die darauf ausgelegt ist, auf dieser Ebene zu filtern (z. B. Squid + Squidquard).

Zoredache
quelle
1) Ich sehe, wie dies ein Problem sein könnte - google.com könnte heute auf 1.2.3.4 auflösen, aber morgen ist diese Adresse ungültig. Würde das einfach durch einen Neustart der Firewall erledigt? 2) Handelt es sich immer noch um ein Sicherheitsproblem, wenn der DNS-Server bekannt ist, z. B. Googles DNS oder OpenDNS?
David Kennedy
Ich habe dies als Antwort markiert, da dies erklärt, warum ich in iptables-Regeln keine Hostnamen verwenden sollte, und mir eine Vorgehensweise zur Vereinfachung meiner Firewall gibt.
David Kennedy
Ich möchte meine Unterstützung für Squid hinzufügen. Ich habe Squid für mein Büro implementiert und nach der Einrichtung ist es sehr einfach, es für Whitelisting-Hosts zu pflegen (obwohl ich es für die Blacklist verwende). Es scheint, als hätten Sie ein monumentales Unterfangen in Ihren Händen; Ich würde nicht einmal wissen, wo ich zum Beispiel mit dem Whitelisting von Google anfangen soll. www.google.com löst allein 5 IPs auf, was nichts für ssl.gstatic.com und alle anderen an der Authentifizierung beteiligten Hosts, G + usw. bedeutet, die wahrscheinlich jeweils mehrere IPs auflösen.
s.co.tt
Monumental ist ein guter Weg, um es auszudrücken. Aber ich habe nur Google als Beispiel genommen. Ein grundlegender Überblick über meine Firewall lautet wie folgt: Wenn das Ziel des Pakets in der Whitelist aufgeführt ist, akzeptieren Sie es. Andernfalls senden Sie es über einen Proxyserver.
David Kennedy
Es gibt auch das Problem von Systemen, die DNS für den Lastenausgleich verwenden. Möglicherweise erhalten Sie nicht dieselben Ergebnisse, wenn Sie eine solche Domain zweimal hintereinander nachschlagen, sodass Sie mit einer einzigen Suche nicht einmal eine vollständige Liste der IP-Adressen erhalten, in die die Domain möglicherweise aufgelöst werden könnte.
Cdhowie
9

Wenn Sie in Ihrer Firewall Hostnamen verwenden, ist Ihre Firewall jetzt von DNS abhängig. Dies öffnet die Firewall für eine Reihe von Problemen:

  • DNS-Suchvorgänge unter hohen Volumes können zu Wartezeiten führen.
  • DNS-Änderungen werden nicht sofort weitergegeben. Ihre Firewall könnte also zwischengespeicherte IPs verwenden.
  • DNS kann gefälscht, entführt oder gehackt werden.
  • DNS kann ausfallen - was bedeutet, dass Ihre Firewall ausfällt.
  • Ihre Firewall-Regeln werden jetzt von einem Drittanbieter gesteuert.

Wenn Sie Hostnamen verwenden und das DNS nicht steuern, steuert eine andere Person effektiv Ihre IPtables-Regeln. Fehler, Irrtümer oder Sicherheitsprobleme werden für Sie zu Problemen.

Das einzige Mal, dass ich gesehen habe, dass Hostnamen gut verwendet werden, sind interne Operationen. Ich habe in einem Büro gearbeitet, in dem IPs und Hostnamen über DHCP zugewiesen wurden. Die Firewalls verwendeten Hostnamen, um Barrieren zwischen verschiedenen Gruppen zu setzen. Da dies alles intern kontrolliert wurde, funktionierte es gut.

Jeffatrackaid
quelle
2
Dies ist eine gute Antwort, aber es fehlt der Teil, der mir helfen würde, die Firewall zu vereinfachen.
David Kennedy
3

Sie könnten einen Wrapper um iptables wie shorewall verwenden, um die Verwaltung Ihrer Regeln zu vereinfachen.

Jure1873
quelle
Dies ist eine gute Idee, aber Sie haben mir nicht gesagt, warum ich in iptables-Regeln keine Hostnamen verwenden soll.
David Kennedy
Ich weiß nicht viel über Shorewall, aber ich habe den Eindruck, dass davidkennedy85 immer noch Listen aller IP-Adressen eines Dienstes führen muss, den er in den Shorewall-Konfigurationen zulassen möchte. Es könnte das Verwalten von Netfilter [& etc] ein bisschen einfacher machen, würde aber sein Kernproblem nicht lösen, nämlich eine massive Liste von IPs.
s.co.tt
1

Wie die anderen bereits gesagt haben, sollten Sie in iptables-Regeln keine DNS-auflösbaren Namen verwenden. Sie sind ungenau, werden von Dritten kontrolliert und sind in der Regel eine schlechte Sache. Ich möchte auch hinzufügen, dass Ihr DNS zum Zeitpunkt des Starts des iptables-Dienstes möglicherweise ausfällt oder nicht erreichbar ist. In diesem Fall wird die Regel überhaupt nicht hinzugefügt, und es können ganz neue Probleme auftreten (z. B. der Verlust des SSH-Zugriffs nach dem Neustart).

Was Sie tun können, ist:

  1. Verwenden Sie benutzerdefinierte Ketten, um die Regeln logisch zu trennen
  2. Verwenden Sie ipsets, um Adressen zu gruppieren und von den Regeln zu trennen
  3. Fügen Sie Kommentare zu den Regeln hinzu

Auch sagte niemand etwas Schlechtes über Hostnamen, die nicht durch DNS aufgelöst werden (dh in angegeben sind hosts. Sie können sie verwenden, wenn Sie wirklich brauchen.

Skarap
quelle
1

Ich persönlich weise einer IP manuell in / etc / hosts einen Hostnamen zu und verwende ihn dann in iptables.

Auf diese Weise du

  1. Laden Sie Ihre Firewall-Regeln nicht in eine externe Instanz
  2. Haben leicht zu wartende Iptables
T4cC0re
quelle