Sur Gna!, nous fournissons pas mal de services basés sur SSH.
Or, nous constations pas mal de trucs pénibles ingérables avec SSH seul (multiples tentatives de connexion sur des dicos de login en quelques secondes), qui en soit ne posais pas vraiment problème mais bouffait petit à petit pas mal de ressources.
Ben là solution magique est xinetd. Nous utilisions déjà xinetd pour quasiment tout le reste (multiples avantages : limite du nombre de connexion par IP, limite du nombre de connexion par seconde, fermeture de l'accès en cas de charge trop élévée, différente politiques en fonction de l'émetteur, banissement par /etc/hosts.deny).
Théoriquement, il est dit qu'utilise SSH par xinetd fait perdre en perf plutôt que l'utiliser directement. Peut-être. Mais depuis l'autre jour, tout passe par xinetd et la charge est divisée par deux, réellement. Tout simplement parce que nos serveurs sont devenus suffisement connus pour que certains pénibles deviennent suffisement pénibles et que des règles de xinetd soit l'outil idéal pour leur dire au revoir.
Mis à part ça, pour ceux qui font tourner un serveur de courriel public, vous pouvez jetter un oeil à https://gna.org/p/seeyoulater que j'ai écris l'autre jour pour éviter que certains pénibles dont l'IP est bloquée via des DNSBL fiables, ou qui envoie des courriels vers des adresses qui ne correspondent à rien (dans les archives de gna, nous publiant les message-id des courriels, c'est pratique pour faire des recherches avec google par message-id : ça produit plein d'adresse qui ne correspondent à rien telles que 213131313135@subversion.gna.org, dont les spambots rafolent) repointent leur museau trop souvent dans les heures qui suivent (multipliant inutilement les requêtes vers les DNSBL), en mettant les IP logguées sous la forme ++BAN:IP++ dans hosts.deny pour un temps défini.
L'outil est prévu pour fonctionner avec Exim mais devrait fonctionne avec n'importe quel serveur.
Tout ça pour dire que si vous faites tourner des serveurs publics, tournez vous vers xinetd, vous allez gagner du temps !
# Méthode avec netfilter
Posté par antonus . Évalué à 3.
[^] # Re: Méthode avec netfilter
Posté par TuxPierre . Évalué à 6.
Sinon, il faut noter l'existence d'un petit utilitaire fort sympatique : fail2ban. Permet de bannir pendant un certain temps et apres un certain nombre de tentatives... Et il ne concerne pas que ssh.
[^] # Re: Méthode avec netfilter
Posté par Antoine Jacquet (site web personnel) . Évalué à 1.
Merci !
[^] # Re: Méthode avec netfilter
Posté par mathieu mathieu (site web personnel) . Évalué à 1.
cela insere au bout de 5 echecs dans une table avec la règle -j drop!
Le blocaque est annulé au bout d'un temps paramétrable
Couplé avec portsentry, c'est très efficace!
[^] # Re: Méthode avec netfilter
Posté par Adrien BUSTANY (site web personnel) . Évalué à 1.
# Pour les BSDistes
Posté par gaston . Évalué à 3.
http://beta.gcu.info/1727/2000/01/01/Bloquer-les-attaques-br(...)
[^] # Re: Pour les BSDistes
Posté par TuxPierre . Évalué à 3.
Cependant dans l'exemple donne dans ton lien, l'adresse IP est stockée dans une table en memoire et du coup toute tentative de connexion venant de cette IP est systematiquement refusee.. Donc grosso modo, la machine devient "invisible" pour cette IP.
Mais si on ne rajoute pas un petit script pour purger de temps en temps cette table, l'adresse IP va y rester "definitivement" (sauf en cas de reboot ou de flush manuel bien evidemment).
[^] # Re: Pour les BSDistes
Posté par Nicolas Bernard (site web personnel) . Évalué à 2.
Cf. <http://www.benzedrine.cx/pf.html >
[^] # Re: Pour les Linuxiens
Posté par Florent Bayle (site web personnel) . Évalué à 7.
Si on a plus de 4 tentatives de connexions en moins d'une minute, on bloque l'ip pendant une minute.
[^] # Re: Pour les Linuxiens
Posté par Olivier Jeannet . Évalué à 2.
Très intéressant, je suis preneur, mon serveur se prend des attaques régulièrement. Je fais le DROP à la main avec une seule règle, quand je suis devant mon ordi et que je vois qu'il y a du trafic anormal :
iptables -A INPUT -i eth0 -s 11.22.33.44 -j DROP .
Je n'ai pas le mot-clef --rttl dans mon "man" (j'ai un noyau 2.6.12), peux-tu me dire ce qu'il fait ?
Et comment est-il précisé que le blocage s'arrête au bout d'une minute ?
Sinon j'ai vu une légère simplification de tes 4 lignes, mais je ne sais pas si ça gère le déblocage :
iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --set
iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 -j DROP
# Changer le port de SSH
Posté par neriki (site web personnel) . Évalué à 2.
[^] # Re: Changer le port de SSH
Posté par TuxPierre . Évalué à 2.
Une autre methode tres efficace aussi est de n'autoriser que les clés publiques... du coup ca degage quasiment tout le mode aussi.
[^] # Re: Changer le port de SSH
Posté par Anonyme . Évalué à 4.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.