Ho intenzione di buttare giù alcune delle cattive nozioni qui:
1) Linux è più sicuro a causa della minore quota di mercato.
Non nel mercato dei server, dove le macchine pubbliche vengono attaccate tutto il giorno da bot, virus, hacker, ecc.:
http://en.wikipedia.org/wiki/Usage_share_of_operating_systems#Servers
2) Windows è più sicuro nelle versioni recenti.
Almeno a livello di kernel, stai vedendo più rapporti CVE di exploit di esecuzione remota e escalation di privilegi in Windows, più attacchi DoS locali a un ambiente multiutente in Linux, inoltre troverai CVE più critici su Windows (ho avuto un sacco di analisi statistiche da un database CVE ma non riesco a trovare quel post che ho scritto mesi fa, è così frustrante! Google non mi sta aiutando a trovarlo...).
Come puoi vedere Server 2008 ha un molto più alto media ponderata della gravità del CVE:
http://www.cvedetails.com/top-50-product-cvssscore-distribution.php (in più, tutte le vulnerabilità Linux degli 1,2 giorni rispetto agli ultimi 5 anni di sviluppo del 2008!)
Ovviamente esegui qualcosa come Ubuntu che viene fornito con un sacco di software e pre-configurazione in più, sono al capriccio del software in esecuzione su di esso.
La mia opinione sull'argomento:Linux è costruito attorno a molti concetti Unix, 40 anni dello sviluppo del software e delle persone che picchiano a morte queste scatole, è protetto principalmente dalla prova del fuoco di Unix, e questo ha aiutato immensamente, molte lezioni sono state apprese e applicate direttamente a Linux.
Ha qualcosa a che fare con la natura open source di Linux?
Molto ha a che fare con questo, almeno con la velocità con cui aumenta il volume di CVE sono affrontati. Ciò consente anche di trovare e risolvere molti problemi minori (principalmente a causa della sua popolarità , perché open-source senza popolarità significa pochi occhi sul codice e poco interesse a correggerlo).
La sua architettura sottostante (e la differenza rispetto a Windows)?
Essere costruiti attorno a un ambiente multiutente aiuta moltissimo, questi sistemi sono stati creati per avere tonnellate di persone contemporaneamente e nessun utente dovrebbe essere in grado di interromperne un altro.
Motivi validi:
- Una base utenti più piccola in Linux rende Linux desktop un obiettivo meno attraente. Se solo lo 0,1% dei computer esegue Ubuntu 10.04 e il tuo cavallo di troia funziona solo su quella specifica versione di Linux, probabilmente non si catturerà mai. Se il tuo cavallo di troia funziona solo su Windows XP, puoi comunque attaccare circa il 25% del mercato.
- Spesso (non sempre) una base di utenti più informata e più attenta alla sicurezza. Detto questo, sistemi operativi come Ubuntu hanno reso Linux più accessibile e puoi trovare persone che ci fanno cose stupide.
Inoltre, ragioni alquanto discutibili si potrebbe sostenere che Linux ha spesso un design più sicuro (che potrebbe non essere più così vero dato che altri sistemi operativi hanno recuperato).
- Buona separazione dei privilegi e controlli di accesso con
su
/sudo
, che in realtà non esistono nelle versioni precedenti di Windows. - Supponiamo che tu abbia bisogno di un nuovo software (editor di immagini, LaTeX o Python, ecc.) che non sia preinstallato nel tuo sistema operativo. In Linux, il 99% delle volte utilizzi il tuo gestore di pacchetti per scaricare e installare automaticamente software con firma crittografica convalidato da una catena di fiducia. Lo utilizzerà automaticamente anche per gli aggiornamenti (quindi è facile mantenere aggiornato tutto il software a livello di sistema, correggendo rapidamente i buchi di sicurezza). In Windows, la maggior parte delle volte quando ho bisogno di installare qualcosa di nuovo, devo cercarlo sul web, scaricarlo e installarlo da qualche sito Web http casuale che potrebbe caricare il loro software con spyware/bloatware/cavalli di troia o potrei essere soggetto a un attacco MITM e scaricare/installare invece alcuni virus e ogni applicazione ha il proprio (diverso) programma di installazione/aggiornamento automatico. (Detto questo, trovo che le persone si fidino troppo dei PPA, degli script casuali su Internet o dell'aggiunta di estensioni del browser come principali vulnerabilità di sicurezza di Linux / Windows).
ssh
. La tua connessione standard a un'altra macchina remota tramite ssh è molto conveniente e potente, che è di gran lunga superiore a qualsiasi autenticazione remota di Windows in termini di sicurezza. Ogni volta che ti connetti a una macchina ssh, controlli crittograficamente che la chiave host dell'altra macchina non sia cambiata rispetto alla chiave utilizzata in precedenza; puoi utilizzare la tua chiave privata ssh per rispondere a un token di sfida senza consentire agli intercettatori di utilizzare attacchi di replay o ai keylogger di vedere la tua password. Quindi tutto il traffico viene inviato crittografato tra le due macchine; inoltre è banale installarlo su una macchina Linux.- Una varietà di strumenti di sicurezza Linux gratuiti:SELinux, AppArmor, wireshark, iptables (o un wrapper come ufw), ssh, cron, top (davvero htop), fail2ban, tripwire, GPG, OpenSSL, md5sum/sha256sum, ecc. È anche molto facile impostare script, scansionare un file di registro e inviare un avviso tramite e-mail e fare tutto dalla riga di comando, ecc. Concesso che la maggior parte (tutti?) Di questi probabilmente hanno equivalenti di Windows, ma tendono a non essere liberi o cambiare molto tra le versioni. L'impostazione di un cronjob è fondamentalmente per automatizzare alcune attività è praticamente la stessa degli ultimi 20 anni; mentre l'impostazione di un'attività automatizzata in Windows avrà cambiamenti radicali tra i sistemi operativi.
Motivi non validi:
- Legge di Linus:"con abbastanza bulbi oculari, tutti i bug sono superficiali" quindi l'open source è più sicuro del software closed-source. Non trovo questo argomento particolarmente convincente in quanto è stato scoperto che esistevano falle di sicurezza significative per mesi/anni in materiale open source (ad esempio, Debian OpenSSL). È anche peggio in quanto gli aggressori possono leggere la fonte, cercare bug (o persino provare a introdurre bug mascherati nella codebase). Tuttavia, non credo nemmeno che il software di provenienza ravvicinata sia intrinsecamente più sicuro:le persone commettono ancora errori e puoi facilmente pagare qualcuno per introdurre buchi in una base di codice proprietaria (e con meno bulbi oculari potrebbe essere impossibile notarlo); chiaramente bug di sicurezza e backdoor spesso esistono in software di provenienza chiusa e vengono anch'essi attaccati. (Considero questo più o meno un pareggio.)
Sospetto che la situazione di virus/minacce informatiche su Linux sia praticamente ciò che sarebbe "normale" e che la situazione di virus/minacce informatiche su Windows sia un fenomeno statistico, più un "Re Drago" che un Cigno Nero.
Windows ha un insieme insolitamente barocco di API, Win32, API native NT, ancora e ancora e ancora, e ci sono stati alcuni problemi tra loro, come Win32 che è fondamentalmente un'interfaccia ASCII mentre NT native è Unicode. Questo ha almeno facilitato il malware. Come esempio di dettaglio rococò, pensa ai nomi dei file dei dispositivi magici, AUX, CON, LP che funzionano in qualsiasi directory.
L'API nativa di Windows non è mai stata realmente documentata e questa mancanza di documentazione si riflette su altre cose, ad esempio:quale set di estensioni dei nomi di file è per i file eseguibili? Perché il nome del file determina se un file è eseguibile o meno? Il worm NIMDA non si è diffuso tramite qualche problema con i file ".eml", ad esempio. Nessuno sapeva che i file .eml fossero eseguibili in quel momento.
Windows non ha una tradizione di separazione dei privilegi, anzi ha una tradizione di singolo utente root. Molte applicazioni lo presumono ancora. Windows non ha una tradizione di separazione dei dati dagli eseguibili. Ti fornisco le macro di Word incorporate nel file .doc come esempio di dati e istruzioni non separati che storicamente hanno causato problemi di virus.
Linux ha almeno tradizioni opposte a tutti i punti precedenti:controlli di accesso discrezionali moderatamente efficaci, abbastanza semplici da essere applicati quotidianamente, ma abbastanza completi da tenere a bada i tradizionali virus di tipo file. L'interfaccia della chiamata di sistema è solo moderatamente complicata e poiché il codice sorgente è liberamente disponibile, esistono più fonti di documentazione. Gli eseguibili in genere risiedono nelle directory "bin" e i dati risiedono in un'altra. Ogni eseguibile ha il proprio file di configurazione, piuttosto che condividere il vecchio registro. I file di dati risiedono in directory per utente e quasi mai contengono il tipo di macro onnipotenti che contengono i file di dati di Word, ecc.
Inoltre, "linux" non esiste realmente come "Windows". Esistono centinaia di distribuzioni, ognuna delle quali personalizza quasi ogni aspetto dei dettagli di basso livello. Diverse versioni del compilatore, diversi kernel Linux, alcuni completamente modulari, altri senza moduli. Questo vale praticamente per ogni aspetto software di un sistema, dal kernel ai client di posta elettronica. Laddove gli utenti "Windows" utilizzano in gran parte i client di posta elettronica di Outlook, gli utenti Linux utilizzano una serie di centinaia di client diversi, ciascuno in decine di versioni. Non esiste una base di utenti per una data versione di un dato software:la base di utenti non è solo fratturata, è in frantumi. Ciò rende molto più difficile trovare una vulnerabilità su un numero adeguato di host o scrivere un exploit che funzioni su un numero sufficientemente elevato di istanze di software.