Administrer son serveur Web – Debian

Administrer son serveur Web – Debian

Nous allons préciser les différentes étapes pour configurer un serveur sous Debian de manière sécurisée.

En partant du principe que votre distribution est nue, nous allons installer les éléments essentiels pour faire tourner une machine simplement et efficacement.

Nous allons préciser les différentes étapes pour configurer un serveur sous Debian de manière sécurisée.

En partant du principe que votre distribution est nue, nous allons installer les éléments essentiels pour faire tourner une machine simplement et efficacement.

Pré-requis

Voici les caractéristiques du serveur en question :

Distribution installée : Debian Jessie

Kernel linux : Linux version 3.12.35

Disque système : 20 Go

RAM : 1Go

Processeur : double coeur Intel

Il s’agit en fait d’un serveur virtuel sur lequel on peut faire évoluer les performances à tout instant.

Hormi le kernel et ssh avec accès root, rien n’est présent.

Les sources – Mises à jour

Première étape, nous allons mettre à jour le serveur en incluant les paquets encore en test, ceci est un choix pour rester à jour en permanence (Cf article sur la sécurité du serveur).

Voici notre fichier /etc/apt/sources.list

deb http://mirrors.gandi.net/debian jessie main contrib non-free
deb http://ftp.debian.org/debian unstable main contrib non-free
deb http://ftp.debian.org/debian testing main contrib non-free
deb http://security.debian.org/ testing/updates main contrib non-free
deb http://mirrors.gandi.net/debian jessie-updates main contrib non-free
deb http://mirrors.gandi.net/debian jessie-backports main contrib non-free
Entrez ensuite les commandes :
# apt-get update
# apt-get upgrade
Tout devrait se passer sans erreur. Vous pouvez même tester un reboot pour être certain que tout passe convenablement.
Vérifiez votre distribution et versions :
# cat /proc/version

Sécurité

Commençons par ajouter 2 utilisateurs, un administrateur pour les sauvegardes dans un compte séparé d’un autre utilisateur qui sera celui par défaut pour notre serveur Web.
L’utilisateur administrateur pourra se connecter par ssh, l’accès root sera bloqué.
# adduser userweb

SSH

Comme vu au cours de l’article sur la sécurité de debian, nous allons changer de port SSH et bloquer l’accès root :
vi /etc/ssh/sshd_config
Port 2222
PermitRootLogin no
AllowUsers USERNAME
décommentez :
x11forwarding
et redémarrez :
# /etc/init.d/ssh restart

Le pare-feu

Nous portons notre choix sur UFW qui est simple à utiliser.
# apt-get install ufw
On ajoute quelques règles pour les ports utilisés :
# ufw allow 80
# ufw allow 2222
# ufw allow 443
# ufw allow 25
443 pour le https, 80 pour nos sites internet et 2222 (exemple) pour la connexion ssh. Enfin 25 pour les emails sortants.
On désactive les autres par défaut avant d’activer le pare-feu.
# ufw default deny
# ufw enable
Vérification avec # ufw status
Pour davantage de précision et paramétres, rendez vous sur la page sécurité de debian.
En avant pour les emails, mais avant assurez vous de rentrer votre nom de domaine principal dans votre fichier hostname :
# vi /etc/hostname
nomdomaine.com

Exim4

Il s’agit là d’une partie à bien prendre en compte notamment pour éviter de retrouver ses emails dans les indésirables. Voici l’article qui détaille la configuration :
Pour installer, entrez la commande suivante :
# apt-get install exim4
et pour configurer :
# dpkg-reconfigure exim4-config
Vous allez suivre des étapes pour configurer correctement votre serveur :
  1. internet site ; mail is sent and received directly using smtp
  2. system mail name : votredomaine.com (le principal)
  3. Pour la réception – on ne dépendra pas de Exim4 mais de notre hébergeur, donc on renseignera localhost
  4. notre serveur n’est pas serveur de destination d’emails.
  5. pas de relai non plus
  6. Peu importe l’endroit où sont stockés les emails ex : /var/mail (seuls les emails locaux seront stockés – root daemon)
  7. on choisit ensuite de ne pas diviser les fichiers.
  8. renseignez l’utilisation de réception des emails root et postmaster

