Welche Ports sollten auf einem Webserver offen bleiben?

7

Ich werde versuchen, meine erste Web-App bald bereitzustellen, daher fehlt meine Erfahrung. Ich erinnere mich, dass ich irgendwo gelesen habe, dass Port-Scans durch Bots innerhalb von Minuten nach dem Kontakt mit dem Internet stattfinden (vielleicht dauert es so lange, bis ein Windows 95-System kompromittiert wird, seit ich den Artikel gelesen habe). Auf diesem bestimmten Server wird Ubuntu 9.10 Server Edition auf amd64 ausgeführt.

Die Web-App selbst sollte vollständig über https sein, wie in dieser Frage, die ich gerade hier gestellt habe . Darüber hinaus verfügt die Website über einen Abschnitt zum Hochladen von Dateien, der jetzt über http post erstellt wird. Diese Datei wird schließlich über eine separate (leider drahtlose) Schnittstelle zu einem anderen Computer ausgelagert, um die eigentliche Verarbeitung zu übernehmen.

Auf der tatsächlichen Netzwerkschnittstelle, die der Welt ausgesetzt ist, denke ich, dass die Ports 80 und 443 offen gelegt werden sollten, und sonst nichts. Wie ich bereits sagte, sollten 80 auf 443 umleiten. Ist das vernünftig? Gibt es noch etwas, das ich nicht weiß, einen anderen Port, den ich aktiv haben sollte? Die Dateien werden mithilfe von Ruby DRb über die Ports 9000 und 9001 in das Verarbeitungssystem verschoben, sodass diese ebenfalls geöffnet sein müssen, jedoch nur auf der zweiten Schnittstelle.

Welches Firewall-Programm sollte ich verwenden, um zwei Netzwerkschnittstellen wie diese zu handhaben? Hier sind einige aufgeführt , aber ich bin mir nicht sicher, welche für die Bereitstellung von Webseiten geeignet ist oder ob dies überhaupt ein Sonderfall ist.

mmr
quelle

Antworten:

4

klingt ungefähr richtig, wenn Sie nur https bereitstellen, dann ist dies derjenige, den Sie offen lassen müssen. Da jedoch nur Anwendungen, die mit einem Root-Konto gestartet wurden, Ports unter 1024 abhören können, haben Sie hier zwei Möglichkeiten:

  • Starten Sie Ihre Ruby-App als Root - keine gute Idee
  • Haben Sie es hinter Apache - vielleicht besser, aber je nachdem, was Sie tun möchten, kann dies nur ein zusätzlicher Aufwand sein
  • Führen Sie die Ruby-App als anderer Benutzer auf einem anderen Port aus, z. B. 8443, und haben Sie Iptables, um Anfragen von 443 bis 8443 weiterzuleiten - das ist wohl das, was Sie tun möchten

Im Folgenden wird beschrieben, wie Sie die Portweiterleitung durchführen (dasselbe können Sie beispielsweise mit 80 bis 8080 tun):

iptables -t nat -A PREROUTING -i $EXT_IF -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 8443

Ansonsten müssen keine anderen Ports für das Internet geöffnet werden. Stellen Sie lediglich sicher, dass Sie ssh auf der anderen Schnittstelle geöffnet lassen, damit Sie auf den Server zugreifen und ihn verwalten können.

Was die Firewall-Anwendung betrifft, wird iptables mit Ubuntu geliefert und verwendet es einfach. Ich brauche kein anderes ausgefallenes Tool, würde ich sagen.

Rytis
quelle
2

Sie haben Recht, dass nur die Ports 80/443 freigelegt werden müssen. Alles andere sollte geschlossen sein. Sie benötigen Ihre Firewall, um einige Dinge zu tun.

  1. Verbindungslimit und Ratenlimit. Sie möchten, dass Ihre Firewall im Falle eines DDoS-Angriffs oder wiederholter Versuche, das Port-Knocking oder ähnliches durchzuführen, langsamer wird.
  2. Blockieren Sie den gesamten unnötigen ausgehenden Verkehr. Dies kann hilfreich sein, wenn Ihr Computer gefährdet ist, da die meisten Bots eine Verbindung zu einem Remote-Befehls- und Steuerungsserver herstellen müssen.
  3. Blockieren Sie alle anderen eingehenden Ports. Sie sollten wirklich immer noch alles andere blockieren, nur für den Fall, dass ein Angreifer eine App installiert und einen Back-Door-Port öffnet.

Das sind einige Gedanken. Ich habe jedoch keine spezifischen Softwareempfehlungen. Vielleicht hilft das Lesen von LARTC .

Sybreon
quelle