Posté(e) le 26 mai 200520 a Bonjour, Je suis actuellement en train de chercher un moyen de restreindre les tentatives de connexion erronées (par exemple 3 erreurs par minute). J'ai fait de nombreuses recherches sur ce sujet et la solution revient presque toujours avec IPtables, donc ce sera presque forcément le programme utilisé avec le module "state" et "recent". Pour le moment, j'ai deux codes/méthodes/résultats différents, les voici : #!/bin/bash PATH=/emplacement/d'iptables/ PSSH="<Le port d'SSH>" NTEN="<Nombre maximum de tentatives par $DTEN secondes>" DTEN="<Nombre de secondes maximum total pour $DTEN tentatives>" iptables -A INPUT -p tcp --dport $PSSH -m state --state ESTABLISHED --tcp-flags FIN,ACK FIN,ACK -m recent --set --name SSH_limit iptables -A INPUT -p tcp --dport $PSSH -m state --state ESTABLISHED --tcp-flags RST RST -m recent --set --name SSH_limit #### Journalisation des attaques. #### iptables -A INPUT -p tcp --dport $PSSH -m recent --name SSH_limit --rcheck --seconds $DTEN --hitcount $NTEN -j LOG --log-prefix 'Attaque possible à SSH : ' #### Blocage des attaques. #### iptables -A INPUT -p tcp --dport $PSSH -m recent --name SSH_limit --rcheck --seconds $DTEN --hitcount $NTEN -j DROP Ce code va : -Limiter le nombre de fermeture d'une connexion. (Donc soit une mauvaise identification, soit une fermeture de la connexion.) -Bloquer complètement le port d'SSH. :8 Ce qu'il faudrais qu'il ne fasse pas : -Limiter les fermetures effectuées par le client. -Empêcher d'utiliser les sessions SSH déjà ouverte (bonne identification). J'ai pas regardé pour mettre une liste d'exception dans ce code. #!/bin/bash PATH=/emplacement/d'iptables/ PSSH="<Le port d'SSH>" NTEN="<Nombre maximum de tentatives par $DTEN secondes>" DTEN="<Nombre de secondes maximum total pour $DTEN tentatives>" iptables -F SSH_Except iptables -X SSH_Except iptables -N SSH_Except iptables -A INPUT -p tcp --dport $PSSH -m state --state NEW -m recent --set --name SSH_limit iptables -A INPUT -p tcp --dport $PSSH -m state --state NEW -j SSH_Except #### Journalisation des attaques. #### iptables -A INPUT -p tcp --dport $PSSH -m state --state NEW -m recent --update --seconds $DTEN --hitcount $NTEN --rttl --name SSH_limit -j LOG --log-prefix 'Attaque possible à SSH : ' #### Blocage des attaques. #### iptables -A INPUT -p tcp --dport $PSSH -m state --state NEW -m recent --update --seconds $DTEN --hitcount $NTEN --rttl --name SSH_limit -j DROP Ajouter une ip dans les exceptions : iptables -A SSH_Except -s <IP> -m recent --remove --name SSH_limit -j ACCEPT Ce code va : -Limiter le nombre de connexion. (Donc peut-importe qu'elle échoue ou non.) Ce qu'il ne devrait pas faire : -Limiter le nombre de connexion réussi. Une alternative serait d'effectuer une commande à la connection à SSH (/etc/ssh/sshrc)... Mais laquel ? Donc pour le moment, je cherche des personnes connaissant bien IPtables et les modules précédemment cités (si d'autre seront nécessaire c'est pas gênant. ). D'ailleurs, si vous voyez que le code actuelle peut-être simplifié, n'hésitez pas. Je débute et j'ai aussi grapillé des bouts de code par ci par là donc surement des choses inutiles. Merci de votre aide par avance. J'ai un petit problème, des petits malins essaye de se connecter à SSH jusqu'à là, rien de bien méchant ! Ils arrivent pas à se logger. Le problème, c'est qu'il arrive souvent que des gros boulets tente de se connecter 10 fois, 20 fois, 100 fois, 500 FOIS !!! Donc j'aimerai savoir comment interdire une adresse IP de se connecter pendant 1h au bout de 4/5 tentatives échouées.On m'a dit avec PAM p-e mais j'y comprends pas grand chose à la doc. Si quelqu'un sais comment faire svp ? Merci par avance. Ce message a été modifié par cedricpc le 18-08-2005 17:16:00
Posté(e) le 26 mai 200520 a Si ton mot de passe est correct, tu ne peux rien craindre. 500 fois c'est vraiment rien...
Posté(e) le 26 mai 200520 a Si ton mot de passe est correct, tu ne peux rien craindre. 500 fois c'est vraiment rien... oui, mais pour la bande passante, c'est pas top...
Posté(e) le 27 mai 200520 a Moi j'avais vu un truc dans le genre mais c'était avec iptables mais je ne me souviens plus où
Posté(e) le 27 mai 200520 a forums linuxfr.org il y a quelque jours, j'ai vu la même discussion... Je vais même vous le chercher... http://linuxfr.org/forums/12/8945.html Je crois qu'il y a des solutions possibles (je pense aussi à iptables ou le changement de port de ssh)
Posté(e) le 27 mai 200520 a il me semble que dans la configuration de ssh tu peux le specifier je cherche et je te dis ca
Posté(e) le 27 mai 200520 a Auteur oui, mais pour la bande passante, c'est pas top... Ouep c'est ça le problème ! Déjà que j'ai que 16ko en up (enfin ça va par rapport au pauvre gens en 56k ^^) dont 10ko pompé par emule, il en reste que 6 pour surfer avec les trois pc (plus le serveur)... Si je veux mettre un fichier en ftp, bah le gars en face, il lui reste pas grand chose pour le récupérer. Donc c'est pas pour rajouter à ça des tentatives de login à ssh de bouffon qui n'ont que ça à fou*** ! @Magnig, ça ne consiterai pas à limiter les connections à tel port par hasard ? @Yoda222, merci je vais aller voir ce qu'ils en disent. @Starbetrayer, nan je ne crois pas malheureusement mais si tu trouves, je suis preneur Merci de votre aide
Posté(e) le 27 mai 200520 a salut extrait du man de sshd_config MaxStartups Spécifie un nombre maximal de connexions concurrentes au démon sshd non authentifiées. Les connexions supplémentaires sont purgées si elles ne peuvent pas s'authentifier ou si le délai de grâce défini à l'aide de l'option LoginGraceTime expire pour une connexion. Par défaut 10. Par ailleurs, on peut activer une purge hâtive aléatoire en spécifiant un triplet « début:taux:total » (par exemple, « 10:30:60 »). sshd refuse les tentatives de connexion avec une probabilité de « taux/100 » (30 %) s'il y a « début » (10) connexions non authentifiées en cours. La probabilité augmente linéairement et toutes les tentatives de connexion sont refusées si le nombre de connexions non authentifiées atteint « total » (60).
Posté(e) le 27 mai 200520 a Auteur salutextrait du man de sshd_config MaxStartups Spécifie un nombre maximal de connexions concurrentes au démon sshd non authentifiées. Les connexions supplémentaires sont purgées si elles ne peuvent pas s'authentifier ou si le délai de grâce défini à l'aide de l'option LoginGraceTime expire pour une connexion. Par défaut 10. Par ailleurs, on peut activer une purge hâtive aléatoire en spécifiant un triplet « début:taux:total » (par exemple, « 10:30:60 »). sshd refuse les tentatives de connexion avec une probabilité de « taux/100 » (30 %) s'il y a « début » (10) connexions non authentifiées en cours. La probabilité augmente linéairement et toutes les tentatives de connexion sont refusées si le nombre de connexions non authentifiées atteint « total » (60). Et ça m'avance à quoi ça ? -_- @Starbetrayer, merci je vais voir EDIT 1 @ 20:55:54 : Bon je vais matter le code source mais si ça banni l'ip pour tous les ports j'aurais besoin d'aide pour que ça le fasse que sur le port 22 :copain: EDIT 2 @ 21:00:53 : Bon j'ai regardé vite fait et ça ban effectivement l'ip à tous les ports, en plus ça va chercher dans les logs les infos donc si le fichier est gros je te dit pas le load average... Déjà est souvent à plus de 0.5 J'essaye de "décryter" la commande IPTABLE du site http://blog.andrew.net.au/2005/02/17 pour le moment... Je vais voir...
Posté(e) le 28 mai 200520 a Pourquoi ne pas tout simplement tout dropper sauf tes ips sûres ? iptables -P INPUT DROP iptables -A INPUT -p tcp -i eth0 -s $IP --dport 22 -j ACCEPT
Posté(e) le 28 mai 200520 a Auteur Bah parce que je ne sais pas (encore) deviné l'ip que va avoir le pc que j'utilise à distance. Ca m'arrive de l'utiliser à distance pour relancer/reconfigurer le ftp par exemple. Tes règles ne vont-elle pas tout dropper ? (Je précise que je connais pas encore très bien le fonctionnement d'IPTABLE, juste deux trois choses comme mapper des ports, partager INternet...)
Posté(e) le 28 mai 200520 a Auteur Tiens, je m'en rapellais plus... J'ai mis cette règle : iptables -A INPUT -i ppp0 -p tcp --dport 22 -m limit --limit 5/hour -j ACCEPT mais ça pas l'air de faire grand chose c'est normal ? EDIT : Hier encore j'ai eu environ 300 tentatives en 10 mn >_< J'ai aussi plein de ligne comme ça : May 28 11:20:00 webcenter sshd[28061]: Did not receive identification string from ::ffff:127.0.0.1 Je sais pas d'où elle vienne... Bon c'est le PC qui se les balances lui même ok... Mais comment arrêter ça svp ? Une toute les 5 mn pile c'est ch*** Merci par avance. Modifié le 28 mai 200520 a par cedricpc
Posté(e) le 28 mai 200520 a Bah eteint ton pc et c'est bon ;-) (le message super-utile de la journée)
Posté(e) le 29 mai 200520 a j'ai un peu de mal à te suivre : si ça banni tous les ports pour l'ip d'un pc qui n'a pas le login/password, je vois pas pourquoi ça te dérange vu que toi, tu sais te logger ... dis toi bien que le bouffon qui essaye de te hacker peut essayer sur d'autres ports, dont le ftp ...
Posté(e) le 29 mai 200520 a Tiens, je m'en rapellais plus... J'ai mis cette règle :iptables -A INPUT -i ppp0 -p tcp --dport 22 -m limit --limit 5/hour -j ACCEPT mais ça pas l'air de faire grand chose c'est normal ? EDIT : Hier encore j'ai eu environ 300 tentatives en 10 mn >_< J'ai aussi plein de ligne comme ça : May 28 11:20:00 webcenter sshd[28061]: Did not receive identification string from ::ffff:127.0.0.1 Je sais pas d'où elle vienne... Bon c'est le PC qui se les balances lui même ok... Mais comment arrêter ça svp ? Une toute les 5 mn pile c'est ch*** Merci par avance. Si tu fais ça, t'es ***** En effet, imagine qu'un gugus s'amuse à se connecter 20 fois avant que tu n'essayes: et bah toi tu peux plus! Il y a deux solution: -limiter selon l'IP source, ce qui doit se faire via un IDS (snort, prelude) -changer le port d'écoute de ton serveur vers un port à la con, du style 32501. Pour peu que tu n'acceptes que le ssh, et que tu droppes le ping, d'ici à ce que le lamer d'en face trouve sur quel port tu écoutes, il va en avoir pour un bout de temps. Par contre, ce que je ne comprends pas, c'est que tu aies autant de tentatives, vu que tu as une ip dynamique. Tu pourrais nous balancer tes logs iptables? neo Modifié le 29 mai 200520 a par neologix
Posté(e) le 29 mai 200520 a J'essaye de "décryter" la commande IPTABLE du site http://blog.andrew.net.au/2005/02/17 pour le moment... Je vais voir... C'est la dessus que j'étais tombé aussi.
Posté(e) le 29 mai 200520 a Auteur j'ai un peu de mal à te suivre :si ça banni tous les ports pour l'ip d'un pc qui n'a pas le login/password, je vois pas pourquoi ça te dérange vu que toi, tu sais te logger ... dis toi bien que le bouffon qui essaye de te hacker peut essayer sur d'autres ports, dont le ftp ... Et le pauvre gars qui a une me*** sur son pc ? Nan c'est pas top je trouves ! Si tu fais ça, t'es *****En effet, imagine qu'un gugus s'amuse à se connecter 20 fois avant que tu n'essayes: et bah toi tu peux plus! Il y a deux solution: -limiter selon l'IP source, ce qui doit se faire via un IDS (snort, prelude) -changer le port d'écoute de ton serveur vers un port à la con, du style 32501. Pour peu que tu n'acceptes que le ssh, et que tu droppes le ping, d'ici à ce que le lamer d'en face trouve sur quel port tu écoutes, il va en avoir pour un bout de temps. Par contre, ce que je ne comprends pas, c'est que tu aies autant de tentatives, vu que tu as une ip dynamique. Tu pourrais nous balancer tes logs iptables? neo Bah pourtant y'a la règle mais rien ne change... Vais la virer. Je sais que changé de port est une bonne solution mais je j'aime pas "contourner" les problèmes... Je suis un peu têtu parfois mais bon. Vais déjà voir si le PC répond au ping et si c'est le cas je vais mettre un règle pour le dropper mais je crois qu'il y a un programme qui le fait. En ce qui concerne l'ip dynamic, j'ai une redirection no-ip donc c'est p-e ça qu'ils choppent... EDIT : Euh je vais paraître p-e bête (tant pis ) mais ils sont ou les logs d'iptables svp ? Modifié le 29 mai 200520 a par cedricpc
Posté(e) le 29 mai 200520 a Et le pauvre gars qui a une me*** sur son pc ? Nan c'est pas top je trouves ! euh ... je crois que tu n'as pas tout suivi ... si tu banni un gars, c'est uniquement pour l'accès à TA machine ... t'as pas à t'en faire pour lui, te ne bloques pas sa machine ...
Posté(e) le 29 mai 200520 a Auteur OH ? C'est vrai ? Nan je sais bien mais si il doit accèder à ma machine, c'est *** de le bannir !
Posté(e) le 29 mai 200520 a ???? pq t'as peur qu'un total inconnu avec une machine vérolée ne puisse plus accéder à ta bécanne ???? Franchement, j'aurais aucune pitié, d'autant plus qu'il y a peu de chances qu'il aie une raison légale d'accéder à ta bécanne, non ? //-- edit --// je trouve ça un peu *** de ne pas bannir une IP hostile sous prétexte que la machine qui lui est liée "pourrait" avoir besoin d'accéder à tabécanne. PS : sorry pour l'explication un peu bebete Modifié le 30 mai 200520 a par Angel Eyes
Posté(e) le 29 mai 200520 a -limiter selon l'IP source, ce qui doit se faire via un IDS (snort, prelude) Un IPS plutôt ? Un IDS a pour but de détecter les intrusions, un IPS, de les prévenir.
Posté(e) le 30 mai 200520 a Auteur Bah nan, moi je trouve pas ça bien... Au passage, j'ai un serveur web et ftp en plus alors ça fait deux raisons en moins pour blacklister l'IP. (Ouai y'a pas beaucoup de trafic et alors, c'est aussi bien comme raison que celle d'Angel Eyes ) Je suis toujours en train de décoder la commande du blog dit dans la première page.
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.