GreenSQL il FW per i DB

greensql-architecture
GreenSQL: un reverse proxy contro gli attacchi SQL injection

GreenSQL è un’interessante applicazione che promette di proteggere un database da eventuali attacchi dannosi. Sostanzialmente si tratta di un firewall open source che fa da filtro tra l’applicazione web e il database. Funziona come un proxy, l’applicazione invece di connettersi al database si connette a GreenSQL che poi gestisce la connessione con il database vero e proprio.

Attacchi SQL injection

Un attacco di tipo SQL injection consiste nell’inserimento “injection” di una particolare query SQL nei dati passati in input ad una applicazione da parte di un client allo scopo di provocare l’esecuzione di comandi SQL predefiniti.
Un exploit di tipo SQL injection se coronato da successo può rivelare dati sensibili da un database, modificarli, eseguire operazioni amministrative sul database (come uno shutdown od un backup), e talvolta anche impartire comandi al sistema operativo sottostante.

GreenSQL è un database firewall Open Source utilizzabile per proteggere le basi di dati da attacchi di tipo SQL injection, operando come un proxy per comandi SQL,e con integrato il supporto per Mysql.

La sua logica operativa si basa sulla valutazione dei comandi SQL, sia utilizzando una matrice di indici di rischio, sia bloccando comandi amministrativi del db (DROP, CREATE, etc).

GreenSQL opera come un reverse proxy per le connessioni Mysql. Vale a dire che invece del server Mysql, le applicazioni si connettono al server GreenSQL, che analizzerà le queries SQL e le inoltrerà al server Mysql di back-end.

Sostanzialmente funziona così: se la query mandata dall’applicazione è ritenuta rischiosa da parte di GreeSQL essa non viene mandata al DB e GreenSQL restituisce all’applicazione un risultato nullo. Alternativamente, se la query non presenta problemi, viene inviata al server e la rispostata arriva poi alla web application.

Per default GreenSQL lavora sulla porta 3305 girando tutte le richieste al server Mysql sulla porta

http://127.0.0.1:3306

Si puo’ configurare in modalita’ differenti quali :

  • Simulation Mode (database IDS): Non effettua nessuna operazione ma permette l’analisi del comportamento di GreenSQL.
  • Blocking Suspicious Commands (database IPS): In questa modalita’ effettua un analisi euristica per cercare query giudicate “illegali” e le blocca automaticamente. In questa modalita’ si richia di bloccare falsi positivi e far eseguire query che risultano essere falsi negativi.
  • Learning mode: si usa per evitare i problemi del Blocking Suspicious mode. Permette di visionare l’analisi della query e “informare” di volta in volta il software se bloccare o no questo tipo di operazioni.
  • Active protection from unknown queries (db firewall): dopo un certo periodo di “apprendimento” nella modalita’ learning mode il sistema puo’ passare alla fase successiva (bene, ho imparato tutto, ora sono pronto ad operare da solo!).

Passiamo ora all’installazione:

Si scarichi l’ultima versione del software dalla url del sito http://www.greensql.net in particolare la “GreenSQL Firewall”
riferito alla vostra piattaforma ed una volta installato il pacchetto inerente alla vostra piattaforma.

Dopo l’installazione il server greensql girera’ sulla porta 3305. provate ad accedervi con il comando:

mysql -h 127.0.0.1 -P 3305 -u root -p

Dopo aver digitato la password di root dovreste andare sul prompt di mysql (quit per uscire).

Ora il sistema e’ pronto per essere utilizzato. Non dovete far altro che avere l’accortezza di modificare i vostri script di configurazione chiedendo di connettersi sulla porta 3305 piuttosto che la 3306.

Se ad esempio il vostro CMS e’ gia’ impostato per effettuare la connessione sulla porta di default allora editate il configuration.php (o relativo file) nella sezione specifica. Ad esempio se trovate qualcosa del tipo:

$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');

sostituitela con

$link = mysql_connect('localhost:3305', 'mysql_user', 'mysql_password');

Installiamo ora la greensql-console che permette di gestire, manutenere ed impostare tutte le caratteristiche di GreenSQL.

Scaricate sempre dal link per i download scaricate la “Management Console” relativa alla vostra piattaforma :

