Linux è davvero così sicuro, con solo la password di root che nega l'accesso esterno?

29

Mentre cercavo informazioni online sulla sicurezza di Linux, la spiegazione più tipica è stata: Linux è sicuro, perché la password di root è necessaria per accedere al kernel e installare nuove applicazioni - quindi il software dannoso esterno non può fare alcun danno a condizione che l'amministratore sia l'unica persona a conoscere la password.

OK, suona bene. Ma quando una password è l'unica cosa che si frappone tra accesso limitato e controllo totale del sistema, il sistema è davvero sicuro? Con questo intendo tutti i tipi di trucchi che gli hacker pensano di accedere ai sistemi e in particolare di rivelare i dati (password).

    
posta James C 02.08.2014 - 15:57
fonte

5 risposte

32

"Linux" (come qualche aggregato di tutte le installazioni) ha in genere un bel po 'più di una semplice password che nega l'accesso esterno.

Innanzitutto, esiste un set uniforme di controlli di accesso discrezionali: permessi di lettura / scrittura / esecuzione, per utente / gruppo / tutti gli altri. Tradizionalmente, queste autorizzazioni sono effettivamente utilizzate, piuttosto che ignorate e / o aggirate. Inoltre, alcuni sottoinsiemi di installazioni hanno SELinux installati, configurati e funzionanti, in modo da avere uno stile di elenco di controllo accessi a grana fine delle autorizzazioni viene applicata.

In secondo luogo, i server di solito funzionano come utenti speciali designati. I processi NTP vengono eseguiti come utente "ntp". I processi del server Web vengono eseguiti come un utente "http", i database MySQL vengono eseguiti come utente "mysql", ad esempio. I controlli di accesso descretionary descritti sopra quasi sempre impediscono all'ID utente NTP di fare molto di più che leggere alcuni dei file dell'ID utente HTTP.

In terzo luogo, la base installata del software è molto frammentata. C'è un enorme numero di diverse distribuzioni. Dopodiché, non tutte le installazioni eseguono Apache HTTPD o server SMTP sendmail. Ci sono alternative e di solito c'è solo una pluralità di installazioni con un determinato server. Anche le versioni del software sono molto frammentate. Con ogni distribuzione che esegue la compilazione e mantenendo la propria scelta di server Web, è molto, molto raro che due installazioni eseguano un server con gli stessi bug o anche le stesse opzioni di compilazione.

Quindi, ad esempio, qualcuno che insegue una macchina Linux tramite WordPress può indovinare la password di WordPress. Ciò potrebbe portare all'attaccante qualcosa in esecuzione come utente "http" o "apache". Cattivo e orribile come potrebbe essere, non è tutto. L'utente "http" o "apache" quasi certamente non può sovrascrivere moltissimi file, solo HTML e cosa hai nella directory DocumentRoot. Ci vorrebbe un altro salto, indovinando la password "root" per alcune distribuzioni, o sfruttando un'escalation di privilegi locali, per ottenere un qualche tipo di accesso universale ai file.

Questo è in realtà più livelli, ma si noti che è principalmente per cultura e tradizione, ed è anche una sorta di "immunità della mandria". È sempre possibile che una qualche combinazione di exploit fornisca l'accesso root su un determinato sistema, ma questa combinazione probabilmente non si applicherebbe a molti altri sistemi.

    
risposta data 02.08.2014 - 16:51
fonte
15

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.

    
risposta data 02.08.2014 - 18:55
fonte
6

Non esiste un sistema sicuro. Esistono solo sistemi che potrebbero essere sufficientemente sicuri contro specifici tipi di attacchi e gli scenari di attacco potrebbero cambiare rapidamente.

Linux come sistema desktop beneficia della bassa adozione, il che significa che non sei un bersaglio attraente per gli attacchi di massa. Inoltre fornisce una migliore segmentazione tra i limiti di sicurezza, ovvero, di solito non è sufficiente fare semplicemente clic su OK per eseguire qualcosa come amministratore. È inoltre necessario impostare esplicitamente l'autorizzazione dell'eseguibile su un file per renderlo un eseguibile, poiché questa proprietà non deriva dal nome del file come in Windows.

