Léa-Linux & amis :   LinuxFR   GCU-Squad   GNU
Ecriture d'un démon
Envoyé par: Pico10

Bonjour à tous,

voilà mon problème, je travaille avec iptables et snort_inline. Donc iptables passe les paquets a snort_inline qui les traite et redonne les actions à effectuer à iptables (DROP,REJECT...). Mon problème est : dés que snort_inline est coupé, le traffic réseau ne passe plus puisque iptables continue de donner les paquets à snort inline...

Je voudrais donc mettre en place un petit démon qui vérifie que snort_inline est toujours en cours d'exécution. Pour cela, on m'a conseillé le langage C mais j'ai beaucoup de mal à trouver de la documentation sur l'écriture d'un démon...

Si vous aviez un ou deux liens... ou meme un bout de code qui puisse m'aider....

Merci d'avance.

Pico

Poste le Thursday 9 June 2005 15:54:10
Répondre     Citer    
Re: Ecriture d'un démon
Envoyé par: oudoubah

Pour tester ça, j'utiliserais plutôt le shell.

Au lieu de lancer snort_inline, je ferais plutôt un script qui le lance, puis qui soit le relance, soit envoie un message ou autre quand le démon est coupé.

Tu as lu les docs. Tu es devenu un informaticien. Que tu le veuilles
ou non. Lire la doc, c'est le Premier et Unique Commandement de
l'informaticien.
-+- TP in: Guide du Linuxien pervers - "L'évangile selon St Thomas"

Poste le Thursday 9 June 2005 16:00:28
Répondre     Citer    
Re: Ecriture d'un démon
Envoyé par: Pico10

En shell je vois deja comment récupérer le pid de mon processus snort_inline :

ps aux | grep snort_inline | awk '{ print $2 }'

mais après je vois pas trop comment faire pour qu'il vérifie régulièrement que le processus est actif...

Poste le Thursday 9 June 2005 16:11:53
Répondre     Citer    
Re: Ecriture d'un démon
Envoyé par: Glorfindel

Ben.... cron !

Par exemple toutes les minutes. Et s'il est mort il faut le relancer. Mais se poser aussi la question de pourquoi il est tombé.


Linux user # 386486 (serveur debian sarge sur un athlon64 winking smiley, laptop PIV-HT sur etch noyau 2.6.20).

Poste le Thursday 9 June 2005 16:36:35
Répondre     Citer    
Re: Ecriture d'un démon
Envoyé par: Pico10

Je connaissais pas, ca a l'air pas mal sauf qu'il faut que je vérifie plus souvent que toutes les minutes...

En fait, je fais un pont filtrant et donc il faut un taux de disponibilité super élevé... En bref, il faut vérifier le plus souvent possible tout en faisant attention aux ressources utilisées...

On m'a proposé daemon tools aussi... Ca a l'air bien aussi ca mais j'ai un peu de mal à trouver la meilleure solution... ?-(

Poste le Thursday 9 June 2005 16:45:48
Répondre     Citer    
Re: Ecriture d'un démon
Envoyé par: madko

tu peux aussi le lancer par inittab avec l'option respawn

sinon au lieu de t'embeter avec des ps, grep et awk pour juste recuperer un pid regarde si tu n'a pas la commande pidof c'est tres pratique smiling smiley

Poste le Thursday 9 June 2005 16:50:01
Répondre     Citer    
Re: Ecriture d'un démon
Envoyé par: madko

lance ton snort_inline via un script shell avec une boucle
mais comme Glorfindel l'a dit il faudrait savoir pourquoi il tombe

Poste le Thursday 9 June 2005 16:52:21
Répondre     Citer    
Re: Ecriture d'un démon
Envoyé par: Pico10

Ah oui je l'ai pidof, c'est clair que c'est bien pratique...

Euh inittab je connais pas trop, je viens de voir que c'est pour lancer un programme au boot et avec respawn ca le relance dés qu'il s'arrete c'est ca??

Il faudrait que je mette une ligne avec snort_inline -Qdc /etc/snort.conf -l /var/log/snort ???

Poste le Thursday 9 June 2005 16:57:23
Répondre     Citer    
Re: Ecriture d'un démon
Envoyé par: madko

ouai c'est peut etre pas propre de passer tout ça par inittab

