Dovecot+SQL: tracciare l’ultimo login

In molti casi è utile sapere quando un utente ha effettuato l’ultimo login via IMAP o POP ad un server di posta elettronica.

In una configurazione con Dovecot come server IMPA/POP e MySQL/MariaDB come backend per l’archivio degli utenti fin’ora era necessario utilizzare delle scappatoie per tenere traccia dell’ultima volta in cui un utente si era collegato.

Dalla versione 2.2.14 rilasciata lo scorso 14 ottobre Timo Sirainen ha aggiunto il plugin Last Login.

Al momento la documentazione del plugin è abbastanza scarna, chi volesse implementare la tracciabilità dell’ultimo login in una configurazione con Dovecot, Postfix e Postfix Admin come gestione degli utenti può procedere come segue. Leggi tutto “Dovecot+SQL: tracciare l’ultimo login”

WAMP su Windows 7

Questo articolo spiega come configurare una struttura WAMP su un Windows 7 installando i singoli programmi separatamente.

Esistono anche dei kit preconfezionati come, a puro titolo di esempio, EasyPHP, ma è più istruttivo costruire da soli la propria configurazione in quanto si imparano meglio il funzionamento e l’interazione dei vari componenti, si possono aggiornare i singoli programmi senza dipendere da terzi ed è molto più semplice di quello che si possa credere. Le istruzioni di seguito partono da alcuni presupposti e hanno alcune limitazioni, tra cui:

  • l’installazione non ha una sicurezza adatta ad un server pubblico, ma è pensata per un server di sviluppo protetto da altri metodi;
  • la piattaforma su cui viene installato il tutto è un Windows 7 a 64 bit e, dove possibile, vengono installate le versioni a 64 bit dei programmi;
  • vengono installate le ultime versioni disponibili dei software cercando il più possibile di mantenere i default;
  • tutti i download suggeriti riguardano solamente programmi gratuiti, anche se per alcune utility esistono alternative a pagamento;
  • ripeto: non usate questa procedura per configurare un server pubblicato su Internet.

Queste istruzioni sono valide per le ultime versioni di Apache (2.4), PHP (5.5) e MariaDB (10.0), con versioni precedenti potrebbero essere necessarie ulteriori modifiche o accorgimenti per far funzionare il tutto. Leggi tutto “WAMP su Windows 7”

La sfiga ci vede benissimo

Questa mattina il blog è stato offline fino dopo l’una ed è doverosa una spiegazione.

Ieri ho vinto per oggi un viaggio andata e ritorno in Francia da un cliente per una serie di riunioni di pianificazione. No, non è un modo per nascondere un pranzo di Natale, a pranzo ho mangiato una baguette au jambon mentre tornavo a piedi in ufficio dal Carrefour dove avevo fatto razzia di formaggi.

Stamattina mi sono svegliato alle 04:30 e ho trovato la VM su cui è ospitato il sito irraggiungibile. Ho aperto un ticket e sono saltato in macchina per andare dal cliente.

Il fornitore ha risolto il problema poche ore dopo, ma c’è un “ma”.

Fino all’una non mi sono potuto collegare in Rete ed è stato lì che ho scoperto il problema: quando un server va giù male rimangono i socket nel file system (stale socket). Le ultime versioni di MySQL di CentOS sembra che abbiano dei problemi con gli stale socket: quando MySQL riparte dopo un crash non ripulisce lo stale socket e tutti i processi che usano quel metodo di comunicazione vedono il database server KO.

Ecco spiegato il down di questa mattina, purtroppo la sfiga ha visto che questa mattina ero AFK e ha colpito con precisione chirurgica.

Poi non date la colpa al malware

Museo di Iraklio / Heraklion museumSpesso c’è la tendenza ad incolpare il malware per ogni tipo di danno causato ai sistemi informativi o per ogni tipo di furto di informazioni.

Se non si può parlare di colpa di chi scrive il software, certo il programmatore è in molti casi correo colposo (quando non è doloso, ma è un altro paio di maniche) di intrusioni illecite o furti di informazioni.

