Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1469 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Anti-plantage linux

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Anti-plantage linux

n°1621832
mystercoco
Posté le 10-10-2007 à 17:58:14  profilanswer
 

Bonjour,
le travaille sur un réseau, chaque ordinateur du réseau possède une liste d'utilisateur autorisés à se connecter sur les ordinateurs.
Certaines personnes s'amusent à créer des programmes destinés à faire planter un ordinateur et l'execute en ssh à partir d'un autre ordinateur du réseau.
Cela devient très génant lorsque l'on a pas sauvegarder son travail et qu'un utilisateur extérieur se connecte en ssh sur notre ordinateur et le fait planter.
Je n'ai malheureusement pas l'accès en root sur l'ordinateur.
 
J'ai élaboré un petit shell script, mais il ne fonctionne pas (car impossible de tuer le bash en non root):
 

Code :
  1. #!/bin/bash
  2. if test $# -gt 0
  3. then
  4. while test 1 -le 1
  5. do
  6. a=`who | grep -v \`whoami\``
  7. set $a
  8. if test -n $1
  9. then
  10. if killall -9 -r -u $1
  11. then
  12. echo Utilisateur $1 tué !
  13. else
  14. echo Erreur fatale de tuage d\'utilisateur $1 !
  15. exit 1
  16. fi
  17. fi
  18. done
  19. else
  20. sh $0 a &
  21. fi
  22. exit 0


 
Quelqu'un a-t-il une idée pour remedier à l'utilisation de la commande kill -9 ?

mood
Publicité
Posté le 10-10-2007 à 17:58:14  profilanswer
 

n°1621843
Taz
bisounours-codeur
Posté le 10-10-2007 à 18:21:37  profilanswer
 

contact ton admin et voilà. Ton programme ne peut pas marcher sans droit.

n°1621853
mystercoco
Posté le 10-10-2007 à 19:02:38  profilanswer
 

ça aurait été interessant de trouver une solution en tant que simple utilisateur pour déconnecter l'utilisateur connecté en ssh.
Une astuce comme faire planter sshd pour déconnecter la personne malvaillante.

n°1621857
tuxce
Posté le 10-10-2007 à 19:28:30  profilanswer
 

déjà, comment se fait il que cette "personne malveillante" arrive à te killer tes applications?

n°1621876
matafan
Posté le 10-10-2007 à 21:05:02  profilanswer
 

Il lui tue pas ses applis, il fait planter la machine si j'ai bien compris.

n°1621880
Ace17
Posté le 10-10-2007 à 21:10:21  profilanswer
 

J'ai joue a ca pendant mes etudes. Une simple forkbomb suffit generalement a planter la machine ciblee.  
Le jour ou ce petit jeu s'est retourne contre moi, j'ai trouve une astuce pour me proteger : tu surveilles les utilisateurs sur ta machine. Des que tu en trouves un qui n'est pas toi, tu reperes la machine a partir de laquelle il se connecte, et tu la plantes de la meme facon (ssh+forkbomb). Un peu violent et facile a contourner. Ca m'a cependant permis de continuer a travailler, alors peut etre que ca pourra t'aider...

n°1621901
tuxce
Posté le 10-10-2007 à 22:00:32  profilanswer
 

on peut facilement se proteger d'un forkbomb en limitant le nombre de processus max/utilisateur (ulimit), s'il est en réseau dans une boite, l'admin devrait penser à ca!
c'est plus simple que s'amuser à planter les autres machine, dans un environnement de boulot, c'est pas le top :), par contre à l'école/fac ou autre, je dis pas, ca permet en même temps d'apprendre :p

n°1622505
MEI
|DarthPingoo(tm)|
Posté le 11-10-2007 à 17:43:58  profilanswer
 

un serveur bien param aura killé ton programme bien avant de planté. :D
 
a l'IUT j'avais un programme qui calculait les solution d'un sudoku et les gardait en memoire, j'avait tanté avec une grille vide (i.e. sans contrainte), et bien au bout d'un moment le programme a planté car j'occupait de trop de RAM. Idem pour le CPU, bien param tu peut pas monopolisé le serveur.
 
C'est sur que quand on a des admins en carton et des utilisateur un peu  débile ça peut pas marcher. :o
 
Ceci dit avant de vouloir faire ce genre de script faudrait deja connaitre/comprendre le fonctionnement d'un OS/d'Unix. :o


---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |
n°1622574
mystercoco
Posté le 11-10-2007 à 18:59:47  profilanswer
 

