Bearbeiten von „Ssh knock

Aus UUGRN
Warnung: Du bist nicht angemeldet. Deine IP-Adresse wird bei Bearbeitungen öffentlich sichtbar. Melde dich an oder erstelle ein Benutzerkonto, damit Bearbeitungen deinem Benutzernamen zugeordnet werden. Ein eigenes Benutzerkonto hat eine ganze Reihe von Vorteilen.

Die Bearbeitung kann rückgängig gemacht werden. Bitte prüfe den Vergleich unten, um sicherzustellen, dass du dies tun möchtest, und veröffentliche dann unten deine Änderungen, um die Bearbeitung rückgängig zu machen.

Aktuelle Version Dein Text
Zeile 1: Zeile 1:
Dieser Artikel beschreibt, wie man mit Hilfe von '''[[xinetd]]''' einen '''sshd''' verwalten und absichern kann.  
Dieser Artikel beschreibt wie man mit Hilfe von xinetd einen sshd verwalten und absichern kann.  
Als zusätzliches Bonbon existiert ein wrapper-Script, welches vor dem SSH Verbindungsaufbau einen kurzlebigen Zugangscode abfragt:  
Als zusätzliches Bonbon existiert ein wrapper-Script, welches vor dem SSH Verbindungsaufbau einen kurzlebigen Code abfragt: Wird nach dem Verbindungsaufbau ein falscher Code übermittelt, so wird der sshd für die entsprechende Session gar nicht erst gestartet.
Wird nach dem Verbindungsaufbau ein falscher Code übermittelt, so wird der sshd für die entsprechende Session gar nicht erst gestartet.


Der Aufbau wird für [[FreeBSD]]-Server und [[Linux]]-Clients beschrieben.
Der Aufbau wird für [[FreeBSD]]-Server und [[Linux]]-Clients beschrieben.
== Grundsätzliches ==
Andere Lösungen mit ''SSH mit Portknocking'' basieren in aller  Regel auf der serverseitigen Verwaltung von ''Firewallregeln'' für den SSH-Daemon in Abhängigkeit von zusätzlichen Mechanismen, die das jeweilige Portknocking implementieren.
Der hier beschriebene Ansatz basiert darauf, dass nicht ein permanenter SSH-Daemon läuft sondern dass für jede Client-Verbindung ein neuer (eigener) SSH-Daemon Prozess via xinetd gestartet wird.
Ein so gestarteter SSH-Daemon überlässt die TCP/IP Kommunikation dem xinetd. Wird die Verbindung zum Client beendet, so beendet sich auch der jeweilige SSH-Daemon wieder.
Der initiale Verbindungsaufbau – also noch bevor das eigentliche SSH-Protokoll beginnt – wird hier einerseits durch die Konfiguration des jeweiligen xinetd-Services und zusätzlich noch durch ein Wrapperscript kontrolliert.


== Server ==
== Server ==
Zeile 188: Zeile 179:
</pre>
</pre>


;Randbedingung: Durch '''ControlMaster''' wird nur die '''erste''' SSH-Verbindung tatsächlich neu aufgebaut, also mit TOKEN und allem. Startet man eine weitere ssh-Session mit ''knock.example.com'', so wird diese als zusätzlicher Channel durch die bestehende (erste) ssh-Session mit benutzt. Aus Sicht von '''xinetd''' und sshd kommt dabei '''keine neue''' SSH-Verbindung zustande. Auch aus Sicht eines Angreifers oder Mithörers in der Leitung existiert durch die Verwendung von '''ControlMaster''' nur '''genau eine tcp-Session''' zwischen Client und Server. Bricht diese allerdings dann ab, werden alle anderen SSH-Session ebenfalls beendet.
;Randbedingung: Durch ControlMaster wird nur die '''erste''' SSH-Verbindung tatsächlich neu aufgebaut, also mit TOKEN und allem. Startet man eine weitere ssh-Session mit knock.example.com, so wird diese als zusätzlicher Channel durch die bestehende erste ssh-Session mit benutzt. Aus Sicht von xinetd und sshd kommt dabei keine '''neue''' SSH-Verbindung zustande.
 
