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