Frage Warum nicht ICMP blockieren?


Ich denke, ich habe fast mein iptables-Setup auf meinem CentOS 5.3-System abgeschlossen. Hier ist mein Skript ...

# Establish a clean slate
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -F # Flush all rules
iptables -X # Delete all chains

# Disable routing. Drop packets if they reach the end of the chain.
iptables -P FORWARD DROP

# Drop all packets with a bad state
iptables -A INPUT -m state --state INVALID -j DROP
# Accept any packets that have something to do with ones we've sent on outbound
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# Accept any packets coming or going on localhost (this can be very important)
iptables -A INPUT -i lo -j ACCEPT
# Accept ICMP
iptables -A INPUT -p icmp -j ACCEPT

# Allow ssh
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# Allow httpd
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# Allow SSL
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

# Block all other traffic 
iptables -A INPUT -j DROP

Für den Kontext ist dieser Computer ein Virtual Private Server-Webanwendungshost.

In einem Vorherige Frage, Lee B sagte, dass ich "ICMP ein bisschen mehr sperren" sollte. Warum blockiere ich es nicht einfach? Was würde passieren, wenn ich das täte (was würde passieren)?

Wenn ich ICMP nicht blockieren möchte, wie kann ich dann mehr blockieren?


50
2017-11-15 20:15


Ursprung


iptables -A INPUT -j DROP <falsch (Meinung) Sie sollten die Richtlinie auf iptables -P INPUT DROP setzen, was im Grunde dasselbe ist wie das Setzen eines Standards. DENY VON STANDARD. - xenoterracide
Finden Sie heraus, warum es eine schlechte Idee ist, ICMP zu blockieren: security.stackexchange.com/a/22713/485 - Rory Alsop


Antworten:


ICMP ist weit mehr als "Traceroute" und "Ping". Es wird für Feedback verwendet, wenn Sie einen DNS-Server ausführen (Port nicht erreichbar), der bei einem modernen DNS-Server möglicherweise dabei hilft, einen anderen Computer für die schnellere Abfrage auszuwählen.

ICMP wird auch, wie oben erwähnt, für die Pfad-MTU-Erkennung verwendet. Es besteht die Möglichkeit, dass Ihr Betriebssystem die von ihm gesendeten TCP-Pakete "DF" (nicht fragmentiert) setzt. Es wird erwartet, dass ein ICMP-Paket "fragmentation required" zurückkommt, wenn etwas entlang des Pfades mit dieser Paketgröße nicht fertig wird. Wenn Sie alle ICMPs blockieren, muss Ihr Computer andere Fallback-Mechanismen verwenden, die im Grunde ein Timeout verwenden, um ein "schwarzes Loch" der PMTU zu erkennen, und das niemals richtig optimieren wird.

Darüber hinaus sollten Sie sich fragen, warum Sie ICMP blockieren möchten. Was genau wollen Sie hier verhindern? Es ist ziemlich klar, dass Sie nicht verstehen, wofür ICMP verwendet wird, was eher üblich ist. Ich wäre sehr vorsichtig bei der Blockierung von etwas, das Sie nicht vollständig verstehen.

Um es noch schwieriger zu machen, wird in vielen gebräuchlichen Firewall-Büchern "block ICMP" genannt - es ist klar, dass ihre Autoren niemals einen RFC gelesen haben oder Probleme in Zusammenhang mit solchen Ratschlägen lösen mussten. Es ist ein schlechter Rat, alle ICMP zu blockieren.

Jetzt kann die Geschwindigkeitsbegrenzung auch schaden. Wenn Ihr Computer ausgelastet ist oder nicht, können Sie einen guten ICMP-Datenverkehr erhalten. Mein Webserver erhält wahrscheinlich etwa 10-100 ICMP-Pakete pro Minute, von denen die meisten PMTU-Erkennung sind. Selbst wenn jemand meinen Server mit ICMP-Paketen eines bestimmten Typs angreifen würde, ist das wirklich kein großer Deal. Wenn Ihr Computer sogar eine TCP-Verbindung akzeptiert (ssh, http, mail, etc), ist die Wahrscheinlichkeit größer, dass der Angriffsvektor größer ist als der missverstandene ICMP.


112
2017-11-15 20:56



Ich hätte es nicht besser sagen können. +1 - Massimo
Es gibt ein Art von ICMP, die können schädlich sein redirect Art. Das ist das nur ICMP-Typ, den Sie jemals in Betracht ziehen sollten. - Hubert Kario
@Hubert wäre es sehr hilfreich, wenn du dich auf weitere Hinweise zum Blockieren der verlinken könntest redirect. Ich verstehe jetzt, dass ich darüber nachdenken sollte, aber ich bin nicht besser dran - kann immer noch nicht auf die eine oder andere Weise entscheiden :) Ist es ein Risiko oder nicht? - RomanSt
Redirect ICMP-Nachricht teilt dem Host mit (Router sollten sie niemals akzeptieren), dass das Subnetz oder der Host an einem anderen Gateway verfügbar ist (normalerweise von einem schnelleren Router). Zumindest sagt das RFC1122. - Hubert Kario
Ich glaube, Redirects werden standardmäßig unter Linux ignoriert. Aber ja, besser, diesen zu filtern. - Fox