tar xvfz greensql-console-<VERSIONE> -C /opt/

cd /opt/greensql-console

vim config.php

Editate i campi:

$db_name = "greendb";

$db_user = "green";

$db_pass = "greensqlpassword";

Accertatevi di aver impostato i permessi della cartella template_c a 777:

# chmod 777 templates_c

Ora potete accedere via web alla management Console dalla URL:

http://<vostro_indirizzo_ip>/greensql-console

Da qui potete verificare tutte le operazioni che effettua il GreenSQL con le varie possibilita’ di operare.

Infine per fermare e riavviare il servizio potete eseguire i comandi:

/etc/init.d/greensql-fw stop

/etc/init.d/greensql-fw start

Buon divertimento !

GlusterFS: Storage Scalabile e Distribuito

glusterfsIntroduzione

GlusterFS è un file system open source distribuito e scalabile orizzontalmente, la cui capacità può essere dinamicamente espansa mediante l’aggiunta di nuovi nodi. GlusterFS è in grado di arrivare a gestire fino a diversi Peta Byte, migliaia di client e diverse aree dati (storage) organizzandole in blocchi che rende accessibili su Infiniband RDMA (remote direct memory access, fibra ottica) o connessioni TCP/IP.

Le risorse {memoria e disco} vengono rese disponibili sotto un unico punto di condivisione e tali risorse possono essere montate dai client mediante tre diversi protocolli: CIFS, NFS oppure tramite il client nativo Gluster.

Inoltre GlusterFS supporta la replica geografica ossia la replica dei dati di un Volume su un Server dislocato in un area geografica diversa da quella dove sono presenti gli altri nodi.

Iniziamo a prendere confidenza con alcune terminologie di GlusterFS:

  • Volume: Identifica la condivisione effettiva che viene messa a disposizione
  • Brick: Identifica il file system locale di un server su cui opera GlusterFS
  • Translator: Identifica delle componenti ( librerie ) che estendono le funzionalità del file system
  • Server: Identifica la macchina o le macchine ( reali o virtuali ) dove risiedono i dati
  • Client: Identifica la macchina che monta il volume

La logica quindi è la seguente:

Si installa GlusterFS su ogni server che fa parte del pool di storage del cluster, si definiscono i blocchi ( bricks ) da esportare ( directory ) andando cosi a creare la condivisione effettiva chiamata Volume.

Successivamente su ogni Client interessato installiamo allo stesso modo GlusterFS, e tramite i protocolli citati prima ( NFS, CIFS, GlusterFS Client ) andiamo a montare il cluster rendendo disponibile la condivisione ( Volume ).

Vediamo adesso le diverse TIPOLOGIE DI VOLUME ossia come i dati possono essere organizzati:

  • Distributed: Definisce un {Volume Distribuito} dove i file vengono distribuiti in maniera random tra i vari brick del Volume che compongono il Cluster. Questo comporta maggior scalabilità ma molta meno ridondanza,infatti nel caso in cui ci fosse un Volume cosi configurato, un guasto del Server ( Brick ) comporta la perdita dei dati in esso contenuti.
  • Replicated: Definisce un Volume Replicato dove i file vengono replicati tra i Brick del Volume che compongono il Cluster. Questo comporta una riduzione dello spazio disponibile per lo Storage ma una maggior ridondanza e tale configurazione è consigliabile per avere un Elevata Affidabilità e un Elevata Disponibilità.
    Nel caso in cui ci fosse un Volume cosi configurato, un guasto del Server ( Brick ) NON comporterebbe la perdita dei dati visto che ne abbiamo una replica a disposizione. Le repliche dei dati è consigliabile averle in brick separati cioè che non si trovino sulla stessa macchina.
  • Striped: Definisce un Volume Striped dove i file vengono memorizzati in blocchi nei brick del Volume che compongono il Cluster.
    Questo comporta maggiori prestazioni in lettura e scrittura su file di grandi dimensioni e maggior spazio a disposizione ma una minor ridondanza. Nel caso in cui ci fosse un Volume cosi configurato, un guasto del Server ( Brick ) comporta la perdita dei dati in esso contenuti.
  • Distribuited Striped: Definisce un Volume Distribuito e Striped dove il Volume memorizza i file in blocchi tra 2 o più nodi del Cluster. Nel caso in cui ci fosse un Volume cosi configurato, un guasto del Server ( Brick ) comporta la perdita dei dati in esso contenuti.
  • Distribuited Replicated: Definisce un Volume Distribuito Replicato dove il Volume distribuisce e replica i file tra i Brick del Cluster. Questo comporta la combinazione dei pregi delle singole soluzioni distributedd e Replicated.
    Nel caso in cui ci fosse un Volume cosi configurato, un guasto del Server ( Brick ) NON comporterebbe la perdita dei dati visto che ne abbiamo una replica a disposizione e il Volume resterebbe sempre accessibile.
  • Striped Replicated: Definisce un Volume Striped Replicato dove il Volume fa lo Stripe dei file e li replica tra i Brick del Cluster.
    Si combinano i pregi dello Stripe ossia maggiori prestazioni in lettura e scrittura utile per esempio su file di grandi dimensioni con i pregi della Replicazione sui Brick del Cluster per avere cosi prestazioni e ridondanza.
    Nel caso in cui ci fosse un Volume cosi configurato, un guasto del Server ( Brick ) NON comporta la perdita dei dati in esso contenuti.

