Le bloc Fail2ban avec IPtables ne fonctionne pas sur Debian Lenny. [port ssh déplacé]

11

J'ai récemment décidé de faire une maintenance de sécurité. J'ai vu mes journaux et il y a eu quelques tentatives contre mon serveur SSH. Au début, j'ai éloigné le port SSH du port par défaut 22. Après cela, j'ai lu quelque chose sur Fail2ban , BlockHosts et DenyHosts .

J'ai jeté un œil au premier: il est simple à configurer, tout est compréhensible; mais quand j'ai essayé de "sonder sa protection", les tests ont échoué . Tout semble bien se passer, mais je peux toujours accéder au serveur.

J'ai également testé les IPtables: # iptables -I INPUT -j DROP- après cela, ma connexion SSH a été perdue (donc, ce que je voulais). Ensuite # iptables -I INPUT -s 84.x.y.z -j DROP, ce qui a fonctionné aussi.

Mais, quelles règles le Fail2ban a-t-il appliquées, cela ne fonctionne pas: ( $ sudo iptables -L)

Chain INPUT (policy ACCEPT)
target     prot opt source               destination        
fail2ban-apache  tcp  --  anywhere             anywhere            multiport dports www,https
fail2ban-ssh  tcp  --  anywhere             anywhere            multiport dports ssh
fail2ban-ssh-ddos  tcp  --  anywhere             anywhere            multiport dports ssh

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination        

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination        

Chain fail2ban-apache (1 references)
target     prot opt source               destination        
RETURN     all  --  anywhere             anywhere            

Chain fail2ban-ssh (1 references)
target     prot opt source               destination        
DROP       all  --  84.x.y.z           anywhere            
RETURN     all  --  anywhere             anywhere            

Chain fail2ban-ssh-ddos (1 references)
target     prot opt source               destination        
RETURN     all  --  anywhere             anywhere

Modules du noyau chargés: ( $ lsmod | grep ip)

iptable_nat             4680  0
nf_nat                 15576  1 iptable_nat
nf_conntrack_ipv4      12268  3 iptable_nat,nf_nat
nf_conntrack           55540  4 xt_state,iptable_nat,nf_nat,nf_conntrack_ipv4
xt_multiport            2816  2
iptable_filter          2624  1
ip_tables              10160  2 iptable_nat,iptable_filter
x_tables               13284  5 xt_state,xt_tcpudp,iptable_nat,xt_multiport,ip_tables
ipv6                  235396  24

Versions:

  • Debian Lenny 5.06, noyau 2.6.26-2-686
  • IPtables 1.4.2-6
  • Fail2ban 0.8.3-2sid1
  • openssh-server 1: 5.1p1-5

Test n ° 1 étape par étape:

  1. Configurez Fail2ban à faible bantime. 60 sec. Rechargez ensuite.
  2. Essayez de vous connecter (avec SSH), directement avec un mauvais mot de passe.
  3. Pour la 6ème fois, entrez le bon mot de passe (le nombre maximal d'essais n'est que de 4 ici). Je me suis connecté. Je peux également accéder à la page Web hébergée par ce serveur.
  4. iptables -Lm'a montré comme son mentionné ci-dessus. L'interdiction était donc active, lorsque je me suis connecté, a commandé mon serveur.

Test n ° 2 étape par étape:

  1. Arrêtez Fail2ban. Créez un atscript pour supprimer à l'avenir la règle d'interdiction écrite ci-dessous. ( iptables -D INPUT 1)
  2. Créez une règle d'interdiction: iptables -I INPUT 1 -s 84.x.y.z -j DROP
  3. Je n'ai pas pu taper autre chose, la connexion SSH est inutilisable. Je n'ai pas pu accéder à la page Web. Donc, ce que je voulais d'iptables.
  4. Après le atscript, je peux accéder à mon serveur.

Je ne vois pas la solution, que dois-je faire pour que mon interdiction IPtables (effectuée par Fail2ban) fonctionne?

antivirtel
la source
Question modifiée! Des idées?
antivirtel

Réponses:

8

J'ai trouvé le problème, ce que j'ai fait, avant d'installer fail2ban. Désolé pour votre temps.

