Antivirus su Linux ?

ClamavAvrete sicuramente sentito dire che non serve un antivirus per linux perché i virus vengono creati per Windows e perché, qualora vengano scritti anche per Linux, sarebbe molto difficile che riescano a fare danni.
Questo in buona parte è vero perché Linux, oltre ad essere per sua natura meno vulnerabile di Windows, adotta da sempre tecniche che non permettono l’esecuzione di codice critico da parte degli utenti “piu’ esperti“.
E allora che senso ha produrre un antivirus per Linux?
I motivi per i quali è consigliabile installare un antivirus per linux possono essere molti. In genere quando c’è una condivisione di dati tra sistemi operativi diversi è buona norma installare un antivirus su entrambi i sistemi; quindi è consigliabile installarlo in presenza di server di rete dove sono presenti condivisioni di rete verso computer Windows, oppure nei sistemi dual-boot che condividono una partizione per i dati o in tutti i sistemi linux nei quali si utilizza un cloudstore come dropbox.
Detto questo vediamo di parlare di quello piu’ storico ed utilizzato.

ClamAV
In ambito Linux è il più conosciuto perché è completamente open source e si integra benissimo con altri programmi come server email, proxy ecc. E’ disponibile nei repository delle principali distribuzioni, ed è quindi facilmente installabile. Per gli utenti desktop esiste anche frontend grafico ClamTK che ne facilita l’utilizzo da parte degli utenti meno esperti.

INSTALLAZIONE
In questo articolo viene indicato come installare e utilizzare l’antivirus clamav,  che nasce come applicativo da linea di comando.

:~# sudo apt-get install clamav clamav-freshclam

* Quindi inizializzare clavam scaricando i files delle definizioni con il comando freshclam

:~# clamscan --infected --remove --recursive /tmp

possiamo testare l’installazione eseguendo ad esempio

clamscan ~

Possiamo effettuare un primo controllo antivirus di tutta la home con l’opzione -r

clamscan -r /home

Se vogliamo visualizzare  solo i file infetti e il sommario evitando di visualizzare l’elenco dei files possiamo usare l’opzione -i

clamscan -i ~

Aggiornare i database delle definizioni dei virus

Per aggiornare i database delle definizioni dei virus come detto  si può usare

sudo freshclam

E’ decisamente più comodo effetture questa operazione in backgroud sfruttando il demone di freshclam. Freshclam, infatti, si installa anche come servizio con ad esempio:

sudo freshclam -d

si può controllare con

#~$ sudo sysv-rc-conf --list | grep clam
clamav-fresh 0:off 1:off 2:on 3:on 4:on 5:on 6:off

per impostare il demone in modo che effettui, ad esempio, due check al giorno per nuovi database delle definizioni si puo’ usare il comando

sudo freshclam -d -c 2

Per effettuare lo scan di tutto il sistema evidenziando solo i file infetti e producendo un allarme acustico in caso di rilevazione di virus si può utilizzare il comando

#~$ clamav -r --bell -i /home

Per registrare una scansione di tutto il sistema salvando i dati relativi ai file infetti si può usare un comando del tipo:

sudo clamscan -r / | grep FOUND >> /path/clamav-data-scan.txt

Clamav non effettua le disinfezione dei file. I file infetti possono essere post

Clamav PPA

Per disporre sempre della versione più recente di ClamAV si può utilizzare il ppa specifico che si installa con

sudo add-apt-repository ppa:ubuntu-clamav/ppa
sudo apt-get update
sudo apt-get install clamav nautilus-clamscan

Primo Test

# clamscan --infected --remove --recursive /home
----------- SCAN SUMMARY -----------
Known viruses: 4167603
Engine version: 0.98.1
Scanned directories: 13
Scanned files: 10
Infected files: 0
Data scanned: 0.03 MB
Data read: 0.03 MB (ratio 1.00:1)
Time: 52.978 sec (0 m 52 s)

in questo caso come si puo’ vedere nel sommario, non sono stati trovati virus, adesso per poter fare un test “reale” possiamo effettuare questo secondo test :

Secondo Test

# download test virus
Scaricate da questo link il file (virus) in questione
cd /home/<nime utente>/Scaricati/
wget http://www.eicar.org/download/eicar.com

adesso possiamo effettuare nuovamente la scansione

clamscan --infected --remove --recursive /home

il risultato finale dovrebbe essere come questo

./eicar.com: Eicar-Test-Signature FOUND
./eicar.com: Removed.

Buona caccia!

Torino verso Linux

comune_torinoUbuntu e ODF liberano Torino

