13 liens privés
🩺Symptômes
- Impossible d'aller sur mon site.
- Voire : impossible d'ouvrir une session ssh vers le serveur.
- Toujours des messages de refus.
❓Raison
Je l'ignore. Je n'ai pas encore compris pourquoi. 🙁
Tout ce que je sais, c'est que fail2ban a banni mon ip.
🪢Liens
- Quelle est sont mes IP (IPv4 & IPv6) ? : je vais avoir besoin de connaître mon IP pour la débannir.
- Fail2ban : comment débannir une adresse IP
💉Remède
2 possibilités
Cas 1 : je peux ouvrir une connexion ssh
Se connecter en root puis à l'aide des commandes suivantes :
tail -20 /var/log/fail2ban.log
➡️ pour trouver les dernières ip bannies dans quels jails
grep " Ban " /var/log/fail2ban.log
➡️ pour trouver toutes les ip bannies dans quels jails
On peut débannir sa propre IP avec la commande :
fail2ban-client set <JAIL> unbanip <IP>
Ça fonctionne aussi bien avec les IPv4 et IPv6.
Ex. :
- Si mon IP est 1.2.3.4
tail -20 /var/log/fail2ban.log
me renvoie entre autres lignes :2024-09-01 14:00:56,063 fail2ban.actions [184064]: NOTICE [nextcloud] Ban 1.2.3.4
- C'est bien mon IP, et le jail est nextcloud (entre les crochets)
- Je peux débannir l'IP avec
fail2ban-client set nextcloud unbanip 1.2.3.4
💡Pour éviter que l'IP ne soit rebannie trop rapidement (et si je ne suis pas sur un IP tournante), il est possible de la mettre sur liste blanche avec la commande : fail2ban-client set <JAIL> addignoreip <IP>
Cas 2 : Même la connexion ssh ne répond plus 😭
⚠️☠️La manipulation décrite ici consiste à couper temporairement le service fail2ban ! Il faut agir vite pour le réactiver dès que possible et limiter la surface d'attaque.
Lancer le client tor browser pour passer par le réseau tor et utiliser une autre ip. Aller sur l'interface d'administration de mon site puis dans le menu Outils > Services > fail2ban, cliquer sur le bouton d'arrêt du service.
Il est maintenant possible d'ouvrir la connexion ssh qui doit être débloquée. Sinon, je n'ai pas la solution, dans ce cas, il faut relancer le service fail2ban et continuer à chercher une autre façon de débloquer la situation.
Le service étant arrêté, la commande fail2ban-client
ne fonctionne plus. Il faut agir directement dans les fichiers de configuration.
Ouvrir le fichier /etc/fail2ban/jail.conf
avec les droits d'admin et chercher la ligne commençant par ignoreip
. Compléter ladite ligne, en y ajoutant ses IP v4 et v6, séparées par des espaces ou des virgules. Puis quitter le fichier en l'enregistrant (évidemment 😇).
Ouvrir le fichier (le créer s'il n'existe pas) /etc/fail2ban/jail.d/yunohost-whitelist.conf
et y ajouter/compléter les lignes suivantes :
[DEFAULT]
ignoreip = 127.0.0.1/8 XXX.XXX.XXX.XXX #<= l'adresse IP (on peut en mettre plusieurs, séparées par un espace et/ou une virgule) que vous voulez passer en liste blanche / whitelist
On peut/doit relancer, sur l'interface d'administration, le service fail2ban et tester le bon fonctionnement des accès : fail2ban-client reload
.
4 outils pour lancer des commandes sur des machines distantes, sans pâtir par les déconnexions dues au timeout sous SSH.
- screen
- tmux
- nohup
- disown
Une petite modif à faire côté client ssh et côté serveur Apache, et pour faire passer du ssh directement dans une connexion https. Pratique dans les endroits où ils ne laissent sortir que https.
Un moyen de tester en local la passphrase de sa clé privée avant de la taper pour de vrai sur le serveur.
ssh-keygen -y -f private_key
si c’est ok, il t’affiche le hash correspondant.
si c’est pas bon tu obtiendras le message » incorrect passphrase supplied to decrypt private key«
Un outil lisant la config ssh d'un poste client pour trouver les connexions enregistrées.
Pour ouvrir une connexion ssh directement sur un répertoire donné, if aut utiliser la commande suivante :
ssh -t xxx.xxx.xxx.xxx "cd /directory_wanted ; bash --login"
-t
Force l'allocation d'un pseudo-terminal. Utilisé pour exécuter des programmes en mode écran sur la machine distante. En particulier, c'est fort utile pour les applications qui implémentent des services de menu. En ajoutant des options -t on force l'allocation de terminaux, même si ssh n'a pas de terminal local.
Le ; bash
permet de garder la connexion ouverte pour passer d'autres commandes en interactif.
Le ; bash --login
permet d'utiliser ma config bash.
La même chose peut être automatisée dans le fichier de configuration ~/.ssh/config
, en ajoutant les lignes suivantes sous le Host ciblé :
RemoteCommand cd /chemin/vers/le/répertoire/voulu && exec bash --login
RequestTTY yes