Vorrei avere l'account di root in sicurezza anche se il mio utente non privilegiato è compromesso.
Su Ubuntu puoi usare sudo solo per "motivi di sicurezza" di default. Tuttavia non sono sicuro che sia più sicuro del semplice utilizzo dell'accesso su una console in modalità testo. Ci sono troppe cose che possono andare storte se un utente malintenzionato può eseguire il codice come mio normale utente. Ad esempio aggiungendo alias, aggiungendo elementi al mio PATH, impostando i keylogger LD_PRELOAD e X11 solo per citarne alcuni. L'unico vantaggio che posso vedere è il timeout, quindi non dimentico mai di disconnettermi.
Ho gli stessi dubbi su su ma non ha nemmeno un limite di tempo. Alcune operazioni (in particolare il reindirizzamento IO) sono più convenienti con su, ma per quanto riguarda la sicurezza questo sembra essere peggio.
L'accesso su una console in modalità testo sembra essere il più sicuro. Poiché viene avviato da init se un utente malintenzionato può controllare PATH o LD_PRELOAD è già root. Gli eventi di pressione dei tasti non possono essere intercettati dai programmi in esecuzione su X. Non so se i programmi in esecuzione su X possano intercettare [ctrl] + [alt] + [f1] (e aprire una finestra a schermo intero che assomiglia a una console) o è sicuro come [ctrl] + [alt] + [del] su Windows. Oltre a ciò, l'unico problema che vedo è la mancanza di timeout.
Quindi mi sto perdendo qualcosa? Perché i ragazzi di Ubuntu hanno deciso di consentire solo sudo? Cosa posso fare per migliorare la sicurezza di uno qualsiasi dei metodi?
Che dire di SSH? Tradizionalmente il root non può accedere tramite SSH. Ma usare la logica sopra non sarebbe questa la cosa più sicura da fare:
- consentire il root tramite SSH
- passa alla modalità testo
- accedi come root
- ssh sull'altra macchina
- accedi come root?