Owncloud

From wiki
Jump to: navigation, search

OwnCloud est un logiciel libre offrant une plateforme de services de stockage et partage de fichiers et d'applications diverses en ligne. Il est présenté comme une alternative à Dropbox lequel est basé sur un cloud public. Dans ownCloud, le stockage des données se fait au sein de l'infrastructure de l'entreprise et les accès sont soumis à la politique de sécurité informatique de celle-ci. OwnCloud peut être installé sur n'importe quel serveur supportant une version récente de PHP (au moins 5.4 pour OwnCloud 8) et supportant SQLite (base de données par défaut), MariaDB, MySQL ou PostgreSQL1, à l'exception notable des serveurs sous Mac OS X 2.

Le projet ownCloud a été lancé en janvier 2010 par Frank Karlitschek (en)3 un développeur du projet KDE, afin de rendre aux utilisateurs le contrôle de leurs données dans le cloud4. OwnCloud fait partie de la communauté KDE5.

La création d'une entité commerciale fondée sur le projet ownCloud a été annoncée le 13 décembre 20116. Cette société se positionne en alternative aux solutions de Dropbox et Box.net, en mettant en avant la flexibilité et la sécurité. OwnCloud offre une alternative libre aux solutions propriétaires présentes sur le marché.

Des suggestions? Envoyez moi un mail à wiki@lomb.fr =)

Contents

Installation

Cette partie du wiki est un tuto pour l'installation d'Owncloud 8.0.2 avec Apache ou Nginx. L'installation c'est faite sur une Debian Wheezy

Mysql

Comme annoncé précédemment, Owncloud supporte différente solution de base de donnée. Pour une question de rapidité j'ai décidé d'utiliser Mysql. Mysql est également conseillé par Owncloud.

apt-get install mysql-server

Nous allons créer la base de donnée pour owncloud :

mysql -u root -p
mysql> CREATE DATABASE cld;
Query OK, 1 row affected (0.00 sec)

Si comme moi, votre base de donnée ne devra être seulement sur la même machine, laissez "localhost", sinon mettez l'adresse IP concernée et n'oubliez pas de modifier l'adresse IP d'écoute de mysql dans /etc/mysql/my.cnf, la ligne "bind-address"

