StefanoLaguardia.eu

Cloud Computing con Owncload: installazione con supporto SSL

AGGIORNAMENTO DEL 5.11.2012: Aggiunti i video che mostrano il contenuto della guida.

I servizi di Cloud Computing hanno ormai preso il sopravvento. Sono molto utili e se ne trovano decine in giro per il web. Oguno con le sue peculiarità, i suoi punti di forza ed i suoi punti deboli. Tra questi ultimi v’è senza dubbio la sicurezza. Di fatto noi spostiamo i nostri dati personali su una nuvola che non sempre sappiamo esattamente dove sia fisicamente allocata (in quali Stati, per intenderci) e dobbiamo necessariamente fidarci del gestore del servizio. Non a caso le condizioni d’uso di questi servizi sono spesso improntate a spiegare come e perchè i nostri dati siano al sicuro. Ma accade spesso, tuttavia, di leggere notizie riguardanti la violazione di password o l’accesso abusivo a dati dei clienti. Dunque, perchè non provare ad utilizzare un sistema di cloud computing fatto in casa? Oggi vedremo come installare OwnCloud su un server Debian abilitando la crittografia automatica delle pagine web di accesso ai dati.

  • Premessa

Questa guida prende in considerazione l’ipotesi che voi abbiate a disposizione un server debian “pulito”. Dunque senza precedenti installazioni dei vari software necessari all’uso di OwnCloud, come ad esempio Apache, Mysql e PHP. Ovviamente ciò non toglie che se avete già installati alcuni dei pacchetti che andremo ad installare/configurare non possiate comunque seguire questa guida. Inoltre, vorrei precisare che lo scopo di questa guida è più che altro quello di illustrarvi come mettere in sicurezza il vostro Cloud personale, effettuando accesso allo stesso solo ed esclusivamente sfruttando il protocollo HTTPS. In questo modo ridurremo drasticamente il rischio che qualche mal intenzionato possa sniffare le password di accesso al server o semplicemente sniffare i nostri dati mentre vi accediamo.

Inoltre, questa guida nasce (e ne ricalca quasi integralmente i contenuti) a seguito del post pubblicato dall’amico Debiano sul sito web del BasLug – Basilicata Linux Users Group. Grazie Debiano per avermi fatto avvicinare ad OwnCloud ;)

Ma veniamo al dunque….

  • Preparazione del software necessario all’uso di OwnCloud

Iniziamo innanzitutto ad installare tutto il software necessario a configurare OwnCloud e la crittografia SSL con il server web Apache. Per farlo, aprite un terminale, loggatevi come utenti root e digitate i seguenti comandi:

$ su
# apt-get install apache2 php5 php-xml-parser php5-gd php5-gd php5-mysql php5-curl php5-common mysql-server-5.1 mysql-client-5.1

NB: Durante la fase di installazione di Mysql, vi verrà chiesto di inserire una password. Sceglietene una difficile da indovinare perchè questa sarà la password dell’utente ROOT di Mysql. Inoltre, appuntatevela perchè vi servirà dopo.

Adesso possiamo procedere con il download dei files di OwnCloud. Recatevi sulla pagina ufficiale del progetto e scaricate l’ultima versione. Personalmente io effettuo questa operazione dalla directory /opt e con il comando wget:

# cd /opt
# wget http://mirrors.owncloud.org/releases/owncloud-4.5.1.tar.bz2

A questo punto, estraiamo i file appena scaricati nella directory di root di Apache (/var/www) ed attribuiamo la proprietà dei files all’utente di default di apache:

# tar xjvf owncloud-4.5.1.tar.bz2 -C /var/www
# cd /var/www
# chown www-data:www-data -R owncloud

Visto che ci siamo, abilitiamo Apache a fare uso del file .htaccess. Ciò sarà indispensabile sia per il corretto funzionamento di Owncload e sia per ottenere, più tardi, il redirect automatico al protocollo HTTPS.

# a2enmod rewrite
# a2ensite headers
# service apache2 restart

Infine, anticipiamo ad adesso la creazione dell’utente Mysql per OwnCloud:

# mysql -u root -p (vi verrà chiesta una password ed è la stessa che avete configurato alla prima installazione di Mysql fatta poc’anzi).
mysql> grant all privileges on owncloud.* to ‘owncloud_user’@’localhost’ identified by ‘password';
mysql> flush privileges;
mysql> quit

