Configurer un serveur web sous Debian

Un jour ou l’autre il est fort probable que souhaitiez prendre un serveur dédié pour l’hébergement de votre site et/ou des sites de vos clients.
Il existe déjà de nombreux tutoriels sur internet mais à mon goût beaucoup d’entre eux incitent à installer plein de services inutiles.
Voici donc mon tutoriel pour vous aider à configurer, étape par étape, votre serveur web sous Debian.
Debian : mise à jour du système
Pour commencer vérifiez si votre machine est bien à jour avec la commande suivante :
apt-get update && apt-get upgrade
Si tout est à jour cela va être très rapide sinon patientez quelques instants.
Installation des services pour votre serveur web
Il faut maintenant installer les services indispensables au bon fonctionnement votre serveur à savoir php5, apache2 et mysql server :
apt-get install apache2 php5 mysql-server
Suivez simplement les différentes étapes, il n’y a rien de bien compliqué.
Je vous recommande d’utiliser un mot de passe complexe, pour cela je trouve le site Générateur de mot de passe très utile.
On va également activer le module apache « mod_rewrite » pour la ré-écriture d’url :
a2enmod rewrite
Puis on redémarre apache2 :
service apache2 restart
Afin de faciliter l’administration de vos bases de données, nous allons installer phpmyadmin :
apt-get install phpmyadmin
Vous pouvez dès à présent accéder à PhpMyAdmin en ajoutant /phpmyadmin à la suite de l’url de votre serveur.
Choix de l’emplacement de vos sites internet
Vous pouvez laisser vos sites dans l’emplacement par défaut (var/www) ou bien choisir de les déplacer pour une meilleure organisation auquel cas je vous recommande le dossier /home.
Si vous souhaitez rester dans le dossier par défaut, vous pouvez passer directement à l’étape suivante.
Voici les quelques étapes pour placer vos sites dans le dossier home :
- Rendez vous dans le dossier home :
cd /home/
- Créez votre dossier en utilisant le nom de votre site
mkdir monsite
- Dans ce nouveau dossier nous allons créer le sous dossier « www » qui contiendra notre site et « logs » pour les messages d’erreurs
mkdir ./www et mkdir ./logs
- Éditez le fichier de configuration d’Apache2, recherchez puis copiez/collez pour chacun de vos sites ces quelques lignes :
nano /etc/apache2/apache2.conf
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
Pensez bien entendu à modifier le chemin d’accès par celui vers votre site (ex : /home/votresite/www) et on en profite pour modifier la ligne « AllowOvveride » en « All » pour autoriser la ré-écriture d’url.
Faites cela pour chacun des sites que vous souhaitez héberger sur votre serveur.
Configuration des vhosts sur votre serveur
Il est maintenant temps de configurer vos virtuals hosts afin d’indiquer à Apache où se trouve vos sites.
Rendez-vous dans le dossier « sites-available » d’Apache :
cd /etc/apache2/sites-available/
Ce dossier contient un fichier « default » dont le nom peut légèrement varier (dans mon cas 000-default.conf), pour le trouver tapez simplement la commande :
ls -lha
Puis faites une copie de ce fichier en utilisant pour le label de votre nouveau fichier, le nom de votre site :
cp default.conf votre-site.conf
Ouvrez ensuite le fichier fraîchement créé pour le modifier :
nano votre-site.conf
Là encore rien de bien compliqué :
- Ajoutez en en-tête :
- ServerName votre-site.fr
- ServerAlias www.votre-site.fr
- ServerAdmin : votre e-mail@votre-site.fr
- DocumentRoot : le chemin vers le dossier contenant votre site soit dans notre cas /var/www ou /home/votre-site/www
- ErrorLog et CustomLog
- Si votre site se trouve dans /var/www, n’y touchez pas
- Sinon modifiez les url par :
- ErrorLog /home/votre-site/logs/errors/log
- CustomLog /home/votre-site/logs/access.log combined
Activez ensuite votre site avec la commande a2ensite (apache2 enable site) :
a2ensite votre-site
Répétez ces différentes actions pour chacun de vos sites.
Pour finir redémarrez apache :
service apache2 restart
Création des utilisateurs et des bases de données avec PhpMyAdmin
Nous avons installé PhpMyAdmin, autant profiter de son interface pour créer les différents utilisateurs.
Rendez-vous sur l’interface de gestion : www.votre-serveur.com/phpmyadmin
Rendez-vous ensuite dans la partie « utilisateurs » et cliquez sur « Ajouter un utilisateur ».
Choisissez un nom et un mot de passe (laissez % dans client), puis cochez « Créer une base portant son nom et donner à cet utilisateur tous les privilèges sur cette base. »
Validez et répétez cette opération pour chacun de vos sites.
Remarque : là encore je vous recommande d’utiliser des mots de passe complexes.
Configuration du FTP
Maintenant que la base de données est en place, il ne manque plus que la configuration d’un serveur FTP. Il en existe de nombreux mais l’un des plus utilisé est proftpd, c’est donc celui-ci que je vous propose.
Commencez par l’installer :
apt-get install proftpd
Lorsqu’il vous est demandé de choisir comment lancer proftpd, choisissez « standalone » (indépendant en français).
Pour finir on le configure :
nano /etc/proftpd/proftpd.conf
Voici les données à modifier :
- ServerName : le nom de votre serveur (au choix)
- Dé-commenter la ligne DefaultRoot si vous souhaitez avec plusieurs vhost sur votre serveur
- Pour finir ajoutez à la fin du fichier « RootLogin off » pour interdire la connexion en root.
Et redémarrez le service :
sudo service proftpd restart
Il vous suffit maintenant d’ajouter des utilisateurs, pour cela :
- Créez un groupe d’utilisateur
addgroup ftpusers
- Ajoutez ces quelques lignes à votre fichier proftpd.conf :
DefaultRoot ~ ftpusers
<Limit ALL>
DenyGroup !ftpusers
</Limit>
- Et on créer l’utilisateur (remplacez pseudo par le nom d’utilisateur que vous souhaitez et chemin par le chemin qui pointe vers le dossier de votre choix)
adduser pseudo –ingroup ftpusers –shell /bin/false –home chemin
- Suivez simplement les informations demandées
- On définis les permissions via les commandes (pensez à remplacer « chemin » par le votre !)
chmod 775 chemin
chown pseudo chemin
- Entrez la commande suivante
echo /bin/false >> /etc/shells
- Recommencez l’opération pour chaque utilisateur
Installer un serveur mail
Pour votre serveur e-mail, je vous propose d’utiliser postfix.
On commence par l’installer :
apt-get install postfix
On ajoute postfix au groupe sasl
sudo adduser postfix sasl
On passe ensuite à la configuration :
sudo dpkg-reconfigure postfix
Voici les différentes étapes :
- Internet Site
- System mail : renseignez le nom de domaine de votre serveur
- Pour le reste laissez les valeurs par défaut
C’est tout ! Bien sûr vous pouvez faire une configuration plus poussée cependant dans la grande partie des cas cette configuration suffira.
Sécuriser son serveur web
Voici quelques conseils pour sécuriser votre serveur :
Éviter les attaques grâce à fail2ban
Fail2Ban est un petit outil qui va observer les logs de connexion à votre compte root et bannir les ip échouant plusieurs fois.
Pour l’installer c’est très simple :
apt-get install fail2ban
Modifiez ensuite son fichier de configuration :
nano /etc/fail2ban/jail.conf
Sur la ligne « ignoreip », ajoutez-y votre adresse ip et pensez à le faire pour tous vos postes de travail, en les séparant simplement par un espace.
Modifier la ligne « destemail » par votre adresse e-mail pour être notifié lorsqu’une adresse ip est bannie.
Paramétrez la rubrique SSH comme suit :
- enabled = true (on active)
- bantime = 1800 (vous pouvez mettre -1 pour un bannissement à vie)
- maxretry = 4 (nombre d’essaie avant de bannir
Laissez le reste comme c’est et re-demarrez fail2ban :
service fail2ban restart
Modifier le chemin d’accès à phpmyadmin
Pour empêcher toute tentative d’intrusions dans votre base, le plus simple est encore de changer le chemin d’accès à phpmyadmin !
Éditez simplement son fichier de configuration :
nano /etc/phpmyadmin/apache.conf
Et modifiez la ligne « Alias /phpmyadmin /usr/share/phpmyadmin » par le chemin de votre choix, par exemple « Alias /mabase /usr/share/phpmyadmin »
Redémarrez Apache2 :
service apache2 force-reload
Désormais pour accéder à phpmyadmin, vous devez vous rendre sur la nouvelle url à savoir : votre-serveur/mabase
Merci à AxessWeb pour tout ses bons conseils