Jump to content

Archived

This topic is now archived and is closed to further replies.

cedricpc

Couper l'accès SSH à une IP au bout de x login

Recommended Posts

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).

:francais: 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

:francais: Ce code va :

-Limiter le nombre de connexion. (Donc peut-importe qu'elle échoue ou non.)

:francais: Ce qu'il ne devrait pas faire :

-Limiter le nombre de connexion réussi.

:transpi: 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. :non:).

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

Share this post


Link to post
Share on other sites

Si ton mot de passe est correct, tu ne peux rien craindre. 500 fois c'est vraiment rien...

Share this post


Link to post
Share on other sites
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...

Share this post


Link to post
Share on other sites

Moi j'avais vu un truc dans le genre mais c'était avec iptables mais je ne me souviens plus où :francais:

Share this post


Link to post
Share on other sites
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 :amdpowa:

Merci de votre aide :-D

Share this post


Link to post
Share on other sites

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).

Share this post


Link to post
Share on other sites
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).

Et ça m'avance à quoi ça ? -_-

@Starbetrayer, merci je vais voir :freeposts:

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 :chinois:

J'essaye de "décryter" la commande IPTABLE du site http://blog.andrew.net.au/2005/02/17 pour le moment... Je vais voir...

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Bah parce que je ne sais pas (encore) deviné l'ip que va avoir le pc que j'utilise à distance. :incline:

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...)

Share this post


Link to post
Share on other sites

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*** :yes:

Merci par avance.

Share this post


Link to post
Share on other sites

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 ...

Share this post


Link to post
Share on other sites
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*** :craint:

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

Share this post


Link to post
Share on other sites
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. :zarb:

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 :fumer:) mais ils sont ou les logs d'iptables svp ? :fumer:

Share this post


Link to post
Share on other sites
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 ...

Share this post


Link to post
Share on other sites

OH ? C'est vrai ?

Nan je sais bien mais si il doit accèder à ma machine, c'est *** de le bannir !

Share this post


Link to post
Share on other sites

???? 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 :iloveyou:

Share this post


Link to post
Share on other sites
-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.

Share this post


Link to post
Share on other sites

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 :chinois::fumer:)

Je suis toujours en train de décoder la commande du blog dit dans la première page.

Share this post


Link to post
Share on other sites

×
×
  • Create New...