While I was searching online for information about Linux security, the most typical explanation was: Linux is secure, because the root password is required to access the kernel and install new applications - therefore external malicious software can't do any harm as long as the administrator is the only person to know the password.
Hai ragione nel fatto che non è la password a rendere sicuro un sistema, sono gli strumenti e la cultura (ma non deludiamo completamente la password). Più facile è che le persone configurino e amministrino gruppi di utenti, account e privilegi, più è facile renderlo sicuro per un sistema.
Nelle precedenti versioni di Windows (1) , avere un account utente singolo con tutti i privilegi era la norma. Nessuna password, diritti di amministratore completi. Ciò significava che lo zio Joe poteva fare tutto ciò che doveva fare senza preoccuparsi di cose come i privilegi elevati. Significava anche che qualsiasi codice che potesse essere eseguito sotto il suo nome avrebbe avuto il vantaggio sulla macchina. Spetta ai singoli programmi, se così scelgono, implementare i fail-safe e "Sei davvero, davvero sicuro?" - scatole.
Al contrario, Unix / Linux sono stati a lungo sistemi multi-utente di design. Sono costruiti con l'idea che ci saranno diversi ruoli con diversi requisiti di sicurezza:
-
Gli amministratori gestiscono il sistema. Potrebbero aver bisogno di aggiornare il sistema operativo, modificare programmi, aggiungere / rimuovere gruppi e privilegi ... Tutto ciò significa che hanno bisogno di un accesso praticamente illimitato.
-
Gli utenti sono consumatori quotidiani dei servizi di sistema, lo zio Joe dall'alto. Usano il software per scrivere lettere, leggere documenti, navigare sul Web, giocare e così via. possono installare il software in una certa misura, ma solo all'interno della propria sfera di influenza; non possono modificare software o librerie di sistema.
-
I servizi in esecuzione vengono spesso forniti anche dei loro account utente, poiché tendono ad avere esigenze molto limitate e ben definite. MySQL avrà bisogno di alcune directory su cui scrivere, una porta di rete che può aprire e così via, ma non ha bisogno accesso ai documenti di Uncle Joe o alla possibilità di sovrascrivere / modificare software (anche se stesso).
Quindi, anche se un servizio in esecuzione è compromesso (ad esempio, un server HTTP), se non è in esecuzione con i privilegi più elevati, è limitato dalla quantità di danni permanenti che può fare. Questa mentalità di correre con privilegi limitati è ciò che lo rende un sistema più sicuro.
OK, that sounds good. But when a password is the only thing that stands between restricted access and total control of the system, is the system really that secure? By that I mean all kinds of tricks hackers think of to access systems, and particularly to reveal data (passwords).
È come dire che un caveau non è sicuro perché le persone con la combinazione possono entrare.
Ma comunque, tu fai un punto giusto. Diventa root, ottieni l'accesso completo.
Qualsiasi sistema in cui qualcuno ha bisogno di un accesso speciale lascia spazio a quella persona da impersonare. Ecco perché la regola numero uno per qualsiasi sistema protetto da password è di non divulgare la password.
Esistono strategie di mitigazione che è possibile utilizzare per limitare il danno di un account root compromesso, come l'inserimento nella whitelist di specifici intervalli di indirizzi IP, la modifica delle password una volta ogni volta o l'annullamento di alcuni ruoli da elevare a root indipendentemente dalla password.
Non è perfetto. Ma sicuramente supera l'account di amministratore di no-password di Uncle Joe.
(1) Ma non Windows Vista e in seguito fanno anche questa distinzione? Anche prima di Windows Vista, erano disponibili account separati con privilegi separati ma, nella mia esperienza, non usati comunemente.