Il modo migliore per memorizzare le password per uno strumento LAN?

0

Sto creando un'app in Python per Linux come front-end del router (per automatizzare alcune attività).

Ma ho bisogno di accedere al router prima di poter fare qualsiasi operazione su di esso e dal momento che utilizza un http-auth ho bisogno di inviarlo la password di testo chiaro e quindi la password di testo chiaro deve essere memorizzata sul sistema .

Qual è il modo migliore per farlo? Voglio dire, se ho solo il codice della password, chiunque può consultare il codice sorgente per ottenerli. Dovrei conservarlo in un database? O dovrei crittografarlo e quindi usare una password principale per sbloccarla (non preferita)?

    
posta Grim Reaper 26.12.2013 - 13:49
fonte

3 risposte

1

Dipende da chi si vuole proteggere da quella password. Dato che lo trasmetterai in chiaro sulla rete, concedi fiducia agli amministratori locatl.

Se ciò è corretto, è possibile inserire tale password in un file di dati limitato agli utenti root locali tramite l'ACL del SO. In questo modo, chiunque possa accedervi sarà comunque in grado di accedere alla password.

    
risposta data 26.12.2013 - 14:03
fonte
1

What is the best way to do this ?

Come sempre, dipende. Il modo più sicuro per farlo consiste nell'utilizzare uno strumento specializzato che gestirà la crittografia della password, archiviandola in un vault della password e che consentirebbe anche a questa password di essere modificata automaticamente su una pianificazione dal vault della password indipendentemente dallo script . Se non si dispone di uno strumento di verifica password, allora potrebbe essere un progetto più grande di quello che è necessario in questo momento. Il meccanismo effettivo utilizzato da questi strumenti per eseguire la crittografia e gestire la chiave consiste nell'utilizzare una chiave casuale e incorporare alcune informazioni sull'hardware nella chiave, inoltre il classificatore consente anche un blocco tramite l'indirizzo IP, in modo che solo il server possa recuperare la password.

I mean, if I just hard code the password, anyone can simple look at the source code to obtain them.

Sì e ci sono altri problemi anche con questo approccio. Questo script sarà impegnato in un repository di codice sorgente? Se è così, allora c'è anche la password. Potrebbe anche diventare un problema aggiornare questo script ogni volta che è necessario modificare la password.

Should I store it in a database ?

Questo non è molto meglio che tenerlo nello script eccetto che ora almeno non andrà al repository del codice sorgente. Potresti fare affidamento sulla crittografia a livello di database per evitare di preoccuparti delle chiavi di crittografia, ma gli amministratori di database avrebbero comunque accesso.

Or should I encrypt it and then use a master password to unlock it (Not preferred) ?

Questo non è diverso dal semplice chiedere la password effettiva in fase di runtime eccetto che sarebbe molto meno lavoro.

    
risposta data 26.12.2013 - 15:06
fonte
1

Ci sono momenti in cui non è praticabile la possibilità di non codificare le password in chiaro, specialmente se il progetto è di piccole dimensioni e non si ha accesso a un vault della password. Quando ti trovi di fronte a una situazione come questa, è meglio affrontare il problema dal punto di vista della limitazione dell'esposizione.

Uno degli approcci che puoi usare è permesso, assumendo che ti fidi delle persone che usano lo script. Dato che è su Linux, puoi modificare il file in 700, il che significa che solo quel particolare utente può leggere, scrivere o eseguire il file (presumendo che gli altri utenti non abbiano i permessi di root, ovviamente).

Tuttavia, questo approccio può essere complicato se l'amministratore si trasforma in un ladro, o qualcuno riesce a escalationare i propri privilegi. In tali casi, è meglio aumentare la difficoltà di trovare tale password. Un buon modo per farlo potrebbe essere usare Python Freeze o Pyinstaller per creare un binario fuori dal tuo script. Qualcuno invertire la sceneggiatura può ancora ottenere la password, ma è uno sforzo molto più difficile, e si spera che scoraggi qualcuno che cerca il frutto basso e appesantito (e potenzialmente ti protegge dagli amministratori canaglia). Vorrei poter entrare nei dettagli su come ciò potrebbe essere fatto, ma ho visto solo persone che lo fanno; Non ho mai effettivamente usato questi strumenti da solo. Ma questo ti dà la possibilità di creare un binario distribuibile che puoi usare, evitando così di dover gestire una credenziale dappertutto.

    
risposta data 27.12.2013 - 05:26
fonte

Leggi altre domande sui tag