Torino ha deciso di puntare su Linux, sistema operativo libero che consentirà di guadagnare più di 6 milioni di Euro di soldi pubblici, nello specifico la versione prescelta sara’ Ubuntu.

Cosi dopo Udine anche la città di Torino ha deciso di dire addio a Windows e Microsoft Office per puntare su Linux e il software libero (ed era ora) . La migrazione da Microsoft Windows e Office consentirà non solo di risparmiare moltissimi soldi ma fornirà sistemi e software più sicuri e stabili garantendo cosi ai propri cittadini servizi molto più affidabili.

Ad annunciarlo è stato il portale di Repubblica.it indicando che con Microsoft Windows e Office ogni uno dei 8300 personal computer dell’amministrazione costava circa 300 Euro di licenze per il software proprietario, la migrazione ad Ubuntu Linux consentirà quindi di non avere più nessuna spesa facendo risparmiare circa 6 milioni di Euro di soldi pubblici che potranno essere investiti per migliorare i servizi comunali.

Tutto questo parlare di soldi ha chiaramente il suo valore ma mi dispiace notare che nessuno parli invece dell’accrescimento che queste operazioni possono portare verso una migliore gestione sistemistica, per tutto cio’ che sta dietro ai portali inerenti a Regione, Anagrafe, Comune ecc….., portandoli cosi’ anche verso una unificazione del formato dei documenti digitali verso Il formato OpenDocument (ODF); quest’ultimo è un formato aperto per file di documento per l’archiviazione e lo scambio di documenti per la produttività di ufficio, come documenti di testo (memo, rapporti e libri), fogli di calcolo, diagrammi e presentazioni, dal momento che un obiettivo dei formati aperti come OpenDocument è quello di garantire accesso a lungo termine ai dati senza barriere legali o tecniche.

Per quanto riguarda i documenti nel formato OpenDocument, le estensioni più comuni sono:

.odt – documenti di testo

.ods – fogli di calcolo

.odp – presentazioni

.odg – grafica

.odb – database.

Torino diventerà presto una città completamente open source, come già accaduto a Monaco, Bolzano e molte altre città, visto anche i tanti vantaggi ottenuti dalla migrazione ben presto anche l’intera regione Piemonte potrebbe migrare verso il software libero.

Catturare il traffico di rete

redirectRedirect fai da te

Molte volte vi capitera’ (ed a me e’ capitato piu’ volte) di aver bisogno di gestire il traffico di rete ottimizzandolo, filtrandolo e redirezionandolo.
Si pensi, ad esempio, ai test di sviluppo effettuati sulle molte VM in cui si deve tenere conto della quantita’ di Server interessati e del carico di rete da gestire bilanciando quest’ultimo e gestendo le porte interessate.

In questo articolo illustrero’ alcuni dei migliori tra quelli da me usati in ambito OpenSource sono, Rinetd, LVS e Pound, ma l’elenco potrebbe ancora allungarsi, magari per un seguito.

PARTIAMO

rinetd

E’ il piu’ semplice dei tre, dunque partiremo da questo; esso permette di ridirigere una destinazione TCP, definita attraverso una coppia <indirizzo-ip>:<numero-di-porta>, presso un’altra coppia di questi valori. Lo scopo di questo può essere semplicemente quello di dirigere una porta locale verso un’altra porta locale, oppure si può arrivare a intercettare il traffico IP che attraversa un router in modo da ridirigere alcune coppie di indirizzi e porte presso altre destinazioni.

Tutto è composto semplicemente da un daemon, rinetd, che si avvale di un file di configurazione, /etc/rinetd.conf, nel quale si indicano semplicemente le ridirezioni da applicare.

La presenza in funzione di rinetd è incompatibile con altri daemon che stanno in ascolto delle stesse porte che devono essere ridirette, anche se queste sono intese appartenere a host differenti.

Il programma rinetd è il demone che si occupa di ridirigere il traffico TCP in base a quanto contenuto nel file di configurazione /etc/rinetd.conf
E' sufficiente avviarlo e, se il file di configurazione risultera'corretto, iniziare subito a lavorarci. All'avvio, dopo aver letto la configurazione, rinetd deve poter stare in ascolto dell'indirizzo da ridirigere e della porta relativa; qualunque sia l'indirizzo in questione, è necessario che non ci sia già un programma locale che fa la stessa cosa su quella stessa porta; per esempio, non si può tentare di ridirigere il servizio HTTP di un indirizzo qualunque, se questo è presente localmente.