Vérifiez le fichier de configuration généré dans /etc/exim4/update-exim4.conf.conf

Plutôt qu’utiliser les fichiers divisés, on modifiera le fichier /etc/exim4/exim4.conf.template pour ajouter les lignes du tutoriel sur Exim4.

Note : ajoutez les lignes respectivement comme indiqué :

#####################################################
### end transport/30_exim4-config_maildir_home
#####################################################
#####################################################
### transport/30_exim4-config_remote_smtp_dkim
#####################################################
et
#####################################################
### end router/150_exim4-config_hubbed_hosts
#####################################################
#####################################################
### router/180_exim4-config_local_primary_dkim
#####################################################

Et on redémarre, ajoute la bonne entrée au DNS et test.

# echo « my test » | mail -s « test message » votre@email
Poursuivons avec l’installation et le paramétrage de Mysql, Php et Apache2.

Mysql

Entrez la commande suivante :
# apt-get install mysql-server
Choisissez un bon mot de passe pour le root et ensuite ajoutez vos bases de données et utilisateurs associés.

Php

# apt-get install php5
et ajoutons quelques modules utiles :
# apt-get install php5-mysql php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl

Apache devrait déjà être installé.

il reste à ajouter un degré de sécurité dans /etc/php5/apache2/php.ini :
expose_php=Off
si ce n’est pas déjà le cas.
Ensuite nous activons quelques modules :
l’url rewriting
# a2enmod rewrite
et pour chacun des sites :
# a2ensite votresite.com
et on redémarre de cette façon :
# service apache2 reload
Une fois que vous avez ajouté vos virtualhosts et configuré vos bases, tout devrait fonctionner. Il ne reste plus qu’à vous occuper des sauvegardes automatiques.

Gandi et 2 adresses IP .

Si vous êtes chez Gandi et avez 2 adresses IP configurées, voici les lignes à ajouter au fichier :

/etc/sysctl.conf

net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_announce = 0
net.ipv4.conf.lo.arp_announce = 0
net.ipv4.conf.eth0.arp_announce = 0
net.ipv4.conf.eth1.arp_announce = 0
net.ipv4.conf.all.arp_filter = 0
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.default.arp_filter = 0
net.ipv4.conf.eth0.rp_filter = 0
net.ipv4.conf.eth0.arp_filter = 0
net.ipv4.conf.eth1.rp_filter = 0
net.ipv4.conf.eth1.arp_filter = 0

Ensuite lancez la commande:
# sysctl -f /etc/sysctl.conf

Prévoyance.

Si votre hébergeur vous le permet, faites une copie image de votre serveur régulièrement.
Il est primordial également d’isoler quotidiennement vos bases de données.
Voici un script à lancer en tâche cron pour procéder aux sauvegardes :
#!/bin/sh
mysqldump –opt -u nomutilisateur –password=lemotdepasse -h localhost nombase > /home/sauvegarde.sql
mysqldump –opt -u nomutilisateur –password=lemotdepasse -h localhost autrebase > /home/sauvegarde2.sql
y=`date +%Y`
m=`date +%m`
d=`date +%d`

tar cf –  /home/*.sql | gzip > /home/DB.$d.$m.$y.tar.gz
rm /home/*.sql
ncftpput -u ftputilisateur -p lepassftp adresseinternetautreserveur dossiersurserveru /home/DB.$d.$m.$y.tar.gz

Il faut aussi penser à opérer une rotation des fichiers sauvegardés, voici à titre d’exemple un script pour supprimer les fichiers vieux de plus de 15 jours :
#!/bin/sh

find /home/administrator/bk/* -type f -mtime +15 -exec rm {} \;

Tâche Cron

Ajoutez enfin en tâche cron les scripts ci-dessus de sorte à ne plus vous en occuper :
# crontab -e
Exemple de fichier :
# tous les jours à 0h10
10 0 * * * /home/cron/backupDB.sh
40 1 * * * /home/cron/cleanbk.sh
Copyrights © 2017 : RHM - Optimisation et développement informatique pour Entreprises et Associations