GNU/Linux >> Linux Esercitazione >  >> Linux

La chiave per un processo Cron in esecuzione automaticamente che viene eseguito su Ssh non dovrebbe avere una passphrase?

Sto leggendo un articolo su Master Linux Now 2013 chiamato OpenSSH: Easy Logins e usa ssh-agent per consentirti di inserire una passphrase per la tua chiave una volta, e quindi puoi connetterti a una macchina remota liberamente senza digitarla di nuovo mentre ssh-agent è in esecuzione.

Il motivo per cui sono stato attratto dall'articolo in primo luogo, oltre a non dover riscrivere la mia password un milione di volte; era così che potevo eseguire backup automatici da / su macchine remote chiamando rsync da cron su una macchina remota al server su ssh;

Ho visto un altro articolo in cui qualcuno ha appena saltato la passphrase in modo che cron possa facilmente usare la chiave per accedere, non mi sembra giusto, ma in pratica va bene farlo? Voglio dire, se qualcuno entrasse in possesso di quel file chiave sarebbe in grado di devastare la macchina per il backup.

Mi sembra che sarebbe più sicuro assicurarsi che l'utente abbia effettuato l'accesso al riavvio e che inserisca la passphrase una volta, quando accedono per far funzionare l'agente e quindi aspettano semplicemente che il lavoro cron venga eseguito con lo schermo bloccato; ma probabilmente mi manca qualcosa qui, ad esempio su quali utenti o tipi di utenti vengono eseguiti i lavori cron.

Risposta accettata:

Limita i comandi che possono essere invocati dalla chiave

Se una chiave SSH verrà utilizzata da qualsiasi tipo di attività automatizzata o non presidiata, dovresti limitare i comandi che è in grado di eseguire su una macchina remota, indipendentemente dalla decisione che prendi su come e dove archiviare la chiave.

Usa qualcosa di simile in ~/.ssh/authorized_keys :

command="/usr/sbin/the-backup-daemon" ssh-rsa AAAAAAAAAAAABBBBBXXXXXX.....

In questo modo, almeno la chiave non dovrebbe essere in grado, come dici tu, di devastare. Può accedere solo a ciò a cui dovrebbe accedere, ecc... Molto probabilmente può comunque causare danni, ma dovrebbe avere un accesso inferiore al pieno al sistema remoto.

Puoi anche limitare gli indirizzi IP a cui è consentito connettersi utilizzando quella chiave e disabilitare una serie di altre funzionalità SSH come il port forwarding per le connessioni in cui viene utilizzata quella chiave:

from="10.1.2.3",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command="/usr/sbin/the-backup-daemon" ssh-rsa AAAAAAAAAAAAXXXXXX.....

Tutto quello che deve andare su una singola riga in ~/.ssh/authorized_keys .

Protezione della chiave

Dipende dal tuo modello di minaccia.

Se temi che la chiave venga rubata mentre è "a freddo", ad esempio, se il computer in cui è stata salvata viene rubato fisicamente, non vorrai salvarla senza una passphrase in quella posizione.

Potresti avviare manualmente una sorta di agente SSH in background dopo l'avvio del server, aggiungere la chiave a tale agente e registrare il $SSH_AUTH_SOCK dell'agente per un uso futuro da parte del lavoro cron, ma onestamente sembra più un problema di quanto non valga la pena. Potresti anche archiviare la chiave non crittografata in un tmpfs filesystem e fare in modo che il lavoro cron vi acceda da lì. In entrambi i casi la chiave risiede solo in memoria (se non si dispone di scambio o scambio crittografato). Ovviamente dovresti chown e chmod il file in modo che solo l'utente di destinazione possa accedervi.

Relazionato:Necessità del built-in 'builtin'?

Poi di nuovo, se sei preoccupato per questo, probabilmente hai già configurato questo computer con un filesystem di root crittografato e lo scambio (ad es. Luks), quindi potresti non doverlo preoccupare in quanto tale.

Se sei preoccupato che la chiave venga rubata mentre è "calda" (caricata in memoria), non c'è molto che puoi fare al riguardo. Se il lavoro cron può accedervi, può farlo anche qualcos'altro che è riuscito ad ottenere lo stesso accesso. È quello, o rinuncia alla comodità dell'esecuzione di lavori non presidiata.

In conclusione, dovresti considerare un server di backup come un sistema molto privilegiato poiché, per necessità, avrà accesso in sola lettura ai filesystem completi di tutti i computer di cui esegue il backup. Il tuo server di backup non dovrebbe essere accessibile da Internet, ad esempio.


Linux
  1. 3 modi per configurare SSH per la privacy

  2. Cron Job per verificare se lo script PHP è in esecuzione, in caso contrario eseguito?

  3. Godaddy cron job setup per l'esecuzione di script php

  4. Qual è la differenza tra il file authorized_keys e il file known_hosts per SSH?

  5. In che modo la chiave Magic SysRq può essere pericolosa per gli utenti Linux?

Come creare una passphrase chiave SSH in Linux

Accesso SSH per cPanel

Come aggiungere la chiave SSH per l'accesso SSH cPanel

I 20 migliori client IRC per Linux che dovresti usare tutti i giorni

Come posso programmare un lavoro cron che viene eseguito ogni 10 secondi in Linux?

Impossibile ottenere l'accesso SSH per un nuovo utente