## page was renamed from GuidoIodicex/Prove0
#LANGUAGE it
<
>
<>
<>
= Introduzione =
La presente guida intende offrire una panoramica delle questioni legate al malware su GNU/Linux ed orientare l'utente sulla utilità o meno di installare un antivirus sul proprio sistema.
= Tipi di malware =
* '''Virus''': è un programma malevolo che usa un altro programma come veicolo di diffusione e replicazione, esattamente come fanno i virus biologici che usano le cellule per riprodursi. Un virus ha quindi bisogno di un altro programma da infettare.
* '''Trojan''': (cavallo di Troia) è un programma che fa credere all'utente di essere utile, mascherandosi da qualcos'altro. Ad esempio alcuni trojan appaiono inizialmente come dei codec per la riproduzione di contenuti multimediali.
* '''Worm''': (verme) è un programma malevolo che può riprodursi senza bisogno di farsi veicolare da un altro programma.
* '''Toolkit/Rootkit''': può essere malevolo o no. Con lo stesso termine infatti si indicano sia programmi utili (come le librerie GTK) sia programmi malevoli. In questo secondo caso ci si riferisce a librerie che vanno a sostituirsi o affiancarsi a quelle di sistema o di programmi per procurare danni, nascondendosi in modo da sfuggire all'attenzione dell'utente. Quando un toolkit coinvolge il kernel del sistema operativo (ad esempio come finto driver), si parla di rootkit. Di norma l'uso di questo malware è quello di installare un backdoor attraverso cui l'attaccante può entrare nel sistema colpito e prelevarne i dati o addirittura prenderne il controllo.
* '''Wabbit''': è un programma malevolo che non usa i servizi di rete o altri file o programmi per riprodursi. Un esempio sono le '''fork bomb'''.
##che cosa usa? --- di norma non usa niente, se non l'inconsapevolezza dell'utente.
* '''Altri malware''': altri tipi di malware si distinguono più per lo scopo che per le modalità di azione e diffusione, di solito riconducibili alle categoria precedenti. Tra questi si ricordano gli '''spyware''' (codice spia), gli '''adware''' (virus il cui fine è mostrare pubblicità indesiderate con popup, icone sulla '''Scrivania''' ecc.), i '''keylogger''' (programmi che registrano l'attività dell'utente, soprattutto al fine di scoprire le password digitate e i numeri di carta di credito), i '''ransomware''' (malware in grado di criptare e/o bloccare parti del sistema, solitamente al fine di chiedere un riscatto all'utente), '''virus miner''' (programmi che si installando all'insaputa dell'utente e che sfruttano le risorse di sistema per operazioni di mining di [[https://it.wikipedia.org/wiki/Criptovaluta|criptovalute]], provocando un notevole calo di prestazioni del sistema infettato). Inoltre la diffusione di formati di file che possono contenere codice anche se non sono programmi veri e propri (ad esempio i formati documenti che possono contenere macro o le pagine web che possono contenere javascript) ha portato alla nascita di '''macrovirus'''.
= Come avvengono le infezioni =
Non è sufficiente che il malware entri a contatto con il sistema per avviarsi, ma è necessario che entri in esecuzione. In base a questa banale considerazione molti antivirus mettono i file infetti in quarantena, ossia in una cartella controllata dove non possono più agire.<
>
Quando il malware entra in contatto con il sistema deve presentarsi uno dei seguenti casi affinché esso possa entrare in esecuzione:
* un'azione volontaria dell'utente mette in esecuzione il malware, questo è il caso dei trojan e di molti worm;
* il malware entra in esecuzione anche in mancanza di una azione volontaria, in tal caso è stata sfruttata una vulnerabilità.
Una vulnerabilità è una falla di un programma che produce un comportamento non previsto dal programmatore o considerato (a torto) non pericoloso.
= I permessi =
I sistemi operativi di tipo Unix hanno una rigida e complessa gestione dei permessi. Ogni utente, e quindi ogni programma eseguito da tale utente, può fare con un file solo ciò che è consentito in base ai permessi che egli possiede. Si consulti la guida del comando [[AmministrazioneSistema/Sudo|sudo]] per approfondire la logica dei permessi.
Questo implica alcune conseguenze:
* i programmi utente sono separati da quelli di amministrazione;
* i programmi utente possono agire solo sulla '''Home''' di quell'utente, non sui file di amministratore né su quelli di altri utenti;
* i programmi per essere eseguiti devono avere lo speciale attributo di eseguibili.
In base a ciò, un malware che agisce a livello utente non può creare danni al sistema, ma può al limite cancellare o infettare solo i file appartenenti a quel determinato utente.<
>
Di norma nessun sistema di tipo Unix installa i programmi (neppure i programmi utente) nella directory '''Home''' dell'utente. Ciò, unito alla suddetta gestione dei permessi, mette al riparo il sistema dall'infezione da parte dei tradizionali virus che non trovano eseguibili a cui "attaccarsi". I worm non possono agire perché per farlo devono avere i permessi di esecuzione. I rootkit non possono installarsi autonomamente in quanto caricare un modulo/driver nel kernel richiede i permessi di amministrazione, a meno di vulnerabilità del sistema. Infatti una vulnerabilità grave può permettere al malware di superare tali restrizioni e acquisire i permessi di amministratore.
= Vantaggi del software libero/open source =
Un software libero/open source, e quindi GNU/Linux, ha la caratteristica di avere il codice sorgente liberamente consultabile e modificabile. Questo apparentemente potrebbe rendere meno sicuro il sistema. In teoria, se tutti conoscono il codice sorgente, chiunque può scoprirne le vulnerabilità e quindi sfruttarle con fini fraudolenti.<
>
Nella pratica, però, si realizza l'esatto opposto: proprio perché tutti possono scoprire facilmente le vulnerabilità, esse possono venire tempestivamente corrette. Molte vulnerabilità vengono infatti corrette ancora prima che possano essere sfruttate a danno del sistema.
{{{#!wiki note
Per i motivi esposti navigare sul Web con un [[InternetRete/Navigazione|browser]] open source è più sicuro che navigare con uno proprietario e usare una suite per l'ufficio open source è più sicuro che usarne una proprietaria.}}}
= Prevenzione =
Sono stati adottati vari meccanismi preventivi per rafforzare la sicurezza del sistema come:
* L'uso di chiavi di autenticazione per il software e i [[Repository|repository]] che assicurano la provenienza originale e sicura degli stessi;
* La necessità, quando si esegue un programma nella directory corrente, di anteporre il suo percorso `./` in modo tale che un programma che abbia lo stesso nome di un comando comunemente usato, non possa essere per sbaglio eseguito al posto di tale comando (questa semplice precauzione ha stroncato la diffusione di worm come '''ls''');
* Ulteriori rafforzamenti del meccanismo dei permessi come [[http://en.wikipedia.org/wiki/Selinux|SELinux]] (sviluppato dalle forze armate statunitensi) e [[Sicurezza/AppArmor|AppArmor]] (sviluppato da Novell e presente in '''Ubuntu'''). Tali sistemi creano i cosiddetti "contesti": ad esempio, una pagina in formato `.html` creata nella '''Home''' dell'utente, anche se trasferita nella directory di '''Apache''' `/var/www` non funzionerà in quanto nata in un contesto differente; un programma presente nella directory utente non verrà eseguito se trasferito in una directory di sistema come `/usr/bin/`.
<>
= Malware nei sistemi Unix =
Per comprendere quanto i sistemi Unix siano sicuri è utile consultare alcune fonti:
* uno dei programmi più noti, apprezzati e premiati nella lotta al malware è [[Sicurezza/RootkitHunter|RootkitHunter]]. Nel [[http://www.chkrootkit.org/|sito ufficiale]] del progetto, vengono elencati solo una decina di malware (sia rootkit che worm) in oltre 10 anni di sviluppo del programma. Alcuni di questi sono worm ormai desueti come il citato ls, altri sono rootkit solo per alcuni sistemi Unix che quindi non coinvolgono gli altri sistemi della stessa famiglia (ad esempio un malware per Solaris non può agire su GNU/Linux o *BSD), altri ancora si riferiscono a determinate versioni del kernel di tali sistemi (infatti una volta corretta la vulnerabilità il malware è diventato innocuo). Sfogliando il [[http://www.chkrootkit.org/README|changelog del programma]] si nota che i malware aggiunti annualmente per i sistemi Unix supportati dal programma sono dell'ordine di qualche unità;
* la [[https://help.ubuntu.com/community/Linuxvirus|pagina sui virus per Linux]] della documentazione internazionale di '''Ubuntu''' (non aggiornata), nella quale si illustrano i pochi malware conosciuti per Linux, la maggior parte dei quali nei fatti risulta innocua (perché, per esempio, necessità dei permessi di amministratore).
Nella realtà il concetto di virus è praticamente sconosciuto nei sistemi di tipo Unix essendo i pochi finora scoperti non in grado di diffondersi efficacemente, perché necessiterebbero di entrare fraudolentemente in possesso dei permessi di amministratore.
{{{#!wiki note
È interessante sapere che [[http://www.openbsd.org/|OpenBSD]], un sistema di tipo Unix, ha avuto solo due falle di sicurezza remote nei primi 10 anni di sviluppo.}}}
= Virus di Windows =
I virus di Windows sono programmi scritti per un altro sistema operativo. Normalmente non possono agire su GNU/Linux (si consulti la [[#nomifile|sezione seguente]] per conoscere le eccezioni a tale regola). Pertanto di solito non ci si deve preoccupare se un file infetto viene a contatto con il sistema. Anche aprire i file `.doc` non è pericoloso perché [[Ufficio/LibreOffice|LibreOffice]] non soffre delle stesse vulnerabilità dei concorrenti programmi proprietari.
<>
= Antivirus su GNU/Linux =
Per quanto detto finora, di norma non vi è alcun bisogno di antivirus su un sistema desktop GNU/Linux. Infatti gli antivirus per GNU/Linux sono in realtà antivirus contro i malware di Windows. Tuttavia in alcune situazioni un antivirus è consigliato, ossia quando:
* il proprio sistema è un server di posta a cui si collegano client Windows; in tal caso per proteggere questi ultimi si consiglia l'installazione sul server di '''[[Sicurezza/Clamav|ClamAv]]''';
* si condividono e scambiano file con utenti Windows e non si vogliono procurare infezioni a tali utenti; l'alternativa è utilizzare formati di scambio dati che non possano trasportare malware o che abbiano un rischio ridotto;
* si condividono con utenti Windows dei file tramite '''Samba''', ftp o altro sistema: valgono le stesse considerazioni del punto precedente;
* si ha il dual-boot sul sistema ma non un antivirus su Windows, l'antivirus è scaduto o troppo datato oppure si deve usare un antivirus per ripulire la partizione dove risiede Windows senza avviarlo; in ogni caso è preferibile aggiornare l'antivirus di Windows;
* si usano spesso '''[[Virtualizzazione/Wine|Wine]]''' e relativi programmi per Windows. Wine può infatti eseguire alcuni virus che possono potenzialmente danneggiare lo stesso '''Wine''' e la propria cartella '''Home'''.
= Precauzioni da parte dell'utente =
La sicurezza di un sistema dipende non solo dalla sua robustezza, ma sopratutto dai comportamenti ponderati dell'utente. Infatti nessun sistema è sicuro se l'utente compie azioni che lo mettono a rischio. Di seguito alcuni utili consigli:
* Eseguire regolarmente gli aggiornamenti di sicurezza del sistema operativo (in Ubuntu è possibile accettarli in maniera predefinita tramite lo strumento '''[[AmministrazioneSistema/Aggiornamenti|Aggiornamenti software]]'''). Infatti Ubuntu (come Debian) ha una gestione molto efficiente delle problematiche relative alle sicurezza, in quanto vengono rilasciate delle ''patch'' appena vengono individuate delle falle. __Questa è la principale precauzione che mette al riparo dai malware__.
* Per le movivazioni di cui al punto precedente, non usare rilasci di Ubuntu o distribuzioni per le quali sia scaduto il supporto di sicurezza.
* In generale, evitare di utilizzare versioni non stabili di software, limitando quindi versioni ''alpha'' o ''beta'' per i soli fini di sviluppo, preferibilmente in ambienti protetti (macchine dedicate, sistemi virtuali, container ecc.). Questo per dare il tempo necessario a tester e manutentori di individuare e correggere falle di sicurezza (dagli ordinari bug alla presenza di codice malevolo inserito fraudolentemente).
* __Prestare sempre molta attenzione all'attendibilità del software installato__:
* come regola generale, è bene cercare di utilizzare prevalentemente pacchetti disponibili nei [[Repository#Repository_ufficiali|repository ufficiali]];
* in caso di installazione di pacchetti distribuiti da terze parti e/o l'aggiunta di [[Repository#Repository_non_ufficiali|repository esterni]], verificare sempre chi sia l'autore del software (ad esempio, se su uno store sono presenti due versioni di un programma, preferire quella riconducibile al progetto ufficiale);
* preferire i repository che possiedano una chiave di autenticazione GPG; se disponibile, controllare che la [[Installazione/SHA256Sum|chiave di sicurezza]] corrisponda a quella dichiarata sul sito del programma o del file che si è scaricato;
* come ulteriore consiglio pratico, ricordare che __non__ sono sempre garanzia di sicurezza: il numero di download effettuati su '''!SourceForge''', il numero di fork su '''!GitHub''', la presenza di un pacchetto su piattaforme di distribuzione quali '''Snapcraft''' o '''!FlatHub'''.
* Non accedere al sistema come '''root''' e, se non indispensabile, non attivare affatto questo utente. Nel caso si decida comunque di attivarlo, evitare di usare programmi che interagiscono con la rete (per navigare sul web, scaricare posta ecc.). In questo modo si rende più difficile ai cracker aprire le difese del sistema.
* Procedere con cautela quando si è in possesso dei [[AmministrazioneSistema/PrivilegiDiAmministrazione|permessi di amministratore]] (tramite `sudo`, `su`, `gksudo`, `sudoedit`, `kdesu` ecc.), evitando di eseguire programmi di cui non si conosce l'affidabilità.
* Non installare programmi né dare [[AmministrazioneSistema/PermessiFile|permessi]] di esecuzione ad un file o eseguirlo tramite il comando '''sh''' se non si è certi della sua provenienza e della sua affidabilità.
* Consultare [[Sicurezza/Firewall|questa guida]] sui firewall per scoprire se si ha bisogno di configurare '''netfilter'''.
* In caso di utilizzo di '''[[Virtualizzazione/Wine|Wine]]''':
* non eseguirlo mai come utente root. In tal caso si lascerebbe l'accesso alle directory di sistema ad eventuali malware;
* evitare di usare '''Internet Explorer''' tramite '''!Ies4Linux''', a meno che non sia assolutamente necessario per verificare il funzionamento di proprie pagine web; in tal caso comunque preferire la visualizzazione di pagine locali, oppure usare il servizio [[https://netrenderer.com/|IE NetRender]].
* Utilizzare tendenzialmente ed il più possibile programmi open source, meglio se nativi del sistema (in particolar modo per la [[InternetRete/Navigazione#Browser_per_navigare|navigazione web]]). In ogni caso tenere sempre a mente che l'utilizzo di software libero e open source __non__ garantisce in sé la protezione dai malware.
* Mantenersi informati e avere buon senso: di solito le maggiori criticità vengono rese note dai canali di comunicazione ufficiali dei progetti e/o sui siti specializzati. Infine, applicare i consigli precedenti evitando di avere comportamenti eccessivi e/o non necessari (es.: non occorre affrettarsi a installare l'ultima versione di Firefox dal sito di Mozilla poiché, se contiene correzioni significative, verrà inclusa tra gli aggiornamenti della distribuzione in breve tempo).
= Sicurezza e GNU/Linux =
Nonostante i sistemi GNU/Linux e in generale i sistemi di tipo Unix siano in genere abbastanza sicuri con le impostazioni di default, in rete sono presenti numerose guide per aumentare la sicurezza dei sistemi GNU/Linux.<
>
Ecco alcuni dei principali motivi:
* GNU/Linux è usato in modo massiccio sui server: questo richiede forti misure di sicurezza per evitare di infettare client Windows o anche solo per evitare che un qualsiasi problema di sicurezza (non necessariamente un malware) possa rendere il sistema non disponibile anche per pochi minuti o compromettere le informazioni in esso contenute; si pensi a proposito ai server di una banca e ai danni economici conseguenti;
* molti programmatori su GNU/Linux sono specializzati nello scovare ogni vulnerabilità e correggerla prima che venga scoperta da utenti malintenzionati. Infatti spesso più che scrivere un buon programma è importante scoprirne una falla e correggerla (è il caso delle minacce «[[https://it.wikipedia.org/wiki/0-day|zero day]]»).
* c'è una generale tendenza a voler mantenere la buona fama di GNU/Linux e dei sistemi di tipo Unix in materia di sicurezza e le aziende che producono o supportano tali sistemi hanno quindi una attenzione particolare a questo tema;
* su un sistema girano molti programmi: spesso i problemi di sicurezza sono più legati a questi programmi che al sistema in sé, anche se GNU/Linux offre una solida base per evitare gran parte dei problemi.
= Falsi miti =
Alcuni [[https://www.intezer.com/blog/cloud-security/2020-set-record-for-new-linux-malware-families/|recenti rapporti di sicurezza]] (anni 2020-22) hanno evidenziato un generale aumento dei malware indirizzati a sistemi GNU/Linux. Tuttavia i concetti descritti in precedenza rendono abbastanza intuibile che, almeno limitatamente ai sistemi desktop, queste previsioni sono pessimistiche. Infatti le caratteristiche dei sistemi unix-like, unitamente all'adozione di "buone abitudini" da parte degli utenti, come descritto in precedenza, sono più che sufficienti a mettersi al riparo dai problemi di sicurezza legati ai malware, almeno nella stragrande maggioranza dei casi.<
>
Infine, in base alle esperienze pluridecennali di utilizzo di GNU/Linux, ci sono da considerare alcune valutazioni generali:
* '''Non è vero che GNU/Linux non è diffuso''': è installato nella stragrande maggioranza dei server (che gestiscono siti web, email, servizi cloud ecc.), nei principali super-computer, in vari macchinari e tecnologie destinate alla ricerca scientifica (compresa l'[[https://it.wikipedia.org/wiki/Stazione_spaziale_internazionale|ISS]]), in impianti industriali ecc. È inoltre presente nella maggior parte dei dispositivi connessi ad Internet (router, NAS, dispositivi IoT ecc.; senza considerare altri sistemi, che utilizzano il kernel Linux, Android in primis, che sono presenti su smartphone, tablet, mediacenter, TV, automobili, ecc.). Pertanto uno o più malware davvero efficaci su Linux potrebbero potenzialmente bloccare le attività del mondo intero.
* '''GNU/Linux è più diffuso nei sistemi desktop più di quanto comunemente si pensi''': prova ne sono il rilascio di driver per GNU/Linux da parte dei principali produttori di hardware (Intel, Nvidia, HP, ecc.) e di specifiche versioni di alcuni dei programmi proprietari più diffusi (ad esempio Google Chrome, Microsoft Edge, Skype, Teams, !TeamViewer ecc.).
* '''Altri sistemi unix-like sono già largamente diffusi''': da moltissimi anni è diffuso in ambito desktop macOS. In tempi più recenti si è aggiunto Chrome OS (basato su GNU/Linux). Per questi sistemi il malware dedicato risulta quasi inesistente (alcuni annunci clamorosi del passato, rivolti a Mac Os X, si sono in realtà rivelati eccessivi). lo stesso Unix, esistente da più di cinquant'anni, è stato considerato a lungo il sistema più sicuro (si veda la [[#Il_malware_nei_sistemi_Unix|sezione precedente]]).
* '''GNU/Linux è già uno dei bersagli preferiti da cracker''': per i motivi già illustrati, GNU/Linux è da sempre bersaglio di virus. Pertanto la sicurezza di questo sistema è stata già più volte messa alla prova.
* molti programmi open source sono multipiattaforma e sono diffusissimi su sistemi chiusi, ma hanno già dimostrato i vantaggi in termini di sicurezza rispetto alle controparti proprietarie, pur non essendo immuni da vulnerabilità.
= Ulteriori risorse =
* [[https://it.wikipedia.org/wiki/Malware|Pagina enciclopedica]]
* [[https://en.wikipedia.org/wiki/Linux_malware|Linux malware]] (pagina enciclopedica in inglese)
* [[http://wiki.ubuntu-it.org/Sicurezza/RootkitHunter|Rkhunter]]
* [[http://www.linuxsecurity.com/|Linux Security]]
----
CategorySicurezza