Outils pour utilisateurs

Outils du site


ssh-fail2ban

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
ssh-fail2ban [2019/07/04 18:38] crustssh-fail2ban [2020/12/30 17:30] (Version actuelle) – [6.1. Avoir un rapport des IP bannis] cyrille
Ligne 31: Ligne 31:
 En local, rien de plus à faire. Reste maintenant à rediriger le port 22 de votre box au port 6789 de votre serveur/PC. En local, rien de plus à faire. Reste maintenant à rediriger le port 22 de votre box au port 6789 de votre serveur/PC.
 Pour cela, section administration, et modifier la règle comme dans l'image ci-dessous (pour une livebox pro, mais sensiblement identique pour toutes les box). Pour cela, section administration, et modifier la règle comme dans l'image ci-dessous (pour une livebox pro, mais sensiblement identique pour toutes les box).
 +Supprimer la règle SSH si existante, demander une nouvelle règle avec les nouveaux numéros de ports.
  
 +
 +{{:2019_07_05_16_01_00_hnm.png?400|}}
  
 Dès lors se connecter depuis l'extérieur Dès lors se connecter depuis l'extérieur
Ligne 110: Ligne 113:
  
 Pendant donc une journée, cette IP sera donc rejetée automatiquement. Pendant donc une journée, cette IP sera donc rejetée automatiquement.
 +
 +<WRAP center round tip 60%>
 +Mettez votre IP dans ignoreip !
 +</WRAP>
 +
 +
 Bien sûr, il est conseillé, si vous avez une IP fixe, d'ignorer cette règle sur cette IP (afin de vous éviter de mauvaises surprises (vous ne pourrez plus vous connecter si vous bous plantez...)) et d'ajouter cette directive dans la section [DEFAULT]. Bien sûr, il est conseillé, si vous avez une IP fixe, d'ignorer cette règle sur cette IP (afin de vous éviter de mauvaises surprises (vous ne pourrez plus vous connecter si vous bous plantez...)) et d'ajouter cette directive dans la section [DEFAULT].
 Faire de même bien sûr avec la boucle locale : 127.0.0.1 Faire de même bien sûr avec la boucle locale : 127.0.0.1
Ligne 166: Ligne 175:
 Voici un petit script à position sur un **cron** (ici envoyer 2 fois par jour) donnant le statut des jails. Voici un petit script à position sur un **cron** (ici envoyer 2 fois par jour) donnant le statut des jails.
  
-<code bash># Rapport de fail2ban + 
-15 6,19 * * * /home/admin/scripts/fail2ban-status-ban.sh</code>+ 
 +<code bash> 
 +sudo crontab -l 
 +[...] 
 +# Rapport de fail2ban 
 +15 6,19 * * * /home/TOTO/scripts/fail2ban-status-ban.sh</code>
  
  
Ligne 209: Ligne 223:
 echo "$MSG" | mail -s "$(echo $DATE) : Connexion de $(echo $USER) sur $(hostname -s)" $DEST echo "$MSG" | mail -s "$(echo $DATE) : Connexion de $(echo $USER) sur $(hostname -s)" $DEST
 </code> </code>
 +<WRAP center round important 60%>
 Ce script doit appartenir à root mais être accessible en lecture à tous. Ce script doit appartenir à root mais être accessible en lecture à tous.
 +</WRAP>
 +
 <code bash>serveurProliant@serveur# ls -la <code bash>serveurProliant@serveur# ls -la
 ... ...
Ligne 219: Ligne 236:
  
 On devra créer 3 fichiers (les deux derniers sont positionnés dans un répertoire /home/TOTO/scripts/ ; à adapter à votre configuration) On devra créer 3 fichiers (les deux derniers sont positionnés dans un répertoire /home/TOTO/scripts/ ; à adapter à votre configuration)
-/etc/ssh/sshrc +  * /etc/ssh/sshrc 
-/home/TOTO/scripts/send-notification-data.txt +  /home/TOTO/scripts/send-notification-data.txt 
-/home/TOTO/scripts/send-notification.sh+  /home/TOTO/scripts/send-notification.sh
  
-Pour des raisons de sécurité, le fichier send-notification-data.txt ne devra être lisible que par root, il contient les données d'identification free et les données nécessaires au script. +Pour des raisons de sécurité, le fichier **send-notification-data.txt** ne devra être lisible que par root, il contient les données d'identification free et les données nécessaires au script. 
-Si vous ne souhaitez pas recevoir de notification depuis une ou des IP(s) précise(s), mettre cela dans la variable $IP_AUTHORIZED. La variable $DEST contient le mail de notification.+Si vous ne souhaitez pas recevoir de notification depuis une ou des IP(s) précise(s), mettre cela dans la variable **$IP_AUTHORIZED**. La variable **$DEST** contient le mail de notification.
  
  
  
  
-serveurProliant@serveur#  cat send-notification-data.txt +<code bash>serveurProliant@serveur#  cat send-notification-data.txt 
 ## ##
 ## IP A AUTORISER SANS ALERTE SMS ## IP A AUTORISER SANS ALERTE SMS
Ligne 257: Ligne 274:
  
 # Nom du destinaire de la notification  par mail # Nom du destinaire de la notification  par mail
-  DEST=mon.mail@domaine.com+  DEST=mon.mail@domaine.com</code>
  
-Adpater les droits, très important :  +<WRAP center round important 60%> 
-serveurProliant@serveur# chmod 600 send-notification-data.txt+Adapter les droits, très important :  
 +</WRAP>
  
-serveurProliant@serveur# ls -la+<code bash>serveurProliant@serveur# chmod 600 send-notification-data.txt</code> 
 + 
 +<code bash>serveurProliant@serveur# ls -la
 ... ...
 -rw------- 1 admin 1007  644 Jul  4 10:57 send-notification-data.txt -rw------- 1 admin 1007  644 Jul  4 10:57 send-notification-data.txt
 On incluera ce fichier dans le script bash afin qu'on ne puisse pas lire son contenu. On incluera ce fichier dans le script bash afin qu'on ne puisse pas lire son contenu.
 +</code>
 Enfin le script Enfin le script
  
 La fonction d'envoi via l'API de free est à l'origine ici : La fonction d'envoi via l'API de free est à l'origine ici :
-https://github.com/C-Duv/freemobile-smsapi-client +[[ https://github.com/C-Duv/freemobile-smsapi-client [ DUVERGIER Claude (http://claude.duvergier.fr) ] ]]
-[ DUVERGIER Claude (http://claude.duvergier.fr) ]+
 Modifiée pour les besoins. Modifiée pour les besoins.
  
  
-serveurProliant@serveur# cat send-notification.sh+<code bash>serveurProliant@serveur# cat send-notification.sh
 #!/bin/sh #!/bin/sh
  
Ligne 461: Ligne 480:
 ## ENVOI SMS / MAIL ## ENVOI SMS / MAIL
 ## ##
 +
 +
 +# QUOI QU'IL EN SOIT ON ENVOIE UN MAIL
 +  echo "$MSG" | mail -s "$(echo $DATE) : Connexion de $(echo $USER) sur $(hostname -s)" $DEST
 +
 +# GESTION DES IP AUTORISEES / SMS
   if echo "$IP" | egrep $IP_AUTHORIZED ; then   if echo "$IP" | egrep $IP_AUTHORIZED ; then
     echo "MATCH NO SEND SMS";     echo "MATCH NO SEND SMS";
Ligne 467: Ligne 492:
   fi   fi
  
 +</code>
  
-QUOI QU'IL EN SOIT ON ENVOIE UN MAIL +Enfin on colle tu cela dans le script de connexion ssh 
-  echo "$MSG" | mail -s "$(echo $DATE) : Connexion de $(echo $USER) sur $(hostname -s)" $DEST +<code bash> 
 +serveurProliant@serveur$ cat /etc/ssh/sshrc  
 +#!/bin/sh 
 +. /home/TOTO/scripts/send-notification.sh > /dev/null</code>
  
 Après tout cela, vous devriez à a voir quelque chose qui tient la route... Après tout cela, vous devriez à a voir quelque chose qui tient la route...
 Par contre, un iptable en toile de fond reste bien sûr nécessaire.... Par contre, un iptable en toile de fond reste bien sûr nécessaire....
ssh-fail2ban.1562258319.txt.gz · Dernière modification : 2019/07/17 19:24 (modification externe)