Le but de cet article est de documenter la configuration d’une Dedibox sous Ubuntu Server 10.04 LTS 64 bits. Nous verrons comment sécuriser un minimum le serveur(firewall, PortSentry, LogWatch) et comment installer Apache 2, PHP 5, MySQL 5, postfix, MediaWiki, vsftpd, SVN+HTTPS, WebSVN et le démon SNMP.

Ubuntu
L’installation d’Ubuntu sur Dedibox est entièrement automatisée et se passe de commentaires. J’ai utilisé la configuration de base proposée par l’interface d’installation de la Dedibox.
Une fois l’installation terminée on peut se connecter au serveur en utilisant SSH, par exemple au moyen de Putty. Il faut alors entrer l’adresse IP de la Dedibox et se connecter avec l’utilisateur créé pendant la phase d’installation (et non pas l’utilisateur root).
Désactivation du compte root
La première chose à faire sur cette installation de base est justement de désactiver le compte root. Cet utilisateur ayant absolument tous les droits sur la machine il est bien souvent la cible d’attaques et le désactiver permettra d’éviter une partie des tentatives de piratage de la Dedibox. Par défaut, l’utilisateur créé pendant l’installation est autorisé à lancer des commandes sudo, ce qui nous permettra d’installer et de configurer tout ce dont nous avons besoin.
Pour désactiver le root il suffit d’entrer la commande suivante :
$sudo passwd -l root
Entrez ensuite le mot de passe de l’utilisateur et appuyez sur Entrée.
Création d’un deuxième compte admin de secours
Par sécurité, en cas de problème avec l’utilisateur créé pendant l’installation, nous allons créer un utilisateur secours pouvant également exécuter des sudo :
$sudo adduser secours
Entrez un mot de passe, renseignez les noms et numéros de téléphone si vous le souhaitez et validez finalement en appuyant sur y puis Entrée. Une fois l’utilisateur créé on l’ajoute au groupe admin qui est autorisé à utiliser la commande sudo :
sudo usermod -G admin secours
Mise en place du firewall
Pour gérer le firewall d’Ubuntu nous allons utiliser ufw qui permet une gestion simple d’iptables. Pour vérifier l’état du firewall, entrez la commande suivante :
$sudo ufw status
Vous devriez obtenir le résultat État : inactif. Une fois activé, le firewall bloquera toutes les communications, nous allons donc d’abord ajouter une règle autorisant notre adresse IP (celle depuis laquelle vous vous connectez en SSH, pas celle du serveur) à utiliser le port 22 :
$sudo ufw allow from VOTRE_IP to any port 22
On peut ensuite activer le firewall :
$sudo ufw enable
Un message nous prévient que cela pourrait couper des connexions SSH en cours. Valider en appuyant sur o puis Entrée. Si on vérifie le status du firewall, on obtient cette fois
État : actifVers Action Depuis—- —— ——22 ALLOW VOTRE_IP
Installation de PortSentry
PortSentry est une application surveillant une liste de ports et qui repère les tentatives de scans. Une option permet également de bloquer les IPs lançant ce type de scans, ce qui permet de se protéger contre une grande partie des script kiddies.
L’installation est très simple :
$sudo apt-get install portsentry
Jetez un oeil au fichier de configuration /etc/portsentry/portsentry.conf :
$sudo nano /etc/portsentry/portsentry.conf
Normalement les options par défaut sont suffisantes, les deux points à vérifier sont la liste des ports contrôlés (l’option moyenne est normalement sélectionnée) et la ligne KILL permettant de bannir les IPs tentant des scans. Vous pouvez également ajouter votre propre IP à la liste des IPs ignorées afin d’éviter de vous retrouver bloqué et sans possibilité de vous connecter ! Pour cela ajoutez votre IP à la fin du fichier /etc/portsentry/portsentry.ignore.static.
Lancez enfin portsentry :
$sudo /etc/init.d/portsentry start
Installation de LogWatch
Installons à présent logwatch, un script qui parcourera les logs et enverra un rapport contenant les lignes les plus intéressantes. L’installation est très simple et se fait au moyen de la commande apt-get qui le téléchargera et l’installera automatiquement
$sudo apt-get install logwatch
Editez le fichier /usr/share/logwatch/default.conf/logwatch.conf
$sudo nano /usr/share/logwatch/default.conf/logwatch.conf
et modifiez les lignes suivantes :
Output = mail
Format = Html
Mailto = VOTRE_EMAIL
Detail = Low
Lorsque vous avez terminé, faites un Ctrl+X pour quitter puis o puis Entrée pour sauvegarder le fichier.
Vous pouvez ensuite ajouter une tache au cron afin de lancer la tache automatiquement, par exemple une fois par jour :
$sudo crontab -e
et entrez 1 0 * * * /usr/sbin/logwatch avant de sauver. La tache s’exécutera à 00h01 chaque jour et enverra un email (voir ci-dessous la configuration de postfix !) à votre adresse détaillant les résultats. Vous pouvez éditer le niveau de détail pour adapter la quantité de données envoyée dans l’email.
Installation de postfix
postfix permettra de gérer les emails et est déjà installé par défaut. Pour le configurer, entrez la commande suivante :
$sudo dpkg-reconfigure postfix
Sélectionnez OK, Site Internet, OK, NUMERO_DEDIBOX.dedibox.fr, OK, VOTRE_EMAIL, NUMERO_DEDIBOX.dedibox.fr, localhost.dedibox.fr, localhost, Non, OK, OK, 51200000, OK, tous. Une fois cela fait postfix devrait fonctionner correctement pour une utilisation basique.
Installation d’Apache 2
Nous allons maintenant installer le serveur web Apache 2 :
$sudo apt-get install apache2
Appuyez sur o puis Entrée pour confirmer que vous souhaitez bien installer Apache. Pour tester le bon fonctionnement de Apache, il faut d’abord ouvrir le port 80 sur la Dedibox au moyen de la commande :
$sudo ufw allow from VOTRE_IP to any port 80
Il ne vous reste plus qu’à ouvrir un navigateur et à entrer http://IP_DEDIBOX. Vous devriez alors obtenir une page web indiquant que tout va bien !
Installation de PHP 5.3.2
Pour installer PHP 5, entrez la commande suivante qui installera d’une part PHP 5 et le mod Apache permettant son utilisation par le serveur web :
$sudo apt-get install php5 libapache2-mod-php5
Redémarrez le serveur Apache pour prendre en compte les changements :
$sudo /etc/init.d/apache2 restart
Entrez ensuite la commande suivante pour éditer un fichier index.php qui vous permettra de vérifier que tout fonctionne correctement :
$sudo nano /var/www/index.php
Tapez la ligne <?php phpinfo(); ?> puis enregistrer le fichier.
Dans votre navigateur web, entrez l’URL http://IP_DEDIBOX/index.php. Vous devriez obtenir une page détaillant la configuration de PHP.
Vous pouvez ensuite installer les différentes extensions PHP dont vous pourriez avoir besoin, par exemple GD2 :
$sudo apt-get install php5-gd
Il faudra ensuite redémarrer le serveur Apache avant de pouvoir l’utiliser. De manière générale, vous pouvez obtenir la liste des extensions PHP en entrant sudo apt-get install php5 et en appuyant deux fois sur Tab.
Installation de MySQL 5.1 et phpMyAdmin 3.3.2
L’installation de MySQL 5.1 se lance par la commande :
$sudo apt-get install mysql-server
Entrez ensuite un mot de passe pour l’utilisateur root de MySQL et laissez l’installation se poursuivre.
Afin de simplifier l’administration de MySQL nous allons également installer phpMyAdmin :
$sudo apt-get install phpmyadmin
Sélectionnez apache2 avec la touche Espace, tapez sur la touche Tab puis sur Entrée. Sélectionnez ensuite Oui puis entrez le mot de passe root de MySQL et laissez le champ vide pour l’utilisateur phpmyadmin pour terminer l’installation.
Dans votre navigateur, entrez l’URL http://IP_DEDIBOX/phpmyadmin/ et entrez le login root et son mot de passe pour accéder à la gestion de vos bases MySQL.
Installation de MediaWiki 1.15.1
Pour installer MediaWiki lancez la commande suivante :
$sudo apt-get install mediawiki
Il faut ensuite indiquer à Apache le répertoire où MediaWiki a été installé (notez que ce n’est pas dans la racine /var/www utilisée par Apache !) :
$sudo nano /etc/apache2/conf.d/mediawiki.conf
Décommentez la ligne Alias /mediawiki /var/lib/mediawiki et enregistrez le fichier. Redémarrez ensuite Apache au moyen de la commande :
$sudo /etc/init.d/apache2 restart
et entrez enfin l’URL http://IP_DEDIBOX/mediawiki/config/ dans votre navigateur. Donnez un nom à votre Wiki, entrez un email de contact et un login/mot de passe pour l’administrateur.
Dans la section Database config vous pouvez laisser le nom wikidb pour la base qui stockera les données du wiki. Donnez également un mot de passe à l’utilisateur wikiuser, puis sélectionnez la case Use superuser account et renseignez le mot de passe du root de MySQL. L’installation utilisera ce compte pour créer la base wikidb et l’utilsateur wikiuser. Il ne vous reste plus qu’à cliquer sur le bouton Install MediaWiki!
Une fois l’installation terminée, entrez la commande suivante pour déplacer le fichier LocalSettings.php qui contient les options de configuration de MediaWiki :
$ sudo mv /var/lib/mediawiki/config/LocalSettings.php /etc/mediawiki
Vous pouvez accéder au wiki grâce à l’URL http://IP_DEDIBOX/mediawiki.
Installation d’un serveur FTP
Nous allons à présent installer un serveur FTP donnant accès à la racine de Apache :
$sudo apt-get install vsftpd
Créez un utilisateur qui sera utilisé pour se connecter en FTP
$sudo adduser ftpuser
Changez ensuite la racine de cet utilisateur pour la racine de Apache et donnez-lui les droits sur le répertoire /var/www :
$sudo usermod -d /var/www ftpuser $sudo chown -R ftpuser /var/www
Editez ensuite le fichier /etc/vsftpd.conf au moyen de la commande :
$sudo nano /etc/vsftpd.conf
et décommentez/modifiez les lignes suivantes :
write_enable=YES chroot_local_user=YES
Cela aura pour effet de restreindre l’utilisateur ftpuser au répertoire /var/www.
Redémarrez enfin le service :
$sudo /etc/init.d/vsftpd restart
Vous pouvez à présent vous connecter au serveur FTP en utilisant l’IP de la Dedibox.
Installation de Subversion+HTTPS
Passons à l’installation de SVN :
$sudo apt-get install subversion
Il faut à présent activer le SSL dans Apache, ce qui est fait au moyen de la commande :
$sudo a2enmod ssl
Ignorez pour le moment le message demandant de recharger la configuration de Apache. Editez le fichier /etc/apache2/ports.conf et vérifiez bien que la ligne Listen 443 est décommentée. Ouvrez ce port sur le firewall au moyen de la commande suivante :
$sudo ufw allow from VOTRE_IP to any port 443
Il ne reste plus qu’à configurer le site SSL, ce qui se fait avec la commande :
$sudo a2ensite default-ssl
Cette fois il faut bien relancer Apache :
$sudo /etc/init.d/apache2 restart
Vous pouvez tester que le SSL fonctionne bien en vous connectant sur https://IP_DEDIBOX/index.php. Vous devriez obtenir un avertissement vous disant que le certificat SSL n’est pas approuvé : c’est normal, puisque vous n’êtes pas une autorité officielle d’émission de certificats. Autorisez le certificat malgré tout et vous devriez obtenir votre page PHP Info en HTTPS.
Nous allons à présent ajouter le mod SVN à Apache :
$sudo apt-get install libapache2-svn
Passons à la configuration de SVN et à la création d’un dépôt de fichiers :
$sudo mkdir /var/local/svn $sudo chown www-data:www-data /var/local/svn $sudo -u www-data svnadmin create /var/local/svn
Nous avons ici créé un dépôt de fichiers situés dans /etc/local/svn et donné les droits nécessaires à Apache pour y accéder. Nous devons à présent éditer le fichier de configuration du mod SVN de Apache pour lui indiquer comment trouver ce dépôt de fichiers. A la fin du fichier /etc/apache2/mods-available/dav_svn.conf, ajoutez les lignes suivantes :
<Location /svn>
DAV svn
SVNPath /var/local/svn
AuthType Basic
AuthName « My Subversion Repository »
AuthUserFile /etc/subversion/user_access.passwd
Require valid-user
</Location>
L’entrée Location permettra à Apache de rediriger l’adresse https://IP_DEDIBOX/svn/ vers le répertoire défini par la variable SVNPath, ici /var/local/svn. Le contrôle d’accès au dépôt de fichiers sera géré par une authentification basée sur un fichier /etc/subversion/user_access.passwd que nous allons à présent créer :
$sudo htpasswd -c /etc/subversion/user_access.passwd User1 $sudo htpasswd /etc/subversion/user_access.passwd User2
Notez bien le paramètre -c pour la première ligne : il sert à créer le fichier. Ne l’utilisez PAS ensuite, un nouveau fichier serait créé, supprimant l’ancien ! Remarquez également qu’il s’agit d’un simple fichier htpasswd, ce qui simplifie la création des utilisateurs.
Rechargez la configuration de Apache une dernière fois :
$sudo /etc/init.d/apache2 reload
Si tout s’est bien passé vous devriez pouvoir accéder à votre dépôt de fichiers en utilisant l’URL https://IP_DEDIBOX/svn/ dans votre navigateur. Entrez un login/mot de passe correct et vous devriez obtenir une page pratiquement vide vous indiquant que vous en êtes à la Revision 0, ce qui est normal puisque le dépôt est encore vide. Vous pouvez également utiliser cette adresse dans TortoiseSVN, par exemple.
ATTENTION : si vous déposez un fichier svn.XXX (par exemple un dump de votre ancien SVN) dans /var/www vous ne pourrez plus accéder à votre dépôt de fichier, ni dans votre navigateur, ni dans TortoiseSVN ! Pensez à renommer ce genre de fichier pour qu’il ne commence pas par svn. et cela vous évitera pas mal de problèmes…
Installation de WebSVN
WebSVN est une interface web permettant d’accéder au contenu d’un dépôt SVN depuis un navigateur web et qui dispose de fonctionnalités intéressantes pour qui souhaite rapidement accéder à un fichier sans disposer d’un client SVN installé.
L’installation se fait très simplement :
$sudo apt-get install websvn
Indiquez le chemin /var/local/svn lorsque cela vous est demandé. Afin de gérer les droits d’accès à WebSVN, nous allons utiliser le même fichier que SVN, ce qui simplifiera la gestion. Bien entendu vous pouvez spécifier un autre fichier si vous souhaitez dissocier les droits d’accès à SVN et à WebSVN.
$sudo nano /etc/apache2/conf.d/websvn
A la suite de la ligne </IfModule>, ajoutez les lignes suivantes :
AuthType Basic
AuthName « WebSVN Authentication »
Require valid-user
AuthUserFile /etc/subversion/user_access.passwd
Vous pouvez à présent vous connecter sur http://IP_DEDIBOX/websvn/ dans votre navigateur.
Installation de SNMPd
Afin de monitorer notre serveur et générer des graphiques dans Cacti, nous allons installer le démon SNMP :
$sudo apt-get install snmpd
Il faut ensuite éditer le fichier de configuration :
$sudo nano /etc/snmp/snmpd.conf
et y ajouter les lignes :
rocommunity public
syslocation « Box »
syscontact VOTRE_EMAIL
Indiquez ensuite à snmpd l’emplacement du fichier de configuration en remplaçant dans /etc/default/snmpd la ligne située directement sous # snmpd options (use syslog, close stdin/out/err). par :
SNMPDOPTS=’-Lsd -Lf /dev/null -u snmp -g snmp -I -smux -p /var/run/snmpd.pid -c /etc/snmp/snmpd.conf’
Ouvrez le port 161 sur le firewall et redémarrez le démon snmpd :
$sudo ufw allow from VOTRE_IP to any port 161 $sudo /etc/init.d/snmpd restart
Vous devriez à présent pouvoir ajouter des graphiques dans Cacti.
Configuration ultérieure
Le serveur est maintenant prêt à être utilisé mais il reste bien sûr de très nombreuses choses à personnaliser, à vous de voir ce dont vous avez besoin et d’agir en ce sens…
Un détail important si le serveur doit être ouvert au monde : n’oubliez pas de modifier les règles du firewall pour autoriser les communications !