Archivio della categoria ‘Ubuntu’

AntiVir Ubuntu Linux

Introduzione

Avira Antivir Personal Edition Classic è un software antivirus concesso sotto licenza freeware dalla casa produttrice Avira GmbH.

  • Offre il supporto in tempo reale per programmi e file. In caso di infezione è possibile effettuare quarantena, disinfezione o rimozione.
  • Offre il supporto continuo a nuovi aggiornamenti che vengono identificati e installati automaticamente.
  • Consente di programmare le scansioni del computer a date o intervalli prestabiliti.
  • La versione gratuita del software è utilizzabile solamente su un sistema ad uso personale.
  • Il programma è scritto in Java quindi è possibile utilizzarlo indifferentemente su qualsiasi distribuzione (caratteristica che va a discapito delle prestazioni del sistema).
In questa guida si è scelto di non attivare il supporto di scansione in tempo reale.

Installazione

Installare Java come illustrato nella giuda contenuta nella documentazione della comunià. Andare sul sito di Antivir e scaricare il pacchetto antivir-workstation-pers.tar.gz all’interno del quale è presente anche un’esaustiva documentazione.

  1. Acquisire i diritti di amministratore e digitare la password di root:
    sudo -s
    
  2. Spostare il pacchetto dalla directory /home alla directory opzionale /opt e spostarsi nella stessa:
    mv antivir-workstation-pers.tar.gz /opt
    cd /opt
    
  3. Scompattare l’archivio e spostarsi nella directory creata:
    tar zxvf antivir*
    cd antivir-workstation-pers-2.1.10-15
    
  4. Lanciare l’installazione (ovviamente a nome_utente sostituire il nome utente in questione):
    chmod a+rwx install
    chown nome_utente install
    ./install
    

A questo punto ha inizio l’installazione del programma. Viene chiesto di prendere visione della licenza. Se si vuole saltare questo passaggio è suffciente premeteil tasto «q».
Di seguito vengono riportate le domande poste e le risposte che permettono un’installazione standard (ovviamente è possibile modificarle in base alle proprie esigenze):

Do you agree to the license terms? [n] y
Enter the path to your key file: [hbedv.key] premere INVIO
Would you like to install the internet update daemon? [n] y
Would you like to create a link in /usr/sbin for avupdater ? [y] premere INVIO
Would you like the internet update daemon to start automatically? [y] premere INVIO

Un discorso a parte merita il suguente punto:

How should AvGuard be installed? [n] premere INVIO
Avguard è una funzionalità che permette di scansionare un file nel momento stesso in cui si effettua un accesso a tale file, la funzione è anche conosciuta col nome di real-time. Su un sistema Microsoft Windows si tratta senza alcun dubbio di un’opzione da abilitare mentre su un sistema Linux è ragionevole affermare che causerebbe un inutile spreco di risorse. Se si vuole abilitare questa opzione si deve installare manualmente il modulo Dazuko, come descritto nella documentazione presente nel pacchetto.

In questo caso non attivare l’opzione Avguard e continuare nel processo:

How should AvGuard be installed? [n] premere INVIO
Would you like to install the GUI (+ SMC support)? [y] premere INVIO
Would you like to configure the AntiVir updater now? [y] premere INVIO
Would you like email notification about updates? [n] premere INVIO
Would you like the updater to log to a custom file? [y] premere INVIO
What will be the log file name with absolute path (it must begin with ‘/’) ? [/var/log/avupdater.log] premere INVIO
How often should AntiVir check for updates? [2] premere INVIO
Does this machine use an HTTP proxy server? [n] premere INVIO
Save configuration settings? [y] premere INVIO
Would you like to apply the new configuration? [y] premere INVIO

Abilitare l’aggiornamiento automatico all’avvio del sistema

Andare in Sistema -> Preferenze -> Sessioni , selezionare «Nuovo», in «Nome» inserire un nome a piacere e infine in «Comando:» digitare «/usr/lib/AntiVir/avupdater start»

A questo punto bisogna inserire l’utente nel gruppo «Antivir» andando su Sistema -> Amministrazione -> Utenti e gruppi , fare clic sul pulsante «Gestione gruppi». Dalla finestra che si apre selezionare «Antivir», cliccare su «Proprietà» e spuntare le caselle «Root» e «Nome utente».

Integrazione con GNOME

Per comodità si può anche aggiungere la voce nel menù. Quindi si deve andare su Sistema -> Preferenze -> Menù Principale , spostarsi nella sezione «Accessori», fare clic su «Nuova voce», in «Tipo» selezionare dal menù a tendina «Applicazione», in «Nome» inserire un nome a piacere e infine in «Comando» digitare «/usr/lib/antivir-gui».

Si potrà così aprire l’antivirus dal menù Applicazioni -> Accessori -> Antivir.

Una volta rieffettuato il login tutto dovrebbe funzionare correttamente.

Rimozione

Per la rimozione bisogna procedere manualmente:

  1. Acquisire i diritti di amministratore e digitare la password di root:
    sudo -s
    
  2. Rimuovere la directory di installazione:
    rm -r /usr/lib/AntiVir
    
  3. Rimuovere i file di configurazione:
    rm /etc/avupdater.conf
    rm /etc/avguard.conf
    
  4. Rimuovere i link in /usr/bin:
    rm /usr/bin/antivir
    rm /usr/bin/antivir-gui
    
  5. Trovare i link in /usr/sbin e /etc/init.d per Avguard e rimuoverli:
    find /etc/init.d /usr/sbin -name "*avguard"
    rm /etc/init.d/avguard
    rm /usr/sbin/avguard
    
    L’operazione al punto 5 non è necessaria in quanto in questa guida non è stato installato Avguard.
  6. Trovare i link in /usr/sbin e /etc/init.d per il demone di aggiornamento e rimuoverlo:
    find /etc/init.d /usr/sbin -name "*avupdater"
    rm /etc/init.d/avupdater
    rm /usr/sbin/avupdater
    

Malware Ubuntu

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.

  • Altri tipi di 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 ci sono spyware (codice spia), gli adware (pubblicità indesiderate che compaiono sulla Scrivania) e i keylogger, programmi che registrano l’attività dell’utente soprattutto al fine di scoprire le password e i numeri di carta di credito digitati. 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 programmi 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 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.

