Comment bloquer toutes les tentatives de connexion root en utilisant denyhosts et ou fail2ban?

8

Je bloque actuellement toutes les connexions ssh en utilisant root. Mais je voulais aller plus loin et bloquer l'adresse IP du client qui a essayé de se connecter en tant que root. J'ai actuellement la configuration et le fonctionnement de denyhosts et fail2ban, puis-je utiliser denyhosts et ou fail2ban pour bloquer les adresses IP de ceux qui essaient de se connecter en tant que root?

samwell
la source

Réponses:

2

Selon votre distribution, modifiez /etc/fail2ban/jail.conf Mettre à jour la [ssh]section pour afficher quelque chose comme ceci

[ssh]

enabled = true
port    = ssh
filter  = sshd
logpath  = /var/log/auth.log
bantime = 3600
maxretry = 3

Modifiez les paramètres selon vos besoins. Il ne bloquera pas spécifiquement root, mais chaque tentative qui échouera. Soyez prudent avec maxretryet bantime. Si vous échouez avec votre propre mot de passe, alors qu'il est maxtretryréglé sur bas, vous vous bloquez pour le bantime. Redémarrez fail2ban.

Je n'essaierais pas de bloquer l'IP pour toujours car de nombreuses tentatives proviennent d'IP dynamiques qui pourraient bloquer certains utilisateurs légitimes à un moment ultérieur.

(Certaines distributions offrent un fichier jail.options pour vos modifications. C'est l'endroit préféré pour mettre vos modifications car il ne devrait pas être affecté par les mises à jour écrasant la conf.)

Chris
la source
4
bonne info, mais je pense qu'il voulait savoir comment bloquer toutes les connexions en utilisant l'utilisateur root ... ne peut pas voir cela dans votre réponse. vous l'avez peut-être oublié.
Mose
17

Copiez ce code dans un nouveau fichier /etc/fail2ban/filter.d/sshd-root.conf:

[INCLUDES]

# Read common prefixes. If any customizations available -- read them from
# common.local
before = common.conf

[Definition]

_daemon = sshd

failregex = ^%(__prefix_line)sFailed (?:password|publickey) for root from <HOST>(?: port \d*)?(?: ssh\d*)?$

ignoreregex = 

Sachez que vous devrez peut-être modifier le failregex pour identifier avec précision les tentatives de connexion root échouées - utilisez:

fail2ban-regex /var/log/auth.log /etc/fail2ban/filter.d/sshd-root.conf

pour tester qu'il identifie les entrées de journal correctes.

Ensuite, vous devez modifier votre jail.local pour utiliser le nouveau filtre - ajoutez quelque chose comme:

[ssh]

enabled  = true
port     = 1:65535
filter   = sshd-root
logpath  = /var/log/auth.log
bantime  = 604800
maxretry = 3

Évidemment, vous devez ajuster ces valeurs en fonction de vos besoins. Les paramètres ci-dessus supprimeront tous les paquets entrants de l'adresse IP incriminée après trois tentatives de connexion en tant que root, et relâcheront à nouveau l'adresse IP après une semaine.

ChrisG
la source
1
Cela mérite vraiment d'être la réponse acceptée, car elle répond en fait à la question.
peelman
C'est certainement la bonne réponse. Il est préférable de désactiver les connexions root dans la configuration sshd, puis définissez maxretry sur 1 dans jail.conf.
anteatersa
1

Puisque la valeur par défaut a /etc/fail2ban/filter.d/sshd.confdéjà une expression régulière pour AllowUsers et DenyUsers ...

...
^%(__prefix_line)sUser .+ from <HOST> not allowed because not listed in AllowUsers\s*$
^%(__prefix_line)sUser .+ from <HOST> not allowed because listed in DenyUsers\s*$
...

Ce qui suit:

  • Autoriser les connexions exampleusernamedepuis des IP externes
  • Et rootou toutes les connexions sur le réseau local (192.168.0. *)

La ligne `/ etc / ssh / sshd_config ':

AllowUsers exampleusername *@192.168.0.* *@localhost *@127.0.0.1

Et dans /etc/fail2ban/jail.conf:

ignoreip = 127.0.0.1/8 192.168.0.2/255
...
...
[ssh]

enabled  = true
port     = ssh
filter   = sshd
logpath  = /var/log/auth.log
maxretry = 1
findtime = 99999999 
bantime  = 99999999
jmunsch
la source
0

Comment avez-vous bloqué les connexions ssh? / bin / false ou l'option sshd_config DenyUsers?

Je ne peux pas penser à une réponse de ma tête, mais l'IIRC denyhosts analyse le fichier journal, alors voyez simplement si vous obtenez une entrée ayant échoué dans le fichier journal après que quelqu'un essaie de se connecter pour rooter avec désactivé

MitziMeow
la source
2
J'ai édité le fichier de configuration ssh /etc/ssh/sshd_config, et suis passé PermitRootLoginde oui à non. Je ne sais pas si cela est pertinent, mais j'ai rssh installé pour autoriser uniquement certains utilisateurs à se connecter en utilisant sftp mais pas autoriser ssh.
samwell
avez-vous vérifié les fichiers journaux ssh si la tentative de connexion de l'utilisateur a échoué?
MitziMeow
Oui, je peux voir qu'il y a beaucoup de tentatives de connexion utilisateur échouées par de nombreuses adresses IP différentes, que je ne reconnais pas.
samwell
alors les hôtes privés devraient fonctionner
MitziMeow