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:
- Configurez Fail2ban à faible bantime. 60 sec. Rechargez ensuite.
- Essayez de vous connecter (avec SSH), directement avec un mauvais mot de passe.
- 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.
iptables -L
m'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:
- Arrêtez Fail2ban. Créez un
at
script pour supprimer à l'avenir la règle d'interdiction écrite ci-dessous. (iptables -D INPUT 1
) - Créez une règle d'interdiction:
iptables -I INPUT 1 -s 84.x.y.z -j DROP
- 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.
- Après le
at
script, 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?
Réponses:
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
iptables
fait 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):
port
section à tous . Exemple:port = all
banaction
ligne existante après la ligne de port, avec la valeur iptables-allports . Exemple:banaction = iptables-allports
.# service fail2ban restart
.Je n'ai pas pu trouver de solution pour changer la
port ssh
directive, ou y écrire un nombre. Si vous avez une solution non tous ports, je l'écouterai!la source
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
.dans
Je suppose qu'une approche similaire fonctionnerait pour d'autres services sur des ports non standard.
la source
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 copiezjail.conf
versjail.local
, vous avez donc les deux fichiers/etc/fail2ban/
. Editezjail.local
, allez sur la ligne contenant[ssh]
et activez-la comme ceci:Après cela, redémarrez fail2ban:
Il est possible que cela fonctionne maintenant, je l'ai configuré comme ça et ça fonctionne.
la source
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:
la source
sed -i 's/lenny/squeeze/' /etc/apt/sources.list && apt-get update && apt-get dist-upgrade
. C'est assez simple.