Changes

From SME Server
Jump to navigationJump to search
5,644 bytes added ,  15:34, 26 August 2022
m
Line 5: Line 5:     
== Mainteneur ==
 
== Mainteneur ==
[[User:VIP-ire|Daniel B.]]<br/>
+
[[User:VIP-ire|Daniel B.]]<br />
 
[http://www.firewall-services.com Firewall Services]<br>
 
[http://www.firewall-services.com Firewall Services]<br>
 
mailto:daniel@firewall-services.com
 
mailto:daniel@firewall-services.com
 +
 +
Veuillez débattre, apporter des retours et partager des expérimentations sur les forums [http://forums.contribs.org/index.php/topic,51127.0.html '''ici.''']
    
== Description ==
 
== Description ==
Line 17: Line 19:  
Après l'installation, les services de base les plus importants (et quelques autres supplémentaires) sont surveillés par défaut sans avoir besoin de configuration manuelle (voir [[#Services | Services]]).
 
Après l'installation, les services de base les plus importants (et quelques autres supplémentaires) sont surveillés par défaut sans avoir besoin de configuration manuelle (voir [[#Services | Services]]).
   −
{{Tip box|type=Astuce :|Fail2ban n'est pas seulement un outil contre les attaques par force brute sur SSH, mais il peut être un outil utile contre les attaques de protocole http ou [http://forums.contribs.org/index.php/topic,50162.msg252195.html#msg252195 spam] sur votre serveur. Voir la [[Fail2ban#Jail.conf |section prison]]}}
+
{{Tip box|type=Astuce :|Fail2ban n'est pas seulement un outil contre les attaques par force brute sur SSH, mais il peut être un outil utile contre les attaques de protocole http ou [http://forums.contribs.org/index.php/topic,50162.msg252195.html#msg252195 spam] sur votre serveur. Voir la [[Fail2ban/fr#Jail.conf |section prison.]]}}
    
== Systèmes requis ==
 
== Systèmes requis ==
Cette contribution a été développée et testée sur SME Server 8 et plus. Elle ne fonctionnera probablement pas sur les SME 7.
+
Cette contribution a été développée et testée sur SME Server v8 et suivantes.
 
  −
{{Note box|L'option SME [http://wiki.contribs.org/AutoBlock AutoBlock SSH] doit être désactivée pour s'assurer que les contrôles de fail2ban du trafic SSH ne sont pas construites dans le Firewall.}}
  −
 
  −
== Installation sur SME 8 et SME 9 ==
  −
Configurez les dépôts Firewall-Services, rpmforge :
  −
 
  −
db yum_repositories set fws repository \
  −
BaseURL http://repo.firewall-services.com/centos/\$releasever \
  −
EnableGroups no GPGCheck yes \
  −
Name "Firewall Services" \
  −
GPGKey http://repo.firewall-services.com/RPM-GPG-KEY \
  −
Visible yes status disabled
      +
{{Note box|type=Note :|L'option [http://wiki.contribs.org/AutoBlock AutoBlock SSH] de SSH devrait être désactivée pour s'assurer que ce soit Fail2ban qui contrôle le trafic SSH et non pas le pare-feu intégré de SME.. '''Or AutoBlock est activé par défaut dans SME 9.x.'''
 +
Pour vérifier qu'AutoBlock est bien désactivé :
 +
db configuration show sshd
 +
Si ce n'est pas le cas, voir ci-dessous pour le désactiver.}}
   −
Configurez les dépôts EPEL :
+
==Koozali SME v9/v10==
pour SME 8.x,
+
{{#smeversion: smeserver-fail2ban}}
   −
/sbin/e-smith/db yum_repositories set epel repository \
+
== Installation sur Koozali SME==
Name 'Epel - EL5' \
+
<tabs container><tab name="Pour SME 10">
BaseUrl 'http://download.fedoraproject.org/pub/epel/5/$basearch' \
+
  yum --enablerepo=smecontribs install smeserver-fail2ban
MirrorList 'http://mirrors.fedoraproject.org/mirrorlist?repo=epel-5&arch=$basearch' \
+
</tab><tab name="Pour SME 9">
EnableGroups no \
+
* Installez les paquets
  GPGCheck yes \
  −
GPGKey http://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL \
  −
Visible no \
  −
status disabled
     −
pour SME 9.x,
+
  yum --enablerepo=smecontribs install smeserver-fail2ban
 
  −
/sbin/e-smith/db yum_repositories set epel repository \
  −
Name 'Epel - EL6' \
  −
BaseUrl 'http://download.fedoraproject.org/pub/epel/6/$basearch' \
  −
MirrorList 'http://mirrors.fedoraproject.org/mirrorlist?repo=epel-6&arch=$basearch' \
  −
EnableGroups no \
  −
GPGCheck yes \
  −
GPGKey http://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL \
  −
Visible no \
  −
status disabled
  −
 
  −
signal-event yum-modify
  −
 
  −
* Redémarrez les services, installez les rpms
  −
 
  −
  yum --enablerepo=fws --enablerepo=epel install smeserver-fail2ban
  −
 
  −
{{note box|type=Note :| vous devez installer la version de fail2ban du dépôt fws et non celle d'epel.}}
      
* Appliquer la configuration nécessaire :
 
* Appliquer la configuration nécessaire :
 
Prenez soin d'exécuter ces trois commandes avec précision. Ne pas le faire peut empêcher la connexion à distance via ssh.
 
Prenez soin d'exécuter ces trois commandes avec précision. Ne pas le faire peut empêcher la connexion à distance via ssh.
   
  db configuration setprop masq status enabled
 
  db configuration setprop masq status enabled
 
  expand-template /etc/rc.d/init.d/masq
 
  expand-template /etc/rc.d/init.d/masq
Line 77: Line 48:     
ou bien les commandes suivantes qui sont équivalentes après redémarrage :
 
ou bien les commandes suivantes qui sont équivalentes après redémarrage :
   
  db configuration setprop masq status enabled
 
  db configuration setprop masq status enabled
 
  signal-event post-upgrade; signal-event reboot
 
  signal-event post-upgrade; signal-event reboot
 +
{{warning box|type=Attention :|à défaut d'exécuter l'une de ces commandes, l'accès au réseau sera verrouillé le temps de recharger les règles d'iptables.}}
   −
{{warning box|type=Attention :|à défaut d'exécuter l'une de ces commandes, l'accès au réseau sera verrouillé le temps de recharger les règles d'iptables.}}
+
{{warning box|type=Attention :|le service de masquage doit être activé pour que Fail2ban fonctionne correctement ; si vous le désactivez, Fail2ban ne bannira rien.}}
 +
</tab>
 +
</tabs>
 +
{{warning box|type=Attention : |à partir de SME10 et de smeserver-fail2ban 0.1.18-29, le changement manuel de configuration est inclus dans la sauvegarde principale, si vous utilisez des fichiers .local dans les dossiers action.d/ fail2ban.d/ filter.d/ jail.d/. Toute modification apportée au fichier .conf appartenant au paquet n'est pas ajoutée dans la sauvegarde principale. Utilisez les fichiers .local pour remplacer le fichier .conf et ils seront dans la sauvegarde. Voir http://www.fail2ban.org/wiki/index.php/MANUAL_0_8#Configuration.}}
 +
 
 +
== Désactiver la fonctionalité AutoBlock sur SME 9.x et supérieur ==
 +
Il a été noté qu'une fonctionnalité de Fail2ban écrase la fonctionnalité ssh intégrée d'AutoBlock (https://wiki.contribs.org/AutoBlock). '''Noter qu'AutoBlock est activé par défaut sur SME 9.x et supérieur.''' Il est possible de désactiver la fonction AutoBlock en utilisant les étapes facultatives suivantes.
   −
{{warning box|type=Attention :|le service de masquage doit être activé pour queFail2ban fonctionne correctement ; si vous le désactivez, Fail2ban ne bannira rien.}}
+
1. Affichez vos paramètres actuels pour la fonctionnalité AutoBlock intégrée de SME en entrant ce qui suit en ligne de commande.
 +
  # config show sshd
 +
2. Si AutoBlock est désactivé, aucune action n'est requise. Si AutoBlock est activé, configurez-le sur désactivé avec les commandes suivantes :
 +
  # config setprop sshd AutoBlock disabled
 +
  # signal-event remoteaccess-update
    
== Commandes DB ==
 
== Commandes DB ==
Il n'y a pas de panneau de configuration, vous pouvez encore gérer la contribution avec db configuration, c'est assez simple.
+
Bien qu'il y ait une page de configuration dans le gestionnaire du serveur, vous pouvez aussi gérer la contribution avec « db configuration », c'est assez simple.
    
  # config show fail2ban  
 
  # config show fail2ban  
Line 96: Line 77:     
* '''IgnoreIP''' : une virgule sépare les listes d'adresses IP ou de sous-réseaux en notation CIDR qui ne seront jamais bloquées par fail2ban. 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 sont toujours automatiquement en liste blanche.
 
* '''IgnoreIP''' : une virgule sépare les listes d'adresses IP ou de sous-réseaux en notation CIDR qui ne seront jamais bloquées par fail2ban. 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 sont toujours automatiquement en liste blanche.
* '''FilterLocalNetworks''' peut être activé ou désactivé (désactivé par défaut). S'il est configuré en activé, les réseaux locaux ne seront pas en liste blanche, et fail2ban pourra aussi bannir des hôtes du réseau interne. Noter que les réseaux autorisé à accéder au gestionnaire du serveur ne seront pas affecté (ils ne seront jamais bloqués).
+
* '''FilterLocalNetworks''' peut être activé ou désactivé (désactivé par défaut). S'il est configuré en activé, les réseaux locaux ne seront pas en liste blanche, et fail2ban pourra aussi bannir des hôtes du réseau interne. Noter que les réseaux autorisés à accéder au gestionnaire du serveur ne seront pas affectés (ils ne seront jamais bloqués).
* '''BanTime''' : durée (en secondes) d'un bannissement. Par défaut : 1800.
+
* '''BanTime''' : durée (en secondes) d'un bannissement. Par défaut : 1 800.
* '''FindTime''' : la fenêtre de vérification de fail2ban, en secondes. Par défaut : 900. Ainsi, cela signifie que fail2ban vérifiera seulement le nombre de connexions échouées tentées durant les 15 dernières minutes (glissantes).
+
* '''FindTime''' : la fenêtre de temps de vérification de fail2ban, en secondes. Par défaut : 900. Ainsi, cela signifie que fail2ban vérifiera seulement le nombre de connexions échouées tentées durant les 15 dernières minutes (glissantes).
 
* '''MaxRetry''' : nombre de tentatives échouées dans les dernières '''FindTime''' secondes pour déclencher un bannissement. Par défaut : 3.
 
* '''MaxRetry''' : nombre de tentatives échouées dans les dernières '''FindTime''' secondes pour déclencher un bannissement. Par défaut : 3.
* '''Mail''' : peut être activé ou désactivé (activé par défaut). S'il est activé, chaque bannissement sera notifié par courriel.
+
* '''Mail''' : peut être activé ou désactivé (activé par défaut). S'il est activé, chaque bannissement sera notifié à l'administrateur par courriel.
 
* '''MailRecipient''' : si '''Mail''' est activé, l'adresse de courrier électronique qui doit recevoir les notifications de bannissement. Par défaut, c'est "root" (le compte "admin" recevra les courriels).
 
* '''MailRecipient''' : si '''Mail''' est activé, l'adresse de courrier électronique qui doit recevoir les notifications de bannissement. Par défaut, c'est "root" (le compte "admin" recevra les courriels).
    +
Par exemple,
 +
db configuration setprop fail2ban Mail disabled
 
Ensuite, pour appliquer les changements :
 
Ensuite, pour appliquer les changements :
 
  signal-event fail2ban-conf
 
  signal-event fail2ban-conf
Line 127: Line 110:  
  signal-event fail2ban-conf
 
  signal-event fail2ban-conf
   −
== Bans Sélectifs ==
+
== Bannissements sélectifs ==
Fail2Ban fera de son mieux pour faire une interdiction sélective. Par exemple, si 3 échecs d'authentification avec SSH sont détectés, seul le port TCP 22 (ou tout autre port vous avez choisi pour SSH) seront bloqués. Idem pour httpd-e-smith, SOGO, LemonLDAP::NG which will only blacklist tcp ports 80 et 443, qpsmtpd will block tcp ports 25 et 465, dovecot will block 143 et 993 etc...
+
Fail2Ban fera de son mieux pour faire une interdiction sélective. Par exemple, si 3 échecs d'authentification avec SSH sont détectés, seul le port TCP 22 (ou tout autre port vous avez choisi pour SSH) seront bloqués (pour l'adresse IP). Idem pour httpd-e-smith, SOGO, LemonLDAP::NG which will only blacklist tcp ports 80 et 443, qpsmtpd will block tcp ports 25 et 465, dovecot will block 143 et 993 etc...
   −
Il y a seulement deux façons de verrouiller complètement (tous port/protocol) :
+
Il y a seulement deux façons de verrouiller complètement (tous ports/protocoles) :
 
* pam. 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'ensemble de l'IP du client sera mis en liste noire.
 
* pam. 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'ensemble de l'IP du client sera mis en liste noire.
 
* recidive. Il s'agit d'un filtre spécial. Il surveille les journaux Fail2Ban et IP du client et la liste noire qui est verrouillée plusieurs fois. Si un client est bloqué 5 fois en 24 heures, il sera complètement mis en liste noire pour une semaine complète.
 
* recidive. Il s'agit d'un filtre spécial. Il surveille les journaux Fail2Ban et IP du client et la liste noire qui est verrouillée plusieurs fois. Si un client est bloqué 5 fois en 24 heures, il sera complètement mis en liste noire pour une semaine complète.
   −
=== Utilisation de Fail2ban===
+
== Utilisation de Fail2ban ==
==== Lister toutes les prisons ====
+
=== Lister toutes les prisons ===
 
  [root@sme8 ~]# fail2ban-client status  
 
  [root@sme8 ~]# fail2ban-client status  
 
  Status
 
  Status
Line 141: Line 124:  
  `- Jail list: http-overflows, http-noscript, http-auth, sogo, pam-generic, ssh-ddos, http-scan, ssh, qpsmtpd, recidive
 
  `- Jail list: http-overflows, http-noscript, http-auth, sogo, pam-generic, ssh-ddos, http-scan, ssh, qpsmtpd, recidive
   −
==== Lister les IP bannis d'une prison spécifique ====
+
=== Lister les IP bannis d'une prison spécifique ===
 
  [root@sme8 ~]# fail2ban-client status ssh
 
  [root@sme8 ~]# fail2ban-client status ssh
 
Choisissez la prison spécifique avec la commande ci-dessus, pour afficher les statistiques des prisons.
 
Choisissez la prison spécifique avec la commande ci-dessus, pour afficher les statistiques des prisons.
   −
==== Script qui liste combien d'IP sont interdits dans toutes les prisons ====
+
=== Script qui liste combien d'IP sont interdits dans toutes les prisons ===
    
  nano /root/checklist_ban
 
  nano /root/checklist_ban
Line 162: Line 145:  
  /root/checklist_ban
 
  /root/checklist_ban
   −
==== Réintégrer une IP ====
+
=== Réintégrer une IP ===
 
Dans certains cas, vous pouvez réintégrer une adresse IP immédiatement parce que vous ne voulez pas perdre du temps à attendre le processus automatique IP de fail2ban.
 
Dans certains cas, vous pouvez réintégrer une adresse IP immédiatement parce que vous ne voulez pas perdre du temps à attendre le processus automatique IP de fail2ban.
 
Dans un premier temps, vous devez trouver la prison spécifique qui vous a bloqué l'IP, vous pouvez vous référer à l'e-mail que l'utilisateur admin a reçu ou vous pouvez lister une prison spécifique.
 
Dans un premier temps, vous devez trouver la prison spécifique qui vous a bloqué l'IP, vous pouvez vous référer à l'e-mail que l'utilisateur admin a reçu ou vous pouvez lister une prison spécifique.
Line 213: Line 196:  
  backend = auto
 
  backend = auto
   −
{{Note box|msg=Votre réseau et votre serveur sont dans la liste des IP ignoré par fail2ban (voir IgnoreIP)}}
+
{{Note box|type=Note :|msg=votre réseau et votre serveur sont dans la liste des adresses IP ignorées par fail2ban (voir IgnoreIP.)}}
    
  [ssh]
 
  [ssh]
Line 284: Line 267:  
           smeserver-sendmail[name="Recidive",dest=root]
 
           smeserver-sendmail[name="Recidive",dest=root]
   −
=== Désinstallation ===
+
====Filtres locaux personnalisés====
 +
 
 +
Vous pouvez ajouter vos règles personnalisées en ajoutant un fichier nom_de_fichier.local dans /etc/fail2ban/filters.d/
 +
  wget https://bugs.koozali.org/attachment.cgi?id=6229 -O /etc/fail2ban/filters.d/apache-badbots.local
 +
 
 +
serait un exemple de règles locales de bad bots, veillez à tester pour votre cas personnel. Certaines règles avancées pourraient créer beaucoup de faux positifs et verrouiller vos utilisateurs, cf. [https://bugs.koozali.org/show_bug.cgi?id=10857].
 +
 
 +
== Désinstallation ==
 
  yum remove smeserver-fail2ban fail2ban
 
  yum remove smeserver-fail2ban fail2ban
 +
==Contributions des utilisateurs==
 +
=== Test de nouvelles expressions régulières ===
 +
Vous pouvez tester de nouvelles notes d'expressions régulières issues de ce [http://bugs.contribs.org/show_bug.cgi?id=8955 bogue].
 +
 +
fail2ban-regex [LOG] [REGEX]
 +
 +
Vous pouvez également tester les fichiers de configuration actuels comme indiqué :
 +
 +
fail2ban-regex /var/log/qpsmtpd/current /etc/fail2ban/filter.d/qpsmtpd.conf
 +
 +
Notez que certains caractères tels que « ` » peuvent avoir besoin d’être échappés sur la ligne de commande comme ceci \` mais n’ont pas besoin d’être échappés dans les fichiers de configuration.
 +
 +
Par exemple, à partir du fichier qpsmptd.conf, cela fonctionne dans le fichier de configuration.
 +
 +
^\s*\d+\s*logging::logterse plugin \(deny\): ` <HOST>\s*.*90\d.*msg denied before queued$
 +
 +
Cependant, en ligne de commande, il faut l'écrire comme ceci :
 +
 +
^\s*\d+\s*logging::logterse plugin \(deny\): \` <HOST>\s*.*90\d.*msg denied before queued$
 +
 +
 +
===Afficher les adresses IP bannies par le service===
 +
====Consultez le journal de fail2ban====
 +
Voici un autre script rapide qui vous montre les adresses IP bannies les plus récentes dans les journaux. Notez qu’elles ne le sont peut-être plus, mais il n’y a pas de vérification pour cela.
 +
 +
mkdir /root/bin
 +
nano -w /root/bin/IP_list.sh
 +
 +
et copiez et collez le code ci-dessous dans le fichier :
 +
 +
#!/bin/sh
 +
# Définir les variables de l'interface en ligne de commande de façon à pouvoir les lire.
 +
TYPE=$1
 +
LOG=$2
 +
 +
# Définir la chaîne grep principale
 +
SEARCH="Ban ((1?[0-9][0-9]?|2[0-4][0-9]|25[0-5])\.){3}(1?[0-9][0-9]?|2[0-4][0-9]|25[0-5])"
 +
 +
# Ajouter le terme de recherche
 +
SEARCH="\[$TYPE]\ $SEARCH"
 +
 +
# Maintenant, cherchez dans le journal
 +
grep -oE "\[$TYPE\] Ban ((1?[0-9][0-9]?|2[0-4][0-9]|25[0-5])\.){3}(1?[0-9][0-9]?|2[0-4][0-9]|25[0-5])" $LOG
 +
 +
Enregistrez le fichier et rendez-le exécutable :
 +
chmod 755 /root/bin/IP_list.sh
 +
 +
Utilisation :
 +
IP_list.sh [service] [log]
 +
 +
Par exemple :
 +
IP_list.sh qpsmtpd /var/log/fail2ban/daemon.log
 +
====Vérifiez l'IP bannie par fail2ban pour tous les prisons actives ====
 +
Par [[User:Unnilennium|Unnilennium]] ([[User talk:Unnilennium|talk]])
 +
mkdir /root/bin
 +
vim /root/bin/sfail2ban
 +
 +
Collez-lui ceci :
 +
#!/bin/bash
 +
for SERVI in $(fail2ban-client status|grep 'Liste des prisons'|cut -d':' -f2|sed 's/, / /g'| sed -e 's/^[ \t]*//')
 +
do
 +
fail2ban-client status $SERVI |grep -E 'liste IP|Statut de la prison'|sed 'N;s/\n/:/'|cut -d: -f2,4
 +
done
 +
puis faites :
 +
chmod 755 /root/bin/sfail2ban
 +
 +
Utilisation :
 +
sfail2ban
 +
Résultat :
 +
# sfail2ban
 +
ftp:
 +
imap:
 +
pam-generic:
 +
qpsmtpd:
 +
recidive: 141.98.80.15
 +
ssh:
 +
ssh-ddos:
 +
wordpress:
 +
 +
====Imprimez un résumé de la base de données de fail2ban====
 +
mkdir -p /root/bin
 +
vi /root/bin/bansummary.sh
 +
 +
Collez ceci :
 +
<nowiki>#!/bin/bash
 +
echo -e \
 +
"IP            \t"\
 +
"BanTime            \t"\
 +
"UnbanTime          \t"\
 +
"Jail"
 +
 +
for ban in $(db fail2ban show |awk -F\= ' $2=="ban" {print $1}');
 +
  do
 +
    IP=$(db fail2ban getprop $ban Host)
 +
    Bantime=$(date +"%F %T" -d @$(db fail2ban getprop $ban BanTimestamp))
 +
    UnBanTime=$(date +"%F %T" -d @$(db fail2ban getprop $ban UnbanTimestamp))
 +
    LastJail=$(zgrep -H "Ban $IP" $(find /var/log/fail2ban -type f -ctime -7) |tail -1 |awk '{print $6}')
 +
 +
    printf "%-15s" "$IP"
 +
    echo -e "\t$Bantime\t$UnBanTime\t$LastJail"
 +
  done
 +
</nowiki>
 +
 +
Sauveagarder, puis rendre exécutable
 +
chmod 755 /root/bin/bansummary.sh
 +
 +
Utilisation :
 +
bansummary.sh
 +
Sortie :
 +
<nowiki>IP            BanTime            UnbanTime          Jail
 +
46.246.39.228  2017-09-09 18:45:00 2017-09-10 18:45:00 [http-scan]
 +
124.239.180.102 2017-09-09 12:07:32 2017-09-10 12:07:32 [http-scan]
 +
212.237.54.93  2017-09-09 19:27:32 2017-09-10 19:27:32 [http-scan]
 +
</nowiki>
 +
 +
===WordPress===
 +
Fail2Ban fonctionne avec WordPress mais nécessite une configuration supplémentaire. Veuillez consulter [[Wordpress#Fail2Ban |la page WordPress]] (en anglais).
 +
 +
== Bogues ==
 +
S'il vous plaît, rapportez les bogues dans la section SME-Contribs dans [http://bugs.contribs.org/enter_bug.cgi bugzilla]
 +
et sélectionnez le composant smeserver-fail2ban ou utilisez {{BugzillaFileBug|product=SME%20Contribs|component=smeserver-fail2ban|title=ce lien}}.
   −
=== Bugs ===
+
Aperçu ci-dessous des problèmes actuels de cette contribution {{#bugzilla:columns=id,product,version,status,summary|sort=id|order=desc|component=smeserver-fail2ban|noresultsmessage=No open bugs found.}}
S'il vous plaît, rapportez les bugs dans la section SME-Contribs dans [http://bugs.contribs.org/enter_bug.cgi bugzilla]
+
==Journal des modifications==
et sélectionnez le composant smeserver-fail2ban ou utilisez {{BugzillaFileBug|product=SME%20Contribs|component=smeserver-fail2ban|title=ce lien}}.
+
Seules les versions publiées dans smecontribs sont répertoriées ici.
 +
{{ #smechangelog: smeserver-fail2ban}}
   −
[[Category: Contrib/fr]]
+
[[Category: Contrib/fr]][[Category: Security]]
3,054

edits

Navigation menu