INSTALLIAMOLO
Per procedere all’installazione e testare il software dovremo avvalerci di almeno due macchine, decidete voi se reali o VM, dopodiche’ inizieremo dividendo il lavoro; partiamo con la macchina che fara’ da Server :

modifichiamo a dovere il file /etc/hosts, io ho fatto nel seguente modo

# vim /etc/hosts
192.168.2.138    server1.example.com     server1
192.168.2.182    client1.example.com     client1

aptitude install glusterfs-server

…ora dobbiamo creare le seguenti directory

mkdir /data/
mkdir /data/export
mkdir /data/export-ns
cp /etc/glusterfs/glusterd.vol /etc/glusterfs/glusterd.vol_orig
cat /dev/null > /etc/glusterfs/glusterd.vol
vim /etc/glusterfs/glusterd.vol
volume posix
  type storage/posix
  option directory /data/export
end-volume

volume locks
  type features/locks
  option mandatory-locks on
  subvolumes posix
end-volume

volume brick
  type performance/io-threads
  option thread-count 8
  subvolumes locks
end-volume

volume server
  type protocol/server
  option transport-type tcp
  option auth.addr.brick.allow 192.168.2.182 # inserire qui l'indirizzo od il nome host del vostro client
  subvolumes brick
end-volume
/etc/init.d/glusterfs-server start

…ora passiamo a lavorare sul client

aptitude install glusterfs-client glusterfs-server
mkdir /mnt/glusterfs  

cp /etc/glusterfs/glusterd.vol /etc/glusterfs/glusterd.vol_orig
cat /dev/null > /etc/glusterfs/glusterd.vol
vim /etc/glusterfs/glusterd.vol

volume remote
  type protocol/client
  option transport-type tcp
  option remote-host server1.example.com # inserite qui l'indirizzo od il nome host del server
  option remote-subvolume brick
end-volume

volume writebehind
  type performance/write-behind
  option window-size 4MB
  subvolumes remote
end-volume

volume cache
  type performance/io-cache
  option cache-size 512MB
  subvolumes writebehind
end-volume

ora dobbiamo lanciare uno di questi due comandi :

glusterfs -f /etc/glusterfs/glusterd.vol /mnt/glusterfs

oppure

mount -t glusterfs /etc/glusterfs/glusterd.vol /mnt/glusterfs

….se non avete avuto errori eseguendo il comando mount dovreste vedere qualcosa del genere

# mount
/etc/glusterfs/glusterd.vol on /mnt/glusterfs type fuse.glusterfs (rw,default_permissions,allow_other,max_read=131072)

# [client1] df -h
/etc/glusterfs/glusterd.vol
143G   33G  103G  25% /mnt/glusterfs

che nel mio caso equivale alla partizione /home della macchina server
# [server1] df -h
/home/server1/.Private            143G   33G    103G  25% /home/server1/Private

…come notate dalle dimensioni dei due filesystems

