2009-01-04 13 views
5

Ich arbeite derzeit an einem Client, wo sie das Netzwerk gesperrt haben, außer für die Ports 80 und 443. Ich muss Verbindung zu unserem Server mit SSH, aber der gleiche Server betreibt auch unsere Website. Wir wollen nicht in einen neuen Server investieren oder eine zweite Netzwerkkarte platzieren.Client-Firewall blockiert alle Ports, aber 80 und 443, müssen Requets auf Port 443 an SSH oder HTTPS weiterleiten

Ich habe das Internet gesucht, um unseren Linux - Server (mit CentOS 5) einzurichten, so dass ein Daemon auf Port 443 hört, der je nach Client - Protokoll die Anfrage an den korrekten internen Port (SSH 22) weiterleitet oder bewegte HTTPS zu einem differentport_.

Es gibt eine Menge Leute im Internet für diese Lösung suchen, aber keine klaren Anweisungen, wie dies zu tun.

Wer Ideen/klare Anweisungen, wie dies zu tun?

Grüße, nidkil

+0

Die meisten Male Port 443 ist auch offen. Wenn Ihr Webserver HTTPS nicht unterstützt, können Sie diesen Port auf 22 in Ihrer Firewall weiterleiten. – krosenvold

+0

stimmt, aber er möchte HTTPS ausführen! – Mikeage

Antwort

3

Eine einfache Lösung für Ihr Problem könnte darin bestehen, Ihrer Box mehrere IP-Adressen zuzuweisen und Ihr SSH an Port 443 auf einer separaten IP-Adresse zu binden. you can usually assign multiple IP addresses to a single adapter, keine zweite Netzwerkkarte hinzufügen. Ansonsten kenne ich keine Out-of-the-Box-Lösungen für das, was Sie tun wollen. Dafür müssten Sie wahrscheinlich einen eigenen Daemon erstellen, was ein wenig schwierig, aber machbar wäre.

+0

Dies ist wahrscheinlich die beste Lösung, wenn er mehrere IPs zur Verfügung hat. – Mikeage

1

Sie könnten eine kleine Webanwendung erstellen, die auf Port 443 hört und eine umgekehrte SSH-Shell mit der IP-Adresse der eingehenden Verbindung unter Verwendung der Authentifizierung mit öffentlichen Schlüsseln aktiviert. Sprich:

  • Sie authentifizieren sich über die Webanwendung; die Web-Anwendung ruft Ihre IP
  • Die Anwendung einen SSH-Tunnel von seiner IP auf Ihre IP beginnt (bei Port 22)
  • Der SSH-Server auf Ihrem Rechner der Tunnel endet und hört auf localhost: 8080
  • Dann Sie Starten Sie eine SSH-Sitzung mit localhost: 8080. Die Befehle in der folgenden interaktiven Sitzung werden zum Remote-Host umgeleitet.
3

Die Firewall-Einschränkungen sind aus einem bestimmten Grund vorhanden. Sie mögen nicht gut sein, aber sie machen Sinn für die Person, die sie implementiert oder veranlasst hat, sie zu implementieren. Ich würde nicht versuchen, die Unternehmensrichtlinie für externe Verbindungen zu verletzen.

Wenn Ihr Bedarf legitim ist, würde ich verlangen, dass der Port oder eine Alternative für die Adressen geöffnet wird, die Sie benötigen. Wenn das nicht funktioniert, wäre vielleicht eine VPN-Lösung akzeptabel.

In dem Fall, wo die Netzwerk-Leute nur wahnsinnig schützend sind, nicht bereit, auf Grund zu reagieren, oder einfach inkompetent, würde ich sicherstellen wollen, dass ich von einem Manager, der bereit ist, für mich zu gehen WENN gehen Es wurde zu einem Problem, bevor ich einen Work-Around implementierte. Alles andere könnte vernünftigerweise dazu führen, dass Ihre Anstellung beendet wird. Sie sprechen von einer Verletzung der Sicherheitsrichtlinien eines Unternehmens.

+0

Täuschen Sie vor, dass er in Thailand oder einem anderen Land ist, das SSH blockiert. Natürlich riskierst du die Geheimpolizei statt nur den Zorn deines Arbeitgebers. Vermutlich müssen SSH ins Innere gifs auch dann;) – krosenvold

+0

Guter Punkt über die Verwendung von SSH, um die Sicherheit zu umgehen. Die meisten Sicherheitsleute mögen es nicht, wenn sie ihre Regeln umgehen, und sie haben normalerweise eine Menge Pull. Soweit jemand den Hafen zu öffnen, denke ich, dass Sie noch nie in einem großen Unternehmen gearbeitet haben, wo die Politik einen guten Grund trumpft? –

0

Wenn Sie Apache auf unserer Centos-Box haben, können Sie mod_proxy verwenden, um Anfragen von einem Port zu einem anderen umzuleiten. Ich benutze diese Anfragen umleiten zu http://webmin.myserver.com-http://myserver.com:10000 (Webmin auf einem unzugänglichen Port läuft)

ServerName webmin.myserver.co.uk 
SSLProxyEngine On 

ProxyRequests Off 
ProxyPass/https://myserver.co.uk:10000/ 
ProxyPassReverse/https://myserver.co.uk:10000/ 

Legen Sie die oben in Ihrer virtuellen Server-Richtlinie, und Sie sind gut zu gehen.Dies funktioniert möglicherweise nicht mit Putty, aber wenn Sie Webmin installieren, hat es ein SSH-Modul, auf das Sie über einen Browser zugreifen können.

6

sslh: http://www.rutschle.net/tech/sslh.shtml

Ich bin mit 1,5; Ich habe 1.6b noch nicht ausprobiert, und 1.3 hat ein Problem damit, Zombies herum zu lassen.

Führen Sie es auf Port 443; Wenn keine Daten mit 2 Sekunden gesendet werden (Standardeinstellung), wird an ssh weitergeleitet. Andernfalls leitet es an Ihren Webserver weiter.

Ich betreibe es auf meiner Website (http://mikeage.net) - Sie können netcat in, wenn Sie beide Anmeldebanner sehen möchten.

In meinem Fall hat es auch einen anderen Zweck. Wir haben eine noch restriktivere Konfiguration als Sie: Alle Ports sind blockiert, aber 80 und 443 können über einen Proxy erreicht werden. Ich kann SSH benutzen ein Programm wie korkenzieher (oder kitt nativ), um meine SSH-Verbindung über den Firmen-Proxy zu meinem Server: 443, wo nach einer kurzen Verzögerung, mein SSH-Server antwortet mit seinem Login-Banner Proxy. Ich kann auch Webseiten über den Standard HTTPS bedienen (und tatsächlich).

+0

Schön. +1. Siehe Kommentare von http://stackoverflow.com/questions/487737. 1 down, 14 to go (1 pro Tag) – VonC