GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Warum nicht ICMP blockieren?

Lösung 1:

ICMP ist viel, viel mehr als „Traceroute“ und „Ping“. Es wird für Rückmeldungen verwendet, wenn Sie einen DNS-Server (Port nicht erreichbar) betreiben, was in einem modernen DNS-Server tatsächlich helfen kann, einen anderen Computer für eine schnellere Abfrage auszuwählen.

ICMP wird auch, wie oben erwähnt, zur Pfad-MTU-Erkennung verwendet. Wahrscheinlich setzt Ihr Betriebssystem "DF" (nicht fragmentieren) für TCP-Pakete, die es sendet. Es wird erwartet, ein ICMP-Paket "Fragmentierung erforderlich" zurückzubekommen, wenn etwas entlang des Pfads diese Paketgröße nicht verarbeiten kann. Wenn Sie alle ICMP blockieren, muss Ihr Computer andere Fallback-Mechanismen verwenden, die im Grunde eine Zeitüberschreitung verwenden, um ein "schwarzes Loch" der PMTU zu erkennen, und niemals richtig optimieren.

Außerdem sollten Sie sich fragen, warum Sie ICMP blockieren möchten. Was wollen Sie hier konkret verhindern? Es ist ziemlich klar, dass Sie nicht verstehen, wofür ICMP verwendet wird, was ziemlich häufig vorkommt. Ich wäre äußerst vorsichtig, etwas zu blockieren, das Sie nicht vollständig verstehen.

Um es noch schwieriger zu machen, darüber zu lernen, sagen viele gängige Firewall-Bücher "ICMP blockieren" - es ist klar, dass ihre Autoren noch nie einen RFC gelesen haben oder Probleme im Zusammenhang mit solchen Ratschlägen lösen mussten. Es ist ein schlechter Rat, alle ICMP zu blockieren.

Nun, die Begrenzung der Rate kann auch weh tun. Wenn Ihr Rechner ausgelastet ist oder auch nicht, können Sie eine beträchtliche Menge an ICMP-Verkehr 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 irgendeiner Art von ICMP-Paketen angreift, ist das wirklich keine große Sache. Wenn Ihr Rechner auch nur eine TCP-Verbindung (ssh, http, mail usw.) akzeptiert, ist dies wahrscheinlich ein größerer Angriffsvektor als missverstandenes ICMP jemals sein wird.

Lösung 2:

ICMP wird für eine Reihe von Diagnose- (z. B. Ping, Traceroute) und Netzwerksteuerungsfunktionen (z. B. PMTU-Erkennung) verwendet. Das willkürliche Blockieren von ICMP verursacht bei anderen Menschen allerlei Sodbrennen, und wenn Sie nicht genau wissen, was Sie tun, sollten Sie es lassen.

Lösung 3:

Ich habe nie verstanden, warum Leute ICMP takten, wie oben gesagt, es verursacht immer nur Kopfschmerzen für Sie selbst und andere. Sie können leicht genug feststellen, ob ein Host aktiv ist, und solange er begrenzt genug ist, um nicht als DOS verwendet zu werden, habe ich noch nie zwingende Gründe gehört, ihn zu blockieren. (Falls jemand einen Grund hat, bitte posten)

Lösung 4:

Sie könnten einfach versuchen, icmp so zu begrenzen, dass es nicht als DOS-Angriff verwendet werden kann. aber es gibt viel zu viele Tools zur Fehlerbehebung wie Ping, MTR (ich vergesse Windows-Äquivalente), Traceroute (tracert), die icmp verwenden. Sie ganz fallen zu lassen, ist einfach nur dumm. Es ist eine gute Methode, um zu überprüfen, ob Ihre Instanz aktiv ist, auch wenn Sie auf keinem Port Telnet verwenden können.

--limit 10/second
zu Ihren ICMP-Regeln ist wahrscheinlich eine anständige Grenze, wenn man bedenkt, wie viel ein Computer tatsächlich verarbeiten kann.

Lösung 5:

Hier ist ein alternativer Standpunkt im Sinne der Sicherheitstheorie. Andere Befürworter haben recht, dass Sicherheitspraktiken oft übereifrig sind, aber vieles davon hat eine gute Grundlage.

Die Sicherheitstheorie besagt im Allgemeinen, 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 auszuspähen, oder möglicherweise als Angriffsvektor für eine noch zu entdeckende Schwachstelle.

Wenn Sie sich also die ICMP-Nachrichtentypen ansehen, was brauchen Sie für den normalen, ordnungsgemäßen Betrieb Ihres Systems?

  • Echo-Antwort (Ping) - nicht so sehr
  • Ziel nicht erreichbar - viele nützliche Informationen hier. Deaktivieren Sie dies und Sie unterbrechen den Zugriff auf Ihren Server für einige Clients.
  • Quellenlöschung - seit 1995 veraltet und offensichtlich seit (spätestens) 2005 aus Host-Implementierungen entfernt. tools.ietf.org/html/rfc6633#section-1.
  • Weiterleitung - mit ziemlicher Sicherheit 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, es sei denn, Sie wissen, dass Sie es brauchen, und wenn Sie es brauchen, codieren Sie vielleicht eine Regel, um Informationen nur von den möglichen bekannten Routern zu akzeptieren.
  • ttl überschritten – nicht nur für Traceroute, sagt Ihnen, dass Ihr Datenverkehr sein Ziel nicht erreicht

...usw. Wenn Sie das wirklich verstehen wollen, lernen Sie die verschiedenen ICMP-Typen und deren Zweck kennen. Der Wikipedia-Artikel ist ein guter Ausgangspunkt.

In der Praxis ist die wirklich hässliche Umleitung; Wenn Sie nur schnell etwas Nützliches tun möchten, blockieren Sie das und lassen Sie den Rest zu.

Ich möchte hinzufügen, dass die IPtables-Verbindungsverfolgung die entsprechenden ICMP-Rückgabepakete für aktive Verbindungen zulässt. Wenn Sie also conntrack ausführen, sollten Sie in der Lage sein, die meisten eingehenden ICMP-Nachrichten zu blockieren, solange Sie RELATED-Pakete akzeptieren (bevor Sie ICMP in Ihrem Regelsatz blockieren).


Linux
  1. Warum ist Cd kein Programm?

  2. Linux – Warum verwenden wir Su – und nicht nur Su?

  3. Warum ist Nullglob kein Standard?

  4. Warum akzeptiert Find „-exec Cp {} Dir +“ nicht?

  5. Warum ist es Rm -rf und nicht Rmdir -rf?

Warum nicht Softwarepakete aus dem Internet installieren

Warum „löschen“ den ganzen Bildschirm nicht löschen?

Warum sendet mir mein Cronjob keine E-Mail?

warum funktioniert sftp rmdir nicht?

Warum wird poll nicht durch epoll ersetzt?

Warum verwenden wir su - und nicht nur su?