Installation et configuration d’un serveur web avec Debian

Bienvenue à tous dans ce tutoriel qui aura comme sujet, comme le titre l’indique, l’installation et la configuration d’un serveur web LAMP de manière sécurisé.

serveur web linux debian logo

Sommaire

 

Préparation du serveur web Linux

  • Définitions
  • Logiciels requis
  • Mise à jour des dépôts

Installation du serveur web Linux

  • Installation d’Apache
  • Installation de PHP (+ installations facultatives)
  • Installation de MySQL

 Configuration du serveur web Linux

  • Configuration de la base de donnée et sécurisation de celle-ci
  • Configuration de Apache

 

 

Préparation du serveur web Linux

Définitions

Il n’y a rien de barbare derrière cet acronyme qui signifie en réalité :

Linux: le nom donné au système d’exploitation que nous allons utiliser, Debian étant lui même une distribution Linux.
Apache: le nom du serveur web Linux qui va interpréter les requêtes HTTP arrivant et générer une page web pour renvoyer celle-ci à l’utilisateur.
MySQL: est un SGBD (Système de Gestion de Base de Données) relationnel libre qui prend en charge la gestion, la structuration, le stockage et la maintenance des données.
PHP: qui est un langage informatique qui permet de faire d’un site web une plate-forme dynamique.

 

Logiciels requis

Putty : Permet d’accéder à votre Terminal via un accès SSH à condition d’avoir installé OpenSSH au préalable sur le serveur distant.

A savoir:
22 est le port de connexion SSH par défaut.

 

Mise à jour des dépôts

Nous allons tout d’abord aborder la mise à jour des dépôts, pour ceci connectez-vous à votre serveur SSH.
Dès lors que vous êtes authentifié, il vous faut modifier votre fichier sources.list avec votre éditeur préféré, VI ou Nano pour ne citer que eux,  qui contient la liste des adresses de dépôts qui nous intéressent :

Si vous ne vous sentez pas à l’aise avec l’interface par ligne de commande rien ne vous empêche de passer par un client FTP tel que WinSCP ou FileZilla pour les diverses modifications qui suivent mais attention cependant, ceci reste peu recommandé car il y a des risques de modifier les permissions et les utilisateurs attribués à vos fichiers.

nano /etc/apt/sources.list

Par défaut vous devriez avoir comme contenu ce qui va suivre, en fonction de la version de votre distribution Debian, dans mon cas ce sera Squeeze :

deb ftp://ftp.fr.debian.org/debian/ squeeze main contrib  non-free
deb http://security.debian.org/ squeeze/updates main contrib non-free

Le contenu de ce fichier peut varier en fonction de l’installation, rien ne vous empêche de générer un nouveau fichier sources.list depuis debgen.
Dans notre cas, nous allons remplacer le contenu précédent par celui-ci :

#——————————————————————————#
#                   OFFICIAL DEBIAN REPOS
#——————————————————————————#

###### Debian Main Repos
deb http://ftp.fr.debian.org/debian/ squeeze main contrib

###### Debian Update Repos
deb http://security.debian.org/ squeeze/updates main contrib
deb http://ftp.fr.debian.org/debian/ squeeze-proposed-updates main contrib

Dorénavant il ne nous reste plus qu’à lancer la mise à jour des dépôts et l’installation des paquets par le biais de la commande ci-dessous :

apt-get update && apt-get dist-upgrade

Afin de sécuriser l’accès à votre machine, renseignez-vous à propos de rkhunter fail2ban et principalement de iptables.

 

Installation du serveur web Linux

Installation d’Apache

Pour installer le serveur web Linux, donc vous l’aurez compris Apache2, on procède comme ci-dessous:

apt-get install apache2

 

Installation de PHP

apt-get install php5

Vous pouvez également télécharger PHP-APC  qui va accélérer PHP en générant un cache de votre code.
APC permet de cacher les OPCode (structures de données en langage C), ce qui évite de parser et compiler le script à chaque appel.

apt-get install php-apc

Mais également des des libraires supplémentaires, tels que:
Afin de faire fonctionner vos scripts Ruby :

apt-get install libapache2-mod-ruby

Perl:

apt-get install libapache2-mod-perl2

Python:

apt-get install libapache2-mod-python python-mysqldb

Afin de faire fonctionner PHP avec MySQL:

apt-get install php5-mysql

Pour finir, si vous souhaitez de voir une liste des paquets relatifs à PHP disponibles sur vos dépôts :

apt-cache search php

 

 

Installation de MySQL

Toujours dans la simplicité:

apt-get install mysql-server

Configuration du serveur web Linux

Configuration de la base de donnée et sécurisation de celle-ci

MySQL est simple à configurer, vous pouvez accéder au fichier de configuration  : (optionel)

nano /etc/mysql/my.cnf

En ce qui concerne la configuration de MySQL je vous invite à vous rendre sur la toile ou de vous renseigner/demander auprès de votre hébergeur lesquelles de ces paramètres sont les plus optimales pour votre machine.
Voici le fichier de configuration par défaut à ce jour :

language = /usr/share/mysql/french
    Choisir la langue par défaut pour les messages du serveur (français)
key_buffer = 32M
    Taille du cache des index
query_cache_limit = 2M
    Taille limite du cache par requête
query_cache_size = 32M
    Taille totale du cache des requêtes
#log_bin = /var/log/mysql/mysql-bin.log
#expire_logs_days = 10
    Désactiver le log binaire en commentant ces deux lignes grâce à # (le log binaire n'est utile que dans le cas de réplications avec serveurs maître-esclave)
log_slow_queries = /var/log/mysql/mysql-slow.log
    Mettre en log les requêtes lentes (utile pour les repérer et les optimiser)
long_query_time = 2
    Durée (en secondes) à partir de laquelle une requête est considérée comme lente

[mysqld]
default-character-set = utf8
    Jeu de caractères par défaut pour le serveur
default-collation = utf8_general_ci
    Collation du jeu de caractères

[client]
default-character-set = utf8
    Jeu de caractères par défaut pour le client

 

Afin de sécuriser MySQL il suffit de taper cette commande, qui après exécution ouvrira une interface vous guidant étape par étape à la mise en place d’un SGBD sécurisé et adapté à vos besoins :

mysql_secure_installation

 

 

Configuration de Apache

Nous allons maintenant procéder à la modification des fichiers de configuration des VirtualHosts Apache. (optionnel)
– Voir cet article.

En l’occurrence si vous avez activé le support Perl, vous vous devez ajouter, après la balise de fermeture </VirtualHost>:

Options ExecCGI
AddHandler cgi-script .pl

 

Informations complémentaires à propos de la sécurisation d’un serveur web Linux.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *