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 !

DNS sempre funzionante

Premessa : Ogni volta che visitiamo un sito, il browser risolve il nome a dominio, ad esempio “miodominio.it” ,
in un IP come 1.2.3.4  . Tramite IP il browser potrà fare richiesta al server che ospita il dominio e
quindi scambiare contenuti. In genere queste richieste DNS vengono fatte al server del proprio ISP
o a server pubblici come Google DNS, OpenDNS… che fino ad ora non hanno ancora censurato
nessun dominio, forse eccetto per quelli dannosi che portano a malware.

C’era una volta BIND, probabilmente il piu’ noto software di gestione DNS al mondo, purtroppo segnato da un lungo elenco d’innumerevoli bug e con la gestione dei parametri del server DNS tramite file di testo, che può risultare scomodo e lento, quindi fortunatamente hanno messo al mondo “PowerDNS”.

PowerDNS è un server DNS scritto in C++ sotto licenza GPL. È un prodotto della società olandese PowerDNS.COM BV, con numerosi contributi da parte della comunità Open Source.

I principali punti di forza di PowerDNS sono:

  • Backend per svariati database quali ad esempio MySQL e PostgreSQL
  • Facilità di configurazione
  • Sicurezza
  • Versatilità

Prima di procedere con l’installazione è doveroso illustrare le parti che compongono questo software:

  1. pdns-server: il server DNS vero e proprio
  2. pdns-backend-*: il backend dove sono memorizzati i dati ad esempiopdns-backend-mysql utilizzerà MySQL per memorizzare i record DNS
  3. pdns-recursor: un server necessario se si devono risolvere altri domini Internet oltre a quelli gestiti dal server

Installiamo!

Come sempre facile e veloce:

sudo apt-get install pdns-server pdns-backend-mysql pdns-recursor mysql-server mysql-clients

** Durante l’installazione vi verra’ chiesto se avete gia creato il DB di riferimento oppure se volete crearlo seduta stante, a voi gestire la cosa come meglio credete ed in base al vostro livello di conoscenza in ambito database. Per coloro che fossero a digiuno sull’argomento ecco quello che andrebbe fatto :

Entriamo in MySQL Shell tramite root
# mysql -u root -p
– Creiamo il database:
>>  mysql> create database powerdns;
>>  mysql> exit;
– Creiamo un utente associato al database creato, per sicurezza, mai usare l’accesso root per
collegare software al database.
>>  mysql> GRANT ALL ON powerdns.* TO ‘powerdns’@’localhost’ IDENTIFIED BY ‘la-password’;
mysql> FLUSH PRIVILEGES;
mysql> exit;
– Importiamo le tabelle che vengono fornite da PowerDNS sul database creato:
>>  # mysql -h localhost -u nome-utente -p powerdns < /usr/share/doc/pdns-backend-mysql/mysql.sql
Adesso configuriamo alcune impostazioni del database di pdns:
# nano /etc/powerdns/pdns.d/pdns.local
gmysql-host=localhost
gmysql-port=3306
gmysql-dbname=powerdns
gmysql-user=powerdns
gmysql-password=mypassword
#gmysql-socket=

Riavviamo il server di PowerDNS
# /etc/init.d/pdns restart

PowerDNS puo avviarsi anche in Monitor Mode:
# /etc/init.d/pdns monitor

Ora vediamo se un dominio a caso (d6f5v4.it) si risolve nel nostro server locale:
# host http://www.d6f5v4.it 127.0.0.1
In teoria non dovrebbe risultare alcun record A poichè non è presente nel server locale. Non
abbiamo aggiungo nessun record nel database.. Facciamolo!
# mysql -h localhost -u username -p powerdns
mysql> INSERT INTO domains (name, type) values (‘d6f5v4.it’,’NATIVE’);

BitNami: CMS impacchettati per tutti

bitnamiBitnami 

Bitnami è una libreria di applicazioni server popolari e ambienti di sviluppo che possono essere installati con un solo click, sia in un computer portatile, in una macchina virtuale o ospitato nel cloud. Nel pacchetto che sceglierete d’installare, che sia un WebServer od un ambiente CMS,  trovere gia’ compilate e configurate tutte le librerie necessarie a rendere da subito utilizzabile il vostro nuovo ambiente di lavoro / test.

