Categoria: SysAdmin

  • Forward secrecy in Postfix

    È possibile implementare la forward secrecy anche nelle sessioni TLS di Postfix.

    Questa guida parte dal presupposto che Postfix abbia TLS configurato e funzionante, non importa se con un certificato auto-emesso o rilasciato da un’autorità PKI, e si applica alla versione 2.10, le versioni precedenti potrebbero aver bisogno di qualche aggiustamento dei parametri, come indicato nel readme apposito.

    Lo scopo è di avere delle chiavi di sessione effimere con una vita relativamente breve al fine di rendere più ardua la cosiddetta retrospective decryption attraverso una rigenerazione periodica dei parametri p e g dell’algoritmo Diffie-Hellman per lo scambio di chiavi.

    (altro…)

  • PHP FastCGI Process Manager con CentOS 6

    Con Apache gli script PHP possono essere interpretati essenzialmente in due modi: attraverso un modulo apposito (mod_php) o richiamando l’interprete PHP con FastCGI.

    In molti casi si utilizza mod_php perché è l’opzione di default preconfigurata, ma ci sono delle alternative, con vantaggi e svantaggi che vanno valutati con attenzione.

    mod_php è in genere (ma anche qui ci potrebbero essere eccezioni) più veloce e permette di personalizzare alcune direttive di configurazione all’interno del file .htacess; il rovescio della medaglia è che l’interprete PHP viene caricato assieme ad ogni istanza di Apache, anche quando non serve perché viene richiesto un file di testo o un file con un’immagine, e viene eseguito nel suo stesso contesto di sicurezza.

    Utilizzando FastCGI il codice eseguito dall’interprete PHP è completamente separato da quello del web server, quindi si può definire un contesto di sicurezza differente da quello utilizzato dal server e l’interprete viene eseguito solamente quando è necessario. Nel 2012 è stata scoperta una vulnerabilità di PHP eseguito via CGI tale per cui richiamando una pagina mettendo nell’URL ?-s (esempio: http://www.example.com/index.php?-s) viene visualizzato il sorgente dello script al posto del risultato. Il baco è stato corretto, ma vale la pena di eseguire un test se si passa da mod_php a FastCGI.

    Dalla versione 5.3 PHP ha introdotto FastCGI Process Manager (FPM), una tecnologia per demonizzare l’interprete PHP e richiamarlo da server HTTP differenti anche, volendo, da host diversi. FPM crea uno o più pool di server, ciascuno con un proprio contesto di sicurezza e una propria configurazione, in questo modo il numero di worker che interpretano il codice PHP può essere diverso dai worker del server HTTP.

    Vediamo come passare da mod_php a FPM su un’installazione CentOS 6.

    (altro…)

  • Generatore di password via command line

    Ogni tanto serve generare un po’ di password casuali, questo è un metodo rapido e, si spera, efficace.

    Tutto quello che serve è un *NIX e un /dev/urandom con una ragionevole entropia, magari aiutato da un software come haveged.

    Questa è l’invocazione per richiamare 1024 byte di password casuali (deve essere scritta su una riga sola, vado a capo per praticità):

    strings /dev/urandom |
    tr -c -d '\!-~' |
    dd bs=1 count=1k 2>/dev/null |
    sed -r 's/(.{12})/\1\n/g' ;
    echo

    Quello che fa questa command line è prendere da /dev/urandom solamente i gruppi di byte che corrispondono a caratteri stampabili (prima riga), filtrarli secondo un range ASCII (seconda riga), fermarsi a 1024 caratteri (terza riga), visualizzarli su righe di 12 caratteri l’una (quarta riga) e andare a capo dopo l’ultima password (ultima riga).

    Il range sulla seconda riga è uno dei più ampi possibile nel set ASCII stampabile perché lascia fuori solamente lo spazio e può essere modificato a piacere, ad esempio se si vogliono solamente lettere minuscole e numeri la seconda riga diventa

    tr -c -d 'a-z0-9' |

    Sulla quarta riga si può variare il numero 12 per avere password di lunghezze differenti o sostituire \n con \t per avere le password incolonnate separate da tab.

  • Sarai abbastanza sveglio?

    Il libro Sei abbastanza sveglio per lavorare in Google è un testo molto illuminante.
    Come si può intuire dal titolo, tratta di due grandi temi: l’efficacia (o sarebbe meglio dire inefficacia) dei colloqui di lavoro tenuti come la maggior parte di noi li conosce e l’insieme di conoscenze scientifiche, spannometria e creatività necessarie a superare i test attitudinali che sempre più aziende (Google nel titolo è solo un esempio) propongono ai candidati.

    Oltre a scoprire molte cose sulle Risorse Umane e sul recruiting in generale, non vi nascondo che tutta la parte sui questionari sia la più interessante: prima di tutto per sfidare sè stessi a risolverli, poi per imparare come affrontare quelli troppo difficili.
    Spesso sono questionari lunghi e complicati che non tutte le aziende e i reparti si possono permettere: nel mio piccolo io sono spesso alla ricerca di domande o problemi possibilmente semplici da porre che non necessitino troppo tempo o risorse, ma che siano utili per capire velocemente e in maniera ragionevolmente affidabile le competenze e le abilità di un candidato. (altro…)

  • 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.

  • RedHat 7 beta 1: prova di installazione

    Ho fatto la prima installazione di prova di una RedHat 7.0 beta 1.

    Dopo aver scaricato l’ISO, ho creato una macchina virtuale su VMware Workstation 9 con queste caratteristiche: 2 Gb RAM, 20 Gb disco, singolo processore 64 bit a un core, NIC in bridge, sistema operativo Linux 2.6.x a 64 bit generico.

    Il boot da CD lascia 30 secondi di tempo per decidere se partire subito, attivare il rescue mode oppure cambiare i parametri del kernel.

    Red Hat 7 Beta 1 - Welcome

    Anaconda ha un nuovo aspetto grafico, la procedura di installazione non è più in formato wizard ma propone tutti gli elementi da configurare in una schermata riassuntiva unica e lascia decidere al SysAdmin cosa configurare e in che ordine. Nota: il partizionamento dei dischi è l’ultimo dell’elenco e potrebbe essere necessario utilizzare le scroll bar per visualizzarlo.

    (altro…)

  • RedHat 7.0 beta 1

    RedHat ha annunciato la disponibilità di RedHat Enterprise Linux 7 Beta 1.

    La versione beta è liberamente scaricabile da tutti per la valutazione e per segnalare anche eventuali problemi.

    A differenza dalla precedente versione 6, sarà possibile effettuare un aggiornamento in place della versione 6.5 senza la necessità di riformattare o reinstallare da zero.

    Non è più possibile installare la versione 7 su processori a 32 bit, il cui supporto è garantito attraverso la virtualizzazione oppure un layer di compatibilità software.

    Le nuove installazioni della distribuzione avranno per default il file system xfs, anche se sono comunque supportati i file system ext.

    Tra le novità e i limiti di Red Hat 7 si possono annoverare:

    • 3 Tb di RAM massima, 1 Gb di RAM minima (per la versione x86_64);
    • file system di massimo 500 Tb e singolo file di massimo 16 Tb con xfs;
    • kernel 3.10.0;
    • systemd sostituisce gli script di init e altri aspetti di avvio del sistema;
    • ext2 ed ext3 sono sconsigliati e dovrebbero essere sostituiti in place da ext4;
    • webalizer, thunderbird e compiz sono stati rimossi;
    • MariaDB ha sostituito MySQL;
    • sendmail è sconsigliato, anche se non ci voleva Red Hat…

    Questo è solamente un assaggio della novità che sono elencate in dettaglio nelle note di rilascio.

    Chi utilizza o amministra RedHat o CentOS dovrebbe familiarizzare con la versione 7 prima di metterla in produzione perché alcune novità, come systemd, sono davvero strutturali.

    Il team di CentOS sta già lavorando per costruire l’ambiente della versione 7.

  • Errore DFS se si prepara Windows 2003 per l’upgrade

    Se si esegue il Server Migration Tool su un Windows Server 2003 per la migrazione del dominio a Windows Server 2012 può capitare che il programma visualizzi un errore in cui viene segnalato che il servizio DFS Replication (replica DFS in italiano) non è attivo.

    Purtroppo l’errore è bloccante, ma il DFS Replication non esiste su Windows Server 2003, in quanto è strato introdotto a partire da Windows Server 2003 R2.

    Inutile tentare di attivare repliche DFS su SYSVOL a caso, si tratta di un errore nello script PowerShell ed è lì che va applicata la soluzione.

    Il problema risiede nel file C:\Documents and Settings\All Users\Application Data\Microsoft\Microsoft Baseline Configuration Analyzer 2\Models\SBSMigrationPrep.ps1; se per vostra sfortuna state operando su un Windows in una lingua diversa dall’inglese il path deve essere modificato di conseguenza, ma il nome del file è sempre quello.

    (altro…)

  • SELinux

    SELinuxAmmettiamolo: la maggior parte di noi disabilita SELinux come prima azione quando installa un server ex novo.

    Selinux viene visto come una rottura di scatole, che non fa funzionare le cose che installiamo. A parziale discolpa dei SysAdmin va detto che SELinux non è esattamente intuitivo (sto parlando di livello di intuitività di un SysAdmin) e spesso lo si percepisce come quello che sta tra un problema e la soluzione dello stesso.

    Con l’aumentare degli attacchi è bene iniziare a considerare l’opzione di (ri)abilitare SELinux, magari partendo dai server meno critici.

    Da punto di vista della sicurezza, il vantaggio di SELinux è che le sue policy non sono facilmente modificabili dall’utente o da un applicativo e permettono un controllo molto più granulare dei normali attributi di lettura/scrittura/esecuzione di *NIX. Inoltre SELinux applica delle policy obbligate: in un normale sistema *NIX un utente può fare chmod 777 della propria home directory, mentre se sono attive delle opportune policy di SELinux lo stesso utente potrebbe non riuscire a farlo anche se è proprietario della directory ed ha i permessi di scrittura.

    SELinux è un argomento complesso e articolato, di seguito viene solamente grattata la superficie con un esempio di implementazione su CentOS 6.4, tenendo ben presente che nella sicurezza non esiste un singolo silver bullet, ma una buona sicurezza è sempre frutto di varie azioni coordinate.

    (altro…)

  • Apache: proteggere le directory di upload

    Nella sicurezza non esiste un solo silver bullet, ma ci sono tanti piccoli accorgimenti che aiutano a rafforzare un sistema.

    Uno dei problemi dei siti è il controllo e l’isolamento dei file caricati dagli utenti o da sconosciuti. Ci sono vari modi per mitigare eventuali  problemi che si possono verificare quando viene caricato un file indesiderato, qui ne viene esposto uno, ben sapendo che non si tratta dell’unico.

    Il tipico esempio di directory pericolosa per un sito è la directory /wp-content/uploads di WordPress. Un metodo per mitigare gli attacchi è disabilitare qualsiasi tipo di esecuzione di script o programmi da questa directory da parte di Apache aggiungendo queste direttive alla configurazione del sito:

    <Directory /path/wp-content/uploads/>
      AllowOverride none
      RemoveHandler .cgi .pl .py
      <FilesMatch "\.(php|p?html?)$">
        SetHandler none
      </FilesMatch>
    </Directory>

    In questo modo nessun file CGI, Perl, Python o PHP caricato in quella directory potrà essere interpretato come tale se richiamato da Apache.

  • ClamAV: main.cvd aggiornato

    ClamAVSe controllate la directory dei dati di un’installazione di ClamAV trovate qualcosa di questo tipo:

    103M Sep 12 04:51 daily.cld
    30M Jun 21 08:31 main.cvd

    Ovvero il file delle definizioni giornaliere supera per più di tre volte la dimensione del file delle definizioni principali.

    Il prossimo 17 settembre verrà rilasciata una nuova versione del file main.cvd che sarà di circa 70 Mb.

    Inoltre l’intenzione dei gestori del progetto sarebbe quella di pubblicare periodicamente una versione aggiornata del file main.cvd per ridurre il carico sui server di distribuzione.

  • Postfix: forzare il dialogo cifrato fra due MTA

    È possibile forzare il dialogo cifrato TLS tra due server di posta elettronica (MTA).

    Di seguito viene spiegato come farlo con Postfix 2.10.2, l’ultima disponibile, compilata sul server in cui gira con il supporto TLS attivato. È naturalmente possibile ottenere lo stesso risultato anche con altri MTA o con versioni precedenti di Postfix (sconsiglio di scendere sotto la 2.6.0 ed è meglio evitare il range  2.9.0 – 2.9.5 (incluse) perché hanno un baco nel calcolo del fingerprint della chiave pubblica.

    È fondamentale una certa padronanza con Postfix, che viene data per scontata dalla procedura descritta di seguito.

    (altro…)