Per i motivi esposti navigare sul Web con un 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 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 SELinux (sviluppato dalle forze armate statunitensi) e 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 è RootkitHunter. Nel 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 changelog del programma si nota che i malware aggiunti annualmente per i sistemi Unix supportati dal programma sono dell’ordine di qualche unità;
  • la pagina sui virus per Linux nella documentazione internazionale di Ubuntu, 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.

  • E’ interessante sapere che OpenBSD, un sistema di tipo Unix, ha avuto solo due falle di sicurezza remote in 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 sezione seguente per conoscere le eccezioni a tale regola). Pertanto non ci si deve preoccupare se un file infetto viene a contatto con il sistema. Anche aprire i file .doc non è pericoloso perché OpenOffice 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 GNU/Linux. Infatti gli antivirus per GNU/Linux sono in realtà antivirus contro il malware di Windows. Tuttavia in alcune situazioni un antivirus è consigliato:

  • 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 ClamAv;
  • si condividono e scambiano file con utenti Windows e si vuole essere cortesi e non 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 usa spesso Wine e 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 robustezza dello stesso, ma dai comportamenti dell’utente. Nessun sistema è sicuro se l’utente compie azioni che lo mettono a rischio. Ecco alcuni utili consigli:

  • non installare programmi né dare permessi di esecuzione ad un file o eseguirlo tramite il comando: sh se non si è certi della sua provenienza e affidabilità;
  • preferire i repository che possiedano una chiave di autenticazione GPG;
  • se disponibile, controllare che l’md5sum corrisponda a quello dichiarato sul sito del programma o file che si è scaricato;
  • navigare preferibilmente con un browser open source aggiornato all’ultima versione disponibile, usare preferibilmente programmi open source e nativi per il sistema, anch’essi aggiornati;
  • evitare di usare Internet Explorer con Wine 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 IE NetRender;
  • non eseguire mai Wine come utente root: in tal caso si lascerebbe all’eventuale malware accesso alle directory di sistema;
  • eseguire sempre gli aggiornamenti di sicurezza del sistema operativo: in Ubuntu è possibile accettarli in maniera predefinita tramite il gestore aggiornamenti; questa è la principale precauzione che mette al riparo dai malware: Ubuntu e Debian hanno infatti una gestione molto efficiente dei problemi di sicurezza;
  • non usare distribuzioni per le quali sia scaduto il supporto di sicurezza;
  • usare cautela quando si è in possesso dei permessi di amministratore (tramite sudo, su, gksudo o kdesu), evitando di eseguire programmi di cui non si conosce l’affidabilità;
  • non entrare nel sistema come root e possibilmente non attivare affatto l’utente root; nel caso sia necessario, evitare comunque di navigare sul web, di scaricare posta e di usare programmi che interagiscono con la rete. Anche se è comunque difficile essere colpiti da malware in queste circostanze, se tutti non applicassero tale precauzione si renderebbe più facile il compito ai cracker aprendo loro le difese del sistema;
I consigli riportati sopra vanno presi come tali. Ad esempio, non è necessario affrettarsi a installare l’ultima versione disponibile di Firefox dal sito di Mozilla: se contiene correzioni di sicurezza significative, verrà segnalata 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; scoprire una falla e correggerla porta immediatamente alla notorietà, spesso più che scrivere un buon programma;
  • 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

Molti produttori di antivirus sostengono che la crescente diffusione sui sistemi desktop di GNU/Linux accrescerà l’insicurezza del sistema, portando alla nascita di malware e in particolare di virus. Se si è compreso quanto detto in precedenza, si è già in grado di rispondere negativamente a tale affermazione: difatti le banali regole già richiamate sono più che sufficienti a mettersi al riparo dai problemi di sicurezza legati al malware.
Inoltre ci sono considerazioni legate all’esperienza che vanno ugualmente tenute in considerazione:

  • non è vero che GNU/Linux non è diffuso: questo sistema è contenuto praticamente in tutti i router e altri dispositivi di rete e pilota circa la metà dei server Internet: un virus per GNU/Linux che fosse davvero efficace potrebbe potenzialmente bloccare l’intero mondo industrializzato;
  • tale sistema è largamente usato anche al di là del settore server: telefonini , mediacenter, automobili, impianti industriali ed è molto più diffuso sui desktop di quanto comunemente si pensi: il rilascio di driver per GNU/Linux da parte dei principali produttori di hardware (si pensi ad Intel, Nvidia, Ati, Hp, Samsung, Dell, etc.) ne è la conferma;
  • un altro sistema di tipo Unix ha già una diffusione larghissima sui desktop: Mac Os X; nonostante ciò il malware su tale sistema in sostanza è quasi inesistente e alcuni annunci clamorosi del passato si sono rivelati eccessivi se non falsi;
  • GNU/Linux è già uno dei bersagli preferiti da cracker per i suddetti motivi; non c’è quindi bisogno di aspettare per verificare la sicurezza di tale sistema;
  • 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à.

Port knocking ubuntu

Introduzione

Le tecniche di Port knocking permettono di aumentare considerevolmente la sicurezza di un server che deve garantire alcuni servizi non permanenti attraverso IP pubblici. Se s’inviano dei pacchetti a delle porte prestabilite sulle quali il demone è in ascolto e nel caso la sequenza sia corretta, questi attiverà un comando che potrà eseguire delle regole di iptables che apriranno le porte necessarie alla connessione. Il vantaggio è notevole in quanto il server potrebbe rimanere sempre in stealth e aprire le porte per un determinato servizio solo in caso di necessità.

Preparativi

È necessario che il firewall iptables sia configurato e attivo.

Installazione

Per utilizzare le tecniche di Port knocking è necessario installare il pacchetto knockd, reperibile dal componente universe dei repository ufficiali.

Configurazione knockd

  1. Per fare in modo che il demone parta all’avvio del computer modificare con un editor di testo e con i privilegi di amministrazione il file /etc/default/knockd in questo modo:
    START_KNOCKD=1
    
  2. Sempre nel medesimo file /etc/default/knockd modificare con un editor di testo e con i privilegi di amministrazione indicando su quale interfaccia il demone dovrà rimanere in ascolto:
    KNOCKD_OPTS="-i eth0"
    

Configurazione knockd.conf per l’apertura di una sola porta

Modificare con un editor di testo e con i privilegi di amministrazione il file /etc/knockd.conf impostandolo come segue:

[options]
        logfile = /var/log/knockd.log

[openSSH]
        sequence    = 7000,8000,9000
        # Questa è la sequenza delle porte sulle quali knockd rimarrà in ascolto. Di default il protocollo è TCP.
        # Quali e quante porte usare è discrezionale.

        # sequence   = 7000:udp,8000:tcp,9000:udp
        # Esempio con sequenza con porte miste udp/tcp

        seq_timeout = 30
        #Tempo di attesa massimo per completare la sequenza.

        command     = /sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
        # Quando la sequenza verrà accettata verrà inserita una regola che aprirà la porta SSH standard.

        tcpflags    = syn
        # Ulteriore filtro, sul tipo di flag del pacchetto inviato alla sequenza di porte.

[closeSSH]
        sequence    = 9000,8000,7000
        # Questa è un'altra sequenza di porte sulle quali knockd rimarrà in ascolto.

        seq_timeout = 30

        command     = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
        # Quando la sequenza verrà accettata verrà inserita una regola che cancellerà quella creata in precedenza.

        tcpflags    = syn
        # Ulteriore filtro, sul tipo di flag del pacchetto inviato alla sequenza di porte.

La variabile «%IP%» passa alla regola di iptables l’indirizzo che ha effettuato la richiesta di connessione, in questo caso verrà permessa l’apertura della porta SSH discriminando solo l’IP validato.

Configurazione per l’apertura di una sola porta, per soli esperti

Un’altra possibilità per usare il demone knockd, utilizzabile SOLO se il firewall sul server è configurato per accettare le connessioni “established” e “related” alla porta che si vuole aprire (es ssh, 22) è di chiudersi subito dietro la porta appena aperta, per evitare che, restando “aperta”, qualche malintenzionato tenti un brute-force al servizio, lanciando uno script anzichè impostando delle regole sul firewall.

Per questo scopo il file /etc/knockd.conf può ad esempio essere modificato, con un editor di testo e con i privilegi di amministrazione, come segue (per spiegazioni sul significato delle opzioni vedere la sezione precedente):

[options]
        logfile = /var/log/knockd.log

[openSSH]
        sequence    = 7000,8000,9000
        seq_timeout = 30
        start_command     = /etc/init.d/ssh start
        tcpflags    = syn

        cmd_timeout = 5
        stop_command     = /etc/init.d/ssh stop
        # Dopo cmd_timeout secondi, viene eseguito il comando stop_command

Ricordiamo ancora che è indispensabile che il firewall sul server accetti le connessioni “related” ed “established” altrimenti la sezione “stop_command”, appena sarà eseguita, vi chiuderà la connessione SSH senza quindi avere possibilità di connettervi al server!

root@server2:~# iptables -nL | grep ":22"

ACCEPT     tcp  --  0.0.0.0/0    0.0.0.0/0           tcp dpt:22
ACCEPT     tcp  --  0.0.0.0/0    0.0.0.0/0           tcp spt:22 dpts:513:65535 state RELATED,ESTABLISHED
ACCEPT     tcp  --  0.0.0.0/0    0.0.0.0/0           tcp spts:1024:65535 dpt:22 flags:0x17/0x02 state RELATED,ESTABLISHED
ACCEPT     udp  --  0.0.0.0/0    0.0.0.0/0           udp dpt:22 state ESTABLISHE
root@server2:~#

Configurazione knockd.conf per l’apertura di più porte

Nell’esempio sopra esposto si è visto come aprire una sola porta. Se l’esigenza fosse però quella di aprirne di più procedere creando più sessioni «[openServizio]» e «[closeServizio]». Questo sistema risulta però scomodo per ovvi motivi, per ottenere lo stesso risultato è consigliato usare degli script.

Modificare con un editor di testo e con i privilegi di amministrazione il file /etc/knockd.conf impostandolo come segue:

[options]
        logfile = /var/log/knockd.log

[open]
        sequence    = 7000,8000,9000
        seq_timeout = 30
        tcpflags    = syn
        command     = sh /etc/open_ports %IP%

[close]
        sequence    = 9000,8000,7000
        seq_timeout = 30
        tcpflags    = syn
        command     = sh /etc/close_ports %IP%

In questo caso invece di eseguire direttamente iptables si richiamano due script passando il parametro «%IP%» alla variabile speciale «$1».

Esempio di script open_ports

Modificare con un editor di testo e con i privilegi di amministrazione il file /etc/open_ports impostandolo come segue:

#! /bin/sh
iptables -A INPUT -s $1 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -s $1 -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -s $1 -p tcp --dport 631 -j ACCEPT
iptables -A INPUT -s $1 -p tcp --dport 5125 -j ACCEPT
iptables -A INPUT -s $1 -p tcp --dport 5126 -j ACCEPT
iptables -A INPUT -s $1 -p tcp --dport 8888 -j ACCEPT
iptables -A INPUT -s $1 -p tcp --dport 10000 -j ACCEPT
iptables -A INPUT -s $1 -p tcp --dport 81 -j ACCEPT

Esempio di script close_ports

Modificare con un editor di testo e con i privilegi di amministrazione il file /etc/close_ports impostandolo come segue:

#! /bin/sh
iptables -D INPUT -s $1 -p tcp --dport 22 -j ACCEPT
iptables -D INPUT -s $1 -p tcp --dport 21 -j ACCEPT
iptables -D INPUT -s $1 -p tcp --dport 631 -j ACCEPT
iptables -D INPUT -s $1 -p tcp --dport 5125 -j ACCEPT
iptables -D INPUT -s $1 -p tcp --dport 5126 -j ACCEPT
iptables -D INPUT -s $1 -p tcp --dport 8888 -j ACCEPT
iptables -D INPUT -s $1 -p tcp --dport 10000 -j ACCEPT
iptables -D INPUT -s $1 -p tcp --dport 81 -j ACCEPT

Client

Di seguito viene mostrato come configurare i client a dipendenza del sistema operativo utilizzato.

Linux

Scaricare i sorgenti da questo indirizzo all’interno della propria Home e scompattarli, entrare nella cartella knock-0.x/src e digitare all’interno di una finestra di terminale il seguente comando:

gcc -o knock knock.c

Sempre da una finestra di terminale digitare il comando per la connessione oppure seguire i passaggi per creare un alias di connessione

Windows

Scaricare da questo indirizzo e digitare all’interno di una finestra DOS il comando per la connessione tralasciando la prima parte «./»

OSX

Consultare la relativa pagina.

Connessione

Per effettuare la connessione digitare il seguente comando all’interno di una finestra di terminale:

./knock -v ip_host port1 port2 port3 port...

Nel caso una porta sia configurata tramite il protocollo UDP, usare la sintassi «port:udp»

Connessione usando un alias (solo linux)

Creare un alias aggiungendo la seguente riga al file .bash_aliases nella home dell’utente e creare successivamente il file “connectServer”:

utente@client:/home/Scrivania/# cd
utente@client:~# vi .bash_aliases

Contenuto del file ~/.bash_aliases:

alias ll='ls -l'
alias la='ls -a'
alias count='ll | wc -l'
alias SshServer='~/connectServer' # Parte da aggiungere

Contenuto del file ~/connectServer

# ip_del_server va sostiuito con l'ip o il dns name del server a cui connettersi (es: 192.168.0.2 oppure www.myserver.com)
telnet ip_del_server 7000
telnet ip_del_server 8000
telnet ip_del_server 9000

# Attesa di due secondi prima di effettuare la connessione: il server potrebbe metterci del tempo prima di avviare il demone SSH!
sleep 2

# Da abilitare se si vuole effettuare la connessione con utente root
# ssh -l root ip_del_server

ssh ip_del_server

Salvare il file connectServer e assicurarsi che sia eseguibile:

utente@client:~# chmod +x connectServer

A questo punto per connettersi al server (dopo aver riaperto una shell, altrimenti il nuovo alias non sarà riconosciuto) basterà digitare quanto segue:

utente@client:~# SshServer

IptablesPatch

Introduzione

È possibile applicare numerose patch a netfileter, utili ad ampliare in modo considerevole le funzionalità di base offerte con il kernel.

Molte di queste modifiche sono attualmente in fase di sviluppo, è sconsigliato applicarle sul proprio kernel predefinito.

Preparativi

Per applicare le patch al proprio kernel sono necessari:

  • i sorgenti del kernel, normalmente presenti nella cartella /usr/src/linux;
  • i sorgenti di iptables, scaricabili dal sito ufficiale, che vanno ricompilati con le patch;
  • i sorgenti di patch’o'matic, di non facilissima reperibilità sul sito ufficiale a causa della documentazione non più aggiornata, ma fortunatamente si possono recuperare da un mirror italiano (ftp://ftp.lt.netfilter.org/pub/netfilter/patch-o-matic-ng/).

Installazione

Scaricare patch’o'matic nella propria Home con i seguenti comandi:

cd
wget ftp://ftp.lt.netfilter.org/pub/netfilter/patch-o-matic-ng/patch-o-matic-ng-20040621.tar.bz2
tar -jxvf patch-o-matic-ng-20040621.tar.bz2
cd patch-o-matic-ng-20040621

A questo punto si può procedere con la procedura standard di P-O-M:

export KERNEL_DIR=/usr/src/kerneldir (Indicare la directory dove si trovano i sorgenti del kernel da patchare)
export IPTABLES_DIR=/usr/src/iptablesdir (dove sono stati scompattati i sorgenti di iptables)
./runme pending

Con queste opzioni applichiamo le patch base, mentre usando

./runme base

o

./runme extra

applicheremo le patch degli altri due gruppi principali. Per ognuna della patch viene fornita una breve spiegazione e chiesto se si vuole aggiungerla nel kernel. Le opzioni disponibili più importanti, una volta che siamo nella procedura di configurazione di P-O-M, sono T e F; T serve per fare un test per verificare che la patch sia applicabile, F serve per forzarne l’applicazione anche se il test fallisce. Una volta completata questa operazione è possibile procedere alla compilazione del kernel secondo le solite procedure. Nel menu di configurazione del kernel tutte le patch aggiuntive sono include nella voce “NetFilter Configuration” del menu Networking options.

Patch più interessanti

match: connlimit

Patch sperimentale che serve per impostare un numero massimo di connessioni tcp da un singolo host IP o da una intera rete. Introduce il match connlimit con le opzioni:

  • –connlimit-above (determina il numero massimo di connessioni ammissibili)
  • –connlimit-mask (imposta il limite allargandolo ad una intera rete, che viene definita tramite i subnet bit, ad esempio 24. Di default si limita al singolo host: 32)

Esempi:

Per limitare l’accesso SSH a due sole connessioni per IP sorgente:

-I INPUT -p tcp --dport 22 --syn -m connlimit --connlimit-above 2 -j DROP

Per impostare massimo 16 connessioni per rete di 256 indirizzi ad un server web dietro il firewall Linux:

-A FORWARD -d 213.215.144.242 -p tcp -m tcp --dport 80 --syn -m connlimit --connlimit-above 16 --connlimit-mask 32 -j DROP

Per impostare a 250 il numero massimo di connessioni contemporanee che possono essere fatte ad un server SMTP:

-A FORWARD -d 213.215.144.242 -p tcp -m tcp --dport 25 --syn -m connlimit --connlimit-above 250 --connlimit-mask 0 -j DROP

Voce nel kernel .config: CONFIG_IP_NF_MATCH_CONNLIMIT Nome modulo: ipt_connlimit

match: psd

E’ possibile identificare dei Port Scan tramite il match psd con le seguenti opzioni:

  • –psd-weight-threshold Peso degli ultimi pacchetti TCP/UDP a porte di destinazione diverse proveniente dallo stesso host.
  • –psd-delay-threshold Ritardo, in centesimi di secondi, per considerare pacchetti a porte diverse come dovuti ad un port scan
  • –psd-lo-ports-weight Peso dei pacchetti destinate a porte privilegiate (<=1024)
  • –psd-hi-ports-weight Peso dei pacchetti destinati a porte non privilegiate.

Un esempio essenziale per aggiungere un log, che può essere verboso, di tutti gli scan (Consigliabile aggiungerlo alla fine della catena di INPUT, con un default DROP finale):

iptables -A INPUT -m psd -j LOG --log-prefix "PORTSCAN: "

Voce nel kernel .config: CONFIG_IP_NF_MATCH_PSD Nome modulo: ipt_psd

Iptables Firewall Ubuntu

Introduzione

Iptables è il firewall, da linea di comando, installato in modo predefinito su Ubuntu. Questo howto mostrerà brevemente come avere un firewall minimale ma robusto.

I concetti di base

Un computer connesso ad internet scambia continuamente dati col resto del mondo.

I dati che dal mondo esterno entrano nel nostro computer possono essere di tipo “buono”, come ad esempio una pagina di un sito che abbiamo richiesto, un amico che ci contatta in chat o un file che stiamo scaricando con un programma di filesharing, e di tipo “cattivo”, come ad esempio un cracker che ci contatta in vari modi e a nostra insaputa per cercare di entrare nel nostro computer.

Il compito del firewall è riconoscere il traffico buono da quello cattivo, e bloccare il traffico cattivo. Per farlo, ha bisogno che siamo noi a dirgli cosa è buono e cosa no, mediante delle regole per fare i controlli sul traffico di dati.

Iptables raggruppa tutti i controlli che può fare sul traffico in entrata, nella cosiddetta Chain INPUT, catena di input. I controlli sul traffico in uscita sono invece raggruppati nella Chain OUTPUT. La Chain FORWARD serve per esempio quando il traffico di dati non è indirizzato a noi ma passa comunque per il nostro computer.

Ognuna di queste catene ha una policy, una politica, cioè un’azione predefinita da eseguire quando tutti gli altri controlli della catena hanno fallito nel riconoscere se il dato era buono o meno.

Come impostare un firewall in modo semplice e veloce

Seguite la guida per Firestarter

Cosa serve per impostare iptables

Il firewall è incluso in Ubuntu ed è attivo all’avvio del sistema senza richiedere alcuna azione da parte dell’utente. Anche iptables è incluso in Ubuntu, e bisogna usarlo da riga di comando per configurare il firewall.

Per usare iptables sono necessari i privilegi di amministrazione.

Limitazione di questa guida

Dal momento che i comandi che trovate in questa guida servono a modificare la configurazione del firewall “a caldo”, senza scrivere niente in file di configurazione, ma caricando direttamente le impostazioni in memoria, al successivo avvio del computer la configurazione fatta non sarà più disponibile.

Per ovviare a questo problema si possono inserire i comandi in uno script da lanciare all’avvio del computer.

Mostrare la configurazione attuale

Per avere sott’occhio in ogni momento la configurazione del firewall, è sufficiente digitare in un terminale:

sudo iptables -L

Per esempio, con Ubuntu appena installato, il firewall è sì attivo, ma non ha ancora una vera configurazione, perciò l’output dovrebbe essere:

Chain INPUT (policy ACCEPT)

target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)

target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)

target     prot opt source               destination

In modo predefinito il firewall lascia passare tutto, come indicano le scritte “policy ACCEPT” e l’assenza di altre regole.

A volte le informazioni mostrate non sono sufficienti; in questi casi basta aggiungere -v oppure -vv al precedente comando. Per esempio:

sudo iptables -vv -L

Impostare le policy di base

Per iniziare, possiamo bloccare tutto il traffico proveniente dal mondo esterno (per poi in seguito consentire solo il traffico che riteniamo buono), impostando una policy che faccia scomparire nel nulla tutti i pacchetti in entrata:

sudo iptables -P INPUT   DROP

In questo momento non possiamo navigare nel web, e più in generale il nostro PC non si accorgerà di qualsiasi dato ci venga spedito da chicchessia. Niente paura, fra qualche riga vedremo come istruire iptables a lasciare passare il traffico a cui siamo interessati.

Un’altra buona policy da impostare è:

sudo iptables -P FORWARD   DROP

Per quanto riguarda il traffico che dal nostro PC esce verso il mondo esterno, possiamo benissimo permetterlo senza preoccuparci troppo; infatti, se MS Windows è succube di programmini malefici che una volta insediatisi in un PC tentano di comunicare (dati sensibili, attacchi informatici, eccetera) col mondo esterno, ciò in GNU/Linux non avviene, o meglio la probabilità che avvenga è del tutto risibile.

Le prime regole utili

Innanzitutto dobbiamo consentire tutto il traffico interno al nostro computer, che passa per l’interfaccia di loopbacklo“. Quindi da terminale digitiamo:

sudo iptables -A INPUT  -i lo -j ACCEPT

La seconda cosa che potremmo voler fare è navigare nel web e più in generale lasciare entrare tutto il traffico che è stato da noi richiesto:

sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

Consentire l’ingresso su porte specifiche

Ci sono situazioni in cui vogliamo permettere a un utente esterno di contattare il nostro PC e di inviarci dati, per esempio se abbiamo installato un server SSH, un server web o un programma che per svolgere il suo compito deve fungere anche da server, ad esempio un programma di filesharing come aMule.

Il nostro server SSH usa la porta 22 (a meno che non lo abbiamo configurato diversamente), quindi dobbiamo dire a iptables di lasciare entrare il traffico tcp sulla porta 22 (il relativo traffico di risposta lo abbiamo già permesso prima), quindi:

sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

In ogni momento possiamo controllare come abbiamo configurato il firewall, come spiegato precedentemente.

Il server web usa la porta 80 (anche qui, a meno di configurazioni personalizzate), quindi consentiamo tutto il traffico che dall’esterno chiede di entrare attraverso la nostra porta 80:

sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT

Il programma di filesharing aMule deve accettare connessioni in entrata per poter funzionare al meglio. Per impostazione predefinita usa le porte 4662(con protocollo tcp) e 4672(con protocollo udp), quindi le seguenti regole indicano al firewall di accettare il traffico in ingresso su quelle due porte:

sudo iptables -A INPUT -p tcp --dport 4662 -j ACCEPT
sudo iptables -A INPUT -p udp --dport 4672 -j ACCEPT

Insomma, il meccanismo dovrebbe essere chiaro.

Risultato finale

Abbiamo così ottenuto un piccolo firewall che lascia uscire tutti i dati dal nostro computer verso l’esterno, e lascia entrare tutti i dati che abbiamo richiesto:

sudo iptables -vv -L

Chain INPUT (policy DROP)
 pkts bytes target     prot opt in     out     source               destination
    0     0 ACCEPT     all  --  lo     any     anywhere             anywhere
    0     0 ACCEPT     all  --  any    any     anywhere             anywhere            state RELATED,ESTABLISHED
    0     0 ACCEPT     tcp  --  any    any     anywhere             anywhere            tcp dpt:ssh
    0     0 ACCEPT     tcp  --  any    any     anywhere             anywhere            tcp dpt:www 

Chain FORWARD (policy DROP)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT)
 pkts bytes target     prot opt in     out     source               destination

Firewall Ubuntu

Introduzione

Buona parte degli utenti che arrivano da Windows sono abituati a dare per scontato l’utilizzo del firewall sul proprio sistema operativo, dove lo si usa indiscriminatamente per “barricare” il sistema e poi consentire via via l’accesso alla rete ai programmi che si vogliono utilizzare. Questo perché c’è sempre la paura che alcuni servizi si attivino all’insaputa dell’utente e facciano in modo che il proprio pc e i suoi dati sensibili possano essere esposti alla rete.

