Archivio

Archivio per la categoria ‘Sicurezza’

Come creare una VPN punto-punto con OpenVPN

24 ottobre 2009 Luca 1 commento

OpenvpnL’utilizzo di una VPN punto-punto permette di creare un tunnel virtuale cifrato tra due macchine appartenenti a reti differenti. Lo scopo e’ quello di criptare i dati che attraverso internet, evitando cosi’ di essere ‘letti’ dopo essere stati ’sniffati’ in un punto della rete non gestibile da noi. Realizzeremo tutto cio’ utilizzando il software  OpenVPN , da installare su entrambe le macchine dove dovra’ essere stabilito il collegamento.

L’installazione con le distribuzioni linux Debian e Ubuntu si fa eseguendo questo comando

apt-get install openvpn

Con Fedora linux:

yum install openvpn

Il secondo passo da eseguire e’ la creazione della chiave ‘privata’ e condivisa con questo comando:

openvpn –genkey –secret /etc/chiave-privata.key

chmod 600 /etc/chiave-privata.key

Dopo averla generata su una macchina si puo’ spostare sull’altra tramite il protocollo ssh:

scp /etc/chiave-privata.key utente@nome-macchina-o-indirizzo-ip:/etc/chiave-privata.key

(impostare anche qui i permessi a 600 su /etc/chiave-privata.key in modo tale che solamente root puo’ leggere questo file)

Si crea poi una configurazione per il server (chiameremo il file /etc/openvpn-server.conf)

dev tun

ifconfig 10.0.0.1 10.0.0.2

secret /etc/chiave-privata.key

comp-lzo

N.B. comp-lzo attiva la compressione dei dati

Ed una per il client (chiameremo il file /etc/openvpn-client.conf)

remote IndirizzoIPdelServer

dev tun

ifconfig 10.0.0.2 10.0.0.1

secret /etc/chiave-privata.key

comp-lzo

N.B. Inserire l’indirizzo ip corretto o il nome della macchina verso cui dovremmo connetterci nel campo “remote”

Adesso sul server dobbiamo eseguire

openvpn /etc/openvpn-server.conf &

mentre sul client

/etc/openvpn-client.conf &

Dal client adesso possiamo fare questo test per verificare se c’e'  risposta dal server (che sara’ raggiungibile con l’ip 10.0.0.1)

ping 10.0.0.1

Tutti i dati inviati dal client verso l’ip 10.0.0.1 saranno criptati

Impedire l’attacco brute force su Debian con Fail2Ban

3 ottobre 2009 Pidicci Nessun commento

fail2ban_logoChi gestisce normalmente server ed e’ esposto direttamente alla rete avra’ notato sicvuramente molteplici tentativi di attacco Brute Force sui servizi piu’ comuni. A tal poposito puo’ risultare utile il software Fail2ban che permette di riconoscere con determinate policy un tentativo di attacco e filtrarne automaticamente la provenienza. Il server su cui si installa Fail2Ban deve avere gia’ installato iptables.

La presente guida mostra come installare e configurarlo al meglio.

Dunque, si parte come al solito con il reperimento del pacchetto necessario direttamente dagli apt sources. Si esegua quindi il comando:

apt-get install fail2ban

La directory con tutti i file sara’ di default /etc/fail2ban

All’interno della cartella /etc/fail2ban/filter.d/ ci sono tutte le regole che permettono di identificare un tentativo di attacco con le regexp ed il nome della regola.

Il file di configurazione che piu’ ci interessa e’ il file /etc/fail2ban/jail.conf che dispone di molte direttive.

Si esegua quindi:

vi /etc/fail2ban/jail.conf

E’ importante specificare nella sezione [Default] le regole principali che sono:

ignoreip: contente la lista degli IP che devono essere ignorati da fail2ban, nel caso di piu’ IP devono essere separati dallo spazio. Solitamente qui vengono inseriti gli IP affidabili come computer remoti con IP statici e altre trusted network

bantime: tempo durante il quale un eventuale IP deve rimanere bannato successivamente al riconoscimento di un tentativo di brute force

