Copie Final PDF
Copie Final PDF
Copie Final PDF
A mon adorable mère qui a tout sacrifié pour que j'arrive là où je suis. A mon père
qui m’a aidé à être autonome dans ma vie et trouver mon chemin.
A mon cher frère Amine et ma famille pour ses encouragements pour que je puissse
aller jusqu'au bout dans mes études.
A tous mes amis que j'aime et qui m'ont toujours supporté dans les moments durs
de mes dernières années et qui supporte mon manque quasi permanent de
disponibilité à leur égard.
A tous mes chers collègues activistes dans les communautés technologiques où j'ai
trouvé la passion informatique conjugué avec l'organisation des événements et la
concrétisation des connaissances techniques.
1
Remerciement
Je voudrais, également, exprimer toute ma gratitude à Monsieur Rouatbi Adnen pour son suivi
de près de l'avancement de ce projet, pour les conseils judicieux qu'il n'a cessé de me
prodiguer, ainsi pour la précieuse aide qui a permis d'améliorer la qualité de ce rapport.
Enfin, je voudrais remercier tous mes enseignants. Sans le savoir faire qu'ils n'ont cessé de me
communiquer, ce stage n'aurait pu être mené à bien.
2
Sommaire
Dédicaces....................................................................................................................................1
Remerciement ......................................................................................................................................... 2
Liste des figures ...................................................................................................................................... 5
Introduction ............................................................................................................................................ 7
Chapitre 1: Présentation du Project ...................................................................................................... 9
1.1 Structure et organisation de la société.........................................................................................9
1.2. Contexte général du projet......................................................................................... 10
1.2.1.Problématique........................................................................................................................10
1.2.2 Objectif .................................................................................................................................... 11
Conclusion ............................................................................................................................................ 12
Chapitre 2 : Sécurité et attaque informatique ..................................................................................... 13
➢ La confidentialité ................................................................................................... 13
➢ L’intégrité .............................................................................................................. 13
➢ La disponibilité ...................................................................................................... 13
2.2 Etudes des failles de sécurité d’un serveur ............................................................................14
2.2.1 SSH ........................................................................................................................... 15
2.2.2 PHP .......................................................................................................................... 15
2.2.3 Apache Web Server .................................................................................................. 16
1. Déni de service DOS ..................................................................................................... 16
2.4 La vulnérabilité de Bash "Shell Shock" ...................................................................... 17
Conclusion ............................................................................................................................................ 17
Chapitre 3 : Etude de l’existant ........................................................................................................... 18
1.Présentation de l existant...............................................................................................................18
2. Les brutes forces attaquent.........................................................................................18
2.1 Force Brute traditionnelle ..................................................................................... 18
2.2 Attaque par dictionnaire ........................................................................................ 19
3. Solutions de prévention d'attaque force brute pour serveur web ........................................... 19
3.1 Fail2ban ...................................................................................................................... 19
3.2. ConfigServer Security & Firewall ............................................................................ 20
3.3. Pare-feu applicatif Web (WAF) ................................................................................ 21
3.4. Anti-Malware ................................................................. Error! Bookmark not defined.
4. Solutions de prévention d’attaque brute force pour serveur de messagerie .......................... 21
4.1. Anti-spam .................................................................................................................. 22
4.2. WAF spécifique pour la sécurité des emails .............................................................. 22
3
4.3. Anti-Virus ................................................................................................................... 22
Conclusion ........................................................................................................................................ 23
Chapitre 4 : Implémentation des solutions .......................................................................................... 24
1. Installation de l’environnement Lamp Stack............................................................................ 24
1.1. Installation de serveur Web Apache .......................................................................... 24
4.1.3. Installation de PHP 7.4.......................................................................................... 29
4.1.4 Installation de phpMyAdmin .................................................................................... 31
4.1.5 Installation de WordPress........................................................................................ 31
4.2. Sécurité des Composants ......................................................................................................... 38
4.2.1 Sécurité Apache ....................................................................................................... 38
4.2.2 Sécurité PHP ............................................................................................................ 43
4.2.3 Sécurité SSH............................................................................................................. 44
4.2.4. Sécurité de MySQL ................................................................................................. 46
4.3. Installation de Firewall CSF .................................................................................................... 46
4.2.4. Installation COMODO WAF ............................................................................................... 49
4.5 Installation anti-virus ................................................................................................................ 49
4.6. Installation de Backup Hollande ............................................................................................. 52
Conclusion Générale ........................................................................................................................... 55
4
Liste des figures
5
Liste des abréviations
6
Introduction
Dès son invention en 1989, le web vit de grand progrès. Fabricants, opérateurs et autres
grandes entreprises anticipent et innovent afin d'investir dans ce marché. De grandes batailles
ce sont livrées autour de ce dernier et ceci n'est que la conséquence de l'importance que
semble avoir le web dans nos vies. En effet environ 46% des sites web à travers le monde
sont alimentés par un logiciel de serveur web gratuit et open-source Apache et environ
30 % des sites web utilise WordPress comme un système de gestion de contenus.
Avec l'arrivée de l'informatique, des réseaux, puis d'Internet, les vols d'informations
physiques se sont peu à peu transformés en intrusions informatiques. Il devient donc essentiel
que les données stockées sur des serveurs soient suffisamment protégées et sécurisées. Pour
cela, de nombreuses techniques de sécurisation sont mises en place, afin d'assurer le respect
de bonnes pratiques de sécurités (comme celles définies dans la série des normes ISO 27000).
Peu d'entreprises disposent d'un niveau de sécurité suffisant pour protéger convenablement
leurs données.
De la même façon, on remarque qu'il est impossible pour un Serveur web d'avoir une sécurité
absolue et à toute épreuve. Il faut recourir à des techniques différentes que la sécurisation pure
afin de s'assurer du niveau de fiabilité du système d'information.
C'est dans ce contexte que nous avons été confiés de réaliser une mission ayant comme
objectif étude et implémentation d’une solution automatique de sécurité des serveurs LAMP
déployés pour les comptes des clients Zenhosting.
Pour atteindre notre objectif, notre travail effectué dans ce projet de fin d'études est répartie en
quatre chapitres :
7
➢ puis, nous allons dans le troisième chapitre aborder l'étude de l’existant dans lequel
nous présentons les différentes failles et techniques utilisées lors d'une attaque
informatique.
➢ Dans le quatrième chapitre, nous allons proposer et implémenter de nouvelles
solutions automatiques pour optimiser les performances des serveurs LAMP.
Finalement, la conclusion générale présente le bilan de ce projet, les apports de point de vue
savoir-faire ainsi que les perspectives de notre contribution.
8
Chapitre 1: Présentation du Project
Elle a développé une clientèle variée composée d’industriels, d’entreprise de services et aussi
de commerçants.
Ses services ont convaincu des sociétés de toute envergure : des petites et moyennes
entreprises comme des Grand Comptes.
9
Chapitre 1 : présentation du Project
• Développement
• Communication
➢ Stratégie et savoir-faire
Au-delà de ses prestations informatiques, elle va encore plus loin avec vous. Ses interventions
se déroulent dans une logique de compréhension de votre métier et de prévention des risques.
Actuellement il existe environ 156 millions sites Web, sont évolués du simple texte et pages
de lien hypertexte basées aux normes actuelles d'applications de productivité mobile
dynamique. En raison de l'augmentation de la demande des moyens d'accéder aux demandes
de plus en plus sophistiquées sur Internet, le nombre d'applications web développées
récemment a explosé suite à une utilisation sur plusieurs plateformes.
Les sites web sont les vitrines sur le web de chaque société. Les factures, les salaires, les
comptes bancaires, les données privées sont tous accessibles via le web. C’est pourquoi, les
sites internet ont toujours été des éléments sensibles de la sécurité dont l'intérêt pour leurs
sécurités augmente de façon spectaculaire par rapport au nombre d'applications vulnérables.
2.1. Problématique
Un site web est un serveur public accessible par n'importe qui, n'importe où y compris les
Hackers. Les sites web sont hébergés dans des serveurs, par la suite, ces serveurs sont
continuellement sollicités en termes de tentatives de piratage. Pour s'en convaincre, il suffit de
consulter les logs des serveurs : Les tentatives d'accès au contenu du serveur.
L'enjeu majeur pour l'équipe ZENHOSTING est de garantir la sécurité des données de leurs
clients, d’assurer la disponibilité de leurs services et d'améliorer l'expérience de navigation
des internautes.
ZENHOSTING met à la disposition de ses clients des solutions d'hébergement des sites et des
applications web adaptées aux besoins de nombreux secteurs d'activité.
10
Chapitre 1 : présentation du Project
2.2. Objectif
Aujourd'hui, ZENHOSTING est idéalement placée pour offrir des solutions parfaitement
intégrées permettant de garantir un haut niveau de performance et de sécurité totale c'est pour
cela que nous avons été chargé de concevoir et d'implémenter la sécurisation et l'optimisation
de la performance de ses serveurs web. Le piratage des serveurs sera alors bien plus
complexe, et si cela venait de se produire, les récupérations automatiques permettront une
réinstallation rapide, automatique et de virtualiser les serveurs.
Le premier objectif de ce stage a été de développer une solution de sécurité contre les
Cyberattaques qui peuvent viser les serveurs.
Puis, en troisième lieux nous allons s’intéresser à l’implémentation du mode sécurité WAF
dans Apache, Nginx.
➢ Implémentation du mode sécurité sur les différents serveurs web (Apache Nginx,
Litespeed)
➢ Implémentation et test de plusieurs règles de sécurité (Comodo WAF et owasp
WAF)
Ensuite, nous allons faire une implémentation d’un Anti-Malware :
11
Chapitre 1 : présentation du Project
Conclusion
Dans ce chapitre qui présente le contexte général du projet, nous avons débuté le chapitre par
une présentation d’accueil ZENHOSTING, dans la deuxième partie du chapitre nous avons
présenté le contexte général du projet et ensuite décrit la solution à proposer pour la
résolution de la problématique.
Vers la fin de cette partie nous avons évoqué la démarche suivie pendant la résolution du
projet ainsi que la planification de ce dernier. Le chapitre suivant sera consacré à la sécurité et
attaques informatiques dont nous allons détaillés les majeurs types des attaques et comment
nous pouvons les éviter.
12
Chapitre 2 : Sécurité et attaque informatique
Après avoir présenté le poids de Linux dans le monde des serveurs web et son choix comme
cible d'attaque, nous pouvons maintenant présenter une étude des différentes failles connues
et les techniques de piratage des serveurs afin de poser les bases nécessaires à la bonne
compréhension de ces techniques. Une bonne compréhension des mécanismes d'attaque et des
failles du système sont à la base de la sécurité quels que soient les outils utilisés.
Nous commencerons cette partie par une introduction à la sécurité informatique, afin de
donner les notions et le vocabulaire récurrent lié aux solutions de sécurité proposés. Après
nous poursuivrons ce rapport en décrivant les failles connues et exploitables d'un point de vue
pratiques et des différents outils et techniques de piratage des serveurs, et plus
particulièrement par ceux utilisés lors de notre stage.
1. La sécurité informatique
Avant d'approfondir le problème, il est important de formuler quelques concepts de base sur
l'informatique, en particulier le concept de sécurité informatique.
➢ La confidentialité
Pour s'assurer que seul l’internaute autorisé peut accéder aux données et que les données ne
seront pas divulguées en dehors d'un environnement spécifique.
➢ L’intégrité
Assurez-vous que l’internaute autorisé doit toujours avoir accès aux ressources.
13
Chapitre 2 : sécurité et attaque informatique
À cette fin, nous pouvons également ajouter les questions suivantes, qui peuvent atteindre un
niveau de sécurité plus élevé.
Par conséquent, la sécurité informatique consiste à garantir que les 4 attributs précédents des
ressources informatiques sont toujours garantis.
La question se pose quelles vulnérabilités des systèmes d'exploitation Linux sont le plus
souvent ciblés par des attaquants malveillants. Bien qu'il y ait un flux non-arrêt de
vulnérabilités exploitables à distance Linux, mais seulement quelques-uns d'entre eux ont été
utilisés pour les exploits réels contre des nombreux de serveurs.
Ci - dessous, nous présentons la liste des vulnérabilités plus couramment exploitée qui
représentent un vrai danger en ignorant les vulnérabilités liées aux applications hébergées sur
le serveur.
➢ SSH
➢ PHP
➢ Apache Web Server
14
Chapitre 2 : sécurité et attaque informatique
2.1 SSH
SSH signifie Secure SHell. C'est un protocole qui permet de faire des connexions sécurisées
entre un serveur et un client.
L’une des attaques le plus connues est les attaques par mot de passe.
Trouver un mot de passe est souvent bien plus facile qu’il n’y paraît, et les pirates s’en
donnent à cœur joie. Pour trouver un mot de passe, il suffit parfois simplement de fouiller un
bureau, en surveillant la connexion pour obtenir un mot de passe non chiffré, en ayant recours
à l’ingénierie sociale ou en devinant :
➢ Par force brute : deviner un mot de passe en entrant ce que les gens entrent le
plus souvent : nom, prénom, passe-temps favori, dates de naissance des enfants,
etc.
➢ Par dictionnaire : cela consiste à copier un fichier chiffré contenant des mots de
passe courants et à comparer les résultats.
2.2 PHP
PHP est un langage de script open source côté serveur, et c'est un langage largement
utilisé. Le serveur Web Apache / Nginx / Lighttpd permet d'accéder aux fichiers et au contenu
via le protocole HTTP OU HTTPS. Un langage de script côté serveur mal configuré peut
créer toutes sortes de problèmes. Donc, PHP doit être utilisé avec prudence.
Les applications basées sur PHP peuvent faire face aux différents types d'attaques. Nous
avons remarqué les différents types d'attaques:
1. XSS – Cross-site Scripting est une vulnérabilité dans les applications Web PHP, que
les attaquants peuvent exploiter pour voler les informations des utilisateurs. Vous
pouvez configurer Apache et écrire des scripts PHP plus sécurisés (validant toutes les
entrées utilisateur) pour éviter les attaques xss.
15
Chapitre 2 : sécurité et attaque informatique
2. Injection SQL - Il s'agit d'une vulnérabilité dans la couche de base de données d'une
application php. Lorsque l'entrée utilisateur n'est pas correctement filtrée, toutes les
instructions SQL peuvent être exécutées par l'application. Vous pouvez configurer
Apache et écrire du code sécurisé (valider et échapper toutes les entrées utilisateur)
pour éviter les attaques par injection SQL.
4. Sea-surf Attack (Cross-site request forgery – CSRF) Cette attaque force un utilisateur
final à exécuter des actions indésirables sur une application Web dans laquelle il est
actuellement authentifié. Un exploit CSRF réussi peut compromettre les données et le
fonctionnement de l'utilisateur final dans le cas d'un utilisateur normal. Si l'utilisateur
final ciblé est le compte administrateur, cela peut compromettre l'ensemble de
l'application Web.
Les vulnérabilités dans l'implémentation Apache du serveur Web et les composants associés
peuvent se traduire par déni de service DOS, déni de service distribué DDOS, la divulgation
d'informations, site web défiguration, l'accès root à distance, ou d'innombrables autres
résultats défavorables.
16
Chapitre 2 : sécurité et attaque informatique
Si vous avez un web Linux serveur d'hébergement, il a Bash pour traiter certaines
commandes et si vous ne l’avez pas expressément patché, il supposer que votre serveur est
vulnérable à pirater. Linux serveurs d’hébergement Web est généralement activé avec les
modules CGI, et ils pourraient permettre aux commandes d'être transmis à Bash, ouvrant ainsi
les portes aux pirates. Cette vulnérabilité permet aux pirates aussi d'exécuter des commandes
arbitraires et d'obtenir un accès non autorisé au système. Ce problème est particulièrement
dangereux, car il existe de nombreuses façons possibles Bash peut être appelé par une
application. Toutes les versions Centos antérieures à celles qui sont énumérées les mises à
jour pour cette question sont vulnérables à un certain degré.
Un pirate qui désire nuire à une société par des attaques pratique presque toujours de la même
manière, il s'informe des failles de sécurité et les exploite. Le reste de cette partie décrit en
détail cette stratégie.
Conclusion
Dans ce chapitre qui présente la sécurité et attaques informatiques, nous avons débuté le
chapitre par une présentation de la sécurité informatique, dans la deuxième partie du chapitre
nous avons fait l’étude des failles de sécurité d’un serveur et ensuite décrire les majeurs types
d’attaques.
17
Chapitre 3 : Etude de l’existant
Nous ne saurions débuter ce travail sans avoir une idée claire et précise sur l’existant quel
qu’il soit.
La première tâche a été de faire différentes recherches. Cette méthodologie de travail nous a
permis d’avoir une connaissance large de l’existant.
1. Présentation de l’existant
LAMP est aujourd’hui le stack le plus utilisé pour héberger un applicatif web.
Les serveurs web sont les principales cibles des cyberattaques, en raison de leurs activités de
traitement de données des clients.
Toutes les combinaisons possibles vont être testées pour deviner le mot de passe correct. Ce
processus coûte beaucoup de ressource et de temps et dépendre de la machine utilisée pour
l'exécuter. Heureusement, tester toutes les combinaisons prend beaucoup de temps.
18
Chapitre 3 : Etude de l’existant
Attaque basée sur un dictionnaire, une liste de mots personnalisée est utilisée au cours de ce
processus, qui contient une liste de toutes les combinaisons possibles de nom d'utilisateur et
mot de passe, elle consomme moins de temps et de ressource que l'attaque Force Brute
traditionnelle donc elle est plus rapide, mais elle ne garantit pas le succès si les mots de passe
ne sont pas disponibles dans la liste.
2.3Attaque hybride
Une technique qui combine deux types d'attaques traditionnelles, attaque force brute
traditionnelle et attaque par dictionnaire, cela se manifeste par l'application d'un attaque force
brute sur un dictionnaire. Certaines applications qui nécessitent une authentification obligeant
l'utilisateur d'utiliser un mot de passe contenant des lettres alphabétiques suivant des chiffres.
Dans ce cas, ni force brute traditionnelle, ni attaque de dictionnaire ne serait efficace, mais
l'attaque hybride serait.
3.1 Fail2ban
DenyHosts ne fait que protéger le service ssh. Si on a besoin pour protéger d'autres services
aussi bien, Fail2ban est certainement un meilleur choix. Il est configurable pour regarder
presque tous les services si vous êtes prêt à modifier sa configuration, mais cela ne devrait pas
être nécessaire que les nouvelles versions de Fail2ban comprennent des rules par défaut qui
conviennent à de nombreux démons de serveur populaires.Fail2ban utilise des règles iptables
pour bloquer complètement un attaquant pour un laps de temps spécifié, au lieu de
simplement réduire la rapidité, il peut marteler votre serveur.
19
Chapitre 3 : Etude de l’existant
Son fonctionnement se base sur divers actions, filtres et "jails". Le rôle des filtres est
d'indiquer à fail2ban quelles chaînes à rechercher dans les logs, et comment en extraire
l'adresse IP. Les jails à son rôle indiquent à fail2ban dans quels logs rechercher ces chaînes,
combien d'échecs tolérés, quels ports bloquer et pendant combien de temps.
ConfigServer Security & Firewall (CSF) est un pare-feu de type filtre de paquets dynamique
et une application de sécurité et de détection des connexions et des intrusions conçue pour les
serveurs Linux. Il s’agit d’un outil de sécurité qui peut protéger votre serveur contre des
attaques, et ainsi améliorer la sécurité de votre serveur.
Le Pare-feu ConfigServer est fourni avec un service enfant appelé Démon d'échec de
connexion (LFD). Ce service surveille l'activité des utilisateurs configurés sur le serveur pour
les échecs de connexion excessifs. Ce comportement est couramment observé lors d'attaques
par force brute.
20
Chapitre 3 : Etude de l’existant
➢ Contrôlez le trafic circulant dans votre espace serveur. Le trafic entre et sort via de
nombreuses connexions différentes à l'intérieur de votre serveur d'hébergement. Un
pare-feu fermera toutes les connexions et vous permettra d'ouvrir de manière sélective
les connexions à partir desquelles vous souhaitez recevoir du trafic.
➢ Empêchez les attaques DDoS. Vous ne voulez pas qu'un pirate installe un outil
DDoS sur votre serveur. Un pare-feu empêchera que cela se produise en fermant les
ports sortants, en ouvrant uniquement ceux nécessaires au trafic sortant autorisé.
➢ Suivez les connexions réseau. Un pare-feu comme CFS analyse toutes les connexions
réseau qui le traversent et vous permet de savoir lesquelles ont fait un nombre suspect
de tentatives de connexion infructueuses.
En bref, avec un pare-feu, votre compte cPanel sera protégé contre les outils malveillants qui
tentent de pénétrer sur votre site Web via des services tiers.
L’objectif d’un WAF est de détecter et bloquer des attaques connues, comme XSS, injections
SQL, vols de session, attaques brute-force, etc.
La sécurité du serveur de mails se situe à plusieurs niveaux. Elle réside sur la sécurisation des
communications, l'authentification des utilisateurs et l'intégrité des données.
21
Chapitre 3 : Etude de l’existant
Ainsi, pour apporter de la sécurité en matière de courrier électronique, on peut agir sur deux
éléments : les MTA et les MUA ou autrement dit coté serveur et coté client. Il est d'abord
primordial de ne plus transmettre de mots de passe en clair ensuite on pourra se concentrer sur
la validité des données.
4.1. Anti-spam
Le filtrage antispam des emails est la pratique par laquelle les fournisseurs d'accès Internet,
les services webmail et les services informatiques des entreprises filtrent les emails reçus sur
leurs serveurs avant de les faire parvenir à leurs destinataires finaux.
L'objectif est de filtrer les spams commerciaux, les messages de phishing et autres arnaques
par email. Les enjeux du filtrage anti spam sont donc liés à la sécurité, à l'optimisation des
ressources et au confort et gain de temps côté destinataires.
L'utilisation d'un pare-feu d'application Web (WAF) est un moyen simple et efficace de
protéger vos applications Web et les bases de données auxquelles elles accèdent. Il s'agit
également de la méthode recommandée par les normes PCI.
4.3. Anti-Virus
Un bon antivirus renforce la sécurité de vos informations et vous protège en temps réel des
attaques par hameçonnage par le biais de malwares, ransomwares ou autres.
Il permet également d'effectuer une analyse à la demande des fichiers, répertoires et comptes
d'utilisateurs à la recherche d'exploits suspects, de virus et de ressources suspectes (fichiers,
répertoires, liens symboliques, sockets).
Aussi, il permet de fournir une protection informatique adéquate grâce à sa détection des
exploits qui comprend :
Conclusion
Dans ce troisième, chapitre nous avons expliqué le contexte du projet et explicité la
problématique à résoudre. Finalement, nous avons décrit les différentes étapes du projet ainsi
qu'un aperçu de l'état de l'art des failles et attaques et une étude comparative des solutions
existantes dans le marché. Le chapitre suivant mettre en œuvre, les solutions de sécurité.
23
Chapitre 4 : Implémentation des solutions
Dans ce chapitre nous allons implémenter les solutions pour sécuriser un serveur web et un
serveur de messagerie.
En premier lieu, nous allons installer centos 7 sur un serveur privé virtuel.
CentOS (Community Enterprise Operating System) est une distribution GNU/Linux destinée
aux serveurs (et aux postes de travail). Tous ses paquets, à l'exception du logo, sont des
paquets compilés à partir des sources de la distribution RHEL (Red Hat Enterprise Linux),
éditée par la société Red Hat.
❖ Conditions préalables
➢ Se connecter au serveur avec ssh.
Avant de commencer à créer la pile, nous allons mettre à jour les packages sur le serveur
CentOS 7 à l'aide de la commande:
Comme nous avons déjà un système d'exploitation CentOS en cours d'exécution, la première
étape de l'assemblage de la pile LAMP consiste à installer le serveur Web. Le moyen le plus
simple d'installer Apache consiste à utiliser le gestionnaire de paquets natif de CentOS, yum.
24
Chapitre 4: Implémentation des solutions
La sortie affichera le package httpd package a été installé comme dans l'image ci-dessous:
En premier lieux, vous devez assurer que vous utilisez un serveur CentOS 7 à jour.
25
Chapitre 4: Implémentation des solutions
Après avoir mis à jour votre système, ajoutez le référentiel MariaDB YUM au serveur
CentOS 7 :
sudo tee /etc/yum.repos.d/MariaDB.repo<<EOF
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.4/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
EOF
Maintenant que MariaDB 10.4 est installé sur CentOS 7, sécurisez-le en exécutant
mysql_secure_installation.
26
Chapitre 4: Implémentation des solutions
$ sudo mysql_secure_installation
Afin de se connecter à MariaDB pour le sécuriser, nous aurons besoin de la version actuelle
mot de passe de l'utilisateur root. Si vous venez d'installer MariaDB et
vous n'avez pas encore défini le mot de passe root, le mot de passe sera vide,
vous devez donc simplement appuyer sur Entrée ici.
La définition du mot de passe root garantit que personne ne peut se connecter à MariaDB
utilisateur root sans l'autorisation appropriée.
Par défaut, une installation MariaDB a un utilisateur anonyme, permettant à n'importe qui
pour se connecter à MariaDB sans avoir à créer un compte utilisateur pour
eux. Ceci est destiné uniquement à des tests et à rendre l'installation
aller un peu plus doucement. Vous devez les supprimer avant d'emménager dans un
environnement de production.
Normalement, root ne devrait être autorisé à se connecter qu'à partir de 'localhost'. Cette
garantit que quelqu'un ne peut pas deviner le mot de passe root du réseau.
Par défaut, MariaDB est livré avec une base de données nommée 'test' que tout le monde peut
accès. Ceci est également destiné uniquement à des tests et doit être supprimé
avant de passer à un environnement de production.
27
Chapitre 4: Implémentation des solutions
Le rechargement des tables de privilèges garantira que toutes les modifications apportées
jusqu'à présent
prendra effet immédiatement.
Nettoyer...
Terminé! Si vous avez terminé toutes les étapes ci-dessus, votre MariaDB
l'installation devrait maintenant être sécurisée.
Tapez « aide ; » ou '\h' pour obtenir de l'aide. Tapez '\c' pour effacer l'instruction d'entrée
actuelle.
28
Chapitre 4: Implémentation des solutions
# mysql –V
mysql Ver 15.1 Distrib 10.4.6-MariaDB, pour Linux (x86_64) en utilisant readline 5.1
En premier lieux, nous allons exécuter les commandes ci-dessous pour ajouter les référentiels
requis.
sudo yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
Nous pouvons maintenant activer le référentiel PHP 7.4 Remi et installer PHP 7.4 sur CentOS
7.
sudo yum -y install yum-utils
29
Chapitre 4: Implémentation des solutions
Dependencies Resolved
============================================================================================================
Package Arch Version Repository Size
============================================================================================================
Installing:
php x86_64 7.4.0-1.el7.remi remi-php74 3.4 M
php-cli x86_64 7.4.0-1.el7.remi remi-php74 5.1 M
Installing for dependencies:
apr x86_64 1.4.8-5.el7 base 103 k
apr-util x86_64 1.5.2-6.el7 base 92 k
centos-logos noarch 70.0.6-3.el7.centos base 21 M
httpd x86_64 2.4.6-90.el7.centos base 2.7 M
httpd-tools x86_64 2.4.6-90.el7.centos base 91 k
mailcap noarch 2.1.41-2.el7 base 31 k
php-common x86_64 7.4.0-1.el7.remi remi-php74 1.1 M
php-json x86_64 7.4.0-1.el7.remi remi-php74 68 k
Transaction Summary
===============================================================================================
Install 2 Packages (+8 Dependent packages)
30
Chapitre 4: Implémentation des solutions
CentOS 7 n'a pas accès à phpMyAdmin dans son référentiel de logiciels par défaut. Nous
aurons besoin d'accéder au référentiel EPEL - les packages supplémentaires pour Enterprise
Linux.
WordPress est un site Web gratuit et open source et un outil de blog qui utilise PHP et
MySQL. WordPress est actuellement le CMS (Content Management System) le plus
populaire sur Internet et compte plus de 20 000 plugins pour étendre ses fonctionnalités.
La première étape que nous allons faire est la préparation. WordPress utilise une base de
données relationnelle pour gérer les informations du site et de ses utilisateurs. Nous avons
déjà installé MariaDB (un fork de MySQL), qui peut fournir cette fonctionnalité, mais nous
devons créer une base de données et un utilisateur avec lesquels WordPress travaillera.
mysql -u root -p
31
Chapitre 4: Implémentation des solutions
Nous serons invités à saisir le mot de passe que nous avons défini pour le compte root lors de
l'installation de MySQL. Une fois ce mot de passe soumis, nous recevrons une invite de
commande MySQL.
Tout d'abord, nous allons créer une nouvelle base de données que WordPress peut
contrôler. Vous pouvez l'appeler comme vous le souhaitez, mais nous l'appellerons wordpress.
Ensuite, nous allons créer un nouveau compte utilisateur MySQL que nous utiliserons
exclusivement pour opérer sur la nouvelle base de données de WordPress. La création de
bases de données et de comptes à fonction unique est une bonne idée, car elle permet un
meilleur contrôle des autorisations et d'autres besoins de sécurité.
À ce stade, nous disposons d'une base de données et d'un compte utilisateur spécialement
conçus pour WordPress. Cependant, l'utilisateur n'a pas accès à la base de données. Nous
devons lier les deux composants ensemble en accordant à notre utilisateur l'accès à la base de
données.
.
Maintenant que l'utilisateur a accès à la base de données, nous devons vider les privilèges afin
que MySQL soit au courant des modifications récentes des privilèges que nous avons
apportées :
FLUSH PRIVILEGES;
Avant de télécharger WordPress, nous devons installer un module PHP pour nous assurer qu'il
fonctionne correctement. Sans ce module, WordPress ne pourra pas redimensionner les
images pour créer des vignettes. Nous pouvons obtenir ce package directement à partir des
référentiels par défaut de CentOS en utilisant yum :
32
Chapitre 4: Implémentation des solutions
Maintenant, nous devons redémarrer Apache pour qu'il reconnaisse le nouveau module :
sudo service httpd restart
Nous sommes maintenant prêts à télécharger et installer WordPress à partir du site Web du
projet. Heureusement, l'équipe WordPress lie toujours la version stable la plus récente de son
logiciel à la même URL, afin que nous puissions obtenir la version la plus récente de
WordPress en tapant ceci :
cd ~
wget http://wordpress.org/latest.tar.gz
Cela téléchargera un fichier d'archive compressé qui contient tous les fichiers WordPress dont
nous avons besoin. Nous pouvons extraire les fichiers archivés pour reconstruire le répertoire
WordPress avec tar:
Nous aurons maintenant un répertoire appelé wordpress dans notre répertoire personnel. Nous
pouvons terminer l'installation en transférant les fichiers décompressés à la racine du
document d'Apache, où ils peuvent être servis aux visiteurs de notre site Web. Nous pouvons
y transférer nos fichiers WordPress avec rsync, ce qui conservera les autorisations par défaut
des fichiers :
rsync copiera en toute sécurité tout le contenu du répertoire que nous avons décompressé à la
racine du document à /var/www/html/. Cependant, nous devons toujours ajouter un dossier
pour que WordPress stocke les fichiers téléchargés. Nous pouvons le faire avec la mkdir
commande :
mkdir /var/www/html/wp-content/uploads
33
Chapitre 4: Implémentation des solutions
Nous devons maintenant attribuer la propriété et les autorisations correctes à nos fichiers et
dossiers WordPress. Cela augmentera la sécurité tout en permettant à WordPress de
fonctionner comme prévu. Pour ce faire, nous utiliserons chown pour accorder la propriété à
l'utilisateur et au groupe d'Apache :
Avec ce changement, le serveur Web pourra créer et modifier des fichiers WordPress, et nous
permettrons également de télécharger du contenu sur le serveur.
Commençons par déplacer dans le répertoire racine d'Apache où nous avons installé
WordPress :
cd /var/www/html
cp wp-config-sample.php wp-config.php
Maintenant que nous avons un fichier de configuration avec lequel travailler, ouvrons-le dans
un éditeur de texte :
nano wp-config.php
Les seules modifications que nous devons apporter à ce fichier concernent les paramètres
contenant les informations de notre base de données. Nous devrons trouver la section
34
Chapitre 4: Implémentation des solutions
Remplissons les valeurs de ces paramètres avec les informations de la base de données que
nous avons créée. Ça devrait ressembler à ça:
// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define('DB_NAME', 'wordpress');
Maintenant que nos fichiers sont en place et que notre logiciel est configuré, nous pouvons
terminer l'installation de WordPress via l'interface Web. Dans le navigateur Web, accédons au
nom de domaine ou à l'adresse IP publique de notre serveur :
http://server_domain_name_or_IP
Tout d'abord, nous devrons sélectionner la langue avec laquelle nous souhaitons installer
WordPress. Après avoir sélectionné une langue et cliqué sur Continuer, la page de
configuration initiale de WordPress s'affichera, où nous créerons un compte administrateur
initial :
35
Chapitre 4: Implémentation des solutions
36
Chapitre 4: Implémentation des solutions
Pour continuer, appuyons sur le bouton Connexion en bas, puis remplissons les informations
du compte administrateur :
Après avoir cliqué sur Se connecter, notre nouveau tableau de bord WordPress sera
présenté :
37
Chapitre 4: Implémentation des solutions
Nous devrons maintenant avoir une instance WordPress opérationnelle sur notre serveur
CentOS 7.
Sécuriser un serveur Centos passe évidemment par plusieurs étapes. Nous devons sécuriser
chaque composant de l’environnement.
En premier lieux, nous allons commencer par la sécurité de serveur web Apache.
Apache est l'un des serveurs Web les plus utilisés et les plus populaires. C'est également l'un
des serveurs Web les plus sécurisés disponibles. Ci-dessous nous allons expliquer quelques
trucs et astuces qui permettront de sécuriser votre serveur Apache.
Tout d’abord, nous allons commencer par cacher la version d’Apache installé sur votre
serveur LAMP. Ça peut être une vulnérabilité exploitable par un internaute malveillant.
Pour masquer ces informations, vous devrez apporter quelques modifications au fichier de
configuration principal d'Apache.
38
Chapitre 4: Implémentation des solutions
Les ETags (balises d'entité) sont un point de vulnérabilité bien connu du serveur Web
Apache. ETag est un en-tête de réponse HTTP qui permet aux utilisateurs distants d'obtenir
des informations sensibles telles que le numéro d'iodé, les identifiants de processus
enfants. ETag est activé dans Apache par défaut.
39
Chapitre 4: Implémentation des solutions
La principale raison des ralentissements du serveur Web Apache est le temps nécessaire pour
effectuer des recherches DNS. Apache enregistrera le nom d'hôte complet de chaque
connexion client entrante dans son access.log fichier. Résoudre chacun d'eux prend beaucoup
de temps.
L' HostnameLookups option active la recherche DNS afin que les noms d'hôtes puissent être
enregistrés au lieu de l'adresse IP. Par défaut, HostnameLookups c'est Off dans Apache.
Vous pouvez vérifier que c'est le cas en éditant le fichier de configuration Apache :
UseCanonicalName Off
Enregistrez et fermez le fichier lorsque vous avez terminé, puis redémarrez Apache pour
refléter les modifications.
sudo httpd restart
Maintenant, nous allons appliquer des règles de sécurités pour les entêtes.
40
Chapitre 4: Implémentation des solutions
Les scripts intersites (XSS) sont l'une des vulnérabilités de la couche application les plus
courantes dans le serveur Apache. XSS permet aux attaquants d'injecter un script côté client
dans les pages Web consultées par d'autres utilisateurs. L'activation de la protection XSS est
recommandée.
41
Chapitre 4: Implémentation des solutions
HTTP Strict Transport Security empêche cette attaque côté serveur en refusant de
communiquer via HTTP. Donc nous devons l’activer.
Referrer-Policy est un en-tête de sécurité qui peut (et doit) être inclus dans la communication
du serveur de votre site Web à un client.
Finalement, nous allons mettre en œuvre un indicateur d'en-tête HTTP de cookie avec
HTTPOnly & Secure pour protéger un site Web contre les attaques XSS.
Maintenant, votre serveur Apache est sécurisé. Nous passons alors, à sécuriser le deuxième
composant de l’environnement LAMP.
42
Chapitre 4: Implémentation des solutions
Le serveur Web Apache permet d'accéder aux fichiers et au contenu via le protocole HTTP
OU HTTPS. Un langage de script côté serveur mal configuré peut créer toutes sortes de
problèmes. Donc, PHP doit être utilisé avec prudence.
Pour sécuriser PHP, nous allons commencer par restreindre l’affichage des informations de
PHP.
Il suffit de désactiver expose_php. Modifiez /etc/php.d/secutity.ini et définissez la directive
suivante :
expose_php = Désactivé
Lorsqu'il est activé, expose_php signale au monde que PHP est installé sur le serveur, ce qui
inclut la version PHP dans l'en-tête HTTP, les guides de logo PHP sont également exposés.
Aussi, il ne faut pas exposer les messages d'erreur PHP à tous les visiteurs du site. Un
internaute malveillant peut l’exploiter pour effectuer des activités malveillantes, en plus à des
fins frauduleuses.
display_errors = Désactivé
PHP a beaucoup de fonctions qui peuvent être utilisées pour cracker votre serveur s'il n'est pas
utilisé correctement. Donc, il faut les désactiver.
Nous allons définir la liste des fonctions dans /etc/php.d/security.ini en utilisant la commande
ci-dessous :
disable_functions =
exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,s
how_source
43
Chapitre 4: Implémentation des solutions
allow_url_fopen = off
Aussi, il faut s’assurer que la fonction allow_url_include est désactivée. Cette fonction
permet au attaquant d'accéder au fichier distant par des instructions require ou include. Exiger
ou inclure les instructions sont les principaux points d'attaque pour l'injonction de code. Cette
fonction est désactivée dans certains serveurs d'hébergement partagé dans le fichier de
configuration de PHP pour la sécurité.
allow_url_include= off
2.4Sécurité SSH
SSH assure la confidentialité et l'intégrité par cryptage des données et les mots de passe ne
sont plus envoyés en clair sur le réseau. Néanmoins, une configuration par défaut de SSH peut
mettre le serveur en danger de sécurité.
C'est pourquoi il est important de suivre quelques étapes simples pour renforcer un serveur
SSH, ce qui peut réduire considérablement les risques.
Pour des raisons de sécurité, il n'est pas recommandé d'utiliser l'utilisateur root pour se
connecter via SSH sur un réseau. La meilleure approche consiste à utiliser l'utilisateur normal
pour se connecter au serveur et à utiliser la commande sudo pour effectuer la tâche nécessitant
le privilège root.
En premier lieux, nous allons désactiver les connexions root. Il suffit de metter à jour le
fichier /etc/ssh/sshd_config et redémarrer le service SSH comme suit :
44
Chapitre 4: Implémentation des solutions
nano /etc/ssh/sshd_config
PermitRootLogin non
Le port 22 est le port d'écoute SSH par défaut pour les connexions entrantes. L’attaquant peut
constamment rechercher le port 22 sur le serveur, et une méthode efficace consiste à modifier
le port SSH par défaut, par exemple sur le port 2223 comme suit, pour éliminer ces attaques.
nano /etc/ssh/sshd_config
UseDNS no
Finalement, nous allons générer un nom d’utilisateur et un mot de passe aléatoire par les
commandes ci-dessous :
45
Chapitre 4: Implémentation des solutions
MySQL est le serveur de base de données le plus populaire au monde et chaque installation de
cPanel l'inclut par défaut. Il est utilisé par toutes les applications modernes courantes comme
WordPress.
Certaines des fonctionnalités de sécurité les plus importantes sont déjà activées dans l'instance
MySQL installée avec cPanel, mais voyons comment vous pouvez la sécuriser encore plus.
Nous allons activer le mode stric mysql puisque Lorsque le mode strict est
activé, MySQL retourne une erreur si une valeur est invalide ou manquante.
Finalement, nous avons sécurisé tous les composants de l’environnement LAMP. Passons
alors à plus sécuriser le serveur par l’intégration de pare-feu, WAF, l’antivirus, Backup,
Fail2Ban et SSL.
ConfigServer Security & Firewall (CSF) est un pare-feu d'inspection de paquets (SPI), une
détection de connexion, intrusion et une application de sécurité pour les serveurs Linux.
46
Chapitre 4: Implémentation des solutions
Pour installer le CSF, nous allons commencer par l’installation des dépendances en tapant la
commande ci-dessous :
Ensuite, nous allons créer des archives au format en utilisant la commande tar :
tar -xzf csf.tgz
47
Chapitre 4: Implémentation des solutions
Générer un nom d'utilisateur et un mot de passe aléatoire pour le mode graphique du firewall.
Ensuite, nous allons régler les ports et les modes graphiques en éditent le fichier de
configuration CSF.
TCP_IN='"'$sshport,$firewallport,53,80,443'"'
TCP_OUT='"'$sshport,$firewallport,53,80,443'"'
UDP_IN='"'$sshport,$firewallport,53,80,443'"'
UDP_OUT='"'$sshport,$firewallport,53,80,443'"'
PORTS_sshd='"'$sshport'"'
UIX='"'1'"'
UI1_PORT='"'$firewallport'"'
UI2_IP='"'$real_ip'"'
UI3_USER='"'$firewalluser'"'
UI4_PASS='"'$firewallpassword'"'
Autoriser l’IP de l’utilisateur connecter en SSH (on considère que l’utilisateur dispose d’une
adresse IP fixe).
csf -a $ipclient
Activer le firewall.
csf –e
48
Chapitre 4: Implémentation des solutions
Comodo Web Application Firewall (CWAF) offre une protection puissante et en temps réel
pour les applications Web et les sites Web exécutés sur Apache. CWAF prend en charge les
règles ModSecurity, offrant un filtrage avancé, une sécurité et une protection contre les
intrusions.
Nous allons commencer par l’ajout d’utilisateur WAF par la commande ci-dessous :
49
Chapitre 4: Implémentation des solutions
Redémarrer apache.
service httpd restart
sh cwaf_client_install.sh
cp /usr/local/cwaf/etc/modsec2_standalone.conf /etc/httpd/conf.d/modsec2_standalone.conf
cd /usr/local/src
cd fcgiwrap
./configure
Make
make install
50
Chapitre 4: Implémentation des solutions
chkconfig spawn-fcgi on
cd $installdir
5. Installation ANTI-VIRUS
Nous allons installer l’anti-virus calmAV. ClamAV (Clam Antivirus) est
un antivirus GPL pour UNIX. La principale qualité de cet antivirus est qu'il permet de balayer
les courriels reçus et envoyés avec un logiciel de messagerie classique. Le paquet que nous
allons installer inclut un démon multi-tâches flexible et configurable, un antivirus en ligne de
commande et un utilitaire pour une mise à jour automatique des définitions de virus via
Internet.
Puis, nous allons désactiver SELINUX qui est un module de sécurité Linux, qui permet de
définir une politique de contrôle d'accès obligatoire aux éléments d'un système issu de Linux.
setenforce 0
Configurer l'anti-virus.
setsebool -P antivirus_can_scan_system 1
setsebool -P clamd_use_jit 1
51
Chapitre 4: Implémentation des solutions
cp /etc/clamd.d/scan.conf /etc/clamd.d/scan.conf.backup
Freshclam
Holland est un Framework de sauvegarde Open Source. Son objectif est de faciliter la
sauvegarde des bases de données avec une plus grande configurabilité, cohérence et
facilité. Holland se concentre actuellement sur MySQL.
En raison de sa structure de plugin, Holland peut être utilisé pour sauvegarder tout ce que
vous voulez par tous les moyens que vous voulez.
Démarrer Hollande.
52
Chapitre 4: Implémentation des solutions
/usr/sbin/holland -q bk
7. Installation de Fail2Ban
Fail2ban est un logiciel qui analyse les fichiers journaux à la recherche de tentatives de
connexion par force brute en temps réel et interdit les attaquants avec firewalld ou iptables.
Pour installer Fail2Ban sur CentOS 7, nous devrons d'abord installer le référentiel EPEL
(Extra Packages for Enterprise Linux). EPEL contient des packages supplémentaires pour
toutes les versions de CentOS, l'un de ces packages supplémentaires est Fail2Ban
Une fois installé, nous devrons configurer et personnaliser le logiciel avec un fichier de
configuration jail.local. Le fichier jail.local remplace le fichier jail.conf et est utilisé pour
sécuriser la mise à jour de votre configuration personnalisée.
Faites une copie du fichier jail.conf et enregistrez-le sous le nom jail.local :
cp -pf /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
53
Chapitre 4: Implémentation des solutions
Exécutez les lignes de commande suivantes pour exécuter Fail2Ban sur le serveur.
systemctl enable fail2ban
systemctl start fail2ban
8. Installation de SSL
Améliorer la sécurité de votre site Web grâce au cryptage SSL peut augmenter la confiance de
vos visiteurs dans votre site Web.
Nous allons donc installer un certificat SSL Let's Encrypt pour plus sécuriser notre serveur.
certbot --apache
Conclusion
Dans ce chapitre, nous avons présenté les mécanismes de sécurité que nous avons implémenté
afin d’assurer la disponibilité, la confidentialité et l’intégrité des serveurs.
54
Conclusion Générale
La plupart des serveurs web manipulent des données personnelles et des données
business, autant dire des données sensibles. Mots de passe, adresses email, numéros de cartes
bancaires, données santé et autres au centre de la bataille.
Les Cyberattaques visent particulièrement les sites des entreprises, y compris celles de taille réduite.
Les principaux risques sont la défiguration, ou défaçage, où l'attaquant modifie le contenu du site, et
le déni de service, où les utilisateurs ne peuvent plus accéder au site, celui-ci étant saturé de requêtes
et donc plus capable d'accueillir de nouveaux visiteurs. Il est aussi possible de se servir d'un site web
comme une porte d'entrée vers le système d'information, pour déposer des contenus illégaux, ou
piéger les internautes.
Pour minimiser la possibilité de ce dernier cas, nous avons implémenté une solution de
sécurité automatisée assurant la sécurité des différents serveurs.
Néanmoins, nous pouvons améliorer ce projet en développant des analyses des journaux qui
génère des notifications de sécurité envoyée en temps réel au client.
55
Weboghraphie
56
Annexe
57
Annexe
#!/usr/bin/env bash
echo "======================================"
echo ""
echo ""
echo "Ce script ne fonctionne que sur une installation vierge de centos7 si vous avez déja
installer des composant sur le serveur merci de le formater"
echo ""
echo "======================================"
installdir=$(pwd)
else
printf "Sorry, Vous êtes pas un utilisateur ROOT demander les permission root pour executer
ce script\n"
exit;
fi
58
Annexe
#################################################
#################################################
LOG=/log/install.log
mkdir /log
touch /install.log
# Update system
59
Annexe
sleep 2
exit 1
fi
yum install -y crontabs openssh-server vim ntp sysstat man wget rsync screen >> $LOG
2>&1
60
Annexe
#################################################
#################################################
keep_alive=On
timeout=30
keep_alive_requests=500
keep_alive_timeout=10
prefork_start_servers=4
prefork_min_spare_servers=4
prefork_max_spare_servers=9
prefork_max_requests_per_child=1000
worker_start_servers=4
worker_max_clients=1024
worker_min_spare_threads=64
worker_max_spare_threads=192
61
Annexe
worker_threads_per_child=64
worker_max_requests_per_child=0
max_execution_time=30
memory_limit=128M
post_max_size=8M
upload_max_filesize=8M
short_open_tag='On'
expose_php=Off
yum install -y httpd httpd-tools mod_ssl php-common php-gd php-mysqlnd php-opcache php-
xml php-devel mod_php >> $LOG 2>&1
62
Annexe
sed -i "s/\$prefork_min_spare_servers/$prefork_min_spare_servers/g"
/etc/httpd/conf/httpd.conf >> $LOG 2>&1
sed -i "s/\$prefork_max_spare_servers/$prefork_max_spare_servers/g"
/etc/httpd/conf/httpd.conf >> $LOG 2>&1
sed -i "s/\$prefork_max_requests_per_child/$prefork_max_requests_per_child/g"
/etc/httpd/conf/httpd.conf >> $LOG 2>&1
63
Annexe
sed -i "s/\$worker_min_spare_threads/$worker_min_spare_threads/g"
/etc/httpd/conf/httpd.conf >> $LOG 2>&1
sed -i "s/\$worker_max_spare_threads/$worker_max_spare_threads/g"
/etc/httpd/conf/httpd.conf >> $LOG 2>&1
sed -i "s/\$worker_max_requests_per_child/$worker_max_requests_per_child/g"
/etc/httpd/conf/httpd.conf >> $LOG 2>&1
64
Annexe
srvstatus_htuser=serverinfo
#################################################
#################################################
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
table_open_cache=2048
query_cache_size=32M
65
Annexe
max_heap_table_size=64M
wait_timeout=180
net_read_timeout=30
net_write_timeout=30
back_log=128
key_buffer_size=64M
innodb_log_buffer_size=64M
log_bin=/var/lib/mysql/bin-log
log_relay=/var/lib/mysql/relay-log
log_slow=/var/lib/mysql/slow-log
log_error=/var/log/mariadb/mariadb.log
includedir=/etc/sysconfig/mysqld-config
# Installation de MySQL
66
Annexe
67
Annexe
#######################################################
########################################################
# Installation de Holland
68
Annexe
# Execution de holland
#################################################
# Installation de PHPMYADMINN
#################################################
cp../templates/rhel7/phpmyadmin/phpMyAdmin.conf.template/etc/httpd/conf.d/phpMyAdmin
.conf >> $LOG 2>&1
#################################################
# Installation de WordPress
69
Annexe
#################################################
FILE=/var/www/html/wp-config.php
else
FLUSH PRIVILEGES;
FLUSH PRIVILEGES;
70
Annexe
MYSQL_SCRIPT
sleep 2
mkdir -p /var/www/html/
cd /tmp/
wget -q http://wordpress.org/latest.tar.gz
rm -f /tmp/latest.tar.gz
cp -r /var/www/html/wordpress/* /var/www/html
rm -Rf /var/www/html/wordpress/
cd /var/www/html
fi
#################################################
# Sécurité de linux
#################################################
71
Annexe
#################################################
# Sécurité de SSH
#################################################
#files00='/etc/ssh/zen.f'
#else
#touch /etc/ssh/zen.f
72
Annexe
#fi
#################################################
#################################################
files0='/etc/httpd/zen.f'
else
touch /etc/httpd/zen.f
echo '
ServerSignature Off
ServerTokens Prod
FileETag None
73
Annexe
TraceEnable off
HostnameLookups Off
UseCanonicalName Off
' &>>/etc/httpd/conf/httpd.conf
#Security Headers
echo "
" &>>/etc/httpd/conf/httpd.conf
fi
#################################################
# Sécurité de php
#################################################
74
Annexe
files1='/etc/zenphp.f'
else
touch /etc/zenphp.f
fi
#################################################
# Sécurité de mysql
75
Annexe
#################################################
files2='/etc/zenmysql.f'
else
touch /etc/zenmysql.f
fi
#################################################
# Installation de firewall
#################################################
files22='/etc/csf/csf.conf'
76
Annexe
else
#Téléchargement de CSF
cd ../
cd csf
cd ../
cd scripts
77
Annexe
chmod +x /usr/sbin/sendmail
ipclient=${SSH_CLIENT%% *}
# Configuration du firewall
#vérifier si le port ssh est vide ou non passer une valeur par défaut
if [ -z "$sshport" ]
then
sshport=2200
78
Annexe
fi
TCP_IN='"'$sshport,$firewallport,53,80,443'"'
TCP_OUT='"'$sshport,$firewallport,53,80,443'"'
UDP_IN='"'$sshport,$firewallport,53,80,443'"'
UDP_OUT='"'$sshport,$firewallport,53,80,443'"'
PORTS_sshd='"'$sshport'"'
UIX='"'1'"'
UI1_PORT='"'$firewallport'"'
UI2_IP='"'$real_ip'"'
UI3_USER='"'$firewalluser'"'
UI4_PASS='"'$firewallpassword'"'
cd $installdir
cd ../
79
Annexe
#allow client ip
#Enable firewall
#Restart firewall
fi
#################################################
80
Annexe
#################################################
cd ../
cd scripts
cp /usr/local/cwaf/etc/modsec2_standalone.conf /etc/httpd/conf.d/modsec2_standalone.conf
>> $LOG 2>&1
cd /usr/local/src
cd fcgiwrap
81
Annexe
FCGI_SOCKET=/var/run/fcgiwrap.socket
FCGI_PROGRAM=/usr/local/sbin/fcgiwrap
FCGI_USER=cwaf
FCGI_GROUP=cwaf
FCGI_EXTRA_OPTIONS="-M 0700"
EOF
chkconfig spawn-fcgi on
cd $installdir
#################################################
# Installation ANTI-VIRUS
#################################################
# Install clamav
#desactiver SELINUX
82
Annexe
setenforce 0
#configurer l'anti-irus
[Unit]
After = network.target[Service]
Type = forking
ExecStart = /usr/bin/freshclam -d -c 2
Restart = on-failure
PrivateTmp = true
[Install] WantedBy=multi-user.target
EOF
83
Annexe
#################################################
# Installation Fail2ban
#################################################
cd /etc/fail2ban/jail.d
touch sshd.local
#################################################
# Installation SSL
#################################################
certbot --apache
#################################################
#################################################
#################################################
# Rapport d'installation
#################################################
84
Annexe
txtbld=$(tput bold)
lightblue=`tput setaf 6`
nc=`tput sgr0`
${txtbld}---------------------------------------------------------------
---------------------------------------------------------------${nc}
${txtbld}---------------------------------------------------------------
Identifiants de sécurité
---------------------------------------------------------------${nc}
85
Annexe
Si vous perdez ce rapport de configuration, les identifiants peuvent être trouvés dans:
${txtbld}---------------------------------------------------------------
Sauvegardes MySQL
---------------------------------------------------------------${nc}
est configuré pour fonctionner tous les soirs à 1h20, heure du serveur.
86
Annexe
/etc/holland/backupsets/default.conf
/etc/cron.d/holland
${txtbld}---------------------------------------------------------------
Instalation de wordpress
---------------------------------------------------------------${nc}
${txtbld}---------------------------------------------------------------${nc}
EOF
cat /log/lamp_rapport
87
Annexe
88