it-swarm.com.de

SSH-Client: Port knocking (Befehl vor dem Verbinden ausführen)

Wie kann ich eine Port-Knocking-Sequenz (oder einen Befehl, der das Port-Knocking ausführt) ausführen lassen, bevor ich versuche, eine SSH-Verbindung herzustellen?

Vorzugsweise mit dem vorinstallierten Befehl ssh, aber auch bereit zu wechseln, wenn es keine "Standardalternative" gibt.

2
linkD

Laut einer Ubuntu-Hilfeseite zum Port-Knocking können Sie Folgendes tun:

  1. Installieren Sie das Programm knock, indem Sie Sudo apt-get install knockd ausführen.
  2. Erstellen Sie ein Skript in ~/bin, um die SSH-Verbindung für den bestimmten Server herzustellen:

    #!/bin/sh
    knock hostname port1 port2 port3...
    ssh hostname
    
  3. Mach das Skript mit chmod +x ~/bin/whatever ausführbar

  4. Schließen Sie das Terminal, öffnen Sie es erneut und führen Sie whatever aus.
2
Chai T. Rex

Sie können auch versuchen, die Option ProxyCommand zu verwenden.

Hiermit können Sie den Befehl zum Herstellen einer Verbindung zum Server steuern. klingt lästig, aber ich habe noch kein Problem damit gefunden.

Aus den ssh_config Dokumenten:

ProxyCommand
         Specifies the command to use to connect to the server.  The command string extends to the end of the line, and is executed using the user's Shell ‘exec’ directive to avoid a
         lingering Shell process.

         In the command string, any occurrence of ‘%h’ will be substituted by the Host name to connect, ‘%p’ by the port, and ‘%r’ by the remote user name.  The command can be basically
         anything, and should read from its standard input and write to its standard output.  It should eventually connect an sshd(8) server running on some machine, or execute sshd -i
         somewhere.  Host key management will be done using the HostName of the Host being connected (defaulting to the name typed by the user).  Setting the command to “none” disables
         this option entirely.  Note that CheckHostIP is not available for connects with a proxy command.

         This directive is useful in conjunction with nc(1) and its proxy support.  For example, the following directive would connect via an HTTP proxy at 192.0.2.0:

            ProxyCommand /usr/bin/nc -X connect -x 192.0.2.0:8080 %h %p

Beispiel

Nehmen wir an, Sie haben einen Befehl oder ein Skript, das das Klopfen in Ihrem Pfad bewirkt: knock.sh <Host> <port1 port2 ... portX>

Und Sie möchten eine Verbindung zu einem Host herstellen: myhost.net

Sie können Ihrem ~/.ssh/config Folgendes hinzufügen:

Host thehost
    HostName myhost.net              
    ProxyCommand bash -c 'knock.sh %h <port1 port2 ... portX>; nc %h %p'        
  • % h => der Hostname (myhost.net)
  • % p => der Port (22)

Und Sie können eine Verbindung zu Ihrem Host herstellen mit: ssh [email protected]

Sie sollten auch in der Lage sein, die Option direkt über die Befehlszeile zu verwenden: ssh -o ProxyCommand="bash -c 'knock.sh %h <port1 port2 ... portX>; nc %h %p'" [email protected]

Anmerkungen

Wenn das Programm standardmäßig Daten nach stdout schreibt, werden diese ausgeblendet. Wenn Sie sie sehen müssen, fügen Sie nach ssh-v hinzu.

Beachten Sie außerdem, dass ssh das Klopfen ausführen muss, bevor die Verbindung hergestellt werden kann, sodass die Gesamtzeit zum Herstellen der Verbindung länger ist.

Ich habe eine aktuelle Konfiguration mit aktivierter Portweiterleitung und noch kein Problem damit.

3
Moondotrai