mysql> GRANT ALL PRIVILEGES ON cld.* TO 'cld'@'localhost' identified by 'Test123';
Query OK, 0 rows affected (0.00 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
mysql> exit
Bye


Vérifions que nous pouvons accéder à la nouvelle BDD :

mysql -u cld -pTest123
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 57
Server version: 5.5.43-0+deb7u1 (Debian)
Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>

Owncloud

Nous allons nous concentrer sur le téléchargement d'owncloud. Si la dernière version est toujours le "8.0.2" vous pouvez l'obtenir avec un simple "wget" tel que :

wget https://download.owncloud.org/community/owncloud-8.0.2.tar.bz2

Ou bien, rendez-vous directement sur le site officiel d'Owncloud, soit :

https://owncloud.org/install/

Partons de la méthode wget : Décompresser l’archive où vous le souhaitez, pour ma part ça sera dans /var/www

mkdir /var/www
mv owncloud-8.0.2.tar.bz2 /var/www/
cd /var/www
tar –xvf owncloud-8.0.2.tar.bz2
rm owncloud-8.0.2.tar.bz2

Si la version est différente vous avez juste a modifier le « 8.0.2 »

Étant un utilisateur de base d'Apache mais utilise de plus en plus Nginx, j'ai décidé de vous proposer ces deux versions, Apache et Nginx. Bien évidemment choisissez en un des deux.

Apache

Pour apache, on commence avec un téléchargement basique packagé avec php5. En effet, Owcnloud supporte les versions php > 5.4

apt-get update
apt-get install apache2 php5 php5-mysql php5-gd curl php5-curl

Il faut changer la valeur de "default_charset" en "UTF-8" Pour apache il faut se rendre dans les fichiers :

vi /etc/php5/cli/php.ini

et

vi /etc/php5/apache2/php.ini

Et décommenter ou modifier la ligne

default_charset = "UTF-8"

Maintenant, nous allons créer notre site owncloud :

On donne les droits a apache pour le répertoire Owncloud

cd /var/www
chown -R www-data:www-data owncloud

Nous allons enfin commencer à configurer notre nouveau site. Pour cela rendez-vous dans le répertoire d'apache :

cd /etc/apache2/site-enabled/
vi owncloud

Et voici un exemple de configuration d'apache pour Owncloud. Bien évidemment, changer "test.fr" par votre NDD ou IP :

<VirtualHost *:80>
       ServerAdmin webmaster@localhost
       Servername cloud.fr
       DocumentRoot /var/www/owncloud
       <Directory />
               Options Indexes FollowSymLinks MultiViews
               AllowOverride All
               Order allow,deny
               allow from all
       </Directory>
       ErrorLog ${APACHE_LOG_DIR}/error.log
       LogLevel warn
       CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Il faut maintenant activer le mode rewrite d'apache :

a2enmod rewrite

Si vous avez plusieurs sites sur votre machine/serveur et que vous n'avez pas le droit de faire planter apache, n'hésitez pas à tester votre configuration avant avec la commande :

apache2ctl -t

Nous pouvons maintenant redémarrer apache :

/etc/init.d/apache2 restart

Nginx

Le téléchargement de Nginx ce fait de la même manière qu'Apache, sauf qu'il faut ajouter le package "php5-fpm"

apt-get update
apt-get install nginx php5 php5-fpm php5-mysql php5-curl php5-gd

Il faut changer la valeur de "default_charset" en "UTF-8" Pour nginx il faut se rendre dans les fichiers :

vi /etc/php5/cli/php.ini

et

vi /etc/php5/fpm/php.ini

Et décommenter ou modifier la ligne

default_charset = "UTF-8"

On donne les droits a nginx pour le répertoire Owncloud

cd /var/www
chown -R www-data:www-data owncloud

Nous allons enfin commencer à configurer notre nouveau site. Pour cela rendez-vous dans le répertoire de nginx :

cd /etc/nginx/site-enabled
vi owncloud
server {
listen 80;
       server_name cloud.fr;
       port_in_redirect off;
       root /var/www/owncloud;
       client_max_body_size 10G; # set max upload size
       fastcgi_buffers 64 4K;
       rewrite ^/caldav(.*)$ /remote.php/caldav$1 redirect;
       rewrite ^/carddav(.*)$ /remote.php/carddav$1 redirect;
       rewrite ^/webdav(.*)$ /remote.php/webdav$1 redirect;
       index index.php;
       error_page 403 /core/templates/403.php;
       error_page 404 /core/templates/404.php;
       location = /robots.txt {
           allow all;
           log_not_found off;
           access_log off;
       }
       location ~ ^/(data|config|\.ht|db_structure\.xml|README) {
               deny all;
       }
       location / {
               # The following 2 rules are only needed with webfinger
               rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
               rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last;
               rewrite ^/.well-known/carddav /remote.php/carddav/ redirect;
               rewrite ^/.well-known/caldav /remote.php/caldav/ redirect;
               rewrite ^(/core/doc/[^\/]+/)$ $1/index.html;
               try_files $uri $uri/ index.php;
       }
       location ~ ^(.+?\.php)(/.*)?$ {
               try_files $1 = 404;
               include fastcgi_params;
               fastcgi_param SCRIPT_FILENAME $document_root$1;
               fastcgi_param PATH_INFO $2;
               fastcgi_param HTTPS off;
               fastcgi_pass unix:/var/run/php5-fpm.sock;
       }
       location ~* ^.+\.(jpg|jpeg|gif|bmp|ico|png|css|js|swf)$ {
               expires 30d;
               # Optional: Don't log access to assets
               access_log off;
       }
}

Puis nous pouvons redémarrer notre service nginx :

/etc/init.d/nginx restart

Première utilisation

Rendez-vous sur votre navigateur préféré et taper le nom de domaine de votre site Owncloud, dans notre exemple c'est:

http://cloud.fr

Si vous n'avez pas de NDD mais que vous souhaitez quand même y accès en local via un nom sympathique [toujours mieux que 192.168....], il faut modifier votre fichier hosts, pour ça rien de plus simple.

Pour linux et mac rendez-vous dans :

/etc/hosts
Texte alternatif
Légende


Pour Windows :

C:\WINDOWS\system32\drivers\etc\hosts

Et ajouter l'adresse IP concernée avec votre NDD [ici cloud.fr]

légende @IP cloud.fr

Normalement, vous avez cette page une fois fini.


Si vous souhaitez refaire cette configuration rapidement (Cf imprime écran ci-dessus), il suffit de modifier le fichier suivant :

vi /var/www/owncloud/config/config.php

Et modifier la ligne : ‘installed' => true par false.

Navigation

L'utilisation d'Owncloud est facile a utiliser et comprendre. Il n'est pas primordiale de faire une partie dessus. Voici juste quelques screens une fois identifié :

légende

légende

légende


Sécurité

Installation de fail2ban

Rien ne vaut un bon vieux fail2ban pour sécuriser les accès !

Tout d'abord il faut installer fail2ban :

apt-get update
apt-get install fail2ban

Vérification des logs

Directory

Vérifions la validité des LOG concernant owncloud, par defaut les log d'owncloud se situe dans /var/www/owncloud mais pour une question de praticité il est préférable de le mettre dans "/var/log". Pour cela, il faut modifier le fichier "config.php" qui se situe dans "/var/www/owncloud/config", soit :

vi /var/www/owncloud/config/config.php

Et ajouter la ligne :

  'logfile' => '/var/log/owncloud.log',

Vérifier que les log de niveau 2 sont bien activé sur owncloud :

  'loglevel' => '2',

On peut maintenant créer le fichier avec les droits adéquates :

touch /var/log/owncloud.log
chown www-data:adm owncloud.log

Testons le fonctionnement des logs, essayez de vous connecter avec de faux identifiants et voyez :

tail -f /var/log/owncloud.log
...
{"reqId":"8d970e687b84637cbf7fdc1c54001523","remoteAddr":"@IP","app":"core","message":"Login failed: 'wef' (Remote IP: '@IP',
X-Forwarded-For: )","level":2,"time":"2015-05-01T14:52:59+00:00"}
...

Date

Il se peut également que la date [UTC] ne corresponde pas à la votre, ce qui peut empêcher le bon fonctionnement de fail2ban, pour cela il faut modifier de nouveau le fichier "config.php" :

vi /var/www/owncloud/config/config.php

Et ajouter la ligne :

'logtimezone' => 'Europe/Brussels',

Testons de nouveau :

tail -f /var/log/owncloud.log
...
"reqId":"a35624ad95c36f8c81c3f360dccb5a0c","remoteAddr":"90.24.138.232","app":"core","message":"Login failed: 'efef' (Remote IP: '@IP',
X-Forwarded-For: )","level":2,"time":"2015-05-01T15:09:08+02:00"}
...