ICMP wird für eine Reihe von Funktionen zur Diagnose (z. B. Ping, Traceroute) und Netzwerksteuerung (z. B. PMTU-Erkennung) verwendet. Die unterschiedslose Blockierung von ICMP verursacht bei anderen Menschen alle Arten von Sodbrennen, und wenn Sie nicht genau wissen, was Sie tun, sollten Sie es in Ruhe lassen.


25
2017-11-15 20:29





Ich habe nie verstanden, warum Leute ICMP hören, wie gesagt, es verursacht immer nur Kopfschmerzen für dich selbst und andere. Sie können feststellen, ob ein Host einfach genug ist und solange er so begrenzt ist, dass er nicht als DOS verwendet werden kann. Ich habe noch nie zwingende Gründe gehört, ihn zu blockieren. (Wenn jemand mit einem Grund kommen kann, bitte posten)


14
2017-11-15 20:37



Es gehört zum Kult der Informationssicherheit. Sicherheitsleute haben das Gefühl, dass sie die Dinge nicht rechtfertigen müssen, weil Normalsterbliche die Sicherheitsimplikationen nicht verstehen können. Auf der anderen Seite, Netzwerk-und System-Admin Kopfschmerzen können schlicht Faulheit zugeschrieben werden. Wenn die Admins wüssten, was los war, würden die Dinge niemals enden ... - duffbeer703
es erscheint mir nur komisch, diagnostische Werkzeuge im wesentlichen dafür zu töten; Die Informationen, an denen ein Angreifer interessiert sein könnte, könnten wahrscheinlich daraus abgeleitet werden, dass Sie einen anderen Dienst haben, der auf dem Computer ausgeführt wird. Ihr Recht; Es scheint sehr "Kult", frag nicht nur tun. - Antitribu
Ich habe nie verstanden, warum die Autoren von Firewall-Büchern anscheinend total vermissen, dass ICMP weit mehr ist als "Ping" und "Traceroute" und doch Bücher und Blogs und HOW-TOs alle "Block ICMP" sagen. - Michael Graff
Ebenen und Ebenen davon wurde Ihre Antwort richtig gewählt, gut gestellt. Meistens weiß ich, wenn es blockiert ist, kann man nie genau sagen, was mit intermittierenden Dingen los ist, besonders wenn es mehrere ICMP-Blöcke auf dem Weg gibt. - Antitribu


Sie könnten versuchen, limit-icmp so zu verwenden, dass es nicht als DOS-Angriff verwendet werden kann. aber es gibt viel zu viele Tools zur Fehlersuche wie Ping, mtr (ich vergesse Windows äquivalent), traceroute (tracert), die icmp verwenden. sie ganz fallen zu lassen, ist nur dumm. Es ist eine gute Möglichkeit, zu überprüfen, ob Ihre Instanz aktiv ist, obwohl Sie an keinem der Ports telnet können.

--limit 10/second
Ihre icmp Regel (n) ist wahrscheinlich ein anständiges Limit gegeben, nur wie viel ein Computer tatsächlich verarbeiten kann.


8
2017-11-15 20:28





Hier ist eine alternative Sichtweise im Geiste der Sicherheitstheorie. Andere Plakate sind richtig, dass die Sicherheitspraxis oft übereifrig ist, aber es gibt eine gute Basis für vieles.

Die Sicherheitstheorie besagt generell, dass Sie nur das aktivieren, was Sie brauchen. Andere Dinge (die nützlich sein könnten, z. B. Ping-Antworten) können von einem Angreifer verwendet werden, um Ihr System auszuweiten, oder möglicherweise als Angriffsvektor für eine noch zu entdeckende Schwachstelle.

Wenn Sie ICMP-Nachrichtentypen betrachten, was benötigen Sie für den normalen, ordnungsgemäßen Betrieb Ihres Systems?

  • Echoantwort (Ping) - nicht so sehr
  • Ziel nicht erreichbar - viele nützliche Informationen hier. Deaktivieren Sie dies und Sie werden den Zugriff auf Ihren Server für einige Clients unterbrechen.
  • Source Quench - seit 1995 veraltet und offenbar seit spätestens 2005 von Host-Implementierungen entfernt. tools.ietf.org/html/rfc6633#section-1.
  • Redirect - fast sicher nicht
  • Router Advertisement & Solicitation - keine Notwendigkeit, wenn Sie Ihre Routen statisch konfigurieren, und könnte für DoS verwendet werden. Ich würde es blockieren, wenn Sie nicht wissen, dass Sie es brauchen, und wenn Sie es brauchen, vielleicht eine Regel codieren, um Informationen nur von den möglichen bekannten Routern zu akzeptieren.
  • ttl überschritten - nicht nur für traceroute, sagt Ihnen, dass Ihr Verkehr nicht zu seinem Ziel durchkommt

