Bash scripting e immissione della password

4

Sto scrivendo uno script bash e chiedo all'utente la sua password. Questa password viene fornita per un account locale o di dominio per interrogare un MS SQL Server (usando sqsh e freetds).

Quanto è sicuro il codice qui sotto?

echo "What is the password for $mssqlu ?: "
read -s mssqlp

Suppongo che non ci siano hashing coinvolti qui, e la password chiara esiste da qualche parte nella memoria.

È vulnerabile a qualsiasi tipo di attacco? Può essere rivelato? Grazie per il tuo aiuto

    
posta Florian Bidabe 25.06.2015 - 02:56
fonte

1 risposta

5

Ottima domanda.

In bash, quando si utilizza "read" per ottenere una password dall'input standard, la password viene ovviamente memorizzata in testo normale nella memoria. Tuttavia, questo è spesso il caso delle password in generale - qualcosa deve essere memorizzato in testo normale per usarle. Se fosse crittografato, dovrebbe esistere anche un modo per decodificarlo, quindi la crittografia non sarebbe molto utile.

In questo caso, posso offrire due serie di best practice:

1) Utilizzare un altro metodo di autenticazione della password inserita dall'utente. Questo potrebbe assumere la forma di:

  • Per i database MS-SQL, utilizzando una connessione "attendibile" per l'autenticazione anziché una password inserita dall'utente. Altri database offrono una varietà di sistemi per l'accesso senza password.
  • Unisci il computer al dominio e accedi come utente con le credenziali di Active Directory. Quindi fare in modo che lo script utilizzi questa autenticazione per accedere a sql. MS pubblica sqlcmd e un driver ODBC per Linux che ho usato con successo.

2) Se è necessario utilizzare una password fornita dallo standard input, disattivare l'eco nello script bash. Ovviamente, gli script di bash devono ancora essere controllati per possibili exploit. Se il tuo script genera un file che è scrivibile da qualsiasi utente, ovviamente quel file potrebbe essere modificato per inviare la password a un utente malintenzionato.

Potresti prendere in considerazione l'uso di un file passphrase che è codificato in modo che solo un singolo utente possa accedervi. Quindi basta leggere la password da questo file. Questo è probabilmente comparabile in sicurezza all'utilizzo della password di stdin. Mentre l'utente non digita costantemente la password, quindi alcune vulnerabilità (ad esempio keylogger) non esisterebbero; aumenterebbe la facilità di un attacco per afferrare una password se qualcuno avesse appena violato il server.

    
risposta data 25.06.2015 - 04:17
fonte

Leggi altre domande sui tag