2009-04-03 7 views
5

Ich verstehe die Notwendigkeit, einen Webserver in eine DMZ zu setzen und eingehenden Datenverkehr an alle Ports außer 80 und 443 zu blockieren. Ich kann auch sehen, warum Sie wahrscheinlich auch den meisten ausgehenden Datenverkehr blockieren sollten, falls der Server kompromittiert wird.Sollte die Firewall eines Webservers den ausgehenden HTTP-Datenverkehr über Port 80 blockieren?

Aber ist es notwendig, ausgehenden HTTP-Verkehr über Port 80 zu blockieren? Wenn ja warum? Heutzutage sind viele Webanwendungen auf das Senden/Abrufen von Daten von externen Webdiensten und APIs angewiesen, so dass das Blockieren von ausgehenden Datenverkehr über Port 80 diese Fähigkeit verhindert. Gibt es ein Sicherheitsrisiko, das berechtigt ist, dies zu rechtfertigen?

Antwort

7

Der einzige Grund, an den ich denken kann, ist, wenn Ihre Maschine irgendwie kompromitiert ist, dann wird es keine andere Website auf Port 80 DDoS tun können. Es ist nicht etwas, das ich normalerweise tue.

-2

, was Sie mit Blockierung ausgehenden Datenverkehr über Port bedeuten do 80.

Sie haben zwei Möglichkeiten. Dynamische Regeln erstellen, die die Kommunikation vom Client zu Ihrem Webserver für diese Sitzung ermöglichen. Suchen Sie nach Stateful Firewall-Regeln.

Oder Sie erlauben im Allgemeinen etablierten Verbindungen, miteinander zu kommunizieren und miteinander zu kommunizieren.

Wenn Sie den gesamten ausgehenden Datenverkehr normalerweise über Port 80 blockieren, konnte Ihr Webserver auf keinen Client antworten.

Umgekehrt, wenn Ihr Webserver einige API, z. Eine jquery-Bibliothek, die er nicht Port 80 als seinen Port verwenden wird, um mit dem Webserver zu kommunizieren, der die API enthält.

Ihr Webserver wählt normalerweise einen Port> 1024 und verwendet ihn für seine Anforderung, um die API vom Remote-Server zu beziehen.

Das Blockieren des gesamten Datenverkehrs über Port 80 (als Ihr Port, von dem aus Sie Verbindung herstellen) würde Ihren Server nicht daran hindern, Anfragen für Apis und ähnliche Dinge zu senden. weil er Port 80 nicht benutzt, wenn er als Client agiert.

+0

Ich spreche davon, dass der Webserver ausgehende HTTP-Verbindungen (Port 80) zu anderen Servern im Internet initiieren kann. Zum Beispiel könnten Sie eine PHP-Seite mit einem Wetter-Widget haben. Dieses Skript müsste die Wetterdaten von einem externen Webdienst anfordern. –

+0

ah ok, ich dachte du meinst Port 80 als initiierenden Port zu blockieren. Wenn Sie dies blockieren, können Sie Apis und ähnliches nicht von anderen Seiten laden. Sie können wahrscheinlich einige Sites Ihren Regeln hinzufügen, denen Sie vertrauen. Aber ich würde sagen, Blocking Port 80 macht im Allgemeinen nicht viel Sinn. – evildead

+0

aus einem anderen Blickwinkel, wenn Ihr Server gehackt wird und Sie blockieren diesen Verkehr kann es nicht laden Code von anderen Seiten. Aber wer garantiert, dass der Hacker/Roboter/was auch immer Port 80 für seine Anfrage verwendet :) – evildead

0

Anstatt es dann zu blockieren, drosseln Sie es. Benutze iptables -m limit.

0

Ich habe mehrere Web-Anwendungen, die externe Web-Dienste aufrufen, so würde ich sagen, es ist eine schlechte Idee, den Ausgang HTTP-Verkehr zu blockieren. Wenn Sie sich um Sicherheit kümmern, können Sie sie blockieren und nur bestimmte Ziele zulassen.

+0

Eine Whitelist ist ein guter Vorschlag, aber es funktioniert nicht mit OpenID, was erfordert, dass der Webserver eine beliebige URL als verwendet anfordern kann eine OpenID. –

+0

Nicht nur das, es wird mit keiner Website funktionieren, die jemals die IP-Adresse ändert. So muss die Firewall, die ich anfragen muss, geändert werden - auf der IP-Ebene, nicht auf der Domänenebene (ich nehme an, dass dies aus Effizienzgründen ist). Es ist ein echter Schmerz, da sich einige IPs stark ändern. –

+0

Gibt es nicht auch immer einen Dienst, der DDOS einen anderen Host zur Verfügung stellen könnte? Auf meinem ausgehenden HTTP-gesperrten Host kann z. B. ping weiterhin einen beliebigen Host kontaktieren. –

0

Abhängig von Ihrer SQL-Version, können Sie die Zertifikatauthentifizierung Zeit heraus Probleme mit SQL Server 2005

0

Erste - ich mit @vartec auf Drosselung „stimmen eher dann, es zu blockieren, es drosseln iptables verwenden -m Grenze. "Als zumindest ein Teil der Lösung.

Allerdings kann ich einen anderen Grund anbieten, Port 80 Outbound nicht zu jeder Zeit zu blockieren. Wenn automatische Sicherheitsupdates aktiviert sind, kann der Server keine PPAs über Port 80 erreichen, um ein Sicherheitsupdate zu initiieren. Wenn Sie automatische Sicherheitsupdates eingerichtet haben, werden sie nicht ausgeführt. Auto-Sicherheits-Updates auf ubuntu wird in 14.04 LTS eingeschaltet mit:

sudo apt-get install unattended-upgrades update-notifier-common && \ 
sudo dpkg-reconfigure -plow unattended-upgrades 
(then select "YES") 

anmutigen Lösungen ansible Skripte würde den Port automatisch öffnen, möglicherweise auch eine AWS-Sicherheitsgruppe Regel über die CLI zusätzlich zu iptables, wenn Sie Modifizieren sind bei AWS. Ich bevorzuge es, meine ausgehenden Regeln vorübergehend über AWS CLI zu modifizieren, die von einer Stealth-Box initiiert werden. Dies erzwingt die Protokollierung der Aktualisierung in meinen AWS S3-Protokoll-Buckets, wird jedoch nie in den Protokollen auf dem Server angezeigt.Außerdem muss der Server, der das Update initiiert, nicht einmal in der privaten Subnetz-ACL sein.

Vielleicht beides? Sie müssen sich vorstellen, dass ein Angriff von einer internen IP-Adresse in Ihrem Subnetz ausgeht, so dass es sinnvoll ist, die Daten zu verdoppeln, während die Fähigkeit zur Automatisierung von Backups und Sicherheitsupdates erhalten bleibt.

Ich hoffe, das hilft. Wenn Sie nicht antworten und mehr Code-Beispiele bereitstellen, um genauer und genauer zu sein. #Bleib sicher !

0

Wenn die Maschine kompromittiert ist und der ausgehende Datenverkehr auf Port 80 zulässig ist, können Eindringlinge die gesendeten Daten einfacher an sich selbst zurücksenden. Wenn Sie ausgehenden Datenverkehr zulassen, können Sie eine Verbindung von Ihrem Computer zur Außenwelt herstellen. Ein besserer Ansatz wäre es, nur den ausgehenden Datenverkehr zu bestimmten Websites/Adressen zuzulassen, denen Sie vertrauen (d. H. Microsoft Windows Update, Google reCAPTCHA) und nicht irgendein Ziel in der Welt.