...und so weiter. Wenn Sie das wirklich verstehen wollen, informieren Sie sich über die verschiedenen ICMP-Typen und wofür sie geeignet sind. Das Wikipedia-Artikel ist ein guter Ausgangspunkt.

In der Praxis ist die wirklich hässliche eine Umleitung; Wenn Sie einfach etwas schnell und nützlich machen wollen, blockieren Sie das und lassen Sie den Rest zu.

Ich würde hinzufügen, dass IPTables Verbindungsverfolgung die entsprechenden ICMP-Pakete für aktive Verbindungen zurückgeben können. Wenn Sie also conntrack ausführen, sollten Sie in der Lage sein, die meisten ICMP-eingehenden Nachrichten zu blockieren, solange Sie RELATED-Pakete akzeptieren (bevor Sie ICMP in Ihrem Regelsatz blockieren).


6
2017-12-07 16:32



Tatsächlich ist Source Quench seit 1995 veraltet und wurde anscheinend (spätestens) 2005 von Host-Implementierungen entfernt. tools.ietf.org/html/rfc6633#section-1. - sourcejedi
Antwort aktualisiert, danke. Wenn ich ein bisschen härter darüber nachgedacht hätte, hätte ich mich daran erinnert, duh. - Dan Pritts
Ich denke, ICMP PING wird für die PMTU-Erkennung benötigt (die viele Browser und Tools verwenden). Es zu verbieten, ist für Ihre Benutzer unhöflich. Ping wird auch für viele diagnostische Zwecke verwendet, und die meisten großen Spieler erlauben es. Außerdem hat es wenig Vorteile, es zu verbieten. - jjmontes
Echo (Ping) -Pakete sind für die PMTU-Erkennung nicht erforderlich. Die PMTU-Erkennung erfolgt durch Festlegen des Do not Fragment (DF) -Bits auf ausgehenden Paketen und hängt von ICMP-Ziel nicht erreichbar - Fragmentierung benötigte Nachrichten von Routern mit kleineren Link-MTUs zurück. Ping ist sicherlich nützlich für diagnostische Zwecke, aber es ist auch nützlich für Netzwerk-Aufklärung und möglicherweise für DoS. Für alle, die Sie und ich wissen, gibt es einen latenten Remote-Root-Fehler im ICMP-Stack in Linux. Wenn Ihr Standard ist "brauche ich das" lautet die Antwort "Nein". - Dan Pritts
(Beachten Sie, dass ich in der Antwort geschrieben habe, dass die Blockierung von nicht erreichbaren Nachrichten die Dinge kaputt macht. Die PMTU-Entdeckung war genau das, woran ich dachte. :) - Dan Pritts


Es ist ein nützliches Diagnosewerkzeug zur Lösung von Netzwerkkonnektivitätsproblemen.

Sie können auch Verbindungen an anderen Stellen im Internet verwenden, die kleinere MTUs als in Ihrem Netzwerk verwenden. Wenn Sie versuchen, ein Paket irgendwo zu senden, das zu groß ist und nicht fragmentiert werden kann, löscht das Gerät das Paket und sendet ein ICMP-Fragmentierungs-Paket an den Absender zurück. Wenn Sie alle ICMP-Pakete löschen, verlieren Sie diese und seltsame Dinge passieren in Ihrem Netzwerk.

Die eigentliche Frage ist "Warum ICMP blockieren?" Was gewinnst du? Haben Sie einfach gute Filterregeln an Ihrer Grenze und vor Ihren wertvollen Assets.


4
2017-11-15 20:37





Ping ist ein schönes Diagnose-Tool, Sie werden sich wirklich wünschen, es einmal zu haben. Ich benutze diese:

-A icmp_packets -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A icmp_packets -p icmp -m icmp --icmp-type 11 -j ACCEPT

Vielleicht möchten Sie es auch drosseln.


3
2017-11-15 20:19



Dies ist aus Gründen, auf die andere hingewiesen haben (ICMP ist viel mehr als nur Ping). Sie sollten selektiv blockieren spezifisch, möglicherweise schädlich ICMP-Nachrichten, und ermöglichen Sie anderen Steuernachrichten durch unbelastet. - voretaq7