OpenSSH-server: ci sono implicazioni di sicurezza e / o valore di / per 'TCPKeepAlive sì'

4

Ho letto un certo numero di rapporti misti sulle implicazioni sulla sicurezza e / o sul valore di consentire TCPKeepAlive yes in /etc/ssh/sshd_config (per OpenSSH-server). Qualsiasi cosa definitiva sulle migliori pratiche di sicurezza riguardanti TCPKeepAlive e / o ClientAliveInterval , ecc. Sarebbe accolta con favore.

Da quello che ho raccolto sembra non esserci alcun rischio reale e / o immediato di avere TCPKeepAlive yes ( fonte ) al di là della possibilità che qualcuno possa spoofare un pacchetto TCP per interrompere il timeout di una sessione SSH. Cioè

You will note in the next section that a spoofing issue exists with keep alive

( fonte - sotto il titolo "Utenti SSH ")

L'ho letto nel senso che il rischio che abbia effettivamente un serio impatto sulla sicurezza della sessione SSH è nullo.

Tuttavia, un utente GitHub note:

You're quite right. It seems that there's no actual exploitable vulnerability with TCPKeepAlive -- yet

Il che implica che è solo una questione di tempo prima che possa diventare sfruttabile?!

Un'altra fonte suggerisce che c'è un piccolo valore in TCPKeepAlive yes , fintanto che ClientAliveInterval è configurato opportunamente.

Un post sul blog (dal 2013) intitolato "Indurire il tuo SSH server "(sotto l'intestazione" Prevenire gli zombie ") suggerisce:

To avoid infinitely hanging sessions, this should be left on.

Anche se non menzionando ClientAliveInterval , suppongo che forse potrebbe non essere rilevante al 100% ora?

Si noti che nonostante il mio googling significativo, tutte le mie fonti, tranne il post del blog 2013, provengono dal thread GitHub a cui mi sono collegato. Oltre a quelle poche menzioni. Non trovo nulla di sostanziale in un modo o nell'altro. Altre fonti, in particolare autorevoli, saranno accolte calorosamente.

    
posta Jeremy Davis 29.05.2018 - 05:06
fonte

1 risposta

5

Ci sono tre modi principali per mantenere viva una sessione SSH:

  • TCPKeepAlive - Viene periodicamente inviato un ACK vuoto, impedendo la chiusura della connessione TCP dovuta all'inattività. Questo funziona interamente a livello di TCP. Può essere falsificato solo con un attacco MITM o con un avversario estremamente avanzato per il dirottamento TCP.

  • ServerAliveInterval - Un messaggio viene inviato periodicamente dal client al server utilizzando il protocollo SSH. Il vantaggio principale di utilizzare questo è che un firewall non può dire se si tratta di un keepalive o di un messaggio legittimo. Un keepalive TCP d'altra parte può essere bloccato da un firewall.

  • ClientAliveInterval - Idem ma inviati dal server al client.

C'è qualche rischio per un utente malintenzionato che costringe una connessione SSH a rimanere aperta? Non proprio. La chiave di sessione effimera viene periodicamente modificata per impedire che una sessione SSH di lunga durata diventi un obiettivo più succoso. Pertanto, non riesco a pensare a nessuna ragione significativa per cui l'invio di keepalive attraverso il livello TCP sarebbe considerato un problema di sicurezza. Tuttavia, non c'è ancora alcun motivo per usarlo. Puoi tranquillamente utilizzare ClientAliveInterval o ServerAliveInterval e disabilitare i keepalive TCP.

    
risposta data 29.05.2018 - 06:45
fonte

Leggi altre domande sui tag