Merci pour vos réponses.
Les OS sont tous censés être "implantable" (vérification de la mémoire, pagination, limitation de ressource).
En réalité, ce n'est pas le cas, quelque soit l'OS évolué il y a des techniques plus ou moins sophistiquées pour faire planter le PC (forkbomb, ...).
Mes cours d'asm me l'on largement confirmé :) ...
 
Ayant pu intercepter une partie du programme de plantage sur le réseau, je pense effectivement qu'il sagit d'un forkbomb (allocation infini).
 
L'administrateur réseau est largement dépassé par la situation (il n'arrive même pas à créer correctement des comptes réseaux)
 

n°1622593
o'gure
Multi grognon de B_L
Posté le 11-10-2007 à 20:01:20  profilanswer
 

Et ben dans ce cas la on contacte la hiérarchie et on explique le problème.
Si les personnes se connectent avec leur propre compte pour pourrir une autre station la simple consultation des logs de la station victime donnera l'identité du coupable et ayant signé une charte d'utilisation des ressources informatique (si y a pas ca... faudrait quand meme penser a changer d'admin) il risque des sanctions.


---------------
Relax. Take a deep breath !
mood
Publicité
Posté le 11-10-2007 à 20:01:20  profilanswer
 

n°1622653
Sve@r
Posté le 11-10-2007 à 22:18:08  profilanswer
 

mystercoco a écrit :

Ayant pu intercepter une partie du programme de plantage sur le réseau, je pense effectivement qu'il sagit d'un forkbomb (allocation infini).


Même avec un forkbomb, il suffit à l'admin de se connecter en root, de se donner un shell avec une super priorité (nice --20 bash par exemple) puis de traquer/killer le forkbomb (ps |grep)
 

mystercoco a écrit :

L'administrateur réseau est largement dépassé par la situation (il n'arrive même pas à créer correctement des comptes réseaux)


Change d'admin... ou montre-lui comment faire => avec un peu de bol il pourrait à terme te laisser les droits d'admin...
 

mystercoco a écrit :

J'ai élaboré un petit shell script
 

Code :
  1. #!/bin/bash
  2. if test $# -gt 0
  3. then
  4. while test 1 -le 1
  5. do
  6. a=`who | grep -v \`whoami\``
  7. set $a
  8. if test -n $1
  9. then
  10. if killall -9 -r -u $1
  11. then
  12. echo Utilisateur $1 tué !
  13. else
  14. echo Erreur fatale de tuage d\'utilisateur $1 !
  15. exit 1
  16. fi
  17. fi
  18. done
  19. else
  20. sh $0 a &
  21. fi
  22. exit 0



Pourquoi ton script commence par faire un truc s'il a des arguments et s'il n'en a pas se relance lui-même avec un argument ? Déjà que ta machine est forkbombée toi tu lui mets un processus inutile en plus dans la tronche. Il te suffirait de traiter au départ le cas "je remplis une variable avec mes arguments ou un truc par défaut s'il n'y en a pas ; puis dans mon algo je traite ma variable qui contiendra soit mes arguments soit le truc par défaut" => ça se fait en une ligne => var=${*:-truc par defaut}
Ensuite pourquoi ton script cherche absolument à avoir un argument qu'il écrase ensuite par un "set" ???
 
Ah super le test 1 plus petit ou égal à 1... (tu veux une boucle infinie => tu tapes "while true" )


Message édité par Sve@r le 11-10-2007 à 22:33:46

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1623816
mystercoco
Posté le 15-10-2007 à 13:20:14  profilanswer
 

Le test de l'argument c'était pour forcer la redirection de sortie standart (execution silencieuse avec le & ), c'est un peu une bidouille et il y a des commandes qui le font automatiquement (>dev/null)...
En effet while true fonctionne sous le bash, mais comme je programme que très rarement sous shell (make...), je ne savais plus si le type booléen était bien implémenté (sachant que je ne me suis pas attardé à faire ce code).

n°1624039
tuxce
Posté le 15-10-2007 à 16:04:13  profilanswer
 

le true ici n'est pas vraiment la valeur vrai d'un type booléen comme on le concoit dans un langage de programmation, c'est juste une commande qui retourne 0 comme code de retour.
le shell considère que la commande est un succés si le code de retour ($?) est égale à 0.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Anti-plantage linux

 

Sujets relatifs
[Java / Servlet] Nom de fichiers french-like sous linuxProblème RMI Windows/Linux
fonction poll() en C sous linuxPlantage Apache génère des doublons
Compiler sous Windows pour Linuxlinux
portabilité Linux<->Windows : séparateur des chemins de fichiers[aide] avec quel langage est codé linux ?
Avoir la liste de toutes les fonctions PHP + plantage WAMPPb GTK sous Linux Debian
Plus de sujets relatifs à : Anti-plantage linux


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR