Come configurare cronjobs che eseguono scp senza salvare il file .pem su una delle macchine

1

Ho la seguente situazione e voglio sapere quali sono le migliori pratiche per fare queste cose senza espormi a problemi di sicurezza

  1. Ho due server che usano entrambi la stessa chiave privata per il login.
  2. Il server 2 copia i file sul server 1 tramite scp (al momento salvataggio la chiave privata sul server 2)

Se un hacker ottiene mai il controllo del server 2 riceverà anche la chiave privata e quindi entrambi i server verranno compromessi.

Sono abbastanza sicuro che questo è uno scenario molto comune per la maggior parte delle configurazioni e voglio sapere quali sono le migliori pratiche in questi casi.

    
posta Eastern Monk 18.03.2014 - 01:05
fonte

2 risposte

2

Le migliori pratiche di cui dovresti occuparti qui sono:

  1. Non riutilizzare le credenziali per più scopi. I due server non devono condividere una chiave privata.
  2. Gestisci i processi automatizzati. Assicurati che il canale SSH che viene aperto dal server2 sia limitato solo alla copia di file e solo all'albero di directory previsto.

Quest'ultimo è importante. Se si sta salvando la chiave privata sul server 2 in modo che possa essere utilizzata tramite cron, è necessario limitare il danno che può accadere sul server 1 se qualcuno prende il controllo del server 2 e tenta di utilizzare quella chiave. Dare loro un accesso interattivo? Molto brutto. Sovrascrivi file arbitrari? Molto brutto. Sovrascrivi i file in un albero, usando un comando predeterminato? Molto meglio. Moderna sshd_config può essere scritta per limitare un accesso specifico. Crea un accesso speciale per questo in modo da poterlo bloccare. Non usare la radice. No, davvero, non usare root.

    
risposta data 18.03.2014 - 01:17
fonte
0

Il salvataggio del file .pem sul server di connessione è davvero l'unica opzione in questa istanza.

Ma puoi mitigare qualsiasi minaccia (a) creando una chiave SSH dedicata che non viene utilizzata per nient'altro che questo processo, e (b) aggiungendo restrizioni nel tuo file authorized_keys in modo che nessuna azione sia consentito sul server remoto diverso da questo processo.

Sei abituato al tuo file authorized_keys con questo aspetto:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQA... user@host

Ma puoi aggiungere parametri per limitare ciò che può accadere durante quella connessione. In questo modo:

command="/bin/myproc -foo" ssh-rsa AAAAB3NzaC1yc2EAAAADAQA... user@host 

Ci sono altre restrizioni che puoi applicare:

from="1.2.3.4",tunnel=0,no-pty,command="/bin/foo" ssh-rsa AAAAB3NzaC1yc2EAAAADAQA... user@host 

Puoi limitare ulteriormente il comportamento limitando le autorizzazioni dell'utente, utilizzando chroot , gruppi di controllo del processo , capacità di elaborazione , ecc.

    
risposta data 18.03.2014 - 04:02
fonte

Leggi altre domande sui tag