Yann "Bug" Dubois

Développeur WordPress freelance à Paris
Flux RSS

Configurer un serveur web dédié OVH/Kimsufi sous Debian 6

19 May 2011 Par : Yann Dubois Catégorie : Français, tech

Logo OVH noirEn septembre 2009, j’avais écrit un tutoriel détaillé sur la configuration d’un serveur dédié OVH qui a remporté un grand succès. Aujourd’hui, il est temps de remettre à jour ce guide alors que la version 6 de Debian (intitulée “Squeeze“) est disponible en version stable depuis quelques mois. En gardant la procédure initiale comme référence, je présente ci-dessous une version adaptée à une configuration sous Debian 6/64 bits.

Il s’agit au départ d’un memento qui me sert à “remonter” rapidement une configuration opérationnelle sous Debian 6 / Apache2 / PHP5 / Mysql pour héberger des sites sur un serveur dédié GNU/Linux type OVH ou Kimsufi. Cette configuration, qui inclut également eAccelerator et des outils de supervision et d’administration de base (Munin, phpsysinfo, mytop, PhpmyAdmin, AWStats) est opérationnelle et suffisamment sécurisée pour une installation standard (à condition de faire régulièrement toutes les mises à jour des packages). Par ailleurs, une extension de ce guide expliquera comment y ajouter un serveur Nginx configuré en frontal (reverse proxy) pour optimiser et accélérer l’accès aux fichiers statiques.

Par rapport à la version initiale de ce document qui s’appliquait à Debian 5, il y a relativement peu de différences : quelques paquets Debian ont changé (il y a moins de paquets à installer au final), la configuration par défaut des serveurs OVH a un tout petit peu changé, et quelques utilitaires ne sont pas actuellement disponibles en version stable pour Debian 6 Squeeze. Les deux principaux utilitaires qui ont changé sont openntp remplacé par le duo ntp + ntpdate, et mtop remplacé ici par mytop, un utilitaire plus ou moins équivalent pour surveiller en temps réel la charge des bases de données mysql.

J’ai un tout petit peu modifié la procédure pour détailler un peu mieux certaines étapes et ajouter quelques vérifications, et m’adapter à la façon dont certains paquets se configurent désormais. J’ai également mis à jour la référence à la dernière version des sources eAccelerator disponibles à la date de rédaction de cet article.

Attention : la procédure complète étant un peu longue elle est désormais répartie sur 3 pages (voir liens en bas de page), et découpée en 15 grandes étapes au total, qui peuvent prendre entre 1 et 3 heures à suivre pas à pas selon votre habitude des systèmes GNU/Linux et votre degré de confiance dans vos compétences en administration système !

Cette procédure a été entièrement testée sur un serveur Kimsufi KS2G livré avec Debian 6 “Distribution de base” préinstallé par OVH et partitionné selon les modalités décrites ici. Seule la procédure pour Debian 6 décrite dans le présent article sera désormais tenue à jour : je ne mettrais plus à jour la page de mon blog consacrée à la configuration équivalente sous Debian 5.

1. Re-partitionner ou pas ?

Les serveurs dédiés livrés par OVH ne sont pas partitionnés de façon optimale pour une utilisation comme serveurs web. Suivez ce guide pas à pas pour repartitionner et réinstaller automatiquement votre serveur web OVH. C’est une étape préalable que je vous conseille, même si elle n’est pas indispensable pour des projets modestes ou si vous bénéficiez d’un serveur récent avec une très grande capacité de disques durs. Si vous n’avez pas repartitionné votre serveur vous pourrez toujours vous en sortir en “relocalisant” de nombreux fichiers dans l’arborescence du répertoire /home de votre serveur, mais cela revient à s’éloigner de l’architecture par défaut d’un serveur Debian, et risque de compliquer la maintenance de votre serveur web à long terme.

2. Connexion

Commencer par se connecter au serveur en ssh avec le compte root avec mot de passe fourni dans l’e-mail envoyé par OVH au contact technique responsable du serveur, sur le port 22 (depuis un autre GNU/linux ce serait simplement la commande : ssh -l root suivi du nom ou de l’ip de votre serveur)