Nei sistemi GNU/Linux il firewall ritorna ad essere lo strumento da utilizzare nel caso l’utente decida d’installare programmi per mettere a disposizione servizi dal suo pc verso altri pc con regole ben precise. Per l’utilizzo desktop così come lo troviamo per predefinito su Ubuntu, escludendo alcuni casi specifici, si può affermare che il firewall praticamente non serva.

In questa guida vengono approfonditi in modo discorsivo alcuni aspetti tecnici, in modo che anche chi non ha profonde conoscenze tecniche possa comprendere la logica di base che porta ad una così grande differenza fra i due sistemi a proposito di sicurezza di rete.

Il traffico di rete

Le principali vie del traffico di rete sono in entrata e uscita. Più nello specifico il traffico è costituito da:

  • Connessioni in entrata
  • Connessioni in uscita

Quello che spesso risulta essere poco chiaro è la differenza fra questi due tipi di connessione.

Per chiarire queste differenze è vivamente consigliata la lettura della guida sulle connessioni, alla fine della quale saranno chiari i concetti di connessioni di INPUT, OUTPUT e FORWARD, fondamentali per capire quale è il compito di un firewall all’interno di una rete.

Su Ubuntu Desktop è necessario il firewall?

Gli applicativi installati in modo predefinito nella versione Desktop di Ubuntu sono pensati essenzialmente per consentire di uscire su internet alla ricerca di informazioni, file o quant’altro, piuttosto che per accettare connessioni in entrata dall’esterno.

I programmi che accettano connessioni dall’esterno sono detti server. Questa categoria comprende per fare alcuni esempi i server web che ospitano le pagine HTML, oppure i server ssh o telnet, i quali consentono l’apertura di una shell su di un pc remoto.
Nella versione Desktop di Ubuntu sono presenti alcuni server, ma volti principalmente all’utilizzo delle periferiche hardware come X (grafica video), cups (stampa), sane (scanner), ecc.., di default chiusi verso connessioni esterne.

Chiunque desideri offrire un servizio di rete ad utenti remoti deve necessariamente installare un apposito programma server sul proprio pc; questo programma si mette in ascolto su una porta, e tutte le connessioni INPUT entranti si connettono a questa porta per entrare in comunicazione con il server.

Non è possibile connettersi da remoto ad un pc se non c’è almeno un server in ascolto su una qualsiasi porta. Per fare un esempio banale è come bussare ad una casa disabitata: nessuno verrà ad aprire.

I server menzionati in precedenza (tipo web, ssh, telnet..) di default non vengono installati, pertanto è perfettamente inutile installare un firewall per regolamentare l’accesso a porte sulle quali nessun programma è in ascolto (come avere un poliziotto in un quartiere deserto).
Anche nel caso in cui si installi esplicitamente un programma server, come ad esempio tutti i programmi p2p è ancora inutile utilizzare un firewall allo scopo di chiudere le porte. Difatti questo avrebbe il solo scopo di impedire ai server installati di accedere alla rete e compiere il loro dovere!

Più avanti all’interno di questa guida verranno valutati i casi in cui il firewall può rendersi necessario anche su di un sistema desktop.

Differenze con Windows

Solitamente gli utenti di Windows sono abituati ad utilizzare un firewall, questo sostanzialmente per due motivi:

  1. Windows tende ad effettuare molte operazioni all’insaputa dell’utente, e di default ha attivi molti server in ascolto sulla rete (connessioni INPUT). Visto che le porte di questi server sono, per ovvi motivi, quelle più attaccate dai bot automatici su internet, molti utenti cercano un minimo di sicurezza impedendo l’accesso dall’esterno a questi server che non è possibile “disattivare” o “disinstallare”.
  2. Non solo Windows agisce come server all’insaputa dell’utente, ma spesso si connette automaticamente ad internet per eseguire operazioni poco chiare. Inoltre molti virus o spyware cercano automaticamente di connettersi all’esterno per eseguire i loro loschi compiti. Per questi motivi gli utenti di Windows sono soliti tenere sotto controllo anche le connessioni in uscita (OUTPUT), visto che la natura closed-source del loro sistema operativo e la sua naturale tendenza ad essere infettato da tutto e tutti lo rendono privo delle necessarie garanzie di trasparenza su cui fare affidamento.

Nel primo caso spesso il firewall integrato nella maggior parte dei router è sufficiente a bloccare il traffico in entrata.
Mentre nel secondo caso per tenere a bada le connessioni “indesiderate” in uscita, risulta più agevole l’utilizzo di un firewall installato sul sistema operativo stesso.

I vantaggi di GNU/Linux sotto questi aspetti sono piuttosto evidenti. Il sistema non effettua alcuna operazione sospetta o nascosta all’utente e proprio per la sua natura opensource (e quindi di trasparenza), eventuali comportamenti anomali sarebbero facilmente individuabili dalla comunità che lavora al suo sviluppo.
Inoltre la sua proverbiale immunità ai virus fa sì che le sue connessioni in uscita siano considerate con abbondanti margini sicure.

Connessione tramite router

Molti utenti di internet si trovano già ad usufruire, anche inconsapevolmente, degli effetti di un firewall.
Ad esempio i router che la maggior parte degli utenti usano per connettersi tramite una connessione ADSL, integrano nella maggior parte dei modelli un firewall (in genere basato su Iptables, incluso nelle distribuzioni Linux-embedded contenute nella maggior parte dei router).

In genere di default i firewall dei router bloccano tutte le connessioni in entrata ma permettono quelle in uscita, pertanto interferiscono solo con il funzionamento dei programmi server. La maggior parte degli utenti si rende conto di essere dietro ad un firewall quando prova ad usare programmi p2p (come ad esempio Amule) e scopre che non funzionano correttamente, oppure vanno a rilento.

Il firewall incluso in questi dispositivi ha effetto su tutti i pc che vi si connettono, pertanto a meno che non ci sia la necessità di configurazioni particolari, risulta inutile configurare un firewall diverso su ciascun dispositivo. Oltre che ridondante come soluzione vi è il rischio di eccessive complicazioni.

Firewall sempre inutile in ambito Desktop?

