PHP Blogger

Startseite Schreib mir ne Mail! RSS Abo Webnews

Port-Fetischismus oder dirty Games mit Ports

Haach, wie herrlich kann bloggen sein! Grad läuft’s mal wieder: Ein Kommentar zum letzten Artikel bringt mich auf eine Idee zum Nächsten. Ihr habt’s bestimmt schon bemerkt - ich versuche mich immer mal wieder in schönen unsachlichen Ausdrucksweisen, die trotzdem die Sache auf den Punkt bringen. Oder auch nicht. Naja. Aber weiter im Text:

Was könnte man nur mit Port-Fetischismus meinen? Ich liebe Code-Usability. Ein super Thema, über das ich ja schon öfter referiert habe. Es ist so schön wie zeitlos… Was dabei bis lang unter den Tisch gefallen ist, sind lesbare URLs (Vielleicht mal in einem anderen Artikel) und Portangaben. Also schöne Portangaben.

Nur so zur Erinnerung: http://www.phpblogger.net:80/ ist eine Möglichkeit, einen Port zu erzwingen. Klar, das Du das schon wusstest. Welcher Port macht denn im Browser noch Sinn? Naja 443 für SSL zum Beispiel. Aber statt das zu erzwingen, wird einfach das Protokoll auf HTTPS geändert, was implizit auf Port 443 verweist.

Um das klar zustellen: Schöne Portangaben, sind nicht vorhandene Portangaben. Aber wie ein aufmerksamer Leser im Artikel zu HTTPS und SSL richtig angemerkt hat, kann man über verschiedene Ports unter ein und derselben IP mehrere SSL-Zertifikate betreiben. Und jetzt geht es mit den dreckigen Spielchen weiter, die man mit Portangaben in der URL machen kann:

Natürlich gibt es sinnvolle Möglichkeiten, die das Web-Protokoll erlaubt, um Webseiten abzurufen und Web-Applikationen anzusteuern:

  • Mehrere SSL-Zertifikate über eine einzige IP betreiben
  • Den PHP-Interpreter switchen (z.B. Port 80 = PHP 5, Port 8080 = PHP 4)
  • Den Webroot wechseln
  • Allgemein die Webserver-Konfiguration switchen (z.B. zwischen Entwicklungs- und Live-Modus einer Web-Applikation umschalten)
  • Mehrere Webserver gleichzeitig betreiben
  • Prinzipiell eine andere Server-Applikation oder einen Webservice ansteuern
  • Durch einen Reverse-Proxy einen Blackbox-Server in einer DMZ ansprechen

Okay, wer es gemerkt hat, wurde eigentlich in allen Fällen die Serverconfig geswitched. Ich wollte aber ja eigentlich auch nur die Vielzahl an Möglichkeiten aufzeigen, die es unter Umständen rechtfertigen, mit Port-basierten zu arbeiten.

Wie bereits erwähnt - ich finde Port-Angaben in der URL grundsätzlich hässlich. In den meisten Fällen kann man alles, was über Port-Basierte-VirtualHosts gelöst wird, auch mit Subdomains lösen. Im Falle eines SSL-Betriebes müsste natürlich unter Umständen auf eine separate IP-Adresse in Verbindung mit einem Zertifikat zurückgegriffen werden.

Aber auch dort gibt es die Möglichkeit mit kostenlosen selbst ausgestellten Zertifikaten zu arbeiten und eine zusätzliche IP ist im lokalen Netz auch schnell und kostenlos organisiert. Sogar eine einzige Netzwerkkarte kann mit verschiedenen IPs betrieben werden, falls kein weiterer freier Netzwerkport zur Verfügung steht.

Du stehst trotzdem auf “dreckige Spielchen” mit Ports? Sinn macht die Verwendung von unterschiedlichen Ports aus meiner Sicht vor allem auf Staging- oder Entwicklungs-Servern.

Aber auch um seine Applikation besonders abzusichern, kann man mit verschiedenen Ports oder Subdomains arbeiten. Sicherheit ergibt sich dadurch, das eine eventuelle Admin-Oberfläche nur auf solchen besonderen Vhosts zur Verfügung steht oder gleichzeitig noch eine IP-Sperre eingebaut ist.

Auch die Applikation kann mit Hilfe von $_SERVER["SERVER_PORT"] auf einen anderen Port reagieren, Deiner Phantasie sind keine Grenzen gesetzt - ob das dann schön oder praktisch ist, ist eine andere Frage ;)

Fazit

