Configurer un serveur CentOs 6/7 ultra sécurisé pour de l

Transcription

Configurer un serveur CentOs 6/7 ultra sécurisé pour de l
Configurer un serveur CentOs 6/7 ultra sécurisé pour de l’hébergement Web | Fabien LEGE
Fabien LEGE
Développement web, configuration linux, truc et astuce de geek
Accueil
Derniers articles
Qui suis-je ?
Contactez-moi
Contactez-moi
Accueil › Configuration de serveurs linux › Configurer un serveur CentOs 6/7 ultra sécurisé pour de l’hébergement Web
Configurer un serveur CentOs 6/7
ultra sécurisé pour de l’hébergement
Web
Posté le 9 janvier 2014 par Fabien LEGE
Objectifs
Développeur d’applications web, je suis responsable de la gestion de plusieurs serveurs d’hébergement
web. Ces serveurs tournent aujourd’hui majoritairement sous centos avec un Plesk. Hors, ces derniers moi,
je me suis fait piratés plusieurs de ces serveurs de façon irréversible (formatage obligatoire) et à chaque
fois à cause de failles créés par Plesk. Lassé de ces piratages, j’ai pris la décision de partir maintenant de
serveurs nus (avec CentOS 6 uniquement, plus de Plesk ni d’autres fioritures) et de faire une configuration
la plus sécurisée possible (Fonctions d’administrations accessibles uniquement depuis certaines adresses
IP, plus de webmail ou autres portes d’entrés créant des failles dans le système. Cet article a donc pour
ambition d’être un guide de configuration rapide pour monter un serveur Web efficace et sécurisé avec un
système CentOS 6. Attention toute fois, je ne détaillerais pas ici le processus d’installation d’un système
CentOS 6, la majorités des hébergeurs fournissant généralement ce système pré-installé gratuitement.
(c’est le cas chez des géants comme 1&1 ou OVH).
Prérequis
Pour réaliser ce tuto, vous devez disposer des éléments suivants et respecter certaines règles
indispensable au bon déroulement de l’opération :
Disposer d’un serveur fonctionnant avec un système CentOS 6 vide ( pas de plesk ou autre
logiciels installés)
Disposer des accès root à ce serveur
Disposer des connaissances de base en commandes console linux
http://fabien.podium-adrenaline.fr/configurer-un-serveur-centos-6-ultra-securise-pour-de-lhebergement-web/[24/11/2014 19:18:44]
Configurer un serveur CentOs 6/7 ultra sécurisé pour de l’hébergement Web | Fabien LEGE
Attention
Il est fortement recommandé de ne suivre ce tuto que sur un serveur vide, ne servant pas déjà de serveur
de production ou contenant déjà des données importantes. Si vous choisissez de suivre malgrès tout ce
tuto avec un serveur existant, pensez bien a faire des sauvegardes !
1 – Vérifier que le système est une version
stable
Cette étape est indispensable ! Si vous n’utilisez pas une version stable du noyau linux, vous risquez de
laisser accessible des failles de sécurité et tout le travail qui va suivre n’aura servi à rien.
uname -r
Cette commande doit vous retourner la version de votre noyau linux. Vérifiez bien que cette version
comporte la mention « stable »
2. Personnalisation du .bashrc (facultatif)
Cette étape sert juste à personnaliser un peut la console de notre serveur, quelques couleurs c’est tout de
même plus agréable pour travailler !
Editer le fichier .bashrc de votre profil avec votre éditeur favoris. Vous pouvez par exemple ouvrir ce fichier
avec la commande suivante :
cd; vi .bashrc
Dans ce fichier, insérez la ligne suivante:
PS1='${debian_chroot:+($debian_chroot)}\[\e[1;33m\]\u\[\e[1;37m\]@\[\e[1;33m\
]\h\[\e[1;37m\]:\[\e[1;31m\]\w \[\e[1;36m\]\$ \[\033[00m\]'
Petit bonus pour les utilisateurs de Symfony 2 :
Pour les utilisateurs de symfony 2, je vous offre deux petits alias à rajouter dans votre bashrc qui vous
permetrons respectivement de vider les caches en productions et les caches en développement de façon
plus rapide qu’avec la comande cache:clear de cet excélent framework. Ces alias s’exécute depuis la
racine du projet symfony2 duquel on souhaite vider les caches
alias ccp='cd ./app/cache/; rm -rf prod/; chmod -R 777 .; cd ../../'
alias ccd='cd ./app/cache/; rm -rf dev/; chmod -R 777 .; cd ../../'
http://fabien.podium-adrenaline.fr/configurer-un-serveur-centos-6-ultra-securise-pour-de-lhebergement-web/[24/11/2014 19:18:44]
Configurer un serveur CentOs 6/7 ultra sécurisé pour de l’hébergement Web | Fabien LEGE
3. Installer Apache (httpd)
Maintenant attaquons les choses sérieuses : L’installation de notre serveur web Apache :
yum install -y httpd
Une fois le programme installé, nous allons éditer le fichier /etc/httpd/conf/httpd.conf. Dans ce fichier
recherchez la section commençant par
<Directory "/var/www/html">
et remplacez la directive « AllowOverride none » par « AllowOverride All« .
A la fin de ce fichier httpd.conf, ajoutez la ligne suivante :
Include vhosts/*.conf
Sauvegardez le fichier et quittez votre éditeur.
Nous allons maintenant créer un répertoire « vhosts » dans notre configuration apache dans lequel nous
ajouterons un fichier de configuration pour chacun des site qui devra être gérer sur notre serveur
mkdir /etc/httpd/vhosts/
Et créez maintenant un fichier /etc/httpd/vhosts/[site].conf pour chacun de vos sites. Chacun de ces
fichiers contiendra ceci :
NameVirtualHost *:80
<VirtualHost *:80>
ServerAdmin [[email protected]]
DocumentRoot /var/www/html/[votresite] ServerName [votredomaine.com] #Nom de domaine principal de votre site
ServerAlias [www.votredomaine.com] #Dupliquer cette ligne pour chaque
domaine supplémentaire qui pointe sur votre site web
ErrorLog logs/[votresite]_error_log
CustomLog logs/[votresite]_access_log common
UseCanonicalName Off
HostnameLookups Off
</VirtualHost>
Pour en finir avec apache : exécutez la commande ci-dessous pour que le service httpd démare
automatiquement avec votre serveur (en cas de redémarrage)
chkconfig httpd on
http://fabien.podium-adrenaline.fr/configurer-un-serveur-centos-6-ultra-securise-pour-de-lhebergement-web/[24/11/2014 19:18:44]
Configurer un serveur CentOs 6/7 ultra sécurisé pour de l’hébergement Web | Fabien LEGE
4 installer la dernière version de PHP
Nous allons ici installer PHP, généralement indispensable pour le fonctionnement d’un site web. Pour ce
faire, nous allons ajouter le dépot atomic pour disposer de la toute dernière version de PHP, souvent
indispensable lorsque vous travaillez avec des frameworks php comme Symfony2 ou Zend
wget -q -O - http://www.atomicorp.com/installers/atomic | sh
yum clean all && yum check-update
Une fois le dépôt Atomic installé, on installe PHP et certaines de ses extensions indispensables :
yum install -y php && yum -y install php-xml
Créez enfin le fichier /etc/php.d/dom.ini pour y insérer la ligne suivante :
extension=dom.so
5. Installer mySQL
5.1 Pour CentOS 6
Souvent aussi indispensable que PHP : un serveur de bases de données mySQL que nous allons installer
en exécutant les quelques lignes suivantes:
yum install -y mysql mysql-server
chkconfig --level 2345 mysqld on; service mysqld start
Redémarrez maintenant les services web de votre serveur afin de prendre en compte les dernières
configurations
service httpd restart
5.2 Pour CentOS 7
Sur CentOS 7, le serveur Mysql s’appelle maintenant MariaDB. Nous alons donc installer MariaDB de la
façon suivante
yum -y install mariadb-server mariadb
Nous configurons ensuite le serveur pour que MariaDB démarre automatiquement avec le serveur
systemctl start mariadb.service
http://fabien.podium-adrenaline.fr/configurer-un-serveur-centos-6-ultra-securise-pour-de-lhebergement-web/[24/11/2014 19:18:44]
Configurer un serveur CentOs 6/7 ultra sécurisé pour de l’hébergement Web | Fabien LEGE
systemctl enable mariadb.service
et on suit finalement l’assistant d’installation de mysql que l’on lance avec la commande suivante
mysql_secure_installation
Redémarrez maintenant les services web de votre serveur afin de prendre en compte les dernières
configurations
service httpd restart
6. Installer le serveur FTP
Ici aussi, une fonctionnalité très utilisée pour transférer les fichiers de vos sites web:
yum install -y vsftpd
chkconfig vsftpd on
Nous alons réaliser une copie de sauvegarde du fichier de configuration initial avant d’en créer un nouveau
mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.back
créons maintenant un nouveau fichier de configuration /etc/vsftpd/vsftpd.conf qui contiendra ceci :
listen_port=21 # Port d’écoute
ftpd_banner=Bienvenue ! # Bannière de bienvenue
pam_service_name=vsftpd # Fichier de configuration de PAM
listen=YES # Mode “standalone”
anonymous_enable=NO # Pas de connexion anonyme
local_enable=YES # Les utilisateurs système sont autorisés
userlist_file=/etc/vsftpd/user_list # Fichier des utilisateurs
userlist_enable=YES # Chargement de la liste userlist_file
userlist_deny=YES # Il est indiqué ici que cette liste est celle des
identifiants refusés, pas ceux autorisés anon_world_readable_only=NO # Un utilisateur virtuel pourra télécharger un
fichier même s’il n’est pas lisible par tous write_enable=YES # Autorisation des commandes influant sur le système de
fichier (STOR,DELE, RNFR, RNTO, MKD, RMD, APPE and SITE)
anon_upload_enable=NO # Refus des droits d’écriture pour les anonymes (et
donc utilisateurs virtuels) par défaut
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
chroot_local_user=YES # chroot des utilisateurs max_clients=50 # Nombre maximum de connexions simultanées
max_per_ip=4 # Nombre maximum de connexions venant de la même IP
http://fabien.podium-adrenaline.fr/configurer-un-serveur-centos-6-ultra-securise-pour-de-lhebergement-web/[24/11/2014 19:18:44]
Configurer un serveur CentOs 6/7 ultra sécurisé pour de l’hébergement Web | Fabien LEGE
Attention
Les commentaires présents dans le fichier de configuration ci-dessus (commençants par ‘#’) ne doivent
pas être laissés dans le fichier de configuration. Si vous rencontrez une erreur en redémarrant votre
serveur FTP, pensez à vérifier qu’il ne reste pas de commentaire dans votre fichier de configuration.
Maintenant nous allons pouvoir créer différents utilisateurs et leur donner accès à des répertoires précis sur
notre serveur :
useradd <nom_utilisateur> -d /var/www -g ftp
passwd <nom_utilisateur>
chown -R <nom_utilisateur>:ftp /var/www/html
chmod -R 755 /var/www/html
L’exemple ci-dessus créer un utilisateur qui a pour répertoire par défaut /var/www (c’est dans ce répertoire
qu’arrivera notre utilisateur lorsqu’il se connectera via un client FTP) et on le nome propriétaire du
répertoire /var/www/html/. Cet utilisateur aura donc les pleins pouvoirs sur le dossier HTML mais ne pour à
faire aucune modification au dossier www
Redémarrez enfin votre service FTP affin que les dernières configurations soient prises en compte
service vsftpd restart
7. Installer phpMyAdmin
phpMyAdmin est surement aujourd’hui l’outil incontournable pour la gestion visuelle de vos bases de
données. Pour l’installer, nous allons avoir besoin du dépôt EPEL :
rpm -Uvh http://mirrors.kernel.org/fedora-epel/6/i386/epel-release-6-8.noarch.rpm
yum install -y phpmyadmin
yum install mod_ssl -y
Editez le fichier /etc/httpd/conf.d/phpMyAdmin.conf et recherchez les deux section « <Directory
/usr/share/phpMyAdmin/> » et « <Directory /usr/share/phpMyAdmin/setup/>« .
Dans chacune de ses section, ajouter dans la condition « <IfModule !mod_authz_core.c> » la ligne
suivante:
Allow from [ip_de_votre_bureau]
Ajoutez autan de fois cette ligne qu’il le sera nécessaire afin que toutes vos adresses IP aient accès à
phpMyAdmin.
Exécutez enfin cette commande afin que phpMyAdmin puisse accéder au serveur mySQL
http://fabien.podium-adrenaline.fr/configurer-un-serveur-centos-6-ultra-securise-pour-de-lhebergement-web/[24/11/2014 19:18:44]
Configurer un serveur CentOs 6/7 ultra sécurisé pour de l’hébergement Web | Fabien LEGE
/usr/bin/mysqladmin -u root password '[password]'
Et redémarrez enfin vos services web pour pouvoir finalement accéder à phpMyAdmin depuis votre
l’adresse https://mondomaine.com/phpmyadmin.
service httpd restart
Un message d’avertissement apparaîtra peut-être vous informant que le site auquel vous tentez d’accéder
n’est pas sécurisé : C’est normal vus que vous ne disposez pas de certificat SSL, vous pouvez cliquer sur
« continuer » pour accéder à phpMyAdmin
Vous voila maintenant en possession d’un superbe serveur web sécurisé !
Remarque
Si vous utilisez le framework php Symfony 2, La configuration que nous venons de faire ne suffira pas à
faire fonctionner une application Symfony 2. Vous pouvez lire mon article Préparer un serveur CentOS6 &
Plesk à accueillir un projet Symfony2 qui vous guidera dans l’installations des quelques extensions
manquantes pour votre projet Symfony2. (Ne tenez évidement pas compte des étapes spécifiques à Plesk
de ce tutorial)
A propos Fabien LEGE
Voir le profil
Tagués avec : Atomic CentOS epel MySQL PHP phpMyAdmin Sécurité
Publié dans : Configuration de serveurs linux
‹
Configurer et utiliser le module apache mod_deflate avec plesk
Laisser un commentaire
Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *
Nom *
Courriel *
Site Web
http://fabien.podium-adrenaline.fr/configurer-un-serveur-centos-6-ultra-securise-pour-de-lhebergement-web/[24/11/2014 19:18:44]
Configurer un serveur CentOs 6/7 ultra sécurisé pour de l’hébergement Web | Fabien LEGE
Commentaire
Laisser un commentaire
Prévenez-moi de tous les nouveaux commentaires par email.
Prévenez-moi de tous les nouveaux articles par email.
Les derniers articles
Configurer un serveur CentOs 6/7 ultra sécurisé pour de l’hébergement Web
Configurer et utiliser le module apache mod_deflate avec plesk
CentOS & Plesk – Résoudre l’erreur « run-parts /etc/cron.hourly »
Plesk 11 et CentOS 6 – Problème de mise à jour avec YUM et les dépots Atomic et EPEL
Un gestionnaire des taches avancé pour votre console linux avec htop
Catégories
Configuration de serveurs linux
Développement web
Réseau
Symfony 2
http://fabien.podium-adrenaline.fr/configurer-un-serveur-centos-6-ultra-securise-pour-de-lhebergement-web/[24/11/2014 19:18:44]
Configurer un serveur CentOs 6/7 ultra sécurisé pour de l’hébergement Web | Fabien LEGE
Nuage de tags
APC
Atomic CentOS crontab Debian epel firewall htop intl IPcop Mail modules apache mod_deflate
MySQL optimisation PHP phpMyAdmin
php_posix
Plesk
Réseau
Symfony 2 Sécurité top Ubuntu
yum
Annonces
Accèder à mon profil
Accèder à mon profil
Télécharger mon CV
Télécharger mon CV
© 2014 Fabien LEGE ↑
Mentions légales
http://fabien.podium-adrenaline.fr/configurer-un-serveur-centos-6-ultra-securise-pour-de-lhebergement-web/[24/11/2014 19:18:44]
Plan du site

Documents pareils