Changes

From SME Server
Jump to navigationJump to search
RC-001 // Ajout comme supplément au Cours SME-101 // 2018-11-09 @ 22h26
<!--__NOTOC__ -->
__TOC__


= Description générale =

Ce Cahier-10 du Cours SME-101 décrit l'installation de Fail2ban sur un Serveur SME-9.x.

''Référence'': [https://wiki.contribs.org/Fail2ban/fr https://wiki.contribs.org/Fail2ban/fr].

Fail2ban fonctionne en surveillant les fichiers journaux ''(<code>/var/log/pwdfail</code>, <code>/var/log/auth.log</code>, etc.)'' pour les entrées sélectionnées et l'exécution de scripts basés sur celles-ci. Le plus souvent il est utilisé pour bloquer les adresses IP sélectionnées qui peuvent appartenir à des hôtes qui tentent de compromettre la sécurité du système. Il peut interdire l'adresse IP de l'hôte faisant trop de tentatives de connexion ou toute autre action non désirée à l'intérieur d'un laps de temps défini par l'administrateur.

Fail2ban est généralement mis en place afin d'amnistier un hôte bloqué ou de ne pas "verrouiller" les connexions authentiques qui peuvent avoir été temporairement mal configurées. Un bannissement de plusieurs minutes est généralement suffisant pour arrêter une connexion réseau inondée par des agression malveillantes ou réduire la probabilité d'une attaque par dictionnaire.

Par défaut, après l'installation de Fail2ban, les services de base les plus importants sont surveillés sans aucun besoin de configuration manuelle. ''(voir la section [https://wiki.contribs.org/Fail2ban/fr#Services Services] de la Contrib Fail2ban/fr)''.


=== But final de ce cahier ===

[[Image:SME-101.10-Fail2ban-001.png|top|center|700px]]


=== Cours SME-101 ===

'''''But final du cours SME-101'''''

Après avoir suivi le cours '''''SME-101''''', l'Étudiant possédera un site de Commerce en ligne fiable et hautement sécuritaire. De plus, il pourra utiliser un clone de son site, sur un Serveur SME virtuel sur sa station de travail, pour tester de nouvelles extensions et applications sans compromettre la sécurité ou l'intégrité de son site en ligne.


[[Image:SME-101-ButFinal.png|top|center|700px]]


'''''Documentation'''''

Le cours '''''SME-101''''', se voulant une base solide pour la création d'un site de Commerce en ligne, comprend plusieurs cahiers:

* '''Cahier-00''': Les bases de Linux, [https://wiki.contribs.org/SME-101.00_Linux_de_base SME-101.00 Linux de base].
* '''Cahier-01''': Installation et configuration des logiciels prérequis sur le poste de travail de l'Étudiant de même que le téléchargement des fichiers qui seront installés sur le Serveur SME virtuel, [https://wiki.contribs.org/SME-101.01_Logiciels_de_la_station_de_travail SME-101.01 Logiciels de la station de travail].
* '''Cahier-02''': Description du parcours des paquets IP du Serveur SME vers l'Internet, création de la machine virtuelle, installation/configuration du serveur Linux SME et enfin, sauvegarde/restauration de ce dernier, [https://wiki.contribs.org/SME-101.02_Serveur_SME SME-101.02 Serveur SME].
* '''Cahier-03''': Abonnement à un FAI, installation et configuration d'un modem ADSL/VDSL, création d'un domaine chez un fournisseur de Service DNS dynamique avec installation d'un script pour sa mise à jour et enfin la marche à suivre pour l'obtention et la configuration d'un domaine FQDN<ref name="ftn30"> '''FQDN''': Dans le DNS, un <u>F</u>ully <u>Q</u>ualified <u>D</u>omain <u>N</u>ame ''(FQDN, ou nom de domaine complètement qualifié)'' est un nom de domaine qui révèle la position absolue d'un nœud dans l'arborescence DNS en indiquant tous les domaines de niveau supérieur jusqu'à la racine. On parle également de domaine absolu, par opposition aux domaines relatifs. Par convention, le FQDN est ponctué par un point final.'''<br/> '''''Référence'': [https://fr.wikipedia.org/wiki/Fully_qualified_domain_name https://fr.wikipedia.org/wiki/Fully_qualified_domain_name].'''</ref>, [https://wiki.contribs.org/SME-101.03_ADSL/VDSL,_DDNS_et_Domaine_FQDN SME-101.03 ADSL/VDSL, DDNS et Domaine FQDN].
* '''Cahier-04''': Installation d'un certificat SSL de l'autorité de certification Let's Encrypt et script de mise à jour, [https://wiki.contribs.org/SME-101.04_Certificat_Let%27s_Encrypt SME-101.04 Certificat Let's Encrypt].
* '''Cahier-05A''': Installation et configuration de WordPress, [https://wiki.contribs.org/SME-101.05A_WordPress SME-101.05A WordPress].
* '''Cahier-05B''': Installation et configuration de l'extension de sécurité Wordfence, [https://wiki.contribs.org/SME-101.05B_Wordfence SME-101.05B Wordfence].
* '''Cahier-06''': Installation et configuration de l'extension de vente en ligne WooCommerce, création de comptes chez Stripe et PayPal pour les paiements en ligne, [https://wiki.contribs.org/SME-101.06_WooCommerce SME-101.06 WooCommerce].
* '''Cahier-07''': Sauvegarde/restauration ou migration d'un site avec l'extension Duplicator, [https://wiki.contribs.org/SME-101.07_Duplicator SME-101.07 Duplicator].
* '''Cahier-08''': Serveur mandataire inversé, [https://wiki.contribs.org/SME-101.08_Serveur_mandataire_invers%C3%A9 SME-101.08 Serveur mandataire inversé].
* '''Cahier-09''': Supplément: SME & BackupPC-4.2, [https://wiki.contribs.org/SME-101.09:_Suppl%C3%A9ment:_SME_%26_BackupPC-4.2 SME-101.09: Supplément: SME & BackupPC-4.2].
* '''Cahier-10''': Supplément: Fail2ban.

Tous les logiciels nécessaires sont du domaine public ou LIBRE sous licence GPL; ils ne coûtent pas un sous. Le seul achat nécessaire est l'obtention d'un nom de domaine FQDN au prix initial de $15 CAD et son renouvellement annuel d'environ $30 CAD.


=== Particularités de ce document ===

'''''Notes au lecteur'''''

* Les captures d’écrans ne sont que des références.

* Les informations écrites ont préséance sur celles retrouvées dans les captures d’écrans. Se référer aux différents tableaux lorsque ceux-ci sont présents.


'''''Conventions'''''

* Toutes les commandes à entrer à la console du Serveur SME commencent habituellement avec l'invite <span style="color:red">#</span> pour l'usager root ou <span style="color:red">$</span> pour un usager sans privilège particulier.
* L'invite <code>mysql></code> de la console MySQL est toujours présente.
* La sortie de la commande est séparée de celle-ci par une ligne vide sans couleur de fond.
* L'invite de retour n'est jamais présent pour la plupart des commandes.
* Les affichages à surveiller sont en <span style="color:Red">rouge</span>, <span style="color:Blue">bleu</span>, <span style="color:Orange">orange</span> ou <span style="color:DarkMagenta">magenta</span>.

# ping 192.168.1.149

192.168.1.149 <span style="color:red">is alive</span>


Les liens de référence Internet sont en <span style="color:blue">bleu</span> de même que ceux intra-document mais, ces derniers débute par un " <span style="color:blue">#</span> ".

[[Image:Icone-SeTirerDembarrasAPT.png|20px]]&nbsp;&nbsp;Manipulation, truc ou ruse pour se tirer d’embarras.

[[Image:Icone-AstuceAPT.png|25px]]&nbsp;&nbsp;Une recommandation ou astuce.

[[Image:Icone-NoteAPT.png|25px]]&nbsp;&nbsp;Une note.

[[Image:Icone-AsurveillerAPT.png|25px]]&nbsp;&nbsp;Une étape, note ou procédure à surveiller.

[[Image:Icone-DangerAPT.png|25px]]&nbsp;&nbsp;Danger pour la sécurité du système.

[[Image:IconePlusieursLignesAPT.png|25px]]&nbsp;&nbsp;Indique que la commande est sur une seule ligne. Pour ce document en PDF, il faudra copier la commande entière dans un éditeur de texte ASCII tel que NotePad++ et la mettre sur une seule ligne avant de la copier à la console.

Une chaîne de caractères en <span style="color:DarkMagenta">magenta</span> indique qu’il faut remplacer cette chaîne par vos propres paramètres.

{| class="wikitable" style="width: 80%; background-color:#F0FFFF;"
|- style="vertical-align:top;font-family: Courier New;"
|Commande à exécuter si ce n'est déjà fait.
|}

{| class="wikitable" style="width: 80%; background-color:#FFEED9;"
|- style="vertical-align:top;font-family: Courier New;"
|Commande indiquée à titre d'information seulement.
|}


= Prérequis =

=== Installation d'un Serveur SME ===

Voir le Cahier-2: [https://wiki.contribs.org/SME-101.02_Serveur_SME SME-101.02 Serveur SME].


'''Mise à jour'''

Avant de commencer quoi que ce soit, il est toujours préférable de mettre à jour le Serveur SME.

Voir le chapitre: [https://wiki.contribs.org/SME-101.02_Serveur_SME#Mise_.C3.A0_jour Mise à jour] du Cahier-2.

=== Certificat Let's Encrypt ===

On peut installer un certificat de sécurité SSL de Let's Encrypt. Voir le Cahier-4: [https://wiki.contribs.org/SME-101.04_Certificat_Let%27s_Encrypt SME-101.04 Certificat Let's Encrypt].


=== Diagramme réseau ===

[[Image:SME-101.10-Fail2ban-001.png|top|center|900px]]


=== Paramètres SSHD ===

Dans le Cahier-2, au chapitre [https://wiki.contribs.org/SME-101.02_Serveur_SME#Configuration_du_Serveur_SME Configuration du Serveur SME]:

* Accès par terminal sécurisé (SSH): –&nbsp;Autoriser l’accès complet (LAN et Internet)
* Autoriser l'administrateur à se connecter au serveur par SSH: Oui
* Autoriser l'authentification par SSH à l'aide de mots de passe standards: Oui
* Port TCP pour l’accès SSH: 2222

On se logue en root à la console du serveur.

login as: root
root@192.168.1.11's password: mot-de-passe-de root
Last login: Wed May 23 20:59:46 2018
<nowiki>************ Welcome to SME Server 9.2 *************</nowiki>

Before editing configuration files, familiarise
yourself with the automated events and templates
systems.

Please take the time to read the documentation
<nowiki>http://wiki.contribs.org/Main_Page</nowiki>

Remember that SME Server is free to download
and use, but it is not free to build

Please help the project :
<nowiki>http://wiki.contribs.org/Donate</nowiki>

<nowiki>****************************************************</nowiki>


On affiche les paramètres SSHD.
# config show sshd

sshd=service
<span style="color:DarkMagenta">AutoBlock</span>AutoBlock=enabled
AutoBlockTime<nowiki>=900</nowiki>
AutoBlockTries<nowiki>=4</nowiki>
LoginGraceTime<nowiki>=600</nowiki>
MaxAuthTries<nowiki>=2</nowiki>
MotdStatus<nowiki>=enabled</nowiki>
<span style="color:red">PasswordAuthentication</span>=yes
<span style="color:red">PermitRootLogin</span>=yes
<span style="color:red">TCPPort</span>=2222
UsePAM<nowiki>=yes</nowiki>
<span style="color:red">access</span>=public
status<nowiki>=enabled</nowiki>


[[Image:Icone-AstuceAPT.png|25px]]&nbsp;&nbsp;Les paramètres sont bien définis correctement et on peut utiliser PuTTY pour se loguer au serveur. Voir la secion [https://wiki.contribs.org/SME-101.01_Logiciels_de_la_station_de_travail#PuTTY PuTTY] du Cahier-1: "SME-101.01 Logiciels de la station de travail" pour se familiariser avec ce logiciel de connexion.


=== Paramètre AutoBlock ===

Par défaut, AutoBlock est activé sur les Serveur SME 9.x. On voit le paramètre <span style="color:DarkMagenta"><code>AutoBlock</code></span>AutoBlock dans l'affichage produit par la dernière commande ci-dessus.


Il a été noté que l'une des fonctionnalités de Fail2ban chevauche la fonction <code>AutoBlock</code> qui est intégrée au démon <code>SSHD</code> de SME.

[[Image:Icone-AsurveillerAPT.png|25px]]&nbsp;&nbsp;L'option <code>AutoBlock</code> de <code>SSHD</code> doit être désactivée pour s'assurer que ce soit bien Fail2ban qui contrôle le trafic SSH et non pas le pare-feu intégré de SME.


On désactive AutoBlock.
# config setprop sshd AutoBlock disable


On signale le changement pour qu'il devienne permanent.

[[Image:Icone-NoteAPT.png|25px]]&nbsp;&nbsp;Peut prendre un certain temps.

# signal-event remoteaccess-update


On vérifie.
# config show sshd

sshd=service
AutoBlock=<span style="color:red">disabled</span>
AutoBlockTime=900
AutoBlockTries=4
LoginGraceTime=600
MaxAuthTries=2
MotdStatus=enabled
PasswordAuthentication=yes
PermitRootLogin=yes
TCPPort=2222
UsePAM=yes
access=public
status=enabled


<center><span style="font-size:120%">'''Tous les prérequis sont remplis, on peut installer Fail2ban.'''</span></center>


= Installation =

=== Introduction ===

''Référence'': [https://wiki.contribs.org/Fail2ban https://wiki.contribs.org/Fail2ban] et [https://wiki.contribs.org/Fail2ban/fr https://wiki.contribs.org/Fail2ban/fr].

[[Image:Icone-NoteAPT.png|25px]]&nbsp;&nbsp;Fail2ban n'est pas seulement un outil contre les attaques par force brute sur SSH, il peut aussi être utile contre les attaques de protocole http ou [https://forums.contribs.org/index.php/topic,50162.msg252195.html#msg252195 pourriels ][https://forums.contribs.org/index.php/topic,50162.msg252195.html#msg252195 (spam)] sur votre serveur. Voir ci-dessus: [[#httpd-e-smith]] et [[#polluposteur]].


=== Dépôts de logiciels<ref name="ftn1">Dépôts de logiciels: En informatique, un dépôt ou référentiel (de l'anglais repository) est un stockage centralisé et organisé de données. Ça peut être une ou plusieurs bases de données où les fichiers sont localisés en vue de leur distribution sur le réseau ou bien un endroit directement accessible aux utilisateurs.

La plupart des distributions GNU/Linux utilisent des dépôts accessibles sur Internet, officiels et non officiels, permettant aux utilisateurs de télécharger et de mettre à jour des logiciels compatibles. Ces logiciels sont distribués sous forme de paquets.

Référence: [https://fr.wikipedia.org/wiki/Dépôt_(informatique)#Dépôts_de_logiciels https://fr.wikipedia.org/wiki/D%C3%A9p%C3%B4t_(informatique)#D%C3%A9p%C3%B4ts_de_logiciels].</ref> ===

Configuration pour le dépôt de logiciels "Firewall-Services".

[[Image:Icone-AsurveillerAPT.png|25px]]&nbsp;&nbsp;Prendre tout le contenu de l'encadré pour la commande.

db yum_repositories set fws repository \
BaseURL <nowiki>http://repo.firewall-services.com/centos/\$releasever</nowiki> \
EnableGroups no GPGCheck yes \
Name "Firewall Services" \
GPGKey <nowiki>http://repo.firewall-services.com/RPM-GPG-KEY</nowiki> \
Visible yes status disabled


Configuration pour le dépôt de logiciels "EPEL".

[[Image:Icone-AsurveillerAPT.png|25px]]&nbsp;&nbsp;Prendre tout le contenu de l'encadré pour la commande.

db yum_repositories set epel repository \
Name 'Epel - EL6' \
BaseUrl '<nowiki>http://download.fedoraproject.org/pub/epel/6/$basearch</nowiki>' \
MirrorList '<nowiki>http://mirrors.fedoraproject.org/mirrorlist?repo=epel-6&arch=$basearch</nowiki>' \
EnableGroups no \
GPGCheck yes \
GPGKey <nowiki>//dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL</nowiki> \
Visible no \
status disabled


On signale le changement à yum.

# signal-event yum-modify

[[Image:Icone-AstuceAPT.png|25px]]&nbsp;&nbsp;Attendre 20-30 secondes pour que <code>yu</code>m ait terminé sa mise à jour.


On vérifie le dépôt "fws".

# db yum_repositories show fws

fws=repository
BaseURL=<nowiki>http://repo.firewall-services.com/centos/$releasever</nowiki>
EnableGroups=no
GPGCheck=yes
GPGKey=<nowiki>http://repo.firewall-services.com/RPM-GPG-KEY</nowiki>
Name=Firewall Services
Visible=yes
status=disabled


On vérifie le dépôt "epel".

# db yum_repositories show epel

epel=repository
BaseUrl=<nowiki>http://download.fedoraproject.org/pub/epel/6/$basearch</nowiki>
EnableGroups=no
GPGCheck=yes
GPGKey=<nowiki>http://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL</nowiki>
MirrorList=<nowiki>http://mirrors.fedoraproject.org/mirrorlist?repo=epel-6&arch=$basearch</nowiki>
Name=Epel - EL6
Visible=no
status=disabled


=== Installation de la Contrib Fail2ban ===

On lance l'installation.

# yum -y --enablerepo=fws --enablerepo=epel install smeserver-fail2ban

Modules complémentaires chargés&nbsp;: fastestmirror, smeserver
Configuration du processus d'installation
Loading mirror speeds from cached hostfile
<nowiki>* base: centos.mirror.globo.tech</nowiki>
...
Résolution des dépendances
...
Dépendances résolues

<nowiki>============================================================================================</nowiki>
Paquet Architecture Version Dépôt Taille
<nowiki>============================================================================================</nowiki>
Installation:
smeserver-fail2ban noarch 9:0.1.18-1.el6.fws fws 25 k
...
python-inotify noarch 0.9.1-1.el6 epel 50 k

Résumé de la transaction
<nowiki>============================================================================================</nowiki>
Installation de 6 paquet(s)
...
(1/6): fail2ban-0.9.6-1.el6.1.noarch.rpm | 468 kB 00:00
...
(6/6): smeserver-fail2ban-0.1.18-1.el6.fws.noarch.rpm | 25 kB 00:00
<nowiki>--------------------------------------------------------------------------------------------</nowiki>
Total 541 kB/s | 660 kB 00:01
...
Migrating existing database yum_installed
...
Verifying : fail2ban-0.9.6-1.el6.1.noarch 1/6
...
Verifying : libmnl-1.0.2-3.el6.x86_64 6/6

Installé:
<span style="color:red">smeserver-fail2ban.noarch 9:0.1.18-1.el6.fws</span>

Dépendance(s) installée(s)&nbsp;:
fail2ban.noarch 0:0.9.6-1.el6.1 gamin-python.x86_64 0:0.1.10-9.el6
ipset.x86_64 0:6.11-4.el6 libmnl.x86_64 0:1.0.2-3.el6
python-inotify.noarch 0:0.9.1-1.el6

Terminé&nbsp;!

<nowiki>==============================================================</nowiki>
WARNING: You now need to run BOTH of the following commands
to ensure consistent system state:

<span style="color:red">signal-event post-upgrade; signal-event reboot</span>

You should run these commands unless you are certain that
yum made no changes to your system.
<nowiki>==============================================================</nowiki>


[[Image:Icone-SeTirerDembarrasAPT.png|20px]]&nbsp;&nbsp;Avant de lancer les commandes traditionnelles de signalisation des changements et réamorçage, il nous faut activer le démon<ref name="ftn2">'''Démon''' ''(daemon - <u>'''d'''</u>isk <u>'''a'''</u>nd <u>'''e'''''</u>xecution'' <u>'''mon'''</u>itor)'': Un programme démon, normalement lancé au démarrage du système, est inoffensif et réside en mémoire en attente des requêtes. Il s'exécute lorsqu'une requête concerne le port sur lequel il est en veille. Parmi les fonctions dont il est chargé, on peut mentionner: le routage et la distribution du courrier électronique ('''''sendmail'''''), la gestion des connexions réseaux ('''''inetd''''') et l'impression en tâche de fond ('''''Lpd'''''). Généralement, le nom du programme démon se termine par '''d''' ou '''.d'''.

Chaque serveur Web a un démon '''httpd''' ('''''H'''yper'''T'''ext '''T'''ransfer '''P'''rotocol '''D'''aemon'') qui attend continuellement les requêtes provenant des clients Web et de leurs utilisateurs.

'''Référence''': [http://gdt.oqlf.gouv.qc.ca/ficheOqlf.aspx?Id_Fiche=2069962 http://gdt.oqlf.gouv.qc.ca/ficheOqlf.aspx?Id_Fiche=2069962].</ref> de masquage<ref name="ftn3">'''Masquage d'adresses IP''': Technique qui permet à un serveur de remplacer par une adresse IP publique les adresses privées des postes de travail d'un réseau local d'entreprise, fonctionnant ou non selon le protocole IP, pour faire en sorte qu'ils puissent partager la même connexion à Internet.

'''Note''': Développé par la compagnie Linux, le masquage d'adresses IP est une technique particulière de traduction d'adresses de réseau. En anglais, on utilise le terme network address translation et le sigle NAT comme équivalents de traduction d'adresses de réseau.

'''Termes privilégiés''': masquage d'adresses IP n. m. // masquage IP n. m.

'''Référence''': [http://www.granddictionnaire.com/ficheOqlf.aspx?Id_Fiche=8363603 http://www.granddictionnaire.com/ficheOqlf.aspx?Id_Fiche=8363603].</ref> d'adresses IP pour que Fail2Ban puisse fonctionner correctement.

[[Image:Icone-AsurveillerAPT.png|25px]]&nbsp;&nbsp;Si on désactive le masquage, Fail2ban ne bannira rien.


On active le masquage d'adresses IP.
# db configuration setprop masq status enabled


On vérifie.
# db configuration show masq

masq=service
DenylogTarget<nowiki>=drop</nowiki>
Logging=most
Stealth<nowiki>=no</nowiki>
Trace<nowiki>=disabled</nowiki>
pptp<nowiki>=yes</nowiki>
status=<span style="color:red">enabled</span>


On signale les changements de manière traditionnelle.
# signal-event post-upgrade<nowiki>; signal-event </nowiki>reboot

Broadcast message from root@fail2ban
(/dev/pts/0) at 23:07 ...

The system is going down for reboot NOW!


[[Image:Icone-AsurveillerAPT.png|25px]]&nbsp;&nbsp;A défaut d'exécuter ces commandes, la prochaine fois que les règles iptables seront rechargées, l'accès au réseau sera complètement verrouillé.


<center><span style="font-size:120%">'''Fail2ban est installé et fonctionnel.'''</span></center>


= Usage =
=== Commande DB ===
Dans le gestionnaire Server Manager , il n'existe pas de panneau de configuration pour Fail2ban. Toutefois, on peut gérer cette Contrib avec la librairie <code>config</code> d'OpenSSL.

On affiche la configuration de Fail2ban.

[root@fail2ban ~]# config show fail2ban

fail2ban=service
Mail=enabled
status=enabled


<span id="Options disponibles"></span>
'''Options disponibles'''

* <code>IgnoreIP</code>: listes d'adresses IP ou de sous-réseaux, en notation [http://www.commentcamarche.net/contents/1354-le-cidr CIDR],<ref name="ftn4">'''CIDR''': <u>'''C'''</u>lassless <u>'''I'''</u>nter-<u>'''D'''</u>omain <u>'''R'''</u>outing ''(routage interdomaine sans classes)'', a été mis au point par le document '''1993RFC 15185''' afin de diminuer la taille de la table de routage contenue dans les routeurs. Pour ce faire, on agrège plusieurs entrées de cette table en une seule.<br/> La distinction entre les adresses de classe '''A''', '''B''' ou '''C''' a été ainsi rendue obsolète, de sorte que la totalité de l'espace d'adressage unicast ''(envoi individuel)'' puisse être gérée comme une collection unique de sous-réseaux indépendamment de la notion de classe. Le masque de sous-réseau ne peut plus être déduit de l'adresse '''IP''' elle-même, les protocoles de routage compatibles avec '''CIDR''', dits classless, doivent donc accompagner les adresses du masque correspondant.<br/> '''Référence''': [https://fr.wikipedia.org/wiki/Adresse_IP#Agrégation_des_adresses https://fr.wikipedia.org/wiki/Adresse_IP#Agr%C3%A9gation_des_adresses].</ref> qui ne seront jamais bloquées par Fail2ban. Une virgule sépare les adresses. Exemple: 12.15.22.4,17.20.0.0/16. Tous vos réseaux locaux et les réseaux autorisés à accéder au gestionnaire du serveur ''(Server Manager<span style="color:red"> &nbsp;>&nbsp; </span>Accès à distance<span style="color:red"> &nbsp;>&nbsp; </span>Gestion à distance)'' sont toujours automatiquement mis sur la liste blanche.
* <code>FilterLocalNetworks</code>: peut être activée ou désactivée ''(désactivée par défaut)''. Si activée, les réseaux locaux ne seront pas mis sur la liste blanche et Fail2ban pourra ainsi bannir des hôtes du réseau interne. Les réseaux autorisés à accéder au gestionnaire du serveur ne seront pas affectés ''(ils ne seront jamais bloqués)''.
* <code>BanTime</code>: durée ''(en secondes)'' d'un bannissement. Par défaut: 1800.
* <code>FindTime</code>: fenêtre de vérification de Fail2ban, en secondes. Par défaut: 900. Signifie que Fail2ban vérifiera seulement le nombre de connexions échouées ou tentées durant les 15 dernières minutes ''(900 secondes)''.
* <code>MaxRetry</code>: nombre de tentatives échouées dans les dernières FindTime secondes pour déclencher un bannissement. Par défaut: 3.
* <code>Mail</code>: peut être activée ou désactivée ''(activée par défaut)''. Si elle est activée, chaque bannissement sera notifié par courriel.
* <code>MailRecipient</code>: si Mail est activé, l'adresse du courriel qui recevra les notifications de bannissement. Par défaut: root ''(le compte "admin" recevra les courriels)''.


[[Image:Icone-AsurveillerAPT.png|25px]]&nbsp;&nbsp;Après avoir modifié l'un de ces paramètres, vous devez signaler le changement à l'aide de la commande suivante:

{| class="wikitable" style="width: 80%; background-color:#FFEED9;"
|- style="vertical-align:top;font-family: Courier New;"
|
signal-event fail2ban-conf
|}


'''Exemple'''

Si on veut mettre une adresse IP particulière ainsi qu'un sous-réseau sur la liste blanche, on lance la commande:

{| class="wikitable" style="width: 80%; background-color:#FFEED9;"
|- style="vertical-align:top;font-family: Courier New;"
|
config setprop fail2ban IgnoreIP 12.15.22.4,17.20.0.0/<span style="color:red">16</span>
|}


Puis, il nous faut signaler la modification.

{| class="wikitable" style="width: 80%; background-color:#FFEED9;"
|- style="vertical-align:top;font-family: Courier New;"
|
signal-event fail2ban-conf
|}


[[Image:Icone-NoteAPT.png|25px]]&nbsp;&nbsp;La commande <code>signal-event fail2ban-conf</code> redémarre effectivement le service et supprime les bannissements existants mais un changement de findtime se traduit par un ré-bannissement. Sachez que le délai de redémarrage peut être prolongé de façon inattendue en raison du processus d'analyse des journaux pour extraire les adresses incriminées.


=== Services ===

Les services suivants sont surveillés et Fail2ban interdira les adresses IP pour la durée BanTime si plus de MaxRetry d'échecs d'authentification se produisent en moins de <code>FindTime</code>.

* <code>ssh</code>
* <code>dovecot</code>: ''(seulement avec SME-9 ou si on utilise <span style="color:blue"><nowiki>https://wiki.fws.fr/smedev/dovecot?s[]=smeserver&s[]=dovecot smeserver-dovecot</nowiki></span>)''
* <span id="qpsmtpd"></span><code>qpsmtpd</code>: si un serveur externe vous envoie trop de courriels que rejette <code>qpsmtpd</code>, c'est probablement un polluposteur et Fail2ban va le mettre sur la liste noire. <code>MaxRetry</code> est de x3 pour ce service; ainsi avec la configuration par défaut, un serveur externe va être mis sur la liste noire si 9 courriels sont rejetés en deça de 15 minutes.
* <span id="httpd-e-smith"></span><code>httpd-e-smith</code>: le serveur standard de <code>http</code>. Trois différents filtres vérifient les journaux du serveur Apache.
**<code>noscripts</code>: vérifie le client qui demande de rouler des scripts qui ne sont pas disponibles sur le serveur. Habituellement, c'est un pirate adolescent<ref name="ftn5">'''pirate adolescent''': Jeune pirate amateur, à la recherche d'une intrusion facile, souvent irresponsable et sans éthique, qui utilise des scripts déjà existants, disponibles gratuitement sur le Net, pour effectuer ses attaques malveillantes.

Note: Les pirates adolescents utilisent des programmes de script conçus par d'autres au lieu d'en créer eux-mêmes. Généralement, ils laissent des traces pour marquer leur passage. Leur but est souvent la célébrité ''(ou tout au moins d'impressionner les copains)''. Ils constituent une menace pour tous les systèmes informatiques, puisqu'ils font habituellement une sélection aléatoire de leurs cibles.

''Référence'': [http://www.granddictionnaire.com/ficheOqlf.aspx?Id_Fiche=8872869 http://www.granddictionnaire.com/ficheOqlf.aspx?Id_Fiche=8872869].</ref> ''(script-kiddy)'' qui essaie d'exploiter des failles de vulnérabilité.
**<code>scan</code>: un autre jeu de filtres pour les balayages populaires ''(phpMyAdmin, wp-login, zone admin, etc...)''.
**<code>auth</code>: va vérifier les défaillances d'authentification standards.

* <code>pam</code>: va vérifier les défaillances d'authentification génériques. Tout ce qui utilise pam devrait fonctionner.
* <code>SOGo</code>: vérifie les journaux de <code>SOGo</code> pour des défaillances d'authentification.
* <code>LemonLDAP-NG</code>: vérifie les journaux système pour les défaillances d'authentification au portail <code>LemonLDAP::NG</code>.
* <code>ftp</code>: vérifie les défaillances d'authentification au démon FTP.
* <code>Ejabberd</code>: vérifie les défaillances d'authentification à <code>ejabberd</code>.

[[Image:Icone-AsurveillerAPT.png|25px]]&nbsp;&nbsp;Chaque filtre se désactive automatiquement si le service correspondant est désactivé.


'''Filtre spécifique'''

[[Image:Icone-SeTirerDembarrasAPT.png|20px]]&nbsp;&nbsp;Vous pouvez désactiver un filtre spécifique.

''Exemple'', si vous souhaitez désactiver les filtres Apache.

{| class="wikitable" style="width: 80%; background-color:#FFEED9;"
|- style="vertical-align:top;font-family: Courier New;"
|
db configuration setprop httpd-e-smith Fail2Ban <span style="color:blue">disabled</span>
|}


Puis, il faut signaler le changement de la configuration.

{| class="wikitable" style="width: 80%; background-color:#FFEED9;"
|- style="vertical-align:top;font-family: Courier New;"
|
signal-event fail2ban-conf
|}



=== Bannissements sélectifs ===

Fail2ban fera de son mieux pour effectuer une interdiction sélective.

'''''Exemple'''''

Si 3 échecs d'authentification SSH sont détectés, seul le port TCP 22 ''(ou tout autre port que vous avez choisi pour SSH)'' sera bloqué pour l'adresse IP fautive. Idem pour <code>httpd-e-smith</code>, <code>SOGo</code>, <code>LemonLDAP::NG</code> bloquera seulement les ports TCP 80 et 443, <code>qpsmtpd</code> bloquera les ports TCP 25 et 465, <code>dovecot</code> bloquera 143 et 993, etc.


<span id="Bannissements complets"></span>
=== Bannissements complets ===

Il existe seulement deux façons de bannir complètement tous les ports/protocoles pour une adresse IP fautive:

* <code>pam</code> Comme il s'agit d'un fichier générique, il n'est pas possible de vérifier où le service a été utilisé lors d'un échec d'authentification donc, l'IP du client sera mis en liste noire pour l'ensemble des ports.
* <code>recidive</code> Il s'agit d'un filtre spécial. Il surveille les journaux Fail2Ban et met sur la liste noire l'adresse IP du client qui se fait verrouillée plusieurs fois. Si un client est bloqué 5 fois en 24 heures, il sera mis sur la liste noire pour une semaine complète.


=== Usage de Fail2ban ===

'''Affichage de toutes les prisons'''

# fail2ban-client status

Status
|- Number of jail: <span style="color:red">14</span>
`- Jail list: ftp, http-auth, http-badbots, http-fakegooglebot, http-noscript, http-overflows, http-scan, http-shellshock, imap, pam-generic, qpsmtpd, recidive, ssh, ssh-ddos


'''Affichage des adresses IP bannies d'une prison spécifique'''
# fail2ban-client status <span style="color:red">ssh</span>

Status for the jail: <span style="color:red">ssh</span>
|- Filter
| |- Currently failed: 0
| |- Total failed: 0
| `- File list: /var/log/sshd/current
`- Actions
|- Currently banned: 0
|- Total banned: 0
`- Banned IP list:


=== Script affichant tous les bannissements ===

Le script ci dessous affichera le nombre total de tous les bannissements de toutes les prisons.

[[Image:Icone-AstuceAPT.png|25px]]&nbsp;&nbsp;On crée le fichier dans le répertoire /root.

On se rend donc dans le répertoire de l'usager root.
# cd


On vérifie.
# pwd

<span style="color:red">/root</span>


On crée le fichier du script.
# touch checklist_ban.sh


On ajuste les droits.
# chmod 700 checklist_ban.sh


On vérifie.
# ls -alsd checklist_ban.sh

0 -<span style="color:red">rwx------</span> 1 root root 0 24 mai 10:39 <span style="color:red">checklist_ban.sh</span>


On écrit le contenu du fichier avec la commande <code>cat >></code>.

[[Image:Icone-AsurveillerAPT.png|25px]]&nbsp;&nbsp;Prendre tout le contenu de l'encadré pour la commande.

cat >> /root/checklist_ban.sh <<'EOT'
<nowiki>#!/bin/bash</nowiki>
<nowiki>#lancer le script en </nowiki>sudo
JAILS=$(fail2ban-client status | grep " Jail list:" | sed 's/`- Jail list://g' | sed 's/,//g')
for j in $JAILS
do
echo "$j $(fail2ban-client status $j | grep " Currently banned:" | sed 's/ |- Currently banned:\t//g')"
done

EOT


On vérifie.
# cat checklist_ban.sh

<span style="color:red">#!/bin/sh</span>
<nowiki>#lancer le script en sudo</nowiki>
JAILS=$(fail2ban-client status | grep " Jail list:" | sed 's/`- Jail list://g' | sed 's/,//g')
for j in $JAILS
do
echo "$j $(fail2ban-client status $j | grep " Currently banned:" | sed 's/ |- Currently banned:\t//g')"
done


[[Image:Icone-AsurveillerAPT.png|25px]]&nbsp;&nbsp;Il n'y a pas de ligne vide avant la ligne <span style="color:red">#!/bin/sh</span>. Ci-dessus, nous avons inséré une ligne vide pour faciliter la copie de la commande.


On lance le script pour vérifier son fonctionnement.
# ./checklist_ban.sh

http-auth 0
http-badbots 0
http-fakegooglebot 0
http-noscript 0
http-overflows 0
http-scan 0
http-shellshock 0
imap 0
pam-generic 0
qpsmtpd 0
recidive 0
ssh 0
ssh-ddos 0

Le script fonctionne parfaitement.


=== Amnistie d'un bannissement d'une adresse IP ===

Dans certains cas, vous pouvez réintégrer une adresse IP immédiatement si vous ne voulez pas attendre le processus automatique de réintégration de Fail2ban.

* Vous devez trouver la prison spécifique qui a bloqué l'adresse IP. Pour ce faire, vous pouvez vous référer au courriel reçu par l'utilisateur admin.
* Ou vous pouvez afficher une prison spécifique.
# fail2ban-client status <span style="color:red">qpsmtpd</span>

Status for the jail: <span style="color:red">qpsmtpd</span>
|- Filter
| |- Currently failed: 4
| |- Total failed: 99
| `- File list: /var/log/sqpsmtpd/current /var/log/qpsmtpd/current
`- Actions
|- Currently banned: 1
|- Total banned: 1
`- Banned IP list: <span style="color:red">123.123.123.123</span>


On utilise la commande suivante pour amnistier l'adresse IP.
# fail2ban-client set <span style="color:blue">qpsmtpd</span> unbanip <span style="color:red">123.123.123.123</span>


La commande générique est la suivante.

{| class="wikitable" style="width: 80%; background-color:#FFEED9;"
|- style="vertical-align:top;font-family: Courier New;"
|
fail2ban-client set <span style="color:blue">PRISON</span> unbanip <span style="color:red">ADRESSE_IP</span>
|}


Si on veut connaître toutes les prisons actives.
# fail2ban-client status

Status
|- Number of jail: <span style="color:red">14</span>
`- Jail list: ftp, http-auth, http-badbots, http-fakegooglebot, http-noscript, http-overflows, http-scan, http-shellshock, imap, pam-generic, qpsmtpd, recidive, ssh, ssh-ddos


=== Fichier jail.conf ===

'''Fichier jail.conf par défaut'''

[[Image:Icone-NoteAPT.png|25px]]&nbsp;&nbsp;Lors de l'amorçage du serveur, lorsque le <u>gabarit standard</u> de Fail2ban est lu, tous les fichiers du répertoire <code>/etc/e-smith/templates/etc/fail2ban/jail.conf</code> sont assemblés en un fichier unique, recréé à chaque amorçage, et qui écrase le fichier, présent lors de la fermeture du serveur, <code>/etc/fail2ban/jail.conf</code>.

[[Image:Icone-SeTirerDembarrasAPT.png|20px]]&nbsp;&nbsp;C'est pour cette raison qu'on ne modifie jamais directement un fichier de configuration mais, qu'on crée un gabarit personnalisé.

Lors de l'assemblage des fichiers composant un gabarit standard, les fichiers du <u>gabarit personnalisé</u> <span style="color:red">ont préséance</span> sur ceux du <u>gabarit standard</u>.

On peut toujours se référer aux fichiers composant le gabarit standard de Fail2ban dans le répertoire: <code>/etc/e-smith/templates/etc/fail2ban/jail.conf</code> pour composer les fichiers qu'on veut modifier avec le gabarit personnalisé.

Fichiers composant le gabarit standard de Fail2ban:
# ls -als /etc/e-smith/<span style="color:red">templates</span>/etc/fail2ban/jail.conf

total 80
4 drwxr-xr-x 2 root root 4096 23 mai 22:38 .
4 drwxr-xr-x 4 root root 4096 23 mai 22:38 ..
4 -rw-r--r-- 1 root root 10 27 oct. 2017 00Default
4 -rw-r--r-- 1 root root 1032 27 oct. 2017 05IgnoreIP
4 -rw-r--r-- 1 root root 85 27 oct. 2017 10BanTime
4 -rw-r--r-- 1 root root 87 27 oct. 2017 10FindTime
4 -rw-r--r-- 1 root root 84 27 oct. 2017 <span style="color:red">15MaxRetries</span>
4 -rw-r--r-- 1 root root 13 27 oct. 2017 16Dns
4 -rw-r--r-- 1 root root 15 27 oct. 2017 20Backend
4 -rw-r--r-- 1 root root 116 27 oct. 2017 25Actions
4 -rw-r--r-- 1 root root 736 27 oct. 2017 30Service10ssh
4 -rw-r--r-- 1 root root 680 27 oct. 2017 30Service15dovecot
4 -rw-r--r-- 1 root root 668 27 oct. 2017 30Service20qpsmtpd
4 -rw-r--r-- 1 root root 2466 27 oct. 2017 30Service25httpd
4 -rw-r--r-- 1 root root 270 27 oct. 2017 30Service30pam
4 -rw-r--r-- 1 root root 577 27 oct. 2017 30Service35SOGo
4 -rw-r--r-- 1 root root 605 27 oct. 2017 30Service40LemonLDAPNG
4 -rw-r--r-- 1 root root 496 27 oct. 2017 30Service45ftp
4 -rw-r--r-- 1 root root 512 27 oct. 2017 30Service50Ejabberd
4 -rw-r--r-- 1 root root 322 27 oct. 2017 90Recidive
[root@fail2ban ~]#


<span id="Création d'un gabarit personnalisé pour jail.conf"></span>
'''Création d'un gabarit personnalisé pour jail.conf'''

[[Image:Icone-AsurveillerAPT.png|25px]]&nbsp;&nbsp;<u>À faire seulement si on veut configurer d'une manière spéciale et très spécifique avec un gabarit personnalisé</u>.

On veux changer le nombre maximum d'essais <code>maxretry</code> de 3 à 5.

[[Image:Icone-NoteAPT.png|25px]]&nbsp;&nbsp;Nous aurions pu facilement utiliser la commande <code>config</code> mais, pour notre exemple on utilise un "gabarit personnalisé" pour démontrer la marche à suivre pour modifier un paramètre quelconque.

On cherche quel fichier du gabarit standard spécifie le paramètre <code>maxretry</code>.
{| class="wikitable" style="width: 80%; background-color:#FFEED9;"
|- style="vertical-align:top;font-family: Courier New;"
|
<nowiki>#</nowiki> grep "maxretry" /etc/e-smith/templates/etc/fail2ban/jail.conf/*<br>
<br>
/etc/e-smith/templates/etc/fail2ban/jail.conf/<span style="color:red">15MaxRetries</span>:our <span style="color:red">$maxretry =</span> $fail2ban{'MaxRetry'} || '3';<br>
/etc/e-smith/templates/etc/fail2ban/jail.conf/15MaxRetries:$OUT .= "maxretry = $maxretry";<br>
/etc/e-smith/templates/etc/fail2ban/jail.conf/30Service20qpsmtpd:my $max = $maxretry*3;<br>
/etc/e-smith/templates/etc/fail2ban/jail.conf/30Service20qpsmtpd:maxretry = $max<br>
/etc/e-smith/templates/etc/fail2ban/jail.conf/30Service30pam:maxretry = {$maxretry*2}<br>
/etc/e-smith/templates/etc/fail2ban/jail.conf/90Recidive:maxretry = 5
|}

Il existe plusieurs fichiers du gabarit standard qui utilise maxretry mais il n'y a que fichier <span style="color:red">15MaxRetries</span> qui utilise le symbole <span style="color:red">$</span> comme premier caractère ''(qui définit une variable)'' pour <span style="color:red"><code>maxretry</code></span> et qui est suivi par le caractère <span style="color:red">=</span> ''(qui lui assigne une valeur numérique)''.


On crée un répertoire pour le gabarit personnalisé.
{| class="wikitable" style="width: 80%; background-color:#FFEED9;"
|- style="vertical-align:top;font-family: Courier New;"
|
<nowiki>#</nowiki> mkdir -p /etc/e-smith/<span style="color:red">templates-custom</span>/etc/fail2ban/
|}


On copie le fichier <code>15MaxRetries</code> du gabarit standard dans le répertoire de notre gabarit personnalisé.
{| class="wikitable" style="width: 80%; background-color:#FFEED9;"
|- style="vertical-align:top;font-family: Courier New;"
|
<nowiki>#</nowiki> cp /etc/e-smith/<span style="color:blue">templates</span>/etc/fail2ban/jail.conf/<span style="color:DarkGreen">'''15MaxRetries'''</span> /etc/e-smith/<span style="color:red">templates-custom</span>/etc/fail2ban/jail.conf
|}


On vérifie.
{| class="wikitable" style="width: 80%; background-color:#FFEED9;"
|- style="vertical-align:top;font-family: Courier New;"
|
<nowiki>#</nowiki> ls -ls /etc/e-smith/templates-custom/etc/fail2ban/jail.conf<br>
<br>
total 4<br>
4 -rw-r--r-- 1 root root 84 24 mai 13:19 <span style="color:DarkGreen">'''15MaxRetries'''</span>
|}


On affiche le contenu du fichier.
{| class="wikitable" style="width: 80%; background-color:#FFEED9;"
|- style="vertical-align:top;font-family: Courier New;"
|
<nowiki>#</nowiki> cat /etc/e-smith/templates-custom/etc/fail2ban/jail.conf/<span style="color:DarkGreen">'''15MaxRetries'''</span><br>
<br>
<nowiki></nowiki> {<br>
our $maxretry = $fail2ban{'MaxRetry'} || '<span style="color:red">3</span>';<br>
<br>
<nowiki></nowiki> $OUT .= "maxretry = $maxretry";<br>
<br>
<nowiki> </nowiki>}
|}

On utilise l'éditeur <code>vi</code> ou "Notepad++" pour remplacer la valeur <span style="color:red">3</span> par <span style="color:red">5</span>.


On vérifie.
{| class="wikitable" style="width: 80%; background-color:#FFEED9;"
|- style="vertical-align:top;font-family: Courier New;"
|
<nowiki>#</nowiki> cat /etc/e-smith/templates-custom/etc/fail2ban/jail.conf/15MaxRetries<br>
<br>
<nowiki> </nowiki>{<br>
<nowiki> </nowiki>our $maxretry = $fail2ban{'MaxRetry'} || '<span style="color:red">5</span>';<br>
<br>
<nowiki> </nowiki>$OUT .= "maxretry = $maxretry";<br>
<br>
<nowiki> }</nowiki>
|}


On reconstruit le gabarit.
{| class="wikitable" style="width: 80%; background-color:#FFEED9;"
|- style="vertical-align:top;font-family: Courier New;"
|
<nowiki>#</nowiki> expand-template /etc/rc.d/init.d/masq<br>
|}


On repart <code>masq</code>.
{| class="wikitable" style="width: 80%; background-color:#FFEED9;"
|- style="vertical-align:top;font-family: Courier New;"
|
<nowiki>#</nowiki> /etc/init.d/masq restart<br>
<br>
<nowiki> </nowiki>Shutting down IP masquerade and firewall rules: <span style="color:red">Done!</span><br>
<br>
<nowiki> </nowiki>Enabling IP masquerading: done
|}


On signale la modification de la configuration. ''(Peut prendre quelques instants.)''
{| class="wikitable" style="width: 80%; background-color:#FFEED9;"
|- style="vertical-align:top;font-family: Courier New;"
|
<nowiki>#</nowiki> signal-event fail2ban-conf
|}


On vérifie le fichier ré-assemblé c.-à-d. <code>/etc/fail2ban/jail.conf</code>.
{| class="wikitable" style="width: 80%; background-color:#FFEED9;"
|- style="vertical-align:top;font-family: Courier New;"
|
<nowiki>#</nowiki> cat /etc/fail2ban/jail.conf<br>
<nowiki> </nowiki><br>
<nowiki> </nowiki>...<br>
<nowiki> </nowiki><span style="color:blue">[DEFAULT]</span><br>
<nowiki> </nowiki>ignoreip = 127.0.0.0/8 192.168.2.11 192.168.1.0/24 192.168.2.0/24<br>
<nowiki> </nowiki>bantime <nowiki>= 1800</nowiki><br>
<nowiki> </nowiki>findtime <nowiki>= 900</nowiki><br>
<nowiki> </nowiki><span style="color:red">maxretry = 5</span><br>
<nowiki> </nowiki>usedns = yes<br>
<nowiki> </nowiki>backend = auto<br>
<nowiki> </nowiki>...<br>
<nowiki> </nowiki><span style="color:DarkGreen">'''[qpsmtpd]'''</span><br>
<nowiki> </nowiki>enabled <nowiki>= true</nowiki><br>
<nowiki> </nowiki>filter <nowiki>= qpsmtpd</nowiki><br>
<nowiki> </nowiki>logpath <nowiki>= /var/log/*qpsmtpd/current</nowiki><br>
<nowiki> </nowiki><span style="color:DarkGreen">'''maxretry'''</span> = 15<br>
<nowiki> </nowiki>action <nowiki>= smeserver-iptables[port="25,465",protocol=tcp,bantime=1800]</nowiki><br>
<nowiki> </nowiki> smeserver-sendmail[name="Qpsmtpd",dest=root]<br>
<nowiki> </nowiki>...<br>
<nowiki> </nowiki><span style="color:DarkGreen">'''[pam-generic]'''</span><br>
<nowiki> </nowiki>enabled <nowiki>= true</nowiki><br>
<nowiki> </nowiki>filter <nowiki>= pam-generic</nowiki><br>
<nowiki> </nowiki>logpath <nowiki>= /var/log/secure</nowiki><br>
<nowiki> </nowiki><span style="color:DarkGreen">'''maxretry'''</span> = 10<br>
<nowiki> </nowiki>action <nowiki>= smeserver-iptables[bantime=1800]</nowiki><br>
<nowiki> </nowiki> smeserver-sendmail[name="PAM generic",dest=root]<br>
<nowiki> </nowiki>...<br>
<nowiki> </nowiki><span style="color:DarkGreen">'''[recidive]'''</span><br>
<nowiki> </nowiki>enabled <nowiki>= true</nowiki><br>
<nowiki> </nowiki>filter <nowiki>= recidive</nowiki><br>
<nowiki> </nowiki>logpath <nowiki>= /var/log/fail2ban/daemon.log</nowiki><br>
<nowiki> </nowiki>bantime <nowiki>= 604800</nowiki><br>
<nowiki> </nowiki>findtime = 86400<br>
<nowiki> </nowiki><span style="color:DarkGreen">'''maxretry'''</span> = 5<br>
<nowiki> </nowiki>backend <nowiki>= polling</nowiki><br>
<nowiki> </nowiki>action <nowiki>= smeserver-iptables[bantime=604800]</nowiki><br>
<nowiki> </nowiki> smeserver-sendmail[name="Recidive",dest=root]
|}

On voit que, dans la section <span style="color:blue">[DEFAULT]</span>, notre paramètre <span style="color:red">maxretry = 5</span> est défini à la valeur qu'on lui a donné dans le gabarit personnalisé.


'''Suppression d'un gabarit personnalisé'''

On supprime le répertoire créé au paragraphe [[#Création d'un gabarit personnalisé pour jail.conf]].

Les options <span style="color:red">-rf</span> ne demandent aucune confirmation et <u>ne pardonnent pas les erreurs</u>.
{| class="wikitable" style="width: 80%; background-color:#FFEED9;"
|- style="vertical-align:top;font-family: Courier New;"
|
<nowiki>#</nowiki> rm <span style="color:red">-rf</span> /etc/e-smith/templates-custom/etc/fail2ban/
|}


On vérifie.
{| class="wikitable" style="width: 80%; background-color:#FFEED9;"
|- style="vertical-align:top;font-family: Courier New;"
|
<nowiki>#</nowiki> ls -als /etc/e-smith/templates-custom/etc/<span style="color:red">fail2ban</span>/<br>
<br>
<nowiki> </nowiki>ls: impossible d'accéder à /etc/e-smith/templates-custom/etc/fail2ban/: <span style="color:red">Aucun fichier ou dossier de ce type</span>
|}


On reconstruit le gabarit.
{| class="wikitable" style="width: 80%; background-color:#FFEED9;"
|- style="vertical-align:top;font-family: Courier New;"
|
<nowiki>#</nowiki> expand-template /etc/rc.d/init.d/masq
|}


On repart masq.
{| class="wikitable" style="width: 80%; background-color:#FFEED9;"
|- style="vertical-align:top;font-family: Courier New;"
|
<nowiki>#</nowiki> /etc/init.d/masq restart<br>
<br>
<nowiki> </nowiki>Shutting down IP masquerade and firewall rules: <span style="color:red">Done!</span><br>
<br>
<nowiki> </nowiki>Enabling IP masquerading: done
|}


On signale la modification de la configuration. ''(Peut prendre quelques instants.)''
{| class="wikitable" style="width: 80%; background-color:#FFEED9;"
|- style="vertical-align:top;font-family: Courier New;"
|
<nowiki>#</nowiki> signal-event fail2ban-conf
|}


On affiche la configuration de Fail2ban.
{| class="wikitable" style="width: 80%; background-color:#FFEED9;"
|- style="vertical-align:top;font-family: Courier New;"
|
<nowiki>#</nowiki> config show fail2ban<br>
<nowiki> </nowiki><br>
<nowiki> </nowiki><span style="color:blue">fail2ban</span>=service<br>
<nowiki> </nowiki> <span style="color:blue">Mail</span>=<span style="color:red">enabled</span><br>
<nowiki> </nowiki> <span style="color:blue">status</span>=<span style="color:red">enabled</span><br>
|}


<span id="Paramètre ignoreip"></span>
=== Paramètre ignoreip ===

[[Image:Icone-NoteAPT.png|25px]]&nbsp;&nbsp;Votre <span style="color:blue">réseau</span> et votre <span style="color:DarkMagenta">serveur</span> sont dans la liste des adresses IP ignorées par Fail2ban ''(voir: <code>IgnoreIP</code> au paragraphe [[#Options disponibles]])''.

<span style="color:blue">[DEFAULT]</span>
<span style="color:red">ignoreip</span> = <span style="color:DarkMagenta">127.0.0.0/8</span>,<span style="color:DarkMagenta">192.168.1.1</span>,<span style="color:blue">192.168.1.0/24</span>
bantime <nowiki>= 1800</nowiki>
findtime <nowiki>= 900</nowiki>
maxretry = 3
usedns = yes
backend = auto


=== Autres services ===

Les différents services qu'on peut ajouter au fichier <code>jail.conf</code>.

[[Image:Icone-AsurveillerAPT.png|25px]]&nbsp;&nbsp;Un paragraphe par service.

<span style="color:blue">[ssh]</span>
enabled <nowiki>= true</nowiki>
filter <nowiki>= sshd</nowiki>
logpath <nowiki>= /var/log/sshd/current</nowiki>
action <nowiki>= smeserver-iptables[port="22",protocol=tcp,bantime=1800]</nowiki>
smeserver-sendmail[name="SSH",dest=root]


<span style="color:blue">[ssh-ddos]</span>
enabled <nowiki>= true</nowiki>
filter <nowiki>= sshd-ddos</nowiki>
logpath <nowiki>= /var/log/sshd/current</nowiki>
action <nowiki>= smeserver-iptables[port="22",protocol=tcp,bantime=1800]</nowiki>
smeserver-sendmail[name="SSH",dest=root]


<span style="color:blue">[qpsmtpd]</span>
enabled <nowiki>= true</nowiki>
filter <nowiki>= qpsmtpd</nowiki>
logpath <nowiki>= /var/log/*qpsmtpd/current</nowiki>
maxretry = 9
action <nowiki>= smeserver-iptables[port="25,465",protocol=tcp,bantime=1800]</nowiki>
smeserver-sendmail[name="Qpsmtpd",dest=root]


<span style="color:blue">[http-overflows]</span>
enabled <nowiki>= true</nowiki>
filter <nowiki>= apache-overflows</nowiki>
logpath <nowiki>= /var/log/httpd/error_log</nowiki>
action <nowiki>= smeserver-iptables[port="80,443",protocol=tcp,bantime=1800]</nowiki>
smeserver-sendmail[name="Apache (overflows)",dest=root]


<span style="color:blue">[http-noscript]</span>
enabled <nowiki>= true</nowiki>
filter <nowiki>= apache-noscript</nowiki>
logpath <nowiki>= /var/log/httpd/error_log</nowiki>
action <nowiki>= smeserver-iptables[port="80,443",protocol=tcp,bantime=1800]</nowiki>
smeserver-sendmail[name="Apache (noscript)",dest=root]


<span style="color:blue">[http-scan]</span>
enabled <nowiki>= true</nowiki>
filter <nowiki>= apache-scan</nowiki>
logpath <nowiki>= /var/log/httpd/error_log</nowiki>
action <nowiki>= smeserver-iptables[port="80,443",protocol=tcp,bantime=1800]</nowiki>
smeserver-sendmail[name="Apache (scan)",dest=root]


<span style="color:blue">[http-auth]</span>
enabled <nowiki>= true</nowiki>
filter <nowiki>= apache-auth</nowiki>
logpath <nowiki>= /var/log/httpd/error_log</nowiki>
action <nowiki>= smeserver-iptables[port="80,443",protocol=tcp,bantime=1800]</nowiki>
smeserver-sendmail[name="Apache (auth)",dest=root]


<span style="color:blue">[pam-generic]</span>
enabled <nowiki>= true</nowiki>
filter <nowiki>= pam-generic</nowiki>
logpath <nowiki>= /var/log/secure</nowiki>
maxretry = 6
action <nowiki>= smeserver-iptables[bantime=1800]</nowiki>
smeserver-sendmail[name="PAM generic",dest=root]


<span style="color:blue">[recidive]</span>
enabled <nowiki>= true</nowiki>
filter <nowiki>= recidive</nowiki>
logpath <nowiki>= /var/log/fail2ban/daemon.log</nowiki>
bantime <nowiki>= 604800</nowiki>
findtime = 86400
maxretry = 5
backend <nowiki>= polling</nowiki>
action <nowiki>= smeserver-iptables[bantime=604800]</nowiki>
smeserver-sendmail[name="Recidive",dest=root]


=== Désinstallation ===

Il suffit de lancer la commande suivante pour désinstaller Fail2ban.
{| class="wikitable" style="width: 80%; background-color:#FFEED9;"
|- style="vertical-align:top;font-family: Courier New;"
|
<nowiki>#</nowiki> yum remove smeserver-fail2ban fail2ban
|}


=== Bogues ===

S'il vous plaît, rapportez les bogues dans la section SME-Contribs de [http://bugs.contribs.org/enter_bug.cgi bugzilla] et sélectionnez le composant smeserver-fail2ban ou utilisez [http://bugs.contribs.org/enter_bug.cgi?product=SME%20Contribs&component=smeserver-fail2ban&short_desc=&comment= ce lien].

Aperçu ci-dessous des problèmes actuels de cette Contrib.

{| style="border-spacing:0;"
| style="border-top:0.05pt solid #999999;border-bottom:0.05pt solid #999999;border-left:0.05pt solid #999999;border-right:none;padding:0.0201in;"| ID
| style="border-top:0.05pt solid #999999;border-bottom:0.05pt solid #999999;border-left:0.05pt solid #999999;border-right:none;padding:0.0201in;"| Product
| style="border-top:0.05pt solid #999999;border-bottom:0.05pt solid #999999;border-left:0.05pt solid #999999;border-right:none;padding:0.0201in;"| Version
| style="border-top:0.05pt solid #999999;border-bottom:0.05pt solid #999999;border-left:0.05pt solid #999999;border-right:none;padding:0.0201in;"| Status
| style="border:0.05pt solid #999999;padding:0.0201in;"| Summary (7 tasks)

|-
| style="border-top:none;border-bottom:0.05pt solid #999999;border-left:0.05pt solid #999999;border-right:none;padding:0.0201in;"| [http://bugs.contribs.org/show_bug.cgi?id=10422 10422]
| style="border-top:none;border-bottom:0.05pt solid #999999;border-left:0.05pt solid #999999;border-right:none;padding:0.0201in;"| SME Contribs
| style="border-top:none;border-bottom:0.05pt solid #999999;border-left:0.05pt solid #999999;border-right:none;padding:0.0201in;"| 9.2
| style="border-top:none;border-bottom:0.05pt solid #999999;border-left:0.05pt solid #999999;border-right:none;padding:0.0201in;"| UNCONFIRMED
| style="border-top:none;border-bottom:0.05pt solid #999999;border-left:0.05pt solid #999999;border-right:0.05pt solid #999999;padding:0.0201in;"| NFR: portscan jail

|-
| style="border-top:none;border-bottom:0.05pt solid #999999;border-left:0.05pt solid #999999;border-right:none;padding:0.0201in;"| [http://bugs.contribs.org/show_bug.cgi?id=10370 10370]
| style="border-top:none;border-bottom:0.05pt solid #999999;border-left:0.05pt solid #999999;border-right:none;padding:0.0201in;"| SME Contribs
| style="border-top:none;border-bottom:0.05pt solid #999999;border-left:0.05pt solid #999999;border-right:none;padding:0.0201in;"| 9.2
| style="border-top:none;border-bottom:0.05pt solid #999999;border-left:0.05pt solid #999999;border-right:none;padding:0.0201in;"| UNCONFIRMED
| style="border-top:none;border-bottom:0.05pt solid #999999;border-left:0.05pt solid #999999;border-right:0.05pt solid #999999;padding:0.0201in;"| NFR modify 90Recidive template to allow adjustment with db variables

|-
| style="border-top:none;border-bottom:0.05pt solid #999999;border-left:0.05pt solid #999999;border-right:none;padding:0.0201in;"| [http://bugs.contribs.org/show_bug.cgi?id=9709 9709]
| style="border-top:none;border-bottom:0.05pt solid #999999;border-left:0.05pt solid #999999;border-right:none;padding:0.0201in;"| SME Contribs
| style="border-top:none;border-bottom:0.05pt solid #999999;border-left:0.05pt solid #999999;border-right:none;padding:0.0201in;"| 9.2
| style="border-top:none;border-bottom:0.05pt solid #999999;border-left:0.05pt solid #999999;border-right:none;padding:0.0201in;"| CONFIRMED
| style="border-top:none;border-bottom:0.05pt solid #999999;border-left:0.05pt solid #999999;border-right:0.05pt solid #999999;padding:0.0201in;"| add jail for wordpress

|-
| style="border-top:none;border-bottom:0.05pt solid #999999;border-left:0.05pt solid #999999;border-right:none;padding:0.0201in;"| [http://bugs.contribs.org/show_bug.cgi?id=9669 9669]
| style="border-top:none;border-bottom:0.05pt solid #999999;border-left:0.05pt solid #999999;border-right:none;padding:0.0201in;"| SME Contribs
| style="border-top:none;border-bottom:0.05pt solid #999999;border-left:0.05pt solid #999999;border-right:none;padding:0.0201in;"| 9.2
| style="border-top:none;border-bottom:0.05pt solid #999999;border-left:0.05pt solid #999999;border-right:none;padding:0.0201in;"| CONFIRMED
| style="border-top:none;border-bottom:0.05pt solid #999999;border-left:0.05pt solid #999999;border-right:0.05pt solid #999999;padding:0.0201in;"| ERROR No file(s) found for glob /var/log/sogo/sogo.log

|-
| style="border-top:none;border-bottom:0.05pt solid #999999;border-left:0.05pt solid #999999;border-right:none;padding:0.0201in;"| [http://bugs.contribs.org/show_bug.cgi?id=9557 9557]
| style="border-top:none;border-bottom:0.05pt solid #999999;border-left:0.05pt solid #999999;border-right:none;padding:0.0201in;"| SME Contribs
| style="border-top:none;border-bottom:0.05pt solid #999999;border-left:0.05pt solid #999999;border-right:none;padding:0.0201in;"| 9.2
| style="border-top:none;border-bottom:0.05pt solid #999999;border-left:0.05pt solid #999999;border-right:none;padding:0.0201in;"| UNCONFIRMED
| style="border-top:none;border-bottom:0.05pt solid #999999;border-left:0.05pt solid #999999;border-right:0.05pt solid #999999;padding:0.0201in;"| masq file doesn't reflect fail2ban banned IPs

|-
| style="border-top:none;border-bottom:0.05pt solid #999999;border-left:0.05pt solid #999999;border-right:none;padding:0.0201in;"| [http://bugs.contribs.org/show_bug.cgi?id=9556 9556]
| style="border-top:none;border-bottom:0.05pt solid #999999;border-left:0.05pt solid #999999;border-right:none;padding:0.0201in;"| SME Contribs
| style="border-top:none;border-bottom:0.05pt solid #999999;border-left:0.05pt solid #999999;border-right:none;padding:0.0201in;"| 9.2
| style="border-top:none;border-bottom:0.05pt solid #999999;border-left:0.05pt solid #999999;border-right:none;padding:0.0201in;"| UNCONFIRMED
| style="border-top:none;border-bottom:0.05pt solid #999999;border-left:0.05pt solid #999999;border-right:0.05pt solid #999999;padding:0.0201in;"| http filters in jail.conf use wrong log files

|-
| style="border-top:none;border-bottom:0.05pt solid #999999;border-left:0.05pt solid #999999;border-right:none;padding:0.0201in;"| [http://bugs.contribs.org/show_bug.cgi?id=8645 8645]
| style="border-top:none;border-bottom:0.05pt solid #999999;border-left:0.05pt solid #999999;border-right:none;padding:0.0201in;"| SME Contribs
| style="border-top:none;border-bottom:0.05pt solid #999999;border-left:0.05pt solid #999999;border-right:none;padding:0.0201in;"| 9.2
| style="border-top:none;border-bottom:0.05pt solid #999999;border-left:0.05pt solid #999999;border-right:none;padding:0.0201in;"| CONFIRMED
| style="border-top:none;border-bottom:0.05pt solid #999999;border-left:0.05pt solid #999999;border-right:0.05pt solid #999999;padding:0.0201in;"| AuthExtern pwauth failures not been logged by fail2ban jail http-auth

|}


=== Toutes les commandes de Fail2ban ===
Voir: [http://www.fail2ban.org/wiki/index.php/Commands http://www.fail2ban.org/wiki/index.php/Commands].


=== Le manuel original de Fail2ban ===

Voir: [http://www.fail2ban.org/wiki/index.php/MANUAL_0_8 http://www.fail2ban.org/wiki/index.php/MANUAL_0_8].


= Exemples de bannissements =

=== Bannissement d'une adresse IP spécifique ===

Quelquefois, il est préférable de bannir une adresse spécifique <u>pour arrêter de recevoir des courriels d'un polluposteur</u>.

Dans Thunderbird, on sélectionne le ''courriel''<span style="color:red"> &nbsp;>&nbsp; </span>''Affichage''<span style="color:red"> &nbsp;>&nbsp; </span>''Code source du message''.

X-Spam-Level: ******
X-Spam-Status: Yes, <span style="color:red">hits=6.9</span> required=5.0
tests=AXB_JT_FOLNO0,HTML_MESSAGE,MIME_QP_LONG_LINE,RAZOR2_CF_RANGE_51_100,RAZOR2_CF_RANGE_E8_51_100,RAZOR2_CHECK,RCVD_IN_DNSWL_LOW
X-Spam-Flag: YES
X-Spam-Check-By: micronator.org
Received: from smtp13.macau.ctm.net (<span style="color:red">HELO</span> zimbramta07.<span style="color:red">macau.ctm.net</span>) (<span style="color:red">125.31.5.33</span>)
by micronator.org (qpsmtpd/0.84) with (AES256-GCM-SHA384 encrypted) ESMTPS; Mon, 08 Feb 2016 03:38:39 -0500

Comme on le voit ci-dessus, SpamAssassin a donné un statut de 6.9 à ce courriel.


'''Bannissement'''

On bloque cette adresse dans la prison qpsmtpd ''(démon du courrier)''.
# fail2ban-client set qpsmtpd banip <span style="color:red">125.31.5.33</span>

125.31.5.33


On vérifie.
# fail2ban-client status qpsmtpd

Status for the jail: <span style="color:red">qpsmtpd</span>
|- Filter
| |- Currently failed: 0
| |- Total failed: <span style="color:red">12</span>
| `- File list: /var/log/sqpsmtpd/current /var/log/qpsmtpd/current
`- Actions
|- Currently banned: <span style="color:red">1</span>
|- Total banned: <span style="color:red">1</span>
`- Banned IP list: <span style="color:red">125.31.5.33</span>


=== Bannissement d'une plage d'adresses IP ===

On fait une recherche de l'adresse 125.31.5.33 sur [http://www.monwhois.fr/ http://www.monwhois.fr/].

...
Lookup results for <span style="color:red">125.31.5.33</span> from whois.lacnic.net server:

inetnum: <span style="color:red">125.31.0.0 - 125.31.63.255</span>
...
address: Rua da Lagos, Telecentro
address: P.O. Box 868
address: Taipa
address: <span style="color:red">Macau</span>
e-mail: noc@macau.ctm.net
...
route: <span style="color:blue">125.31.5.0/24</span>
...

Route spécifie <span style="color:blue">125.31.5.0/24</span>.


'''Bannissement'''

On ne connaît personne à Macau. Nous allons donc bannir toute cette plage d'adresses pour les courriels ''(prison <span style="color:blue">qpsmtpd</span>)''.

# fail2ban-client set <span style="color:blue">qpsmtpd</span> banip <span style="color:red">125.31.5.33/24</span>

<span style="color:red">125.31.5.33/24</span>


On vérifie.
# fail2ban-client status <span style="color:blue">qpsmtpd</span>

Status for the jail: <span style="color:red">qpsmtpd</span>
|- Filter
| |- Currently failed: 0
| |- Total failed: <span style="color:red">24</span>
| `- File list: /var/log/sqpsmtpd/current /var/log/qpsmtpd/current
`- Actions
|- Currently banned: <span style="color:red">1</span>
|- Total banned: <span style="color:red">2</span>
`- Banned IP list: <span style="color:red">125.31.5.33/24</span>


=== Bannissement pour une semaine ===

Si on veut bannir pour un peu plus longtemps, une semaine, on peut utiliser la prison recidive; voir le paragraphe [[#Bannissements complets]].

On vérifie que la prison recidive est présente.
# fail2ban-client status

Status
|- Number of jail: 13
`- Jail list: http-auth, http-badbots, http-fakegooglebot, http-noscript, http-overflows, http-scan, http-shellshock, imap, pam-generic, qpsmtpd, <span style="color:red">recidive</span>, ssh, ssh-ddos


'''Bannissement'''

On bannit la plage d'adresses IP du paragraphe précédent pour une semaine en l'insérant dans la prison recidive.
# fail2ban-client set recidive banip 125.31.5.33/<span style="color:red">24</span>

125.31.5.33/24


On vérifie.
# fail2ban-client status <span style="color:blue">recidive</span>

Status for the jail: <span style="color:red">recidive</span>
|- Filter
| |- Currently failed: 1
| |- Total failed: <span style="color:red">39</span>
| `- File list: /var/log/fail2ban/daemon.log
`- Actions
|- Currently banned: <span style="color:red">3</span>
|- Total banned: <span style="color:red">3</span>
`- Banned IP list: 162.213.152.92 66.131.226.189 <span style="color:red">125.31.5.33/24</span>


'''Affichage de toutes le prisons'''

# ./checklist_ban.sh

ftp 0
http-auth 0
http-badbots 0
http-fakegooglebot 0
http-noscript 0
http-overflows 0
http-scan 0
http-shellshock 0
imap 0
pam-generic 0
<span style="color:red">qpsmtpd 1</span>
<span style="color:red">recidive 3</span>
ssh 0
ssh-ddos 0


<hr style="width:50%; margin: 0 auto;">

<!-- ########################################################################### -->
<br>

[[Image:Odoo-11-BanniereDeLaVictoire-APT.png|caption|36px]]&nbsp;&nbsp;Victoire totale, hissons la bannière de la victoire.
<br>
<br>

----
<references/>

[[Category:Howto]] [[Category:Howto/fr]]
2,785

edits

Navigation menu