Configuration de fail2ban

Se rendre dans le répertoire de fail2ban et éditer le fichier adéquate :

cd /etc/fail2ban
vi jail.conf

Ajouter la sous-partie suivante :

[owncloud]
enabled  = true
port     = http
filter   = owncloud
logpath  = /var/log/owncloud.log
bantime = 3600
maxretry = 5

Explication :
enabled => On active cette régle
port => on bloquera le port http/80
filter => Fail2ban ira chercher le fichier conf qui se nommera owncloud.conf
logpath => Ira chercher les régles dans ce path
bantime => Sera banni 3600 secondes, soit 1h
maxretry => Une IP aura le droit de se tromper 4 fois, à la 5ieme fois les règles au dessus s'appliqueront.

Il faut maintenant ajouter la regex qu'on utilisera pour fail2ban, les fichiers conf se situe dans filter.d :

cd /etc/fail2ban/filter.d/
vi owncloud.conf

Et ajouter le texte suivant :

# Fail2Ban configuration file
#
[INCLUDES]
before = common.conf
[Definition]
failregex = "app":"core","message":"Login failed:(.*)IP: '<HOST>'
ignoreregex =

L'argument <HOST> correspond à l'adresse IP qui trouvera et bannira.

Tester

Supposons que vous avez déjà fait des tests sur owncloud avec des identifiants erronés, nous allons tester la config de fail2ban, pour cela rendez-vous dans le répertoire filter.d

cd /etc/fail2ban/filter.d/

Et utiliser la commande "fail2ban-regex", exemple :

fail2ban-regex /var/log/owncloud.log owncloud.conf

Explication :
fail2ban-regex => Commande pour tester les regex dans fichier conf de fail2ban
/var/log/owncloud.log => chemin log d'owncloud
owncloud.conf => fichier conf comportant la regex de owncloud

Voici le résultat :

Running tests
=============
Use regex file : owncloud.conf
Use log file   : /var/log/owncloud.log
Results
=======
Failregex
|- Regular expressions:
|  [1] "app":"core","message":"Login failed:(.*)IP: '<HOST>'
|
`- Number of matches:
  [1] 13 match(es)
Ignoreregex
|- Regular expressions:
|
`- Number of matches:
Summary
=======
Addresses found:
[1]
…
@IP (Fri May 01 15:52:59 2015)
@IP (Fri May 01 16:09:08 2015)
…
Success, the total number of match is 13
However, look at the above section 'Running tests' which could contain important
information.

Finalisation

Il ne reste plus qu'à redémarrer le service fail2ban :

/etc/init.d/fail2ban restart

Et on verra une nouvelle chaine se créer dans Iptables :

iptables -L 
...
Chain fail2ban-owncloud (1 references)
target     prot opt source               destination
RETURN     all  --  anywhere             anywhere
...

Maintenant, si on force avec un faux ID, voici ce qu'affichera iptables :

Chain fail2ban-owncloud (1 references)
target     prot opt source               destination
DROP       all  --  @IP                  anywhere
RETURN     all  --  anywhere             anywhere
Personal tools
Namespaces

Variants
Actions
Navigation
Système UNIX
Cisco
Tools