3. Changement du mot de passe root et création d’un utilisateur

Travailler en root n’est pas recommandé pour des raisons de sécurité, encore moins quand ce compte root utilise un mot de passe qui a circulé par e-mail. On commence donc par créer un compte d’utilisateur non privilégié (auquel on donnera les privilèges nécessaires pour faire de l’administration à distance tout de même !), et par changer le mot de passe root.

passwd

-> changer pass root

adduser <votre login>
adduser <votre login>  root
adduser <votre login> adm

Vérifiez que vous arrivez à vous connecter avec ce nouvel utilisateur, puis quittez la session root :

exit

(la procédure pour créer les autres comptes d’administration du contenu web est décrite ici)

4. Configuration de la connexion via une clé ssh

J’explique ici dans le détail (dans un autre article) comment créer une paire de clés ssh sous GNU/Linux. Il existe d’autres excellents tutoriaux à ce sujet ailleurs sur le web (Google est ton ami). On peut également le faire très simplement sous Windows avec Putty par exemple.

Une fois la clé générée et stockée dans un fichier texte localement, se reconnecter en ssh avec l’utilisateur non privilégié créé ci-dessus :

ssh -l <votre login> <hôte>

(toujours par défaut sur le port 22 avec mot de passe choisi pour le nouveau compte ci-dessus)

mkdir .ssh
cd .ssh
vi authorized_keys

-> coller la clé ssh (longue chaine de texte)

exit

On peut maintenant se connecter sans taper de mot de passe grâce à la clé ssh :

ssh -l <votre login> <hôte>

(toujours sur port 22, mais avec clé ssh, donc sans taper de mot de passe)

5. Sécurisation minimum du serveur

su root
rm /root/.ssh/authorized_keys2
rm /root/.p
rm /root/.email
vi /etc/hostname -> changer nom de machine (genre ksXXXXXX.<votre-domaine>.com)
invoke-rc.d hostname.sh stop
invoke-rc.d hostname.sh start
vi /etc/hosts

-> ajouter nom de machine

aptitude update

aptitude safe-upgrade

(je laisse “all” pour les histoires d’initialisation de disques RAID au démarrage)

aptitude full-upgrade

aptitude install debian-goodies
aptitude install libpam-cracklib wfrench

(utilitaire qui vérifie automatiquement  la qualité des mots de passe, avec un dictionnaire de mots français)

vi /etc/pam.d/su

-> On dé-commente la ligne : auth required pam_wheel.so

vi /etc/pam.d/common-password
pam-auth-update

aptitude install sudo

visudo

-> Ajout de la ligne : %root ALL=(ALL) PASSWD: ALL

(ctrl+X Y entrée pour quitter en sauvegardant)

apt-get install fail2ban
vi /etc/fail2ban/jail.conf

->

[ssh]
enabled = true
port    = ssh
filter  = sshd
logpath  = /var/log/auth.log
maxretry = 6
# durée du banissement
bantime = 900
/etc/init.d/fail2ban restart

vi /etc/ssh/sshd_config

-> Port 22000 (pour déplacer l’écoute du daemon ssh sur un port “non standard”)

/etc/init.d/ssh restart
reboot

6. Désinstallation de trucs inutiles / installation de trucs utiles

Cette fois on se reconnecte en ssh sur le port 22000, toujours avec la clé ssh. Vous pouvez d’ailleurs sauvegarder ces paramètres de connexion qui seront définitifs.

ssh -l <votre login> -p 22000 <hôte>
su
aptitude purge bind9 bind9-doc \
 manpages-cs manpages-de \
 manpages-es manpages-it manpages-pl \
 manpages-pt reiserfsprogs
apt-get install ntp ntpdate
sudo vi /etc/ntp.conf

-> Ajouter server fr.pool.ntp.org

/etc/init.d/ntp stop
ntpdate fr.pool.ntp.org
/etc/init.d/ntp start
date

La suite (installation d’Apache,…) en page 2…

Pages : 1 2 3

A lire également...

WordPress › Error

There has been a critical error on your website.

Learn more about debugging in WordPress.