Ich glaube, ich habe fast mein iptables-Setup auf meinem CentOS 5.3-System abgeschlossen. Hier ist mein Drehbuch ...
# 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 einer früheren Frage sagte Lee B, dass ich "ICMP ein bisschen mehr sperren sollte". Warum nicht einfach alles blockieren? Was würde passieren, wenn ich das tun würde (was für eine schlechte Sache würde passieren)?
Wenn ich ICMP nicht blockieren muss, wie kann ich es dann weiter blockieren?
Antworten:
ICMP ist weit mehr als "traceroute" und "ping". Es wird für die Rückmeldung verwendet, wenn Sie einen DNS-Server (nicht erreichbarer Port) ausführen, der in einem modernen DNS-Server möglicherweise dazu beiträgt, einen anderen Computer auszuwählen, der schneller abgefragt werden soll.
Wie oben erwähnt, wird ICMP auch für die Pfad-MTU-Erkennung verwendet. Möglicherweise setzt Ihr Betriebssystem "DF" (Don't Fragment) auf die von ihm gesendeten TCP-Pakete. Es wird erwartet, dass ein ICMP-Paket mit dem Status "Fragmentierung erforderlich" zurückgegeben wird, wenn auf dem Pfad etwas nicht mit dieser Paketgröße zurechtkommt. Wenn Sie alles ICMP blockieren, muss Ihr Computer andere Fallback-Mechanismen verwenden, die im Grunde genommen eine Zeitüberschreitung verwenden, um ein PMTU- "Schwarzes Loch" zu erkennen, und die niemals korrekt optimiert werden.
Außerdem sollten Sie sich fragen, warum Sie ICMP blockieren möchten. Was genau versuchst du hier zu verhindern? Es ist ziemlich klar, dass Sie nicht verstehen, wofür ICMP verwendet wird, was ziemlich häufig vorkommt. Ich würde äußerst vorsichtig sein, wenn ich etwas blockiere, das Sie nicht vollständig verstehen.
Um es noch schwieriger zu machen, dies zu lernen, sagen viele gängige Firewall-Bücher "Block ICMP" - es ist klar, dass ihre Autoren nie einen RFC gelesen haben oder Probleme im Zusammenhang mit solchen Ratschlägen lösen mussten. Es ist ein schlechter Rat, alles ICMP zu blockieren.
Jetzt kann die Geschwindigkeitsbegrenzung auch weh tun. Wenn Ihr Computer ausgelastet ist oder auch nicht, können Sie eine gute Menge an ICMP-Datenverkehr abrufen. Mein Webserver erhält wahrscheinlich ungefähr 10-100 ICMP-Pakete pro Minute, von denen der größte Teil PMTU-Erkennung ist. Selbst wenn sich jemand dazu entschlossen hat, meinen Server mit ICMP-Paketen eines Typs anzugreifen, ist das keine so große Sache. Wenn Ihr Computer auch nur eine TCP-Verbindung (ssh, http, mail usw.) akzeptiert, ist dies wahrscheinlich ein größerer Angriffsvektor als missverstandenes ICMP jemals sein wird.
quelle
redirect
. Dies ist der einzige ICMP-Typ, den Sie jemals blockieren sollten.redirect
. Ich verstehe jetzt, dass ich darüber nachdenken sollte, aber es geht mir nicht besser - ich kann mich immer noch nicht so oder so entscheiden :) Ist es ein Risiko oder nicht?ICMP wird für eine Reihe von Diagnosefunktionen (z. B. Ping, Traceroute) und Netzwerksteuerungsfunktionen (z. B. PMTU-Erkennung) verwendet. Das wahllose Blockieren von ICMP verursacht bei anderen Menschen Sodbrennen. Wenn Sie nicht genau wissen, was Sie tun, sollten Sie es in Ruhe lassen.
quelle
Ich habe nie verstanden, warum Menschen ICMP takten, wie oben gesagt, dass es nur für Sie und andere Kopfschmerzen verursacht. Sie können feststellen, ob ein Host problemlos verfügbar ist und solange er nicht als DOS verwendet werden kann, habe ich noch nie zwingende Gründe gehört, ihn zu blockieren. (Wenn jemand einen Grund finden kann, bitte posten)
quelle
Sie könnten einfach versuchen, icmp so einzuschränken, dass es nicht als DOS-Angriff verwendet werden kann. Aber es gibt viel zu viele Tools zur Fehlerbehebung wie ping, mtr (ich vergesse Windows-Äquivalent), traceroute (tracert), die icmp verwenden. Sie komplett fallen zu lassen ist einfach töricht. Dies ist eine gute Möglichkeit, um zu überprüfen, ob Ihre Instanz aktiv ist, obwohl Sie über keine Ports telnet können.
Ihrer ICMP-Regel (n) ist wahrscheinlich eine angemessene Grenze, wenn man bedenkt, wie viel ein Computer tatsächlich verarbeiten kann.quelle
Hier ist eine alternative Sichtweise im Sinne der Sicherheitstheorie. Andere Plakate haben Recht, dass die Sicherheitspraxis oft übereifrig ist, aber es gibt eine gute Grundlage für viele davon.
Die Sicherheitstheorie besagt im Allgemeinen, dass Sie nur das aktivieren, was Sie benötigen. Andere Dinge (die nützlich sein können, z. B. Ping-Antworten) können von einem Angreifer verwendet werden, um Ihr System zu untersuchen, oder möglicherweise als Angriffsmethode für eine noch nicht entdeckte Sicherheitsanfälligkeit.
Wenn Sie sich die ICMP-Nachrichtentypen ansehen, was BRAUCHEN Sie dann für einen normalen, ordnungsgemäßen Betrieb Ihres Systems?
...und so weiter. Wenn Sie dies wirklich verstehen möchten, informieren Sie sich über die verschiedenen ICMP-Typen und deren Zweck. Der Wikipedia-Artikel ist ein guter Ausgangspunkt.
In der Praxis ist der wirklich hässliche Redirect; Wenn Sie einfach etwas schnelles und nützliches tun möchten, blockieren Sie dies und lassen Sie den Rest zu.
Ich würde hinzufügen, dass die IPtables-Verbindungsverfolgung die entsprechenden ICMP-Rückgabepakete für aktive Verbindungen ermöglicht. Wenn Sie 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).
quelle
Es ist ein nützliches Diagnosetool zur Behebung von Netzwerkverbindungsproblemen.
Sie können auch Verbindungen an anderen Stellen im Internet verwenden, die kleinere MTUs als in Ihrem Netzwerk verwenden. Wenn Sie versuchen, ein Paket an einen Ort zu senden, der zu groß ist und nicht fragmentiert werden kann, verwirft das Gerät das Paket und sendet ein für die ICMP-Fragmentierung erforderliches Paket an den Absender zurück. Wenn Sie alle ICMP-Pakete verwerfen, verlieren Sie diese und seltsamen Dinge in Ihrem Netzwerk.
Die eigentliche Frage lautet "Warum ICMP blockieren?" Was hast du davon? Haben Sie einfach gute Filterregeln an Ihrer Grenze und vor Ihrem geschätzten Vermögen.
quelle
Ping ist ein nettes Diagnosewerkzeug. Sie werden sich wirklich wünschen, dass Sie es eines Tages hätten. Ich benutze diese:
Vielleicht möchten Sie auch drosseln.
quelle
Heutzutage kann sogar die Beschränkung der ICMP-Pakete auf der Serverseite zu Kopfschmerzen bei DDoS-Angriffen führen. Die meisten Angriffe werden ausgeführt, indem große ICMP-Fensteranforderungen an einen Server gesendet werden. Ratet mal, was passiert, wenn der Server versucht, auf jede dieser Anforderungen zu antworten?
Hauptsache, wir haben einen Teamspeak-Server, der jeden Tag schlechte Pakete bekommt. Es gab ein paar Tage in zwei Monaten, an denen wir etwas "Freizeit" hatten. Wir haben ICMP-Antworten vollständig deaktiviert / blockiert, wir haben keine DNS-Server auf dem Server, keine NTP-Server, keine Mailserver, keine FTP-Server, nur zwei Apache- und Teamspeak-Server. Alle für die Dienste nicht benötigten Ports sind deaktiviert. Wir planen, sogar das SSH zu blockieren und nur zwei Ports offen zu lassen. Heute gibt es 21.000 (!) Dauerhafte Verbote.
Die Situation ist, dass Angreifer hauptsächlich ICMP-Tunnel verwenden und nur wenige wirklich interessante Protokollzeilen mit den Serveradministratoren besprochen wurden. Sie gaben an, dass sie Server-ICMP-Anforderungen haben. Daher haben Angreifer diese verwendet, um den Angriff zu tunneln und uns anzugreifen. Klingt komisch, aber das stimmt.
Wenn Sie keine Diagnose für Ihren Server benötigen und die Anforderungen vollständig blockieren oder filtern können, um beispielsweise große Fenster zu löschen, tun Sie dies. Ich schlage außerdem vor, China, Korea, Thailand und die Türkei vollständig zu blockieren, da die meisten IP-Adressen von dort stammen. Ich hatte eine ganze Reihe von Listen dieser Länder, aber fast jeden Tag kommen einige neue von dort.
Ich sage, was ich tue, wenn Sie nicht einverstanden sind - tun Sie es nicht. So einfach ist das. Viel Glück
quelle
Sie sollten mindestens zulassen, dass die ICMP-Typen 3 (Ziel nicht erreichbar), 4 (Quell-Quench) und 11 (Zeitüberschreitung) übergeben werden. Alle diese Typen werden zur Behebung von Netzwerkproblemen verwendet und sollten nicht gefiltert werden.
(Der Quellentyp ist derzeit veraltet, aber es tut nicht weh, ihn öffnen zu lassen.)
quelle
Ich erlaube ICMP-Verkehr vom lokalen Intranet, blockiere ihn vom Internet. Auf diese Weise ist mein Server online so gut wie unsichtbar (er antwortet nur auf einem nicht standardmäßigen SSH-Port).
Dies fügt es nach den Standard-Loopback-, eingerichteten, LAN-Whitelist-, VOIP-Provider-Whitelist- und SSH-Port-ACCEPTs ein. Ich erlaube den von mir gewünschten Datenverkehr und versuche dann, den Server für den Rest der Welt unsichtbar zu halten.
quelle