4 votes

Comment bannir les IPs qui tentent de se connecter en tant que root avec ssh

J'ai déjà bloqué la connexion en tant que root avec ssh, donc je sais que toute tentative de le faire est malveillante. Je sais qu'ils n'y parviendront pas (sshd ne le permet pas), mais je voudrais néanmoins bannir immédiatement l'IP en question. Comment dois-je procéder ?

Je suis sous Gentoo Linux, et j'ai déjà fail2ban. Je ne veux pas bannir tout le monde pour une tentative de connexion ratée, donc le simple fait de définir la tentative de fail2ban à 1 n'est pas une option. Root est le seul compte sur lequel je souhaite appliquer cette interdiction immédiate.

0 votes

Pourquoi avez-vous fait ça ? Si root ne peut pas se connecter, il n'y a aucun avantage à bloquer les IP qui essaient.

2 votes

@AlexHolst Ces IP font très certainement partie de réseaux de robots, et bien qu'ils puissent arrêter d'essayer SSH, ils peuvent passer à un autre vecteur d'attaque. Dans tous les cas, une fois que vous les avez identifiés, vous pouvez aussi bien les bannir de manière permanente.

6voto

frameworkninja Points 628

J'ai mis en place deux règles Fail2Ban différentes :

  1. S'ils essaient un nom d'utilisateur invalide, ils sont bannis du premier coup, de façon permanente. Je n'ai pas beaucoup de personnes qui se connectent de cette manière et aucune d'entre elles n'a jamais été bannie de cette façon ; mais cela peut être un problème de support si vous avez beaucoup de personnes qui se connectent. Root n'est pas un login ssh valide sur mes systèmes.

    Je suis sur un système FreeBSD, donc vous devrez peut-être modifier un peu cette règle. Créez un fichier ssh-invaliduser.local dans le répertoire filter.d :

    failregex = ^%(__prefix_line)s[iI](?:llegal|nvalid) user .* from <HOST>\s*$

    Définissez les options de cette règle comme d'habitude dans l'onglet jail.local fichier.

  2. La deuxième règle bloque les tentatives qui se sont trompées de mot de passe 10 fois pendant 10 minutes. Personne ne va s'introduire à la vitesse moyenne d'un mot de passe par minute.

0 votes

En fait, je me sens un peu bête de ne pas l'avoir inventé moi-même. Deux ensembles de règles, bien sûr. Merci, Chris.

0voto

ripat Points 173

Si vous utilisez la sortie standard du journal sshd et que votre système utilise le wrapper tcp tcpd essayez ce qui suit :

Ajoutez d'abord cette ligne dans /etc/hosts.deny :

sshd: /tmp/root_ban.list

Ensuite, programmez cron pour exécuter la commande suivante :

awk '/invalid user root from/{print $13}' /var/log/ssh_auth.log | sort -u > /tmp/root_ban.list

Si la sortie de la partie awk de la commande ne fonctionne pas, ajustez la partie condition : utilisateur root invalide de pour correspondre à vos journaux sshd. Vous devrez peut-être aussi modifier le numéro du champ capturé par awk. Dans mes journaux, l'adresse IP est en 13ème position ($13).

Et, pour éviter de vous bloquer, vous pouvez ajouter des ip de confiance dans le fichier /etc/hosts.allow :

sshd: 123.123.123.123 222.222.222.222

0 votes

Mettre en place des tâches de collecte cron quand il a Fail2Ban en marche semble terriblement redondant.

0 votes

Quelqu'un a-t-il essayé ?

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X