Pour des raisons de sécurité, j'ai éloigné mon sshd du port 22 à un autre. La référence en iptablesfait référence au port 22 uniquement. Je pensais que c'est une variable, ce qui fait toujours référence au port sshd actuel. Mais NON .

La solution exacte (si vous avez éloigné votre démon de son port d'origine):

  1. Ouvrez jail.local (ou .conf).
  2. Trouvez votre service (entre accolades).
  3. Fixez la portsection à tous . Exemple:port = all
  4. Ajoutez ou modifiez une banactionligne existante après la ligne de port, avec la valeur iptables-allports . Exemple: banaction = iptables-allports.
  5. Redémarrez le démon. Exemple: # service fail2ban restart.

Je n'ai pas pu trouver de solution pour changer la port sshdirective, ou y écrire un nombre. Si vous avez une solution non tous ports, je l'écouterai!

antivirtel
la source
1
Tout ce que vous devez faire est de fournir le numéro de port au lieu du nom.
Julian Knight
Notez également que votre nom iptable doit avoir moins de 32 caractères pour être ajouté avec succès.
Adrian Lopez
2

J'ai eu le même problème avec fail2ban ne pas interdire après avoir déplacé mon serveur ssh vers le port non standard 12345 (disons).

Pour que fail2ban produise les bonnes règles après un certain nombre de tentatives d'authentification infructueuses, j'ai édité /etc/fail2ban/jail.conf.

port = ssh 

dans

port = 12345

Je suppose qu'une approche similaire fonctionnerait pour d'autres services sur des ports non standard.

John
la source
0

Les paramètres de fail2ban sont disponibles /etc/fail2ban/jail.local. Sur une installation par défaut, je ne sais pas si c'est là. Ensuite, vous copiez jail.confvers jail.local, vous avez donc les deux fichiers /etc/fail2ban/. Editez jail.local, allez sur la ligne contenant [ssh]et activez-la comme ceci:

enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 6

Après cela, redémarrez fail2ban:

sudo /etc/init.d/fail2ban restart

Il est possible que cela fonctionne maintenant, je l'ai configuré comme ça et ça fonctionne.

enedene
la source
Je pense que vous n'avez pas compris ma question! Fail2ban fait ce que je veux: regarder les journaux et interdire les attaquants. Mais cette interdiction, que devraient faire IPtables, ne fonctionne pas. Je peux TOUJOURS ACCÉDER au serveur, avec la configuration de règle mentionnée ci-dessus.
antivirtel
Désolé, j'étais pressé, donc j'ai mal compris et comme j'avais le même problème, que j'ai résolu en ajoutant jail.local, j'ai pensé que ça aiderait. Malheureusement, si vous avez tout réglé correctement, je ne sais pas quel est le problème, mais j'espère que quelqu'un d'autre le fera.
enedene
0

Vous avez répertorié «Fail2ban 0.8.3-2sid1» comme étant installé. Il s'agit d'une configuration non prise en charge. Les packages Sid ne doivent pas être installés dans un environnement stable.

J'exécute Debian 6 (Squeeze), qui a été mis à niveau depuis Lenny, sur une machine virtuelle spécifiquement en tant que serveur SSH pour ma maison. J'utilise également fail2ban. J'ai effectué votre test # 1 et tout a fonctionné comme il se doit. Je n'ai pas réussi à me connecter pendant le nombre maximal de tentatives, puis mes demandes de connexion ont été abandonnées pendant 60 secondes.

Ma liste de versions:

  • / etc / debian_version = 6.0.1
  • fail2ban = 08..4-3
  • iptables = 1.4.8
  • openssh-server = 1: 5.5p1-6
James Sumners
la source
Non, j'ai le bon package. packages.debian.org/search?suite=lenny&keywords=fail2ban
antivirtel
Dans ce cas, je recommande de faire une mise à niveau dist.
James Sumners
okok, ce n'est pas trop facile, mais je vais y arriver en quelque sorte ... - peut-être une réinstallation propre
antivirtel
sed -i 's/lenny/squeeze/' /etc/apt/sources.list && apt-get update && apt-get dist-upgrade. C'est assez simple.
James Sumners
oui, mais y a-t-il une chance de ne pas démarrer la prochaine fois ... les notes de version ont écrit, ce nouveau kenel + nouveau système udev ... - a-t-il réussi avec votre machine?
antivirtel