Come gestire le password di root per un numero di box Linux embedded?

3

Diciamo che creo un dispositivo che contiene una scatola Linux incorporata (ad esempio, un Raspberry Pi). Dopo l'avvio, avvia l'applicazione principale progettata per fornire l'interfaccia utente per il dispositivo.

Il modo più semplice per produrne di più è semplicemente impostare tutto su un dispositivo specifico, impostare gli utenti, i privilegi, configurare il processo di avvio, installare il mio software e quindi creare un'immagine della scheda SD. L'installazione di quell'immagine su altre schede SD mi consente di ottenere i cloni identici del dispositivo originale, che ora posso spedire.

Tuttavia, questo può portare a una grave vulnerabilità. Dato che tutti gli utenti avranno esattamente la stessa password di root, basta un utente a capire (avendo accesso ai dispositivi fisici conta, per quanto ne so, per una sicurezza completamente compromessa), e che un utente potrebbe usare questo conoscenza per compromettere i dispositivi di altri utenti (il dispositivo dovrebbe essere utilizzato mentre è connesso a una rete)

Come si può mitigare questo rischio?

Il software deve anche conoscere la password di root (in quanto deve configurare alcuni registri hardware per le periferiche), quindi significa che devo compilare l'eseguibile per ciascuno dei dispositivi fisici separatamente con password di root separate e creare gli utenti su ciascun dispositivo separatamente, quindi riescono a copiare il software corretto sulla macchina corretta? Questo sembra un incubo per la gestione.

    
posta vsz 14.04.2016 - 11:03
fonte

2 risposte

2

Considera di costruire la tua applicazione in modo tale che l'accesso all'hardware e altro le azioni con privilegi elevati vengono eseguite da un servizio in esecuzione come utente privilegiato (tenta di evitare l'uso di root) e ha un'interfaccia stabile e ben definita mentre tutte le altre logiche vengono eseguite senza questi privilegi. Ciò ridurrà la superficie di attacco e non è necessario memorizzare le password non hash sul dispositivo.

Un altro modo semplificato potrebbe essere quello di creare un binario minimalista che gestisca l'interazione hardware che è possibile chiamare dall'applicazione. Questo binario potrebbe avere il permesso setuid per il set di root come @ paj28 già suggerito. Tuttavia questo avrà un impatto sulle prestazioni dell'intero processo poiché chiamare un binario esterno crea un sovraccarico.

Come @SmokeDispenser ha già affermato che è buona pratica consolidare l'account root disabilitando l'accesso locale e remoto e generando casualmente password individuali per ogni singolo dispositivo. Questo può essere fatto usando uno script di installazione.

    
risposta data 14.04.2016 - 12:38
fonte
2

Esistono due approcci principali:

impone all'utente di scegliere una password

Il dispositivo viene spedito senza password. Il processo di installazione obbliga l'utente a scegliere una password. Ciò potrebbe significare che il dispositivo non è protetto fino a quando l'utente non lo fa, ma probabilmente non è un grosso problema.

Spedisci con una password casuale

Dopo aver clonato l'immagine su una scheda SD, aggiornare la password di root a un valore casuale. Devi comunicare la password all'utente, che spesso viene eseguita stampandola su un adesivo e allegando questo all'interno della scatola.

Hai detto che il software deve conoscere la password di root. Questo può essere evitato; ad esempio potresti rendere setuid-root il tuo software.

    
risposta data 14.04.2016 - 13:26
fonte

Leggi altre domande sui tag