;Spuren im Logfile auf einem Proxy-Server: Will man eine SSH-Session über einen HTTPS-Proxy aufbauen jedoch aber verschleiern, so muss der xinetd auf dem Server auf [[Port 443]] (oder einem anderen erlaubten Port für CONNECT auf dem Proxy) laufen.
: Durch die Verwendung des TOKENs kann ein Proxy-Admin, der später das Logfile analysiert nur die Verbindung als solche sehen, nicht allerdings das verwendete TOKEN, denn das wird erst nach dem '''CONNECT''' mit dem Zielserver übertragen und landet daher nicht im regulären Logfile de Proxys.
: Ein '''TCP-Mitschnitt''' (tcpdump, wireshark) könnte das TOKEN und den SSH-Server-Banner allerdings sichtbar machen, denn es wird noch im Klartext übermittelt. Da das TOKEN nur für eine begrenzte Dauer gültig ist, kann es dennoch nicht ohne weiteres missbraucht werden.


; ssh -v: Hier sieht man, wie der SSH-Client anhand der Konfiguration aus ~/.ssh/config für den Host (Alias) ''knock.example.com'' das entsprechende ProxyCommand ausführt:  
; ssh -v: Hier sieht man, wie der SSH-Client anhand der Konfiguration aus ~/.ssh/config für den Host (Alias) ''knock.example.com'' das entsprechende ProxyCommand ausführt:  
Zeile 204: Zeile 191:


== Anwendung ==
== Anwendung ==
* Betrieb eines (versteckten) ssh-Daemons, der nur für bestimmte Quell-Systeme als solcher erkennbar ist und auch nur bei Übermittlung eines (zeitlich) passenden TOKENs für den Quell-Server erkennbar wird.
Betrieb eines (versteckten) ssh-Daemons, der nur für bestimmte Quell-Systeme als solcher erkennbar ist und auch nur bei Übermittlung eines (zeitlich) passenden TOKENs für den Quell-Server erkennbar wird.  
* Vermeidung von Bots-Probes und allgemein DDoS auf den sshd (via xinetd), sofern dieses Konstrukt dazu verwendet wird, um auf Port 22 zu lauschen. Per xinetd(8) lassen sich durch weitere Access-Policies der Zugriff auf den Service insgesamt sehr feingranular regelmentieren (XINETD.CONF(5): ''instances'', ''nice'', ''only_from'', ''no_access'', ''access_times'', ''per_source'', ''cps'', ''max_load'', ''rlimit_*'', ''deny_time'').




[[Kategorie:SSH]]
[[Kategorie:SSH]]
[[Kategorie:Hack]]
[[Kategorie:Hack]]

Bitte kopiere keine Inhalte, die nicht Deine eigenen sind!

Du gibst uns hiermit Deine Zusage, dass
  • Du den Text nicht aus Wikipedia kopiert hast
  • Du den Text selbst verfasst hast
  • oder der Text entweder
    • Allgemeingut (public domain) ist
    • oder der Copyright-Inhaber seine Zustimmung gegeben hat.
Wichtig
  • Benutze keine urheberrechtlich geschützten Werke ohne Erlaubnis des Copyright-Inhabers!
  • Falls dieser Text bereits woanders veröffentlicht wurde, weise bitte auf der 'Diskussion:'-Seite darauf hin.
  • Bitte beachte, dass alle UUGRN-Beiträge automatisch unter der der Creative Commons Lizenz stehen.
  • Falls Du nicht möchtest, dass Deine Arbeit hier von anderen verändert und verbreitet wird, dann drücke nicht auf "Artikel Speichern".

Bitte beantworte die folgende Frage, um diese Seite speichern zu können (weitere Informationen):

Abbrechen Bearbeitungshilfe (wird in einem neuen Fenster geöffnet)