Contreur d'intrusion en SSH
Bonjour,
Afin d'éviter toute intrusion sur mon poste à l'IUT (surtout empêcher les éventuelles fork bombs ^^), j'ai codé un petit script shell en bash qui enverra un yes tubé write à l'assaillant, c'est-à-dire qu'il répètera un message tant que le processus ne sera pas tué par moi-même sur le terminal de l'intrus, ce qui l'empechera de faire n'importe quelle commande par la suite.
Mon code :
Comme vous avez sans doute remarqué, le script tournera en fond et procèdera à une analyse toutes les 5 secondes.
Mon problème est le suivant :
Quand quelqu'un reste plus longtemps (genre une minute à se prendre un yes), les processus sont créés en masse (un processus créé toutes les 5 secondes donc), ce qui à la longue fait planter ma machine. La solution serait de tuer le ou les processus qui viennent d'être créés, après le sleep de préférence pour libérer la mémoire pour le prochain yes pour les récidivistes. Mais mes connaissances sont trop faibles pour y parvenir... Votre aide sera donc la bienvenue :).
Si je n'ai pas été clair, n'hésitez pas à poser vos questions.
Bonne soirée ! :)
Afin d'éviter toute intrusion sur mon poste à l'IUT (surtout empêcher les éventuelles fork bombs ^^), j'ai codé un petit script shell en bash qui enverra un yes tubé write à l'assaillant, c'est-à-dire qu'il répètera un message tant que le processus ne sera pas tué par moi-même sur le terminal de l'intrus, ce qui l'empechera de faire n'importe quelle commande par la suite.
Mon code :
#!/bin/bash while true; do a=$(who|grep -v $USER|tr -s ' '|cut -f 1-2 -d " ") b=$(who|grep -v $USER|wc -l) for (( i=1; i<=$(($b*2)); i+=2 )) ; do d=$(($i+1)) c=$(echo $a|cut -f $i-$d -d " ") yes CASSE TOI|write $c& echo "$c c'est fait yesser" done sleep 5 done
Comme vous avez sans doute remarqué, le script tournera en fond et procèdera à une analyse toutes les 5 secondes.
Mon problème est le suivant :
Quand quelqu'un reste plus longtemps (genre une minute à se prendre un yes), les processus sont créés en masse (un processus créé toutes les 5 secondes donc), ce qui à la longue fait planter ma machine. La solution serait de tuer le ou les processus qui viennent d'être créés, après le sleep de préférence pour libérer la mémoire pour le prochain yes pour les récidivistes. Mais mes connaissances sont trop faibles pour y parvenir... Votre aide sera donc la bienvenue :).
Si je n'ai pas été clair, n'hésitez pas à poser vos questions.
Bonne soirée ! :)
A voir également:
- Contreur d'intrusion en SSH
- Ssh download - Télécharger - Divers Web & Internet
- Intrusion plutôt désagréable ✓ - Forum Virus
- Fortiguard intrusion prevention - access blocked - Forum Virus
- Chassis intrusion bios - Forum Matériel & Système
- Tentatives d'intrusion bloquées ✓ - Forum Virus
3 réponses
Salut,
Normalement un :
après le "sleep 5" devrait tuer le dernier processus lancé en arrière-plan...
Normalement un :
kill $!
après le "sleep 5" devrait tuer le dernier processus lancé en arrière-plan...
Salut et merci pour une réponse aussi rapide.
Pour moi ca serait plutôt :
Recherche des intrus,
"Yessage" des intrus (boucle for)
Attendre 5 sec
Tuer les processus de yessage.
Merci :)
kill $!va-t-il supprimer le dernier processus en arrière plan, ou tuer tous les processus appelés dans la boucle for? Parce qu'avouons que tuer le processus dans la boucle et attendre 5s ne servirait pas à grand chose :/.
Pour moi ca serait plutôt :
Recherche des intrus,
"Yessage" des intrus (boucle for)
Attendre 5 sec
Tuer les processus de yessage.
Merci :)
Ça aurait été cool de donner des vrais noms à tes variables :s Un truc dans ce goût là par exemple
Je te laisse de voir ton soucis avec zipe31 pour les histoires de kill.
Au fait, pourquoi ne pas simplement limiter l'accès à certains utilisateurs en ssh (voir /etc/ssh/sshd_config) avec la directive AllowUser ?
Dans cet exemple, seul admin peut se connecter en ssh :
http://www.faqs.org/docs/securing/chap15sec122.html
Pense à relancer sshd pour prendre les modifications en compte. En root :
ou sur les vieilles distributions :
Bonne chance
#!/bin/sh message="Ouste petit garnement" while true; do who | while read ligne do login=$(echo $ligne | cut -d" " -f1) pts=$(echo $ligne | cut -d" " -f2) yes $message | write $login $pts done sleep 5 done
Je te laisse de voir ton soucis avec zipe31 pour les histoires de kill.
Au fait, pourquoi ne pas simplement limiter l'accès à certains utilisateurs en ssh (voir /etc/ssh/sshd_config) avec la directive AllowUser ?
Dans cet exemple, seul admin peut se connecter en ssh :
http://www.faqs.org/docs/securing/chap15sec122.html
Pense à relancer sshd pour prendre les modifications en compte. En root :
service sshd restart
ou sur les vieilles distributions :
/etc/init.d/sshd restart
Bonne chance
Je suis d'accord avec ton idée, le truc c'est que vu que je suis à l'IUT deja je ne peux pas passer en root ^^. De plus c'est peut etre sadique mais j'imagine deja la déception de mes futurs assaillants quand ils vont essayer de me "forker" (ben ouais faut bien s'occuper).
En tout cas j'essaierai demain pour le kill :)
En tout cas j'essaierai demain pour le kill :)
Mouais enfin tu sais bloquer un write c'est un peu l'enfance de l'art :
C'est même un peu une condition de survie en milieu hostile ;-)
De toute façon ne cherche pas tu ne peux pas empêcher en tant qu'utilisateur d'empêcher quelqu'un de venir se connecter chez toi et de travailler. Pouvoir le bloquer ou le pourrir serait intrusif ce qui va à l'encontre de la philosophie linux (un utilisateur non root ne doit pas pouvoir pénaliser un autre utilisateur). On donne donc aux utilisateurs des moyens pour se prémunir d'outils potentiellement intrusif (write par exemple peut être avec mesg) mais ça s'arrête là.
La seule manière de "cloisonner" requiert des droits root :
- authentification ssh
- allocation de ressources par quota (espace disque ...)
- etc ...
Mais bon au moins ça t'entraîne à faire du shell donc c'est déjà ça ;-)
You can prevent people (other than the super-user) from writing to you with the mesg(1) command.
C'est même un peu une condition de survie en milieu hostile ;-)
De toute façon ne cherche pas tu ne peux pas empêcher en tant qu'utilisateur d'empêcher quelqu'un de venir se connecter chez toi et de travailler. Pouvoir le bloquer ou le pourrir serait intrusif ce qui va à l'encontre de la philosophie linux (un utilisateur non root ne doit pas pouvoir pénaliser un autre utilisateur). On donne donc aux utilisateurs des moyens pour se prémunir d'outils potentiellement intrusif (write par exemple peut être avec mesg) mais ça s'arrête là.
La seule manière de "cloisonner" requiert des droits root :
- authentification ssh
- allocation de ressources par quota (espace disque ...)
- etc ...
Mais bon au moins ça t'entraîne à faire du shell donc c'est déjà ça ;-)