a questo punto non ci rimane altro che modificare il file /etc/fstab in modo da rendere immediato il mount al boot del client

# vim /etc/fstab

/etc/glusterfs/glusterfs.vol  /mnt/glusterfs  glusterfs  defaults  0  0

Questo era solo un semplice esercizio per imparare a capire il software in questione ovviamente con le dovute aggiunte e modifiche del caso si potranno creare Volumi e directory ad hoc della grandezza desiderata in cui salvare tutti i dati per noi importanti.

Buon divertimento !

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.

Linuxcon Europe – 2014

LinuxCon EuropeLinuxCon Europe – Linux Foundation

La Linux Foundation, l’organizzazione non-profit che sostiene la crescita di Linux e dello sviluppo collaborativo, ha annunciato i relatori della LinuxCon + CloudOpen + Embedded Linux Conference Europe, che si terrà dal 13 al 15 ottobre presso il Centro Congressi di Düsseldorf.

LinuxCon Europe è il luogo in cui apprendere dai migliori e più intelligenti, grazie agli interventi dei più importanti utilizzatori, sviluppatori e project leader della comunità Linux.

Non esiste un altro evento in Europa che permetta a sviluppatori, amministratori di sistemi, architetti e talenti tecnici di qualsiasi tipo e livello di riunirsi sotto un unico tetto per imparare, collaborare e risolvere problemi allo scopo di fare avanzare ulteriormente la piattaforma Linux.

LinuxCon prevede oltre 100 sessioni, con novità sugli ultimi aggiornamenti del kernel, sulle tecnologie e interfacce di storage, sulla sicurezza e l’Internet of Things, nonché interventi sulle best practice e la collaborazione open source.

I relatori della conferenza LinuxCon + CloudOpen + ELC Europe di quest’anno illustreranno i passi in avanti compiuti da Linux e dall’open cloud, nonché il modo in cui i metodi e i principi di Linux e dell’open source si stiano diffondendo in altri settori della società, tra cui la vendita al dettaglio e la sanità.

Tra i relatori confermati:

Jono Bacon, Senior Director of Community di XPRIZE, che nel suo intervento “Building Exponential Communities” parlerà di come sfruttare al meglio il lavoro in un ambiente comunitario

Paul Biondich, fondatore e presidente di OpenMRS, che parlerà di come le comunità open source stiano aiutando a migliorare la salute dei più poveri in tutto il mondo

Joanna Rutkowska, fondatrice e CEO di Invisible Things Lab, che parlerà di Qube OS e di come esso rappresenti un approccio pratico alla sicurezza dei sistemi client

Chris Schlaeger, Direttore Generale dell’Amazon Development Center, che farà una presentazione sugli elementi fondamentali degli Amazon Web Services

Inoltre, l’attesissima presentazione del Linux Kernel Panel vedrà come protagonista Linus Torvalds, creatore e membro della Linux Foundation, insieme ad altri importanti sviluppatori e addetti alla manutenzione del kernel, che parleranno dello stato del kernel Linux, nonché delle attività future e in corso.

Per iscriversi all’evento bastera’ seguire questo link : LinuxConEurope.

Messaggistica istantanea

Google plus EmuGoogle compra EMU chat

La messaggistica istantanea è oggi un settore davvero di primaria importanza per i grandi colossi del web, cosi’ se Facebook possiede Messenger e Whatsapp, Google può vantare il servizio Hangouts.

Oltre ai grandi nomi con una base di utenti ben consolidata, esistono tante altre realtà un pò meno conosciute come Emu, recentemente acquisita da Google.

Emu è un’app per la messaggistica istantanea che offre alcune particolari funzioni. Riesce a controllare e analizzare il testo delle conversazioni e offre informazioni relative a ciò che scriviamo; e’ in grado di fornirci gli orari del cinema, cosi’ com’ è in grado di fissare appuntamenti nel calendario, se ne avremo parlato in chat.

L’acquisizione prevede la chiusura del progetto e la rimozione da App Store e Google Play. Il 25 agosto 2014 l’app smetterà di funzionare e le sue funzionalità potranno cosi’ venire integrate nei servizi di Google, e quindi molto probabile che Hangouts implementerà alcune di queste interessanti funzioni di Emu.