Anche Linux come sistema server può essere sicuro, ma sfortunatamente molti amministratori credono che Linux sia sicuro e non vada in sicurezza. Ad esempio, non mantengono aggiornato quotidianamente tutto il software sul sistema, controllano i file di registro, ecc. Ciò rende spesso Linux un facile bersaglio per attacchi contro applicazioni Web vulnerabili (plugin WordPress, ecc.). E una volta che l'hacker ottiene l'accesso come utente locale in questo modo, di solito è anche facile diventare root. Ci sono state abbastanza vulnerabilità di escalation dei privilegi negli ultimi anni per Linux che possono essere utilizzate.

Quindi Linux può essere reso sufficientemente sicuro per molte attività, ma non credere al clamore e basta installare il sistema e poi dimenticarsene. Inoltre, non credete che Windows sia insicuro - le versioni recenti possono essere rese sufficientemente sicure, ma dovete ancora sapere cosa state facendo e tenere tutto aggiornato.

Come richiesto, alcuni suggerimenti su come mantenere i sistemi (Linux e Windows) sufficientemente sicuri. Potrebbero esserci più risorse online, ma questi sono i punti principali della mia esperienza:

  • Tieni i sistemi il più aggiornati possibile. Ciò significa che si installa solo il software supportato. In Linux è abbastanza spesso per rimanere con il software in arrivo con il sistema e l'esecuzione di aggiornamenti regolari o utilizzare gli aggiornamenti automatici. Su Windows è molto più difficile, perché non si ottiene troppo con il sistema. Il software di cui hai realmente bisogno è disponibile con il proprio programma di aggiornamento ( Adobe Flash , Adobe Acrobat Reader , Oracle Java , iTunes , ecc.), richiede di controllare il sito del fornitore per gli aggiornamenti da solo o non è supportato affatto. Spesso eseguirai il vecchio software che hai acquistato una volta, ma che non è più supportato, perché non vuoi pagare di nuovo solo per ottenere una versione supportata (che potrebbe richiedere anche hardware migliore, ecc.). Naturalmente su Linux è necessario aggiornare qualsiasi software da fonti esterne, ad esempio, qualcosa come i plugin WordPress.
  • Quindi dovresti installare solo il software che ti serve davvero. Meno software hai, più piccola è la superficie di attacco e più facile è rimanere aggiornati. Soprattutto su Windows non è facile, perché spesso si ottiene un pacchetto software con molti altri software. Ad esempio, una volta hai ottenuto il browser Safari insieme a iTunes su Windows. Questo browser non è più supportato su Windows e ora ci sono molti sistemi con un software non sicuro e non supportato.
  • Evita il software con una cattiva sicurezza, se possibile. Questo attualmente significa almeno Java, Flash e Acrobat Reader.
  • Abbassa la superficie d'attacco durante la navigazione. Ciò significa non solo di evitare gli angoli bui di Internet, ma anche di installare alcuni blocchi di annunci per evitare il malvertising, ecc.
  • Su Windows è necessario installare alcuni antivirus.
  • E ovviamente stai attento. Non aprire messaggi sospetti, ecc. Pensaci due volte se esegui attività bancarie online e altre attività sensibili. Forse usi uno speciale sistema Linux dalla chiavetta USB per queste attività.
risposta data 02.08.2014 - 19:22
fonte
2

Penso che questo sito Q / A non sia il posto migliore per discutere l'intera sicurezza di Linux, ma:

  • l'accesso root di solito è limitato agli account locali, che devi prima ottenere
  • l'installazione dell'applicazione è generalmente limitata alle fonti software, non agli installer eseguibili
  • linux ha meno utenti e quegli utenti mantengono migliori pratiche software (principalmente perché l'aggiornamento / aggiornamento è più facile / meno costoso) e quindi sono meno di un obiettivo

La scelta di una buona password di root è ovviamente della massima importanza, specialmente se permetti ad altri utenti di avere accesso ai tuoi sistemi. Alla fine è solo un altro livello di sicurezza.

Altrimenti sarebbe una buona idea non aspettarsi troppo dalla protezione dell'account root .

    
risposta data 02.08.2014 - 16:46
fonte
0

Oltre alle risposte di cui sopra, vorrei sottolineare che Linux PAM rende possibile aggiungere ulteriori controlli di sicurezza per qualsiasi utente (e quindi anche per root). Ad esempio richiedendo un certificato, una chiave USB (come YubiKey ), ecc.

    
risposta data 03.08.2014 - 08:57
fonte

Leggi altre domande sui tag