Negli ultimi anni le cose stanno lentamente cambiando, ma fino a poco tempo fa chi scriveva software era assolutamente inconsapevole dei rischi della sicurezza perché o non se ne curava affatto o pensava che fosse un Problema Altrui.

Scrivere un software che tenga presente i problemi della sicurezza non è semplice, ma sta diventando rapidamente una necessità imperativa se non si vuole fare brutte figure, o peggio.

Leggi tutto “Poi non date la colpa al malware”

Pubblicate alcune vulnerabilità di MySQL

Controllo siluri / Torpedo consoleL’articolo è stato aggiornato dopo la pubblicazione iniziale man mano che sono arrivati ulteriori dettagli sui problemi indicati.

Sono stati pubblicati su Full Disclosure i metodi (exploit) per attaccare i database server MySQL sfruttandone alcune vulnerabilità.

Non ho potuto verificare tutti gli exploit pubblicati in quanto non dispongo delle installazioni a cui fanno riferimento alcuni di questi metodi.

Le prove sono state fatte utilizzando come vittima un MySQL 5.1.66 a 64 bit installato dai pacchetti standard di CentOS 6, il computer attaccante è un Linux Ubuntu 12.10 collegato in LAN. Entrambi i sistemi sono aggiornati con le ultime patch disponibili. Nessuna modifica particolare è stata fatta a my.cnf sul server.

Leggi tutto “Pubblicate alcune vulnerabilità di MySQL”

MySQL: dimensioni delle tabelle e degli indici

Una semplice query per tenere d’occhio la situazione delle tabelle e degli indici di MySQL.

SELECT CONCAT(table_schema, '.', table_name) db_table,
CONCAT(ROUND(table_rows/1000000, 2), 'M') rows,
CONCAT(ROUND((data_length+index_length)/(1024*1024), 1), 'M') size,
CONCAT(ROUND(data_length/(1024*1024), 1), 'M') data,
CONCAT(ROUND(index_length/(1024*1024), 1), 'M') indx,
ROUND(index_length/data_length, 2) ratio
FROM information_schema.TABLES
ORDER BY data_length + index_length DESC;

(via Boris Huisgen)

La sicurezza dei database è in mano agli sviluppatori

Controllo siluri / Torpedo consoleAgli sviluppatori delle applicazioni che usano i database, ovviamente.

Dark Reading raccoglie in un articolo un decalogo di consigli per gli sviluppatori che vogliono mitigare i problemi di sicurezza delle applicazioni che utilizzano database (tipicamente SQL, ma non necessariamente).

Alcune norme sono ovvie e ne abbiamo parlato anche noi: la prima in assoluto è la SQL injection, molto più diffusa di quello che si possa credere. Basta, infatti, che un solo campo di un’intera applicazione non venga opportunamente sanificato per mettere a repentaglio la sicurezza dell’intero progetto.

Il secondo errore più comune commesso dagli sviluppatori è l’eccesso di informazioni di errore visualizzate all’utente. Ci dicono che non dobbiamo essere criptici nella messaggistica, però è anche bene evitare di esagerare per non rivelare involontariamente dati che potrebbero essere utili per un attacco mirato.

Leggi tutto “La sicurezza dei database è in mano agli sviluppatori”

Buco di sicurezza in MySQL/MariaDB

È stato scoperto un pericoloso baco in MySQL/MariaDB che potrebbe permettere l’accesso come root ad un database server.

La vulnerabilità non funziona su tutte le installazioni di MySQL (inclusa CentOS) e dipende da come è stato compilato il server.

Il problema risiede nella routine di autenticazione di un utente. Quando viene aperta una connessione a MySQL/MariaDB viene generato un token calcolando un SHA della password fornita e di una stringa casuale; il token viene quindi confrontato con l’SHA calcolato con il valore corretto. Per un errore di cast potrebbe succedere che le due stringhe vengano considerate uguali anche se non lo sono e anche se memcmp() ritorna un valore diverso da zero; se si verifica questo caso, MySQL/MariaDB pensa che la password sia corretta e permette l’accesso. La probabilità che questo accada è di 1/256.

Leggi tutto “Buco di sicurezza in MySQL/MariaDB”