Innanzitutto occorre ricordare che il firewall, ancor prima che un vero e proprio dispositivo di sicurezza (tipo gli antivirus, antispyware…), è uno strumento per regolare il traffico di rete.
Il suo utilizzo può entrare in gioco quando dalla propria macchina c’è la necessita di mettere “qualcosa” a disposizione di altri pc e a seconda dei casi quando occorrono delle regole ben precise sul “come” regolare il relativo traffico di rete.

  • Può essere necessario quando occorre condividere una connessione ad internet. In questo caso saranno proprio le regole per le connessioni di FORWARD che permetteranno ad un altro pc di sfruttare la connessione ad internet.
  • A volte si tratta di mettere a disposizione dati o servizi dal proprio pc, ma solo verso uno o un solo gruppo di pc presente in una rete. Le regole del firewall possono venire incontro a queste esigenze, tuttavia vale la pena ricordare che a seconda dei casi alcuni software offrono dei tool che possono o rendere non necessario l’uso del firewall o comunque essere preferiti a quest’ultimo. In questo caso Samba, software per la condivisione di file noto anche all’utenza desktop ne è un buon esempio.
  • In alcune configurazioni il firewall potrebbe ancora essere utile come strumento per ottimizzare la banda in entrata/uscita ed effettuare quello che viene comunemente detto traffic shaping, tuttavia questo genere di configurazioni sono solitamente molto complesse, e fuori dalla portata dell’utente comune.

In definitiva i casi in cui anche in ambiente desktop si arrivi ad utilizzare il firewall possono sussistere. È comunque evidente come la casistica sia piuttosto ristretta.

AppArmor Linux Security Module

Introduzione

AppArmor è una implementazione del Linux Security Module di controlli d’accesso basati sul nome. AppArmor confina i singoli programmi a un gruppo di file selezionati e capacità POSIX 1003.1e draft.

Installazione

In Ubuntu 8.04 «Hardy Heron» e successive, AppArmor è installato e caricato in modo predefinito. Alcuni pacchetti installano dei profili propri, ma profili aggiuntivi possono essere trovati nel pacchetto apparmor-profiles presente nel componente universe.

Utilizzo di base

Tutti i comandi debbono essere eseguiti in un terminale.

Elencare lo stato corrente di AppArmor

sudo apparmor_status

Mettere un profilo in modalità apprendimento

sudo aa-complain /percorso/al/binario

Esempio:

sudo aa-complain /bin/ping
Nella modalità apprendimento (in originale complain) vengono rilevate le violazioni alle regole dei profili di AppArmor (per esempio il programma profilato accede a file non permessi dal profilo). Tali violazioni sono permesse, ma anche registrate. Questa modalità è conveniente per lo sviluppo di profili ed è usata dagli strumenti di AppArmor per la generazione dei profili (dalla documentazione su novell.com).

Mettere tutti i profili in modalità apprendimento