maxretry: numero massimo di tentativi errati di accesso dopo il quale deve essere riconosciuto come un brute force. Se ad esempio impostiamo il numero a 3 sul servizio SSH ho la possiblita’ di sbagliare 3 volte la password dopodiche’ vengo considerato come un attacker.

destemail: L’indirizzo email di riferimento per tutte le operazioni effettuate da fail2ban

Nella sezione successiva, la sezione “Action” permette di specificare cose deve fare fail2ban quanto riconosce un tentativo di attacco. Ci sono delle regole preconfigurate che risultano essere piu’ che sufficenti ma e’ possibile aggiungerne altre a picimento. Alla fine si impostera’ l’azione desiderata mediante il campo:

action=<nome_azione>

Consiglio di impostare nome_azione con “action_mwl” che permette di bannare l’IP ed inviare via email l’avvenuto con tutte le informazioni compresa la nazione di provenienza dell’IP filtrato.

A questo punto si passa alla configurazione del comportamento di fail2ban in relazione ai servizi. Esistono molti servizi gia’ configurati. Ad esempio nella sezione [ssh] potete decidere di impostare i campi:

enabled = ‘true’ se si intende abilitare faiòl2ban sul servizio ssh, ‘false’ se si intende trascurare il servizio

port    = 22 se ssh opera sulla porta di default oppure il numero su cui ssh e’ stato configurato

filter = contiene il nome della regola che si deve considerare per il servizio ssh, nome definito all’interno della configurazione /etc/fail2ban/filter.d/

logpath = il file di log che si deve analizzare per individuare i tentaivi di attacco brute force. Nel caso di ssh (ma anche per altri servizi) e’ il file /var&log/auth.log

maxretry = e’ possibile impostare un numero di maxrestry indipendentemente dall’impostazione di default.

Una volta che abbiamo configurato tutti i servizi possiamo avviare file2ban:

/etc/init.d/fail2ban start

Buon lavoro

Configurare connessioni https con apache2 e mod_ssl

21 settembre 2009 Luca Nessun commento

apache

Questo articolo illustra come abilitare il protocollo https con il web server apache (versione 2.x).

La procedura e’ molto semplice ed e’ strutturata in questo modo:

  • Creazione del certificato
  • Installazione del modulo mod_ssl
  • Configurazione del server web e quindi del sito

Vediamo nel dettaglio le varie fasi:

Per creare il certificato utilizzeremo l’applicazione openssl

Se state utilizzando una distribuzione linux  Debian/Ubuntu potrete installarla con questo comando

apt-get install openssl

Con Fedora/Centos invece si installa cosi’

yum install openssl

Se non disponete di un pacchetto precompilato potrete  compilare il sorgente di openssl.

Compilazione ed installazione vengono eseguiti nel modo ‘classico’

gunzip openssl-0.9.8k.tar.gz

tar xvf openssl-0.9.8k.tar

cd openssl-0.9.8k

sh ./config

make make test

make install


Dopodiche’ dovremmo creare il certificato. Ecco il comando:

openssl req -newkey rsa:1024 -x509 -nodes -days 365 -out /etc/apache2.pem -keyout /etc/apache2.pem

N.B. Nell’opzione days e’ specificato il valore 365 quindi il certificato sara’ valido per 1 anno

Occupiamoci ora del modulo ssl e configuriamo apache.

In Debian/Ubuntu il modulo ssl e’  installato di default e dovra’ essere solamente abilitato con

a2enmod ssl

Gli utenti che utilizzano Fedora invece per abilitarlo dovranno inserire nel file /etc/httpd/conf.d/ssl.conf questa direttiva

LoadModule ssl_module modules/mod_ssl.so

N.B. Se  mod_ssl non e’ installato, bastera’ digitare questo comando “yum install mod_ssl”

Il protocollo https accetta connessioni sulla porta 443 (a differenza di http che utilizza l’80).

Gli utenti Debian/Ubuntu dovranno aggiugere in /etc/apache2/ports.conf

