Können Sie klarer beschreiben, was Sie versuchen und warum? Das "Warum" wird sehr helfen. Was sind die Kunden? Was ist das Protokoll?
Es gibt viele Möglichkeiten, dies basierend auf den Protokollen und Datenströmen zu tun.
Betrachten Sie die Injektion von pf, iptables oder ebtables, siehe "ssh blacklist" für Beispiele. Informationen zur allgemeinen Umleitung finden Sie in LVS, HAproxy und anderen Load Balancern.
Ein alter Trick ist ein "Weck" -System. Dies funktioniert hervorragend für SSH oder andere verschlüsselte Protokolle, die die Ermittlung der Quelldomäne CPU-intensiver machen (Decodieren des Headers). Dadurch wird nur ein einziger Port ausgeführt, wenn niemand verbunden ist.
- SSH in einen einzelnen offenen Port (keine Terminalunterstützung erforderlich)
- Melden Sie sich als userX beim System an (vorzugsweise mit Schlüsseln). Dadurch wird ein Skript ausgeführt, das eine andere Instanz des Servers an Port XXXXX startet und dem Client mit der neuen Portnummer antwortet
- Die Nachricht "Port XXXXX ist offen" wird zurück an den Client übertragen, die erste SSH-Sitzung wird geschlossen
- Der Client oder die Client-App stellt dann über den jetzt geöffneten Port XXXXX erneut eine Verbindung her
- Wenn der Client die Verbindung trennt, wird die alternative Instanz an Port XXXXX geschlossen und / oder Port XXXXX geschlossen.
Bestimmte Ports können basierend auf Schlüsseln / Benutzern, Reverse Lookup, Nachrichtenübermittlung usw. zugewiesen werden. Einige lassen die Instanzen einfach laufen und öffnen / schließen sie mithilfe der pf / iptables-Firewall-Injektion. Andere erweitern dies mithilfe einer Firewall-Regel, um den Dienststart auszulösen, und es wird kein anfänglicher SSH (oder ein anderer Dienst) ausgeführt, bis ein angegebener Port mit einem bestimmten Pakettyp gepingt wird. Ich bevorzuge eine "kürzlich übereinstimmende" benutzerdefinierte Firewall-Regel, um Streupakete zu blockieren und die Serverinstanzen für eine weniger dynamische Interaktion mit der Firewall zu stoppen / zu starten.
Diese Idee kann mit jedem Protokoll und Dienst funktionieren, der codiert oder skriptgesteuert werden kann.
Lesematerial für TCP / IP-Netzwerke: Alles, was von W. Richard Stevens geschrieben oder empfohlen wurde.
http://www.kohala.com/start/
Verwenden Sie SSH-Tunnel nicht als Notlösung in der Entwicklung. Diese könnten alles erreichen, was Sie ohne Code benötigen. Was ist deine App? Sollte die Kommunikation nicht sicher sein? Wie wollen Sie Skript-Kiddie-Hacker auf die schwarze Liste setzen? Das ist mehr, was Sie schreiben und debuggen müssen. Sie sollten Ihren Code ohnehin unterteilen, also entwickeln Sie alles andere mithilfe von SSH als Transport, Portweiterleitung, Verschlüsselung, Verwendungsprotokollierung, Blacklisting usw. Wenn alles andere erledigt ist, schreiben Sie Ihren eigenen Netzwerkprotokollmechanismus, um SSH zu ersetzen. Für Benutzer auf dem Gateway-SSH-Server ist kein Terminalzugriff erforderlich, um Tunnel verwenden zu können.