Sicurezza di ssh nidificato

3

Prima di tutto, per ssh annidato , intendo il seguente modo di usare ssh:

ssh usera@Bob 'ssh usera@C'

supponiamo che A voglia accedere al server C , ma per qualche ragione C non è direttamente disponibile a A (ad esempio C dietro un determinato FW o NAT o giù di lì). Fortunatamente, l'amico di A , Bob ha una connessione diretta a C e A può connettersi anche a Bob . Quindi, per accedere a C , A farebbe effettivamente la cosa summenzionata.

La mia domanda qui è, Bob sarà in grado di vedere la comunicazione tra A e C in chiaro , dato che Bob è l'amministratore del suo server. La mia ipotesi è sì, ma non sono così sicuro sulla mia comprensione degli interni SSH.

Il motivo per cui penso che Bob possa vedere il testo in chiaro è: Esistono due chiavi di sessione: kab e kac , rispettivamente per il comando outer e nested ssh . kac è sconosciuto a Bob idealmente. (È vero quando Bob è l'utente root?). Ad ogni modo, quando arriva un messaggio su Bob, deve essere decrittografato con kab , quindi crittografato con kac e inviato a C . Quindi tra la crittografia e la decrittazione, il testo in chiaro è da qualche parte nella memoria. Bob dovrebbe essere in grado di vederlo, non in modo diretto però.

Qualche informazione?

    
posta qweruiop 26.06.2015 - 18:35
fonte

2 risposte

4

Sì, come ha spiegato deviantfan, se lo fai in questo modo, Bob può vedere il tuo traffico.

Un modo più sicuro per raggiungere il tuo obiettivo è utilizzare le funzionalità proxy integrate in SSH. Il modo più semplice, se hai OpenSSH 7.3 o versioni successive:

ssh -J usera@Bob usera@C

Per le versioni precedenti delle versioni di OpenSSH, se hai almeno OpenSSH 5.4 puoi invece aggiungere quanto segue al tuo ~ / .ssh / config:

Host C
ProxyCommand ssh -W %h:%p usera@Bob

Con versioni OpenSSH ancora più vecchie, dovrai invece usare netcat (supponendo che Bob lo abbia installato):

Host C
ProxyCommand ssh usera@Bob nc %h %p

Ora, quando ci si connette a C, ssh si connetterà per la prima volta a Bob e avvierà un proxy (o quello integrato o Bob's netcat). La connessione dal computer locale a C viene quindi inoltrata tramite questo proxy. La connessione è end-to-end crittografata con il client ssh locale da una parte e il server remoto C dall'altra. La chiave di sessione è negoziata tra te e C; Bob non lo vede mai.

Ovviamente, Bob come il tuo proxy può ancora impersonare C; ma finché hai verificato in precedenza l'impronta digitale della chiave host di C, puoi facilmente rilevarlo nel solito modo.

    
risposta data 26.06.2015 - 21:10
fonte
3

Sì, Bob può vedere la comunicazione se lo desidera.

Essenzialmente, la seconda chiamata di ssh viene eseguita in una shell sul computer di Bob, simile a qualcuno seduto lì e che digita sulla tastiera reale. Il computer di deve di Bob averlo (e ogni input) non criptato. E l'output del target torna a Bob, viene "visualizzato" nella shell di usera, e per questo il server SSH di Bob lo rimanda a A.

Bob non ha nemmeno bisogno di preoccuparsi dell'accesso alla memoria grezza o qualcosa del genere. Esistono programmi (come script ) per registrare ogni input e output di una shell in file. Bob può cambiare la shell di login di ogni utente registrato sul suo computer, quindi ...

    
risposta data 26.06.2015 - 19:09
fonte

Leggi altre domande sui tag