Mit portbasierten Vhosts sind schöne Spielereien möglich. Ich würde solche Dinge allerdings nur auf Entwicklungs- oder Stagingservern umsetzen. Maschinen im Livebetrieb freuen sich über die Verwendung von Subdomains.

Ähnliche Artikel:

  1. SSH Server absichern: Port-Salat
  2. Wissenswertes über SSL und HTTPS

David meint dazu:

17. Dezember 2009 um 14:08

Endlich bloggst du wieder, dachte schon der Blog ist tot. Würde mich freuen wenn du wieder Codebeispiele einpflegen könntest oder z.B. wie man am besten IP’s (bitte mit IPv6) in einer Datenbank speichert.

Kevin meint dazu:

18. Dezember 2009 um 23:16

Eine der besonders häufig anzutreffenden Verwendungen “im freien” ist sicher die Nutzung von Admin Oberflächen wie Plex u.ä. auf höheren Ports.

Wieso man das nicht auf Live Maschinen nutzen sollte wird mir nicht so ganz klar. Mit der Verwendung von Ports lassen sich doch ganz andere Szenarien umsetzen als über Subdomains.

timi meint dazu:

22. Dezember 2009 um 10:09

@Kevin: Rein technisch gesehen gibt es in Bezug auf Web-Anwendungen zwischen Ports und Subdomains eigentlich kaum Unterschiede - Beide Angaben können genutzt werden um in Applikationen Zustände bzw. Konfigurationen frei- oder umzuschalten.

Der große Vorteil von Ports ist natürlich, das das ein Systemweiter Standard ist und sich auch andere Server-Applikationen aufschalten lassen, die nicht unbedingt an die Webserver-Konfiguration gekoppelt sind. Aber gerade Fremd-Applikationen die übliche Ports verwenden (wie Plesk), können nicht unerhebliche Sicherheitsrisiken birgen, dazu kannst Du Dir mal den Artikel zu Port-Salat durchlesen: http://www.phpblogger.net/2009/02/06/ssh-server-absichern-port-salat/

Im Artikel ging es ganz konkret um URL-Ästhetik im weiten Sinne. Und Ports fallen da meiner Meinung nach unangenehm auf (meine persönliche Ansicht) - darüber sollte man nicht streiten, aber eine Diskussion schadet ja nie ;) Auch ich lerne sehr gerne dazu…

Im Übrigen kann man auch “Port-Applikationen”, die nicht vom Webserver gehostet werden über einen Reverse-Proxy und eine Subdomain ziemlich schick tunneln.

PS: Prinzipiell finde ich Oberflächen zur Webserver-Konfiguration ziemlich mühsam: Nie wird das ganze Leistungs-Spektrum abgedeckt und schneller (ebenso wie sicherer) ist es über die Shell zu konfigurieren. Die Gefahr bei Oberflächen ist halt immer, das Sie nicht auf dem aktuellen Sicherheitslevel sind und/oder von N00bs bedient werden, die nicht wissen, was sie tun. Das ist gerade bei Live-Maschinen ein riesen Problem.

Thorsten meint dazu:

21. Februar 2010 um 17:37

sehr interessant! Vielen Dank für die Informationen

Lotje meint dazu:

24. Februar 2010 um 21:47

hallo! Vielen Dank für die interessanten Artikel! Ich will einen Blog zu den Favoriten hinzufügen!

Mika meint dazu:

27. Februar 2010 um 22:12

Eine sehr interessante Angelegenheit, die mir so noch gar nicht bewusst war. Aber ich kann Dir nur zustimmen - als Portangabe direkt in der URL ist es wirklich nicht schön. Ich glaube auch nicht, dass das so akzeptiert wird.

Andreas meint dazu:

13. März 2010 um 15:25

Mir sind bisher noch nirgends Portangaben in der URL aufgefallen, und ich habe sie auch nicht verwendet. Ich finde bei SSL-Verschlüsselungen auch die Variante mit dem https:// besser, vor allem, da diese auch den meisten Usern bekannt ist, die sich nicht sonderlich gut mit Webprogrammierung auskennen. Diese können so leicht erkennen, dass sie sich auf einer sicheren Seite befinden, was bei der Portangabe zumindest bei Laien nicht der Fall sein dürfte.

Alejandro meint dazu:

23. Juli 2010 um 14:27

Ja ich finde die Informationen die dieser Text enthält auch sehr hilfreich.
Vielen Dank!

RSS für Kommentare zu diesem Artikel · TrackBack URI

Schreib Deine Meinung