Dans lâunivers numĂ©rique dâaujourdâhui, la sĂ©curitĂ© des serveurs web nâest pas seulement une option, mais une nĂ©cessitĂ© absolue. Ă lâĂšre oĂč les cyberattaques se multiplient et Ă©voluent constamment, protĂ©ger efficacement son infrastructure en ligne est devenu primordial. Cet article se concentre sur la sĂ©curisation dâun serveur web Nginx, une plateforme largement utilisĂ©e pour sa fiabilitĂ© et sa performance.
Nous aborderons deux outils essentiels dans lâarsenal de la sĂ©curitĂ© informatique : Fail2ban et UFW (Uncomplicated Firewall). Fail2ban est un logiciel de prĂ©vention dâintrusion qui protĂšge votre serveur contre les tentatives dâaccĂšs non autorisĂ©es, souvent marquĂ©es par de multiples tentatives de connexion Ă©chouĂ©es. Dâautre part, UFW offre une gestion simplifiĂ©e du pare-feu, permettant de contrĂŽler facilement le trafic entrant et sortant.
Dans cet article, nous allons dĂ©tailler comment ces outils peuvent ĂȘtre utilisĂ©s conjointement pour renforcer la sĂ©curitĂ© de votre serveur Nginx. Nous explorerons les Ă©tapes dâinstallation et de configuration, vous guidant Ă travers le processus de mise en place de rĂšgles de sĂ©curitĂ© efficaces.
Présentation de Fail2ban et UFW
Fail2ban: Le Garde du Corps Numérique
Fail2ban est un outil indispensable pour la sĂ©curitĂ© des serveurs. Son rĂŽle principal est de surveiller les journaux de votre serveur Ă la recherche de signes dâactivitĂ©s malveillantes, particuliĂšrement les tentatives de connexion infructueuses rĂ©pĂ©tĂ©es. En dĂ©tectant ces tentatives, souvent des indices dâune attaque par force brute, Fail2ban intervient en bannissant temporairement lâadresse IP de lâattaquant, la mettant ainsi en quarantaine pour prĂ©venir de futures intrusions.
Ce logiciel fonctionne grĂące Ă des âfiltresâ dĂ©finis par lâutilisateur, qui spĂ©cifient les conditions sous lesquelles une adresse IP doit ĂȘtre bannie. Ces filtres sont associĂ©s Ă des âactionsâ, telles que la modification des rĂšgles du pare-feu pour bloquer le trafic provenant de lâadresse bannie. Lâutilisation de Fail2ban est donc une mĂ©thode proactive pour protĂ©ger votre serveur contre les attaques les plus communes, tout en restant suffisamment flexible pour sâadapter Ă divers scĂ©narios de menaces.
UFW : Une Approche Simplifiée du Pare-feu
UFW, pour Uncomplicated Firewall, est un pare-feu facile Ă utiliser pour les systĂšmes dâexploitation basĂ©s sur Linux. Comme son nom lâindique, UFW vise Ă simplifier la gestion du pare-feu, tout en offrant une protection robuste. Il sâagit dâune interface utilisateur pour iptables, qui est le pare-feu par dĂ©faut sous Linux.
Avec UFW, vous pouvez facilement configurer des rĂšgles qui dĂ©terminent quel trafic est autorisĂ© Ă entrer ou Ă sortir de votre serveur. Ces rĂšgles peuvent ĂȘtre dĂ©finies en fonction des ports, des protocoles et des adresses IP. UFW permet aussi de configurer des rĂšgles plus complexes si nĂ©cessaire, tout en gardant une interface simple pour les utilisateurs moins expĂ©rimentĂ©s.
Une Complémentarité Essentielle
La combinaison de Fail2ban et UFW offre une couche de sécurité solide pour votre serveur Nginx. Tandis que Fail2ban se focalise sur la prévention des attaques par force brute en bannissant les IP suspectes, UFW gÚre le trafic global entrant et sortant, offrant ainsi une barriÚre contre un large éventail de menaces. En utilisant ces deux outils ensemble, vous créez un environnement serveur non seulement résistant aux attaques les plus courantes mais aussi adaptable à des menaces émergentes.
Installation et Configuration de Base
Bien que les instructions suivantes soient spĂ©cifique Ă une distribution Linux Ubuntu, les principes et les commandes sont largement transposables Ă dâautres systĂšmes Linux. Avec de lĂ©gĂšres adaptations, ces Ă©tapes peuvent ĂȘtre appliquĂ©es Ă diverses distributions, rendant ainsi ce guide utile pour un large Ă©ventail dâutilisateurs Linux.
Ătape 1 : Installation de UFW
- 1. Installer UFW : Pour installer UFW, lancez :
Shell
Ătape 2 : Installation de Fail2ban
- 1. Installer Fail2ban : Exécutez les commandes suivantes pour installer Fail2ban sur votre serveur Ubuntu :
Shell
- 2. Activer le service Fail2ban : Pour lancer les service et lâactiver automatiquement au dĂ©marrage du systĂšme, exĂ©cutez les commandes suivantes :
Shell
- 3. Verifier lâinstallation : Pour sâassurer que le service est bien dĂ©marrĂ© et fonctionne correctement, lancez :
Shell
Vous devriez voir :
Output
Ătape 3 : Comprendre le Fonctionnement de Fail2ban
Avant dâaborder la configuration, il est crucial de comprendre le fonctionnement de Fail2ban. Ce logiciel sâappuie sur trois composants principaux situĂ©s dans diffĂ©rents rĂ©pertoires : les jails, les filtres et les actions.
1. Les Jails : Ce sont des ensembles de rĂšgles dĂ©finissant quand et comment une adresse IP doit ĂȘtre bannie. Un jail se dĂ©finit par des fichiers de log Ă surveiller, grĂące Ă des filtres (sous la forme de regex), et dĂ©clenche des actions lorsque des Ă©checs sont dĂ©tectĂ©s (les filtres renvoient un rĂ©sultat).
Fail2ban comporte des configurations de jails prédéfinies dans /etc/fail2ban/jail.conf
.
2. Filtres : Ils servent Ă analyser les logs des services via des regex pour dĂ©tecter les comportements suspects, tels que les tentatives dâintrusion.
On les trouve dans /etc/fail2ban/filter.d/
.
3. Actions : Elles peuvent inclure le bannissement dâune adresse IP, lâenvoi de notifications, ou lâexĂ©cution de scripts personnalisĂ©s.
Les actions, définissant les commandes pour bannir ou débannir une adresse IP, se situent dans /etc/fail2ban/action.d/
.
Ătape 4 : Configuration des RĂšgles de Base de Fail2ban
Il ne faut pas pas modifier directement les fichiers /etc/fail2ban/fail2ban.conf
et /etc/fail2ban/jail.conf
: ces fichiers qui contiennent les configurations par dĂ©faut de fail2bain, peuvent ĂȘtre rĂ©initialisĂ©s lors des mises Ă jour du systĂšme.
- 1. Créer un fichier de configuration dédiée : Pour cela, ouvrez votre éditeur favori, ici nano, en exécutant la commande :
Shell
- 2. Surcharger les configurations de base : Tous les paramÚtres et configurations par défaut se trouvent dans le fichier
/etc/fail2ban/jail.conf
. Voici une liste des paramĂštres importants Ă surcharger et Ă adapter en fonction du comportement que vous souhaitez :- bantime: DĂ©finit la durĂ©e de bannissement dâune IP (par dĂ©faut 10 minutes, recommandĂ© plusieurs heures ou jours).
- findtime: PĂ©riode jusquâĂ laquelle les anomalies sont recherchĂ©es dans les logs.
- ignoreip: Liste des IP Ă ignorer, y compris la vĂŽtre pour Ă©viter un auto-bannissement.
- maxretry: Nombre de tentatives échouées autorisées avant bannissement.
On dĂ©finira aussi lâutilisation de UFW pour prendre la main sur les bannissements (banaction
et banaction_allports
).
Voici un exemple de configuration drastique, banissant 1 journĂ©e toute premiĂšre tentative dâintrusion. On dĂ©finit aussi lâutilisation de UFW, (notez bien les adresses IPs locales que vous devrez peut-ĂȘtre adapter suivant la configuration de votre rĂ©seau local) :
Conf
- 3. Redémarrer le service Fail2ban : Pour prendre en compte vos modifications, redémarrez le service Fail2ban en laçant la commande :
Shell
- 4. VĂ©rifier le status du service :
Shell
Ce qui devrait vous donner :
Output
Configuration avancée de UFW
Nous allons appliquer le principe du moindre privilĂšge en blocant par dĂ©faut toutes les connexions entrantes et sortantes, et en nâautorisant que les flux nĂ©cessaires pour les services spĂ©cifiques. En suivant ce principe, on minimise les risques liĂ©s Ă lâaccĂšs non autorisĂ© ou Ă lâexploitation de vulnĂ©rabilitĂ©s, en assurant que seuls les ports et les services essentiels soient accessibles.
Voyons comment procéder pour configurer les rÚgles de pare-feu avec UFW :
Ătape 5 : Tout Bloquer et nâouvrir que le NĂ©cessaire
- Configuration des rÚgles par défaut : Bloquez toutes les connexions entrantes et sortantes par défaut :
Shell
Shell
- Autorisez les connexions sortantes pour le web :
Shell
- Autorisez les connexions SSH (pour la gestion Ă distance) :
Shell
- Autorisez les connexions sortantes DNS (pour la résolution de noms de domaine) :
Shell
Ătape 6: Activation des RĂšgles
- Activation du pare-feu UFW : Activez UFW avec :
- VĂ©rification des rĂšgles configurĂ©es : RevĂ©rifiez lâĂ©tat et les rĂšgles du pare-feu avec :
Shell
Ătape 7: Ajoutez des rĂšgles supplĂ©mentaires en fonction de vos services
- Mail : Autorisez les connexions sortantes SMTP pour lâenvoi dâe-mails :
Shell
Shell
- Restreignez lâaccĂšs SSH Ă certaines adresses IP :
Shell
Configuration avancée de Fail2ban
Ătape 8 : Lister les filtres prĂ©configurĂ©s sur votre serveur
- Filtres Nginx : Listez les filtres existants (peut ĂȘtre diffĂ©rent sur votre serveur) :
Output
Shell
- Pour le filtre
nginx-4xx.conf
: Ce filtre dĂ©tecte les requĂȘtes gĂ©nĂ©rant des erreurs HTTP 4xx (comme 404, 403, 400), souvent le rĂ©sultat de tentatives dâaccĂšs Ă des ressources non autorisĂ©es ou inexistantes, indiquant une exploration malveillante.
Shell
- Pour le filtre
nginx-forbidden.conf
: Ce filtre cible les tentatives dâaccĂšs Ă des rĂ©pertoires interdits. Il est utile pour bloquer les scans de rĂ©pertoires qui tentent de dĂ©couvrir des fichiers ou des dossiers cachĂ©s sur le serveur.
Shell
- Pour le filtre
nginx-botsearch.conf
: Ce filtre se concentre sur les requĂȘtes pour des URLs qui nâexistent pas (erreurs 404), souvent signe dâun bot ou dâun scanner essayant de trouver des vulnĂ©rabilitĂ©s ou des pages cachĂ©es.
Shell
- Pour le filtre
nginx-http-auth.conf
: Ce filtre est utilisĂ© pour dĂ©tecter et bloquer les tentatives rĂ©pĂ©tĂ©es dâauthentification Ă©chouĂ©e, indiquant une possible attaque par force brute sur les zones protĂ©gĂ©es par un mot de passe.
Shell
- Pour le filtre
nginx-limit-req.conf
: Ce filtre vise Ă bloquer les adresses IP qui dĂ©passent les limites de requĂȘtes dĂ©finies dans Nginx (limit_req), typique dâune attaque par dĂ©ni de service distribuĂ© (DDoS) ou dâun comportement de bot agressif.
Shell
Ătape 9 : Ajouter les jails Ă votre configuration
Pour ajouter ces jails Ă la configuration de Fail2Ban dans le fichier custom.conf
, suivez ces Ă©tapes :
- Ouvrir le fichier de configuration : Utilisez la commande pour ouvrir le fichier dans un Ă©diteur de texte :
Shell
- Ajouter les configurations des jails : Copiez et collez les configurations suivantes Ă la suite du fichier :
Conf
Enregistrer et fermer le fichier : AprĂšs avoir ajoutĂ© les configurations, enregistrez le fichier et fermez lâĂ©diteur de texte.
Redémarrer Fail2Ban : Pour appliquer les modifications, redémarrez Fail2Ban avec :
Shell
Cette configuration va ajouter et activer les jails spécifiées pour SSH, diverses configurations Nginx, et UFW.
Ătape 10 : VĂ©rification et Test
AprÚs la configuration, il est essentiel de tester et de vérifier que tout fonctionne correctement.
- Vérification de Fail2ban : Utilisez cette commande pour lister les jails actifs et vérifier que Fail2ban fonctionne correctement.
Shell
Ce qui me renvoie :
Output
Ces Ă©tapes constituent la base de la sĂ©curisation de votre serveur Nginx sous Linux avec Fail2ban et UFW. Nâoubliez pas que la configuration peut ĂȘtre personnalisĂ©e en fonction des besoins spĂ©cifiques de votre serveur et de votre rĂ©seau.
Vous trouverez sur internet de multiples filtres pour Fail2ban adaptés aux services qui sont lancés sur votre serveur.
Visualisation et Analyse des Bannissements
Pour comprendre et analyser efficacement les actions de sĂ©curitĂ© de Fail2Ban, il est utile dâavoir un aperçu des adresses IP bannies.
Le script suivant fournit cette visibilité, classée par jail :
Shell
Voici un exemple de toutes les IPs qui ont été bloquées sur mon serveur :
Output
Jâai tronquĂ© les IP, il y en avait plus de 2600 pour 24 heures de rĂ©tention ! Cet exemple montre quâun trĂšs grand nombre dâadresses IP ont Ă©tĂ© bloquĂ©es sur mon serveur, qui ne contient pourtant pas de donnĂ©es hautement sensibles.
Lâimportant volume dâIPs bannies souligne Ă©galement lâampleur et la constance des attaques automatisĂ©es envers les serveurs en ligne. MĂȘme des systĂšmes qui semblent peu intĂ©ressants sont frĂ©quemment visĂ©s par des bots et des cyberattaquants en quĂȘte de vulnĂ©rabilitĂ©s, Ă des fins malveillantes telles que le spam ou la crĂ©ation de rĂ©seaux de bots. Il existe aussi de nombreuses sociĂ©tĂ©s lĂ©gitimes qui scannent lâinternet Ă la recherche de serveurs corrompus.
Calcul de Quelques Statistiques
Lâanalyse des donnĂ©es IP peut rĂ©vĂ©ler des informations significatives sur la distribution gĂ©ographique, lâappartenance organisationnelle et la localisation de ces attaques scans.
Le script Bash ci-dessous permet de calculer des statistiques prĂ©cises Ă partir des adresses IP rĂ©coltĂ©es. Ces statistiques comprennent le comptage du nombre dâadresses IP par pays, organisation, et ville. Ce processus aide Ă comprendre les tendances des attaques et leur rĂ©partition gĂ©ographique.
Bash
Scans par Pays
RĂ©sultats
Output
Interprétation de Scans Bloqués par Pays
- 1. ActivitĂ© de Scanning ElevĂ©e aux Ătats-Unis (US)
- Nombre dâoccurrences : 1055
- Implication : Cette forte activitĂ© suggĂšre une prĂ©sence significative de scans, possiblement automatisĂ©s, provenant des Ătats-Unis. Cela peut indiquer soit une grande quantitĂ© de serveurs et systĂšmes informatiques actifs, soit la prĂ©sence de rĂ©seaux compromis.
- 2. Présence Notable de la Chine (CN) et du Royaume-Uni (GB)
- Chine : 361 occurrences
- Royaume-Uni : 252 occurrences
- Implication : Fréquence élevée de scans provenant de ces régions, possiblement indiquant des activités malveillantes ou une forte défense informatique.
- 3. Scans Provenant de lâEurope
- Pays concernés : Pays-Bas, Allemagne, Belgique, France, Russie
- Implication : Activités de scanning actives ou réseaux souvent ciblés par des attaques, nécessitant une défense proactive.
- 4. Diversité des Sources Asiatiques
- Pays concernés : Taïwan, Corée du Sud, Inde, Japon, Vietnam
- Implication : Régions actives dans le scanning ou ciblées par des attaques, reflétant les tendances en matiÚre de sécurité informatique en Asie.
- 5. Activité en Amérique Latine et en Afrique
- Amérique Latine : Brésil, Argentine, Mexique, Colombie
- Afrique : Présence moindre mais notable
- Implication : Tendance Ă lâautomatisation des attaques ou Ă la prĂ©sence de systĂšmes compromis dans ces rĂ©gions.
- 6. Pays avec Peu dâOccurrences
- Exemples : Pays africains, pays européens et asiatiques avec un seul ou trÚs peu de comptages
- Implication : Tentatives de scanning sporadiques ou acteurs isolés.
Ces statistiques offrent un aperçu des tendances en matiĂšre de sĂ©curitĂ© informatique et dâactivitĂ©s malveillantes sur Internet. Elles rĂ©vĂšlent lâefficacitĂ© des mesures de sĂ©curitĂ© comme Fail2Ban et UFW dans la protection dâun serveur contre les tentatives dâaccĂšs non autorisĂ©es ou malveillantes.
Scans par Organisation
RĂ©sultats
Output
Interprétation des Scans bloqués par Organisation
- 1. Google LLC (AS396982)
- Nombre dâoccurrences : 590
- Implication : Activité significative provenant des adresses IP associées à Google, indiquant une utilisation potentielle de services Google pour scanner des réseaux ou une utilisation abusive de leur plateforme PaaS GCP.
- 2. DigitalOcean, LLC (AS14061)
- Nombre dâoccurrences : 384
- Implication : Forte activité de scans provenant de cette organisation de cloud, suggérant soit des services légitimes, soit des instances de cloud potentiellement compromises.
- 3. Hurricane Electric LLC (AS6939)
- Nombre dâoccurrences : 165
- Implication : PrĂ©sence notable de scans issus de ce fournisseur dâaccĂšs Ă Internet, pouvant indiquer des abus de ses services pour des activitĂ©s de scanning.
- 4. Organisations Chinoises
- Nombre dâoccurrences :
- CHINANET-BACKBONE (AS4134) : 108
- Hangzhou Alibaba (AS37963) : 71
- Tencent (AS45090) : 59
- CHINA UNICOM (AS4837) : 54
- Dâautres organisations chinoises cumulant des occurrences significatives
- Implication : Activités de scanning émanant de grandes entreprises chinoises, reflétant soit des opérations légitimes, soit des abus de leurs réseaux.
- 5. Censys, Inc. (AS398324, AS398705)
- Nombre dâoccurrences : Total de 145
- Implication : Censys, une société spécialisée dans la sécurité des données, semble engagée dans une activité de scanning, probablement dans un cadre de recherche en sécurité.
- 6. OVH SAS (AS16276) et Autres HĂ©bergeurs
- Implication : Des scans provenant dâOVH et dâautres hĂ©bergeurs peuvent indiquer soit des services lĂ©gitimes, soit des abus des ressources dâhĂ©bergement.
- 7. Diversité des Sources Globales
- Implication : La prĂ©sence dâorganisations de nombreux pays (par exemple, KR, IN, RU, JP, VN) montre une diversitĂ© dans lâorigine gĂ©ographique des scans, ce qui peut reflĂ©ter un Ă©ventail large dâintentions et de pratiques.
- 8. Activités de Scans par des FAI et des Entreprises de Télécommunications
- Exemples : Korea Telecom (AS4766), NTT Communications (AS4713)
- Implication : Ces FAI et entreprises de tĂ©lĂ©communications peuvent ĂȘtre impliquĂ©s dans des scans pour des raisons de maintenance, de sĂ©curitĂ©, ou dâautres activitĂ©s lĂ©gitimes.
Ces statistiques soulignent lâimportance dâune surveillance et dâune protection continues contre les activitĂ©s de scanning potentiellement malveillantes. La diversitĂ© des sources, allant des fournisseurs de services cloud aux grandes entreprises de tĂ©lĂ©communications, montre la complexitĂ© de lâĂ©cosystĂšme de la sĂ©curitĂ© en ligne.
Scans par Ville
RĂ©sultats
Output
Interprétation des Statistiques de Scans Bloqués par Ville
- 1. San Francisco (314 Occurrences)
- Implication : ActivitĂ© importante provenant de cette ville technologiquement avancĂ©e, reflĂ©tant probablement lâutilisation de services basĂ©s dans la Silicon Valley.
- 2. Londres (218 Occurrences)
- Implication : Forte activitĂ© depuis cette mĂ©tropole globale, suggĂ©rant des opĂ©rations de scanning issues dâentreprises basĂ©es Ă Londres ou utilisant des services hĂ©bergĂ©s lĂ -bas.
- 3. North Charleston (210 Occurrences)
- Implication : Un nombre surprenant de scans provenant de cette ville, pouvant indiquer la prĂ©sence dâinfrastructures de services en cloud ou dâautres entreprises technologiques.
- 4. Villes Chinoises (Shenzhen, Shanghai, Beijing, etc.)
- Total dâoccurrences : Plus de 150
- Implication : Des scans significatifs Ă©manent de plusieurs grandes villes chinoises, illustrant lâĂ©tendue de la prĂ©sence technologique et numĂ©rique en Chine.
- 5. Amsterdam (103 Occurrences)
- Implication : Avec son infrastructure de services en cloud et data centers, Amsterdam est une source notable de scans.
- 6. Frankfurt am Main (75 Occurrences)
- Implication : Activité élevée dans cette ville allemande, connue pour ses centres de données et son rÎle clé dans les réseaux européens.
- 7. Diversité des Sources Mondiales
- Implication : La variĂ©tĂ© des villes (telles que Seoul, Tokyo, Paris, Moscou) indique une distribution mondiale des sources de scans, reflĂ©tant la nature globale de lâactivitĂ© en ligne et des menaces potentielles.
- 8. Activités Spécifiques de Certaines Villes
- Exemples : SĂŁo Paulo, Singapore, Santa Clara
- Implication : Ces villes, connues pour leur concentration dâentreprises technologiques, montrent une activitĂ© de scans qui peut ĂȘtre attribuĂ©e Ă des recherches lĂ©gitimes ou Ă des abus de rĂ©seau.
Ces statistiques mettent en Ă©vidence la diversitĂ© gĂ©ographique des activitĂ©s de scanning et soulignent lâimportance des mesures de sĂ©curitĂ© informatique. La prĂ©sence de scans issus de grandes villes technologiques et financiĂšres montre que ces rĂ©gions sont des points chauds pour les activitĂ©s en ligne, nĂ©cessitant une vigilance accrue pour la protection des rĂ©seaux.
Conclusion
La sĂ©curisation de votre serveur Nginx avec Fail2ban et UFW est une dĂ©marche cruciale pour protĂ©ger vos donnĂ©es et votre infrastructure contre les cyberattaques toujours plus sophistiquĂ©es. Dans cet article, nous avons vu comment Fail2ban et UFW peuvent ĂȘtre utilisĂ©s ensemble pour former une barriĂšre robuste contre les attaques, en combinant la dĂ©tection et le bannissement des IP malveillantes avec la gestion rigoureuse du trafic rĂ©seau.
La mise en place de ces outils nâest que le dĂ©but dâun processus continu de sĂ©curisation. Il est essentiel de maintenir ces systĂšmes Ă jour, dâajuster rĂ©guliĂšrement les configurations en fonction des nouvelles menaces et de surveiller constamment les journaux pour dĂ©tecter les tentatives dâintrusion. Les analyses de donnĂ©es dĂ©montrent clairement lâimportance de ces outils dans la dĂ©tection et le blocage dâune multitude de tentatives dâaccĂšs non autorisĂ©es, provenant de divers coins du globe.
Enfin, gardez Ă lâesprit que la sĂ©curitĂ© est une pratique Ă©volutive. Les menaces changent constamment, et nos mĂ©thodes de dĂ©fense doivent sâadapter en consĂ©quence. NâhĂ©sitez pas Ă explorer de nouveaux outils, Ă partager vos connaissances avec la communautĂ© et Ă rester informĂ© des derniĂšres tendances en matiĂšre de cybersĂ©curitĂ©.
Restez en sécurité, restez secure !
Professionnel chevronnĂ© dans le domaine de lâinformatique, cumulant plus de 20 annĂ©es dâexpĂ©rience au sein de DSI de grandes entreprises, mon expertise diversifiĂ©e mâa permis de jouer un rĂŽle clĂ© dans de nombreux projets, caractĂ©risĂ©s par la mise en place de pratiques DevOps innovantes.
Vous aimerez peut-ĂȘtre aussi...