Un esempio di configurazione del file rinetd.conf dovrebbe essere sufficiente a chiarire le idee su questo file. Supponiamo di voler dirottare il traffico diretto verso l’indirizzo IP 10.11.12.13 alla porta 80, in modo che questo vada verso l’indirizzo IP 192.168.1.7, alla porta 80.

120.121.122.123 80 192.168.1.7 80

L’indirizzo da ridirigere, può appartenere a un’interfaccia del nodo presso cui si trova in funzione il demone rinetd,
oppure no, purché i pacchetti diretti a tale indirizzo transitino attraverso il nodo che attua la ridirezione.
Se si vuole apprendere il funzionamento di rinetd senza disporre di una rete vera e propria, basta una direttiva di configurazione simile a quella seguente:

localhost 8888 localhost html

In questo modo, la porta locale 8888 viene ridiretta sulla porta del servizio HTTP (80). Se il servizio HTTP è attivo, si può verificare la ridirezione con un programma di navigazione qualunque, puntando all’URL

http://localhost:8888

Rispetto ai prossimi due tool rinetd non e’ in grado di fungere anche come LoadBalancer.


ipvsadm

Questo servizio aggiorna la tabella d’instradamento IPVS nel kernel. Il demone lvs imposta e gestisce Load Balancer Add-On richiamando ipvsadm per aggiungere, modificare e cancellare le voci all’interno della tabella d’instradamento IPVS. Inoltre ipvsadm fa parte del paccheto LVS  che è una soluzione di bilanciamento del carico avanzato per sistemi Linux.
Si tratta di un progetto open source avviato da Wensong Zhang nel lontano 1998. La missione del progetto è di costruire un server ad alte prestazioni e ad alta disponibilità per Linux utilizzando tecnologie di clustering, offrendo una buona scalabilità, affidabilità e facilità di manutenzione. L’opera principale del progetto LVS è ora quello di sviluppare un software avanzato di bilanciamento del carico IP (IPVS), ed un software di bilanciamento a livello dell’applicazione (KTCPVS), ed i componenti di gestione dei cluster.

Ipvs in pratica

IPVS (IP Virtual Server) implementa un bilanciatore di carico a livello Layer 4 della rete. IPVS in esecuzione su un host si comporta come un sistema di bilanciamento del carico di fronte ad un insieme di server reali in cluster, può indirizzare le richieste per servizi basati si TCP/UDP ai veri server, e fa apparire i servizi dei server reali come un unico servizio virtuale su un unico indirizzo IP.

La componente IPVS è presente in tutti i recenti Kernel, per installare la componente in user-space utilizzate il vostro gestore di pacchetti, ad esempio in Ubuntu:

aptitude install ipvsadm

a questo punto si può creare uno script da far avviare al boot. Io di solito inserisco i comandi all’interno del file
/etc/rc.local.

Prima di tutto dobbiamo resettare l’attuale configurazione con il comando:
ipvsadm -C
Dopodiché iniziamo a dare le regole con i comandi come nell’esempio qui sotto in cui diciamo che le chiamate TCP (parametro -t) all’indirizzo 192.168.10.100 sulla porta 5060 (quella per il protocollo SIP) debbano essere inoltrate alla stessa porta dell’indirizzo 192.168.10.250.  Per reindirizzare una chiamata UDP sostituire il -t con -u.
ipvsadm -A -t 192.168.10.100:5060 -s rr

ipvsadm -a -t 192.168.10.100:5060 -r 192.168.10.250:5060 -m

Naturalmente è possibile catturare il traffico su una porta e inoltrarla ad un’altra con un comando tipo questo:
ipvsadm -A -t 192.168.10.100:88 -s rr
ipvsadm -a -t 192.168.10.100:88 -r 192.168.10.250:80 -m
In questo caso non abbiamo fatto altro che prendere le chiamate alla porta 88 dell’indirizzo 192.168.10.100 e rinviarle al server web dell’IP 192.168.10.250 sulla normale porta 80

Metodi di bilanciamento utilizzati da LVS

In caso si desideri testare il funzionamento di LVS senza la necessita’ di monitorare i servizi e possibile aggiungere e rimuovere nodi con il comando ipvsadm:

ipvsadm -C
ipvsadm -A -t 10.2.1.164:8080 -s lc
ipvsadm -a -t 10.2.1.164:8080 -r 10.2.1.166 -g
ipvsadm -a -t 10.2.1.164:8080 -r 10.2.1.165 -g

Le opzioni utilizzate nelle linee di comando di ipvsadm per l’esempio riportato sono le seguenti:

