Qual è il modo meno sicuro per memorizzare una password utilizzata da uno script?


13

Ho uno script Bash che si autentica automaticamente con un servizio usando il mio nome utente e password. Le credenziali sono attualmente archiviate come testo normale all'interno dello script.

Quali precauzioni dovrei prendere per archiviare in modo più sicuro queste credenziali pur consentendo l'accesso allo script?

Punti di chiarimento:

  • Comprendo che, se disponibili, dovrebbero essere utilizzati altri metodi di autenticazione. Voglio ancora sapere cosa fare nel caso in cui l'autenticazione con password sia l'unica opzione.
  • Non memorizzare affatto la password non è una risposta accettabile qui. Sto chiedendo il caso in cui lo script deve avere accesso incustodito alla password.

2
non memorizzare la parte passcode delle credenziali, forse?
Thomas Ward

Non funzionerebbe per accedere al portachiavi GNOME o qualcosa di simile?
Firefeather,

Forse se potessi memorizzarlo come hash crittografico (come SHA-1), sarebbe bello.
Anonimo

ROT13 lo oscurerebbe, ma NON lo fisserebbe in alcun modo.
Anonimo

@Anonimo Se la password è memorizzata come hash crittografico, come si consiglia di recuperarla?
ændrük,

Risposte:


8

Che tipo di servizio? Alcuni servizi hanno altri metodi per l'autenticazione, ad esempio chiavi SSH per SSH in combinazione con l'agente SSH.

Conserverei la password separata dallo script e mi assicurerei che tutti i componenti del percorso abbiano le autorizzazioni corrette impostate. Ad esempio, assicurarsi che nel percorso /path/to/file, /, /pathe /path/tosono di proprietà di un utente di fiducia ( root) e che questi non sono scrivibili da qualcuno che non ha il permesso di vedere i tuoi file. Infine, le autorizzazioni consigliate per filesono 600 o 400.

Quella filepotrebbe essere la seguente:

PASSWORD='something that you cannot remember'

Nel tuo script, utilizza il codice seguente per importare la variabile:

. /path/to/file

Per quanto riguarda il tuo script, assicurati che non contenga buchi che potrebbero consentire agli autori di attacchi di eseguire codice nel contesto dello script (ad esempio un ambiente non controllato che può avere una $PATHvariabile arbitraria impostata o un uso non valido di altri file (ad esempio, reperimento di un file scrivibile in tutto il mondo) .

Per quanto riguarda l'effettiva protezione della tua password, non puoi. Deve essere disponibile in qualche modo all'altro servizio. In alternativa, è possibile crittografare il file / script contenente la password utilizzando opensslo gpgquindi è necessario immettere una password prima di sbloccare le credenziali. Ciò è particolarmente utile se la password del servizio è difficile da ricordare.


14

Invece di codificare la password nel file, archiviare la password in un file separato e proteggere il file ( chmod 700o chmod 500) in modo che solo gli utenti autorizzati possano accedervi.

Recupera la password cat /dir/to/file/with/.passwordinvece di leggere il file e archiviarne il contenuto in una variabile.


Alcuni strumenti hanno anche un'opzione per leggere la password direttamente da un file proprio per questo motivo, come l' --passphrase-fileopzione di gpg .

2
... e rendilo un file .dot (/dir/to/file/with/.password)
knb

2
chmod 400per i file (sola lettura). Naturalmente, devi proteggere le directory principali (700 o 500, o anche 100 se sei paranoico). Si noti che 400 (o 500 per le directory) sono sufficienti, altre modalità (100) possono essere considerate come sicurezza attraverso l'oscurità , proprio come nascondere il file mettendo un punto davanti al nome.
Lekensteyn,

1

So che questa è una vecchia domanda, ma ho affrontato questo problema simile e ho usato il portachiavi di Ubuntu per risolverlo. Ecco una soluzione su Ubuntu 18.04LTS Apri il terminale Annota keyring set {{service}} {{username}} per esempio se lo stai usando per la registrazione della password della scuola:

keyring set school mohamed

Ti registrerà per una password inserire la password. Ora la password che hai inserito è memorizzata nel portachiavi Ubuntu.

Per ottenere questa password scrivere nel terminale:

keyring get school mohamed

per usarlo nel contesto di uno script:

password=$(keyring get school mohamed)

Ora la password contatta la password precedentemente immessa.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.