sudo aa-complain /etc/apparmor.d/*

Mettere un profilo in modalità esecutiva

sudo aa-enforce /percorso/al/binario

Esempio:

sudo aa-enforce /bin/ping
Il caricamento di un profilo nella modalità di esecuzione (enforcment) fa sì che sia rispettata la politica definita nel profilo e allo stesso tempo segnalata a syslogd ogni tentata violazione (dalla documentazione su novell.com).

Mettere tutti i profili in modalità esecutiva

sudo aa-enforce /etc/apparmor.d/*

Disabilitare l’infrastruttura AppArmor

sudo /etc/init.d/apparmor kill
sudo update-rc.d -f apparmor remove

Abilitare l’infrastruttura AppArmor

sudo /etc/init.d/apparmor start
sudo update-rc.d apparmor start 37 S .

Ricaricare tutti i profili

sudo /etc/init.d/apparmor reload

Ricaricare un profilo

cat /etc/apparmor.d/nome.profilo | sudo apparmor_parser -r

Esempio:

cat /etc/apparmor.d/bin.ping | sudo apparmor_parser -r

Disabilitare un profilo

ln -s /etc/apparmor.d/nome.profilo /etc/apparmor.d/disable/
apparmor_parser -R /etc/apparmor.d/nome.profilo

Esempio:

ln -s /etc/apparmor.d/bin.ping /etc/apparmor.d/disable/
apparmor_parser -R /etc/apparmor.d/bin.ping

Abilitare un profilo

In modo predefinito, i profili sono abilitati (cioè caricati all’interno del kernel e applicati ai processi).

rm /etc/apparmor.d/disable/nome.profilo
cat /etc/apparmor.d/nome.profilo | sudo apparmor_parser -a

Esempio:

rm /etc/apparmor.d/disable/bin.ping
cat /etc/apparmor.d/bin.ping | sudo apparmor_parser -a

Personalizzazione dei profili

I profili possono essere trovati in /etc/apparmor.d/.

Alcune personalizzazioni possono essere compiute in /etc/apparmor.d/tunables/.

Impostare la posizione delle directory home

La posizione delle directory home può essere regolata in /etc/apparmor.d/tunables/home.

Domande frequenti

apparmor_status riporta processi che sono non confinati ma che hanno definito un profilo

Riavviare i processi elencati. Anche eseguire un riavvio di sistema corregge il problema.

AppArmor può tenere traccia e proteggere solo i processi che sono avviato dopo che il modulo kernel è stato caricato. Dopo l’installazione dei pacchetti apparmor, AppArmor viene avviato. I processi già in esecuzione però non vengono protetti da AppArmor. Sia riavviare il processo che l’intero sistema corregge il problema.

È anche possibile applicare un profilo a un processo già in esecuzione attraverso il seguente comando:

sudo sh -c "echo 'setprofile /percorso/al/binario' > /proc/pid/attr/current"

Creazione di un nuovo profilo

Progettare un piano di test

Provare a pensare a come è possibile mettere sotto tortura l’applicazione. Il piano di test dovrebbe essere diviso in casi di test più piccoli. Ciascun caso di test dovrebbe avere una piccola descrizione ed elencare i passi da seguire.

Alcuni casi di test standard sono:

  • avviare il programma
  • arrestare il programma
  • ricaricare il programma
  • controllare tutti i comandi supportati dallo script di init

Generare il nuovo profilo

Usare aa-genprof per generare un nuovo profilo.

Da un terminale, usare il comando aa-genprof:

sudo aa-genprof eseguibile

Esempio:

sudo aa-genprof slapd

Maggiori informazioni sono disponibili nella pagina di manuale:

man aa-genprof

Includere il proprio nuovo profilo nel pacchetto apparmor-profiles

Per fare in modo che il proprio nuovo profilo sia incluso nel pacchetto apparmor-profiles, aprire in Launchpad un bug per il pacchetto AppArmor:

  • includere il proprio piano di test e i casi di test
  • allegare il proprio profilo al bug

Aggiornamento dei profili

Quando il programma non si comporta in modo corretto, vengono inviati dei messaggi di audit ai file di registro. È possibile usare il programma aa-logprof per scansionare i file di registro in cerca dei messaggi di AppArmor, revisionare tali messaggi e aggiornare i profili:

sudo aa-logprof

Maggiori informazioni sono disponibili nella pagina di manuale:

man aa-logprof

Gestore portachiavi

Introduzione

Nel portachiavi di GNOME vengono salvate le password di tutti quelli applicativi che all’avvio del sistema ne richiedono l’inserimento.

Avvio dell’applicazione

È possibile avviare l’applicazione tramite il menu Sistema -> Amministrazione -> Gestore portachiavi oppure da terminale con il seguente comando:

gnome-keyring-manager
Questa schermata mostra la finestra principale del programma, all’interno della quale è possibile gestire tutti i portachiavi e le password contenute in essi.
Al primo avvio del sistema viene creato un portachiavi chiamato «default», verrà inoltre richiesta una password.
Abilitando l’opzione «Mostra password» dal tab chiave sarà possibile visualizzare la password dell’applicativo selezionato all’interno del relativo campo.
Nella scheda «Applicazioni» è possibile visualizzare tutte le applicazioni che necessitano della password selezionata password.
Dal menu Portachiavi è possibile cancellare e creare nuovi portachiavi.

Sbloccare il portachiavi

È possibile sbloccare il portachiavi all’avvio del sistema con la seguente procedura:

  • installare il pacchetto libpam-keyring con il seguente comando:
    sudo apt-get install libpam-keyring
    
  • aprire il file adatto alla propria configurazione, fra i seguenti, con un editor di testo con i privilegi di amministrazione:
    • nel caso si abbia l’accesso automatico disabilitato: /etc/pam.d/gdm;
    • nel caso l’accesso automatico sia abilitato: /etc/pam.d/gdm-autologin;
  • aggiungere la seguente riga in fondo al file:
    @include common-pamkeyring
    

Resettare la password

Purtroppo il programma non fornisce un metodo per azzerare la password di un portachiavi, l’unico sistema possibile è cancellare l’interno contenuto del portachiavi.

Con la seguente procedura verrà cancellato tutte le password precedentemente memorizzate.

Digitare il seguente comando:

rm ~/.gnome2/keyrings/default.keyring

Al prossimo riavvio della sessione sarà richiesta la nuova password per il portachiavi; probabilmente sarà necessario re-inserire tutte le altre chiavi.

Bleachbit: software per eliminare spazzatura su Linux

Su Windows sono presenti molti software che permettono di fare pulizia di tutta la spazzatura che và ad occupare varie parti di memoria del PC. Questi non solo rendono il nostro computer più efficiente ma aiutano a proteggere la nostra privacy. Su Linux c’è un poca scelta di software di questo genere, per questa ragione oggi indico BleachBit che consente di ripulire varie arie di memoria sul sistema del Pinguino. Questo software è disponibile anche per Windows.


BleachBit permette di liberare il sistema da: cookies, cache, cronologia internet, localizzazione, logs, file temporanei ed altro. Grazie ad una bella ed allo stesso tempo utile interfaccia grafica è semplice e comodo da utilizzare, offrendo anche un anteprima dei file che stiamo eliminando.

Come usare Bleachbit

Questo software è disponibile per le distribuzioni Linux:Ubuntu, Fedora, CentOS, Mandriva, Debian, openSUSE, RHEL e SLED. E’ possibile istallarlo direttamente da terminale: ad esempio con Ubuntu digitando apt-get install bleachbit” e su Fedora inserendo il comando ” yum install bleachbit”.

Quando aprirete BleachBit la prima volta insieme alla finestra principale si aprirà quella delle preferenze, composta da Generale, Unità e Lingue, compilate le richieste per avere un uso più personalizzato del software.

A conti fatti seppur non indispensabile Bleachbit è un’utility veloce e comoda, che offre un servizio che finora mancava su Linux.

DOWNLOAD BLEACHBIT


XMMS Multimedia System Ubuntu

Introduzione

XMMS (X Multimedia System) è un riproduttore audio di GNOME. L’interfaccia grafica, ispirata al famoso programma Winamp, è basata sulle librerie X/GTK+.

XMMS supporta svariati formati, tra i quali:

  • Audio MPEG
  • OGG
  • CD Audio
  • WAV, RAW e AU
  • MOD, XM e S3M
  • File .cin
  • … molti altri.

Installazione

Installare il pacchetto xmms presente nel componente multiverse dei repository ufficiali.

sudo apt-get install xmms

Plugin

Sul sito ufficiale, nella sezione plugins è disponibile una raccolta di plugin da scaricare.

Skin

Nei repository di Ubuntu è disponibile il pacchetto

xmms-skins con il quale è possibile personalizzare XMMS utilizzando delle skin aggiuntive.

sudo apt-get install xmms-skins

Icone

Come in Winamp, anche su XMMS è possibile cambiare l’icona. Sul sito ufficiale è disponibile una raccolta di icone pronte da scaricare.

Installare nuovi presets

  1. Scaricare i presets digitando in una finestra di terminale il seguente comando:
    wget http://xmms.org/misc/winamp_presets.gz
    
  2. Installare i presets digitando nel terminale il seguente comando:
    gunzip -c winamp_presets.gz > ~/.xmms/eq.preset
    
  3. Avviare XMMS e fare clic sul pulsante «Presets».
  4. Selezionare il pulsante «Carica» e fare clic su «Presets».
  5. Scegliere il preset per il genere musicale preferito.

Listen Lettore Multimediale Ubuntu

Listen è un lettore multimediale scritto in linguaggio Python con le librerie GTK+ di GNOME. Con tale programma è possibile ascoltare e organizzare la propria collezione musicale.

Implementa molte funzioni tra le quali:

  • il recupero di informazioni sull’artista,album o traccia da Wikipedia;
  • la visualizzazione del testo della canzone in esecuzione;
  • il recupero delle copertine degli album da Amazon o Google;
  • il recupero di informazioni da Last.fm;
  • la creazione di una lista di esecuzione dinamica;
  • il supporto per iPod e Podcasting;
  • il supporto per le radio web Shoutcast.

Quella che segue è una schermata di esempio del programma:

Installazione su Ubuntu 8.04 «Hardy Heron» e successive

Installare il pacchetto listen disponibile nel componente universe dei repository ufficiali.

Dal Terminale con il comando Sudo apt-get install listen