-C, –clear: cancella la tabella del virtual server.
-A, –add-service: crea un servizio virtuale.
-a, –add-server: aggiunge un nodo ad un servizio virtuale.
-t, –tcp-service: specifica indirizzo ip e numero di porta tcp del servizio virtuale.
-s, –scheduler: specifica l’algoritmo di bilanciamento
-r, –real-server: specifica l’indirizzo ip del nodo reale
-g, –gatewaying: indica il metodo di forwarding direct routing (LVS-DR)

** algoritmi per il bilanciamento che possiamo usare con LVS.

Statici:

– Round Robin

– Weighted Round Robin

– Destination Hashing

– Source Hashing

Dinamici:

– Least-Connection

– Weighted least-connection

– Never queue

– Locality-based least-connection

– Locality-based least-connection with replication scheduling

– Shortest expected delay


pound

Pound è un proxy server di bilanciamento del carico inverso. Accetta richieste da HTTP / HTTPS clienti e li distribuisce a uno o più server web. Le richieste HTTPS vengono decifrati e passati al back-end come semplice protocollo HTTP.

Se più di un server back-end è definita, Pound sceglie uno di loro a caso, sulla base delle priorità definite. Per impostazione predefinita, Pound tiene traccia di associazioni tra client e server back-end (sessioni).

General Principles

In generale, Pound ha bisogno di tre tipi di oggetti definiti, al fine di funzione: ascoltatori , i servizi e back-end .

Ascoltatori
Un ascoltatore è una definizione di come Pound riceve le richieste dai client (browser). Due tipi di ascoltatori può essere definito: normale connessione HTTP ascoltatori e HTTPS (HTTP su SSL / TLS) ascoltatori . Per lo meno un ascoltatore deve definire l’indirizzo e la porta per l’ascolto su, con ulteriori requisiti per HTTPS ascoltatori .

Servizi
Un servizio è la definizione di come le domande trovano risposta. Il servizio può essere definito all’interno di un ascoltatore o al livello superiore (globale). Quando viene ricevuta una richiesta Pound tenta di far corrispondere a ciascun servizio , a sua volta, a partire dai servizi definiti nel ascoltatore stesso e, se necessario, di proseguire con l’ servizi definiti a livello globale. I servizi possono definire le proprie condizioni al quale le domande si può rispondere: in genere si tratta certo URL (solo foto, o un certo percorso) o intestazioni specifiche (come ad esempio l’intestazione Host). Un servizio può anche definire una sessione meccanismo: se definito le richieste future da un determinato cliente sarà sempre la stessa risposta da parte di back-end .

Back-end
Il back-end sono i server reale per il contenuto richiesto. Di per sé, Pound fornisce nessuna risposta – tutti i contenuti devono essere ricevuti da un vero e proprio “web server”. Il back-end definisce come il server dovrebbe essere contattato.

Tre tipi di back-end può essere definito: un “regolare” back-end che riceve le richieste e le risposte restituisce, un “redirect” back-end in questo caso, Pound risponde con una risposta redirect, senza l’accesso a qualsiasi back-end a tutti , o una “emergenza” back-end che sarà usato solo se tutti gli altri backend sono “morti”.

Multiple back-end può essere definito all’interno di un servizio , nel qual caso Pound sarà bilanciamento del carico tra i disponibili back-end .

Se un back-end non riesce a rispondere, sarà considerato “morto”, nel qual caso Pound si ferma l’invio di richieste ad esso. Dead indietro _ e NDS sono periodicamente controllate per la disponibilità, e una volta che rispondono ancora sono “resurected” e le richieste sono inviati di nuovo la loro strada. Se non back-end sono disponibili (nessuno è stato definito, o sono tutti “morti”), allora Pound risponderà con “503 Servizio non disponibile”, senza verificare ulteriori servizi .

Il collegamento tra Pound e il back end- è sempre via HTTP, a prescindere dal protocollo utilizzato tra Pound e il cliente.

Installazione

sudo apt-get install pound

La gestione completa del servizio avviene tramite la configurazione del file /etc/pound/pound.cfg
Esempio 1:

Semplice configurazione HTTP Proxy
Supponiamo di forwardare le richieste http che arrivano dall”IP pubblico 202.54.10.5 all’IP sulla LAN 192.168.1.5 su cui è configurato un web server Apache sulla porta 8080.
Editiamo il file di configurazione di pound di una distro Debian/Ubuntu:

vim /etc/pound/pound.cfg

Questo è l’aspetto del file:

ListenHTTP
Address  202.54.10.5
Port          80
Service
BackEnd
Address  192.168.1.5
Port           8080
End
End
End

Salvare e chiudere il file e restartare Pound:

/etc/init.d/pound restart

Esempio 2
Semplice configurazione HTTP & HTTPS Proxy
In questo esempio vediamo come “proxare” una richiesta http e https dallo stesso IP pubblico 202.54.10.5 a due web server 192.168.1.5 e 192.168.1.6, entrambi sulla porta 80:

ListenHTTP
Address  202.54.10.5
Port          80
End

ListenHTTPs
Address   202.54.10.5
Port           443
Cert           “/etc/ssl/local.server.pem” -–>percorso certificato ssl
End

Service
BackEnd
Address     192.168.1.5
Port              80
Priority       1
Backend
Address     192.168.1.6
Port              80
Priority       3
End
End

Salviamo il file di configurazione e restartiamo pound.

In questo esempio le richieste alla porta 80 all’ ip 202.54.10.5  vengono inoltrate alla porta 80 del webserver 192.168.1.5, mentre le richieste alla porta 443 dall’ ip 202.54.10.5 vengono inoltrate alla porta 80 del web server 192.168.1.6  e in questo caso pound gestisce il certificato ssl, che è possibile generarsi senza alcuna modifica nel backend del web server, che continua a gestire chiamate in http.

PS: e’ possibile inoltre impostare una priorità di inoltro del traffico differente, nel caso si disponga di più server web, cosi’ come indicato dalla voce “Priority” presente nella configurazione del secondo esempio; minore è la cifra, maggiore sarà la priorità assegnata al server.

Buon divertimento !

My Tracks Il tracciatore GPS

my-tracksPer tutti gli sportivi e non …!

Oggi voglio presentarvi un software troppo bello ed utile per gli sportivi e per chi ama viaggiare. Si chiama My Tracks ed è un software per Android/iPhone in grado di tenere traccia del percorso che facciamo sia che siate in auto o a piedi ecc … (l’elenco delle attivita’ tra cui scegliere dal menu’ e’ davvero vasto).

Grazie a questo software sara’ possibile monitorare continuamente la nostra posizione grazie al GPS presente ormai su ogni smartphone.

Una volta installata la app dal vostro store di riferimento, vi bastera’ registrarvi come nuovi utenti per poter essere subito operativi. Alla partenza del programma viene calcolata la propria posizione in modo preciso dal ricevitore GPS del nostro telefono e in qualsiasi momento sara’ possibile avviare la registrazione del nostro percorso che fermeremo una volta arrivati a destinazione.

Al termine sarà possibile salvare la nostra passeggiata ed avere le statistiche sulla velocità massima raggiunta, media, tempo in moto, dislivelli e altitudini. Esportare questi dati è semplicissimo: si possono inviare via e-mail agli amici, condividerli su google o vedere il tracciato completo  su Google Earth.

E’ l’ora di mandare in pensione i cari vecchi contapassi ed i computer da bicicletta, poiche’ da oggi un dispositivo mobile potra’ fare molto di più… e gratis!!

Montare una cartella FTP

CurlFTPfs

CurlFTPfs

FTP in tasca

Sempre piu’ spesso la mole di dati che ci troviamo a dover gestire ci impone di creare ed utilizzare i piu’ svariati servizi di Cloud Storage presenti sul mercato, molti di questi offrono comode partizioni gestibili via FTP su cui spostare/upgradare tutti i nostri piu’ preziosi ricordi.

Come fare pero’ ad organizzare un sistema di backup e ripristino di questi dati, possibilmente rendendo l’operazione facile come scorrere il nostro file system locale ? . La soluzione potrebbe risiedere in un software, che permette di montare un server FTP come se fosse una normale directory del proprio filesystem.

Per fare questo è necssario installare curlftpfs dal proprio repository. In Ubuntu bastera’ basta digitare:

sudo apt-get install curlftpfs

Una volta installato possiamo montare la nostra cartella ftp con il seguente comando:

sudo curlftpfs -o user=utente:password mio_server punto_di_mount

Se per esempio il server fosse ftp.<mio_server>.it , con nome utente pippo e, con password pluto, il comando sarà:

sudo curlftpfs -o user=pippo:pluto ftp.<mio_server>.it /media/scambio # il mio punto di mount

Da questo momento in poi la mia cartella /media/scambio conterrà i files presenti sul server FTP e potranno essere copiati, spostati ed eliminati come se fossero presenti sul proprio filesystem. In questo modo, se si dovesse avere anche un minimo di conoscenza di programmazione della shell, si potra’ creare uno script per il backup dell’intero disco/repository/sito (insomma di quello che volete) con pochissimi comandi, automatizzando il tutto.