Bitnami LAMP Stack (ossia come allestire un Server Web con un clic)

Introduzione

In questo articolo vedremo come installare in pochi e semplici passaggi un server web (Apache), che si occupa di ricevere ed elaborare le richieste di caricamento delle pagine, e un database (MySQL o PostgreSQL), su cui verranno memorizzate le informazioni associate all’applicazione web; sono disponibili svariati pacchetti che offrono la possibilità di allestire facilmente e con pochi clic un ambiente completo, preconfigurato e perfettamente funzionante.

Le combinazioni di piattaforme più comuni vengono denominate ” xAMP “, ove la prima lettera x indica il sistema operativo utilizzato (L = Linux, M = MacOS e W = Windows i più comuni), la seconda si riferisce al server web (A = Apache), la terza al database (M = MySQL, P = PostgreSQL) e la quarta ai linguaggi usati per scrivere le pagine web (P = Perl/PHP/Python); tra i numerosi pacchetti disponibili, si segnalano per completezza e facilità d’installazione ed utilizzo XAMPP e BitNami xAMP Stack, entrambi disponibili per Linux, MacOS e Windows e con la possibilità di installarne copie multiple ed indipendenti sulla stessa macchina.

La scelta è ricaduta su BitNami LAMP Stack per tre motivi principali:

  • l’installazione non richiede privilegi amministrativi in ambiente Linux;
  • è espandibile mediante moduli (consente ad esempio di installare con un clic Drupal, WordPress, Ruby-Rails…);
  • supporta non solo MySQL ma anche PostgreSQL e ne rende possibile l’installazione contemporanea.

Installazione

Per prima cosa dovremo accedere alle pagine di download del pacchetto per Linux (qui) o Windows (qui): la scelta del database è ricaduta su MySQL semplicemente  in virtù della sua maggiore diffusione, ma raccomando caldamente di provare PostgreSQL (quando affronteremo l’accesso ai database da PHP cercherò di fornire indicazioni e istruzioni per entrambi); in ogni caso le istruzioni di installazione riportate di seguito rimangono sostanzialmente valide anche per il pacchetto denominato LAPP e basato su PostgreSQL.

Raggiungete la tabella riportata nella sezione Native della pagina indicata sopra e individuate la riga corrispondente alla versione desiderata (al momento LAMPStack 5.4.30-0): fate clic sul link in corrispondenza della colonna che riporta la versione del vostro sistema operativo (a 32 o 64 bit).

Terminato il download del file, dovrete controllare dove è stato scaricato ed eseguirlo; in ambiente Linux la procedura richiede invece qualche comando da terminale:

chmod +x Scaricati/bitnami-lampstack-5.4.30-0-linux-x64-installer.bin
./Scaricati/bitnami-lampstack-5.4.30-0-linux-x64-installer.bin

Nel mio caso (Ubuntu 14.04) il file è nella cartella Scaricati e si chiama bitnami-lampstack-5.4.30-0-linux-x64-installer.bin.

Si avvierà una procedura d’installazione guidata che richiede la cartella di destinazione , la password da utilizzare per l’utente amministratore (root su MySQL, postgres su PostgreSQL) del database e la porta logica riservata al server web; per il primo e ultimo parametro potete lasciare il valore predefinito.

Al termine della procedura verrà aperta la pagina principale del server web sul vostro browser predefinito e, nella barra degli indirizzi, potrete vedere una stringa del tipo http://127.0.0.1:8080/
127.0.0.1 rappresenta l’indirizzo del computer locale e 8080 indica la porta indicata in precedenza e su cui è in ascolto il server web. Se esplorate la cartella in cui avete scelto di installare il pacchetto, troverete svariati file e cartelle: le pagine web andranno salvate all’interno della cartella (esempio) /var/www/htdocs/   o in una qualsiasi sottocartella; ad esempio, supponiamo di aver creato una cartella ” prova “ e al suo interno il file pagina.php, per aprire quest’ultimo nel browser dovrò digitare nella barra degli indirizzi:

 

http://127.0.0.1:8080/prova/pagina.php

Trovate un esauriente elenco di tutte le applicazione “stack” che potrete installare grazie ai pacchetti forniti da Bitnami al seguente indirizzo : https://bitnami.com/stacks