Abbiamo terminato la prima parte. Possiamo adesso procedere con la configurazione di Apache per l’uso di SSL.

  • Preparare Apache all’uso di SSL

Innanzitutto abilitiamo i moduli di Apache per il supporto ad SSL:

# a2ensite default-ssl
# a2enmod ssl

Procediamo con un nuovo riavvio di Apache:

# service apache2 restart

Adesso dobbiamo creare il certificato SSL necessario per far funzionare apache e crittografare le nostre “conversazioni”…

#mkdir /etc/apache2/ssl
# make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/ssl/apache.crt

A questo punto, dal file appena creato, ricaviamo i files apache.key e apache.pem. Per farlo in maniera semplice, possiamo copiare il file apache.crt appena creato in due files identici che poi andremo a modificare…

# cp /etc/apache2/ssl/apache.crt /etc/apache2/ssl/apache.pem
# cp /etc/apache2/ssl/apache.crt /etc/apache2/ssl/apache.key

Infine, nel file “apache.pem” dobbiamo lasciare solo ed esclusivamente la parte di contenuto che va da — BEGIN CERTIFICATE — ad — END CERTIFICATE –.
Invece, nel file apache.key, dobbiamo lasciare il solo contenuto che va da — BEGIN PRIVATE KEY — ad — END PRIVATE KEY –. Per compiere questa operazione potete utilizzare un qualsiasi editor di testi. Personalmente utilizzo VIM, ma potete usare quello che volete.

Siamo pronti adesso ad istruire apache2 all’uso di SSL con l’apposito certificato creato. Modifichiamo il file /etc/apache2.sites-enabed/default-ssl modificando le righe relative ad SSL in questo modo:

SSLCertificateFile /etc/apache2/ssl/apache.pem
SSLCertificateKeyFile /etc/apache2/ssl/apache.key

Infine modifichiamo i permessi sul file .key in modo da metterne in sicurezza l’accesso:

chmod 600 /etc/apache2/ssl/apache.key

Riavviamo il nostro server apache un’altra volta:

# service apache2 restart

Per testare il funzionamento della configurazione https, non dobbiamo far altro che puntare il nostro browser all’indirizzo HTTPS://IP_SERVER
Se tutto funziona riceverete un avviso di connessione non affidabile con richiesta di accettazione dei rischi ai quali si va incontro. Questo “errore” di inaffidabilità del sito è legato al fatto che il certificato che abbiamo creato poco fa, non può essere “autenticato”. Tuttava, questo certificato lo abbiamo creati da soli e quindi è affidabile dal nostro punto di vista.

  • Abilitazione del redirect automatico da HTTP ad HTTPS

L’ultimo “passo” da compiere è quello di abilitare il redirect automatico delle pagine da HTTP ad HTTPS quando tenteremo di accedere al nostro servizio di clou casalingo.
Anche in questo caso, non stiamo parlando di qualcosa di particolarmente difficile :D

In primo luogo dobbiamo istruire apache in merito alla presenza di Owncloud anche tra i siti web che fanno uso di HTTPS. Pertanto, modifichiamo il file /etc/apache2/sites-available/default-ssl aggiungendo le seguenti righe:

#Owncloud directory
AllowOverride All
Order allow,deny
allow from all

Infine, ultimo passaggio, abilitiamo il redirect automatico dalla porta 80 (http) alla porta 443 (https). Per fare ciò dobbiamo modificare il file .htaccess che si trova nella directory di owncload:

# vim /var/www/.htaccess

Modifichiamo il file nella parte del rewrite engine in questo modo:

RewriteEngine on
#### added for https redirection ####
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
#### END redirection ####
RewriteRule .* – [env=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteRule ^.well-known/host-meta /public.php?service=host-meta [QSA,L]
RewriteRule ^.well-known/carddav /remote.php/carddav/ [R]
RewriteRule ^.well-known/caldav /remote.php/caldav/ [R]
RewriteRule ^apps/calendar/caldav.php remote.php/caldav/ [QSA,L]
RewriteRule ^apps/contacts/carddav.php remote.php/carddav/ [QSA,L]
RewriteRule ^apps/([^/]*)/(.*\.(css|php))$ index.php?app=$1&getfile=$2 [QSA,L]
RewriteRule ^remote/(.*) remote.php [QSA,L]

A questo punto, non ci resta che iniziare la configurazione di OwnCloud sulla quale non mi soffermo perché è davvero banale e semplice :)
Quello però che vorrei notaste è che da adesso, ogni volta che tenterete di accedere al vostro servizio di OwnCloud digitando l’indirizzo http://IP_SERVER/owncloud nel vostro browser, verrete automaticamente reindirizzati alla pagina HTTPS.

Aggiungo, infine i due video nei quali illustro il contenuto di questa guida in “realtime”:

PARTE 1

You need to a flashplayer enabled browser to view this YouTube video

PARTE 2

You need to a flashplayer enabled browser to view this YouTube video

Ti è piaciuto questo articolo? Iscriviti alla newsletter per ricevere gli aggiornamenti dal blog:


 

9 Responses

  1. mario says:

    quali sono i requisiti hardware? va bene anche un pc vecchio o serve minimo un dualcore? deve essere sempre connesso in rete?

  2. stefano says:

    mario wrote:

    quali sono i requisiti hardware? va bene anche un pc vecchio o serve minimo un dualcore? deve essere sempre connesso in rete?

    Ciao.
    Non serve hardware di particolare “potenza”.
    Può andare benissimo anche un single-core. Ovviamente molto dipende da cosa altro gira oltre ad Owncload e da quanti client si connettono contemporaneamente.
    In ogni caso puoi tranquillamente installarlo anche sui “vecchi” processori Atom a singolo core ;)

    Anzi.. se decidi di installare ed hai esperienze dirette, magari puo condividere il tuo hardware e la tua particolare configurazione :)

  3. Lino says:

    Ciao, ottima guida.
    Volevo segnalarti che per forzare il redirect di owncloud ad https basta aggiungere la stringa: ‘forcessl’ => true,
    al contenuto del file PATH_OWNCLOUD/config/config.php

    per approfondire lascio un link: http://forum.owncloud.org/viewtopic.php?f=3&t=2178

  4. stefano says:

    Grazie per la segnalazione :)

  5. Teo says:

    Ciao, ottima guida. Completa e chiarissima. Volevo segnalarti che quando dò il comando a2ensite header, mi dice che il sito non esiste. Cosa devo fare ? Posso proseguire tranquillamente ? Grazie e complimenti per il lavoro. Sto installando owncloud su ubuntu server 12.04 lts

  6. Teo says:

    ciao, ti rispondo qui perchè non riesco a variare il mio messaggio. C’è un errore tra la guida scritta e video. Sulla guida hai scritto “# a2ensite headers” mentre nel video hai fatto “a2enmod headers”. Il primo metodo infatti da errore. Mi chiedevo cosa sbagliavo quando lo facevo io, poi ho visto la guida video ed ecco trovato l’inghippo :)

  7. Emanuele says:

    Ottima guida veramente. Purtroppo dopo aver seguito tutto, per filo e per segno, ho un errore quando lancio owncloud. L’errore e':
    Avviso di sicurezza
    La cartella dei dati e i file sono probabilmente accessibili da Internet poiché il file .htaccess non funziona.
    Per informazioni su come configurare correttamente il tuo server, vedi la documentazione.
    Mi appare se nel file /etc/apache2/sites-available/default-ssl, lascio il rigo AllowOverride None invece che All.
    Se lo imposto ad All, invece non visualizzo più il sito tramite browser.
    Dove sbaglio?
    Grazie in anticipo.

  8. Cristian says:

    Ottimi suggerimenti , grazie…
    Io però vorrei dare il servizio anche ad altre persone che si connettono dall’esterno e il mio problema è che ogni volta che si connettono il browser restituisce il messaggio di sito non sicuro .. Bisognerebbe quindi comprare un certificato per evitare questo immagino, ma quale devo acquistare per avere il costo più basso possibile ?

    Grazie

  9. stefano says:

    Ciao Cristian,
    dovresti poter avere anche un certificato in maniera totalmente gratuita tramite il sito cacert.org.
    Prova a dargli un’occhiata ;)

Comments

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>