Listen 443

Gli utenti Fedora invece dovranno scrivere la suddetta direttiva in /etc/httpd/conf.d/ssl.conf

Non rimane che configurare il VirtualHost

<VirtualHost www.deec.it:443>
DocumentRoot “/var/www/sito/htdocs”
ServerName www.deec.it

SSLEngine on

SSLCertificateFile /etc/apache2.pem

</VirtualHost>

N.B Cambiate il nome del virtualhost, del server e la documentroot del sito

e riavviare apache

/etc/init.d/httpd restart (Fedora)

/etc/init.d/apache2 restart (Debian e Ubuntu)

Come installare ed utilizzare Ksplice

17 settembre 2009 Luca Nessun commento

kspliceA differenza di un server Windows dove siamo ormai abituati a dover riavviare la macchina ad ogni aggiornamento di sistema, in un server linux questo accadra’ raramente e le poche volte che sara’ necessario effettuare quest’operazione sara’ probabilmente per un aggiornamento del kernel.
Per un server in produzione dove l’uptime e’ una prerogativa importante, un aggiornamento di questo tipo potrebbe generare non pochi problemi come ad esempio dover pianificare l’operazione in orario notturno con tutte le conseguenze che cio’ comporterebbe. In questi casi e’ vantaggioso utilizzare Ksplice,  un’applicazione che ci permette di applicare una patch al kernel senza dover riavviare il server!

Al momento l’ultima versione delle ‘ksplice utilities’ e’ la 0.9.9. Sul sito del produttore sono disponibili sia i binari precompilati che il codice sorgente.

N.B. Gli utenti che utilizzano Ubuntu Linux possono scaricare ‘ksplice uptrack‘, un sistema che consente di aggiornare il kernel tramite una pratica interfaccia grafica e senza dover effettuare nessuna delle seguenti operazioni.

Nel nostro esempio andiamo a scaricare  l’archivio contentenre i binary precompilati a 64bit.

Procediamo in questo modo utilizzando un utente non privileggiato:

Otteniamo le ksplice utilities:

wget http://www.ksplice.com/dist/ksplice-0.9.9-bin-x86_64.tar.gz

Scompattiamole

tar zxvf ksplice-0.9.9-bin-x86_64.tar.gz

Configuriamo ed installiamo

cd ksplice-0.9.9
./configure
make

Adesso come utente ‘root’ eseguiamo

make install

Tutti i binary sono stati copiati nelle rispettive directory e possiamo gia’ dire addio ad un reboot post aggiornamento!

Ecco cosa fare in caso di aggiornamenti:

1) Nella directory contenente il sorgente del kernel avviato sul server creiamo una cartella chiamata ‘ksplice’.

2) Copiamo la configurazione del kernel attivo nella directory appena creata rinominandola in ‘.config’.  Supponendo di avere la configurazione del kernel in /boot/config-2.6.26-1-amd64 ed il sorgente in /root/linux-source dovremo eseguire:

cp /boot/config-2.6.26-1-amd64 /root/linux-source/ksplice/.config

3) Adesso copiamo la System.map nella cartella ksplice. Ad esempio:

cp /boot/System.map-2.6.26-1-amd64 /root/linux-source/ksplice/System.map

4) Creiamo un link  chiamato ‘build’ nella cartella ‘ksplice’ facendolo puntare alla directory ‘build’ presente nei nostri header del kernel in esecuzione:

ln -s /lib/modules/2.6.26-1-amd64/build /root/linux-source/ksplice/build

5) Per applicare una patch al kernel adesso non ci rimane che eseguire questi due comandi (come utente root):

ksplice-create –patch=patch-da-applicare.patch /root/linux-source

Verra generato un archivio compresso, ad es. ksplice-612luer82.tar.gz

ksplice-apply ./ksplice-612luer82.tar.gz

Potete visualizzare in ogni momento la lista delle patch applicate con il comando “ksplice-view” ed eliminare una patch con “ksplice-undo” (nel nostro esempio “ksplice-undo 612luer82″)