donc jte conseil plutot le script shell

genre:

while(true);
do snort_inline -Qdc /etc/snort.conf -l /var/log/snort;
done

comme ça a chaque fois que snort_inline se termine hop ça repart dans la boucle
a tester pour snort_inline

Poste le Thursday 9 June 2005 16:59:36
Répondre     Citer    
Re: Ecriture d'un démon
Envoyé par: Pico10

Citation
madko
lance ton snort_inline via un script shell avec
une boucle
mais comme Glorfindel l'a dit il faudrait savoir
pourquoi il tombe

Savoir pourquoi il tombe c'est une autre chose... Moi je veux pouvoir réagir immédiatement quand il tombe..

Le lancer dans une boucle via un script?? Un truc du genre

Citation

while(1){
snort_inline
}

Enfin traduit en shell bien sur...

Poste le Thursday 9 June 2005 17:00:22
Répondre     Citer    
Re: Ecriture d'un démon
Envoyé par: Pico10

Oups t'as été trop rapide pour moi, je vais tester ca et on verra bien.. Je vous tiens au courant!! ;-p

Poste le Thursday 9 June 2005 17:01:36
Répondre     Citer    
Re: Ecriture d'un démon
Envoyé par: Pico10

Je viens d'écrire le petit script, qui marche nickel quand je lance en ligne de commande. Par contre quand je le place dans /etcrc.d/init.d et que je fais un lien symbolique /etc/rc.d/rcsysinit.d/S96snort, il se lance bien mais bloque l'accès à la première console... Je ne peux pas me logguer... J'ai essayé les ALT+F2,3,... mais ca marche pas non plus... Donc c'est cool ca tourne mais j'ai plus accès à rien donc c'est pas le top... :-(

Si vous avez une solution à ce nouveau problème... ou meme au premier problème!! ;-)

Poste le Thursday 9 June 2005 17:39:13
Répondre     Citer    
Re: Ecriture d'un démon

1 - CTRL-C ou CTRL-D

2 - Envisager de mettre lancer la commande "qui bloque" en la mettant en tache de fond via & à la fin de la ligne

--
Brugmans Frédéric

[www.brugmans.net]
[triathlon.sport-challenge.be]

Poste le Thursday 9 June 2005 18:58:09
Répondre     Citer    
Re: Ecriture d'un démon
Envoyé par: Glorfindel

Citation
Pico10

while(1){
snort_inline
}

Cela ressemble à une boucle infinie... Et en init en plus.... Donc tu n'as pas encore la main...

Faut que je reregarde tes autres posts concernant ta distrib.

Si tu es sous mdk (de mémoire) essaye sans boucle de copier les lignes du start dans ton /etc/rc.local

N'oublies pas dans /etc/inittab de mettre le niveau 1 par défaut pour les expériences.

Poste le Thursday 9 June 2005 21:47:36
Répondre     Citer    
Re: Ecriture d'un démon
Envoyé par: madko

la boucle infinie est la volotairement

il faut mettre la boucle dans un script shell qui lui sera appelé par ex a partir de rc.local mais avec le & pour le detacher

/ton_script.sh &

tu peux aussi pour que ça soit plus propre redirigé les sortie de la commande snort_inline pour pas que ça pollu ton affichage sur la consol

while(true)
do snort_inline > /dev/null 2>&1
done;

Poste le Friday 10 June 2005 16:41:34
Répondre     Citer    
Re: Ecriture d'un démon
Envoyé par: Pico10

Finalement j'ai utilisé daemontools, ca marche nickel!! :-p

Par contre, si y en a qui connaisse daemontools, j'aimerais bien logguer le fait que snort_inline a été redémarré... Par exemple, envoyé un message à syslog, ou alors juste dans un fichier...

J'ai bien pensé à faire un echo dans le script de démarrage run mais sans succès... :-/

Quelq'un a une idée?? ?-(

Merci d'avance!!

Poste le Friday 10 June 2005 17:20:10
Répondre     Citer    

Veuillez vous authentifier auparavant pour commenter.

 

Ce forum !
Ecriture d'un démon
Pour poser vos questions sur les scripts shell, le Perl, le C, etc... Attention : nous ne sommes pas des spécialistes du dev, ce forum est juste pour de petites aides ponctuelles concernant le développement et les outils de développement.

Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons