el_gringo a écrit : 04 déc. 2019, 14:34
Fail2ban est en effet une protection contre les attaques.
Je l'utilise pour SSH mais j'ai bien compris maintenant que le mieux était d'ouvrir le port 22 uniquement quand j'en ai besoin.
Je le ferme et l'ouvre si besoin en passant par ma box internet.
Le problème étant qu'il faut, idéalement, pouvoir le faire de dehors quand on en a besoin. J'espère que tu n'as pas ouvert l'administration distante de la box pour ce faire, ce serait vraiment troquer la peste pour le choléra!
Sur une machine dont on maîtrise la configuration (pas le cas d'une box), il y a la possibilité d'ouvrir un port à la demande. Cela s'appelle le port knocking: Dans sa version la plus simple, c'est une séquence de connexions TCP ou UDP sur des numéros de ports déterminés qui ouvrira le port de son choix, juste pour l'IP demandeuse qui aura fait la bonne séquence.
Il est possible de se choisir une suite facile à retenir, genre 1234 5678 9876, qui va provoquer l'ouverture du 22.
Côté box, on veille à avoir 1234 5678 9876 et 22 ouverts (+443 pour le HTTPS, non concerné par cette manip) vers son PI. Sur le PI on active le firewall (genre UFW, en mode "default deny" et ne laissant passer par défaut que le 443 "ufw allow from any to any port 443"), installe un démon type knockd et on le paramètre. Ici cela donnerait un truc du genre (fichier /etc/knockd.conf):
Code : Tout sélectionner
[options]
logfile = /tmp/knockd.log
[openCloseSSH]
sequence = 1234,5678,9876
seq_timeout = 15
# tcpflags = syn,ack
start_command = ufw allow from %IP% to any port 22
cmd_timeout = 30
stop_command = ufw delete allow from %IP% to any port 22
Sur réception par le PI de la bonne séquence (envoyé par un client knock), on ouvre le port 22 pour 30s. Cela donne 30s pour se connecter derrière en ssh (une fois la connection établie, le firewall peut refermer le port, le conntrack est là pour la conserver tant qu'elle reste établie).
Attention, si on veut utiliser le http de son LAN, à avoir une règle pour lui seul, genre ""ufw allow from 192.168.1.0/24 to any port 8080". En mode "default deny", tout ce qui n'est pas explicitement autorisé à entrer reste dehors!
Pour ma part, je préfère un combo knockd (+fail2ban, qui se retrouve alors en seconde ligne de défense au cas ou qqun sniffe ma séquence sur un réseau ouvert même si peu probable) et ssh restant par mot de passe: Se balader avec sa clef ssh est contraignant (une clef USB à avoir sur soi avec sa clef publique) si on veut pouvoir au besoin se connecter de machines pas à soi/avec leur ssh non configuré avec sa clef.
Je retiens mieux une séquence de ports qu'une clef ssh et installer la partie client ne requiert aucun droit particulier (choisir des ports > 1024 pour la séquence de knock, afin de ne pas avoir de pb de droits à l'utilisation côté client).