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

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  [projet libre] logiciel d'analyse de firewall

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

[projet libre] logiciel d'analyse de firewall

n°787286
trictrac
Posté le 27-02-2006 à 21:04:09  profilanswer
 

Salut a tous,
 
Dans le cadre de mon boulot, j'avais developpé une application permettant, à partir des messages de logs d'un firewall, d'obtenir dans une interface web l'historique des connexions, et si elles étaient rejettées ou acceptées.
Le problème, c'est que j'avais codé ca comme un bon gros goret que je suis, et que c'était absolument pas modulaire, extensible, et distribuable.
Donc récemment, je me suis motivé, et je suis reparti d'une feuille blanche, en pensant dès le debut au coté modulaire de la chose.
Mais comme je ne suis pas un développeur, il se peut que plein de choses demeurent crades, et c'est la que ce post intervient:
j'ai placé mon logiciel sous le coup de la GPLv2, et je vous propose d'essayer de l'installer sur votre machine, et de me dire ce que vous en pensez, de me donner un feedback, et pourquoi pas, de m'envoyer des modifications que je pourrai faire au code.
 
Présentation du logiciel:
Tout d'abord, la partie la plus visible. Comme vous pouvez le onstater, c'est une bete interface web, sans aucun soucis de design, mais qui permet rapidement de repérer les connexions bloquées ou acceptées, et de faire des tris sur ces dernieres.
http://fwmonitor.free.fr/screen/fw.png
 
Architecture:
Le logiciel est developpé en perl, avec une base de données MySQL, et un frontend web en PHP.
Le démon codé en perl, fait un tail_moins_F sur le fichier /var/log/syslog, et se met a l'ecoute des messages du firewall. Lorsqu'il en a un, il le parse, et entre le resultat dans la base de donnees.
L'installe est relativement simple, un fichier install.sh execute en root installant les bons fichiers aux bons endroits.
Il faut ensuite creer la base de donnees avec le schema qui est fourni.
Puis, aller dans les differents scripts (interface web et demon perl) pour preciser les parametres necessaires au bon fonctionnement de la chose.
Le dernier petit detail qui a plus que son important, c'est qu'il faut configurer IPTables pour qu'il affiche des messages dans les logs a chaque connexion, avec comme prefix
--log-prefix "drop "
--log-prefix "accept "
 
Apres, pour les interessés, je vous propose de laisser un message sur le forum pour voir les points qui ne sont pas forcément clairs.
 
Les points que je souhaiterai encore améliorer dans le logiciel:
Rapidité du parseur: sur mon serveur en prod je suis a plus de 50 messages seconde, et quand j'ai essayé de mettre la version modulaire dessus, les perfs se sont crachées .. comme quoi, coder comme un goret, ca paie ;) Voir du coté des regexp, et du traitement comment améliorer.
Interface web: la rendre plus jolie, plus de fonctionnalites, voire de statistiques. Mettre en place un fichier de config commun pour l'interface web et le parseur.
 
Bref, j'ai encore du boulot, mais j'aimerai assez des avis exterieurs, voire des coups de mains.
Merci à ceux qui se donneront la peine d'essayer ...
 
Les sources:  
http://fwmonitor.free.fr/sources/f [...] 0a.tar.bz2


Message édité par trictrac le 27-02-2006 à 21:05:23
mood
Publicité
Posté le 27-02-2006 à 21:04:09  profilanswer
 

n°787402
Le_Tolier
Hello IT ?
Posté le 28-02-2006 à 09:48:30  profilanswer
 

Salut,
 
Ton soft pourrait m'intérréssé seulement avant de l installer j aurais quelque question à te poser  ;)  
 
     - il ne fait que la lecture de fichier log pas d action sur iptables ?
     - la bdd peut-on en specifier une sur un hote distant ?
     - est ce que ca bouffe bcp de RAM ?
 
 
Car dans ma configuration en entre de mon réseau j ai un shorewall d'installé et j ai pas trop le droit a l erreur sur cette machine sinon c est le drame :o


---------------
Never f**k with your systems administrator. Why? Because they know what you do with all that free time! |?? | SAVE Jericho !
n°787431
trictrac
Posté le 28-02-2006 à 10:37:18  profilanswer
 

Il ne fait que lire le fichier /var/log/syslog. Il ne s'execute meme pas en tant que root, donc ne peut rien modifier.
La bdd peut etre sur un hote distant, les parametres peuvent etre definis dans le script (et un eventuel futur fichier de config). L'interface web egalement peut tourner ailleur.
pour la conso en ram, ca depend du nombre de messages dans le fichier /var/log/syslog
Mais la premiere installe, fait la qd meme sur une machine de 'test' avec une config a peu pres equivalente ...
Merci si tu peux tester ...

n°787433
Le_Tolier
Hello IT ?
Posté le 28-02-2006 à 10:42:26  profilanswer
 

Donc reprenons,  sur le FW juste le daemon pearl puis sur d autre host l interface web et la bdd.
Par contre c est qui le user qui va lire le syslog ?
 
Edit : ok le user est ds le grp adm j ai rien dit  :)


Message édité par Le_Tolier le 28-02-2006 à 10:48:46

---------------
Never f**k with your systems administrator. Why? Because they know what you do with all that free time! |?? | SAVE Jericho !
n°787434
trictrac
Posté le 28-02-2006 à 10:46:48  profilanswer
 

dans mon install.sh, je crée un user system et un group fwmonitor, que je place dans le groupe adm (groupe qui a le droit en lecture sur /var/log/syslog dans debian)
 
Et sur le FW il n'y a effectivement que le demon perl (3 fichiers en tout)
/etc/init.d/fwmonitor pour lancer le demon
/usr/share/perl5/Fwmonitor/netfilter.pm  le module pour analyser un log de netfilter
/usr/local/sbin/fwmonitor_dispatcher qui lit le log, appelle le parser en fonction du type de fw, et met à jour la BDD.
 
edit: tu peux te monter une station externe qui recoit tous les logs de ton fw, et c'est sur cette derniere que tu mets le demon, comme ca si le demon surcharge ou fait planter le serveur, c'est pas le FW, juste le syslog


Message édité par trictrac le 28-02-2006 à 10:48:24
n°787435
Le_Tolier
Hello IT ?
Posté le 28-02-2006 à 10:50:24  profilanswer
 

ouais c est une bonne idee mais au nivo syslog je sais pas comment faire pour balance le syslog a une autre station je sais que c est faisable mais je sais pas comment


---------------
Never f**k with your systems administrator. Why? Because they know what you do with all that free time! |?? | SAVE Jericho !
n°787446
trictrac
Posté le 28-02-2006 à 11:15:19  profilanswer
 

alors installe le demon direct sur la machine
tout depend le nombre d'entrée générées par seconde ...

n°787454
Le_Tolier
Hello IT ?
Posté le 28-02-2006 à 11:21:29  profilanswer
 

La solution de deporté le syslog me plait bien.
Aujourd'hui j'ai pas trop le temps mais je m'en occuperais surment demain ou en fin de semaine, car ca me branche pas mal de pouvoir voir les connexions ...  ;)


---------------
Never f**k with your systems administrator. Why? Because they know what you do with all that free time! |?? | SAVE Jericho !
n°787722
trictrac
Posté le 28-02-2006 à 22:02:41  profilanswer
 

petit up du soir, au cas ou d'autre personnes seraient intéressée ..

n°787746
Tomate
Posté le 28-02-2006 à 23:02:17  profilanswer
 

drapal :)

mood
Publicité
Posté le 28-02-2006 à 23:02:17  profilanswer
 

n°787769
Le_Tolier
Hello IT ?
Posté le 01-03-2006 à 00:35:41  profilanswer
 

d ailleur tomate tu sais c est quoi le nom de la appli qui permet de balance le syslog a travers le reseau  :??:  j ai un trou de memoire  :whistle:

n°787773
Toucouch
Posté le 01-03-2006 à 01:32:04  profilanswer
 

Question à trictrac (et aux autres) qui n'a pas de rapport direct avec son appli:
J'aimerais aussi me lancer dans un petit projet de logiciel libre mais je ne sais pas trop comment ça marche en fait... Quand on veut faire un LL, il faut contacter la FSF ou il suffit juste de mettre "GPL" dans les sources et basta ? Il n'y a pas un petit protocole au moins pour la forme, une déclaration, un descriptif du projet, rien ?
 
Question subsidiaire: trictrac évoque la question de la qualité de son code. Existe-t-il, à votre connaissance, un recueil de conventions pour écrire des "beaux" logiciels libres bien "propres" ? (exemples: format des commentaires, conventions de nommage, anticipation de l'internationalisation, etc.)
 
Merci d'avance pour vos réponses...

n°787782
ory
Posté le 01-03-2006 à 08:01:52  profilanswer
 

Le_Tolier a écrit :

d ailleur tomate tu sais c est quoi le nom de la appli qui permet de balance le syslog a travers le reseau  :??:  j ai un trou de memoire  :whistle:


 
c'est plutot un remplacement de syslog, syslog-ng, bien plus flexible

n°787795
Le_Tolier
Hello IT ?
Posté le 01-03-2006 à 09:00:56  profilanswer
 

ah oui ce nom me dit quelque chose merci beaucoup  :jap:


---------------
Never f**k with your systems administrator. Why? Because they know what you do with all that free time! |?? | SAVE Jericho !
n°787802
trictrac
Posté le 01-03-2006 à 09:20:45  profilanswer
 

tu mets une référence à la GPL dans tes sources, et c'est bon ...
Pour le code, libre à toi ..

n°787812
Tomate
Posté le 01-03-2006 à 09:54:10  profilanswer
 

sinon, le perl c'est un peu lourd non ?
en C ça blasterait :)


---------------
:: Light is Right ::
n°787818
Le_Tolier
Hello IT ?
Posté le 01-03-2006 à 10:18:47  profilanswer
 

Tomate a écrit :

sinon, le perl c'est un peu lourd non ?
en C ça blasterait :)


 
Le C caÿ le mal  :o


---------------
Never f**k with your systems administrator. Why? Because they know what you do with all that free time! |?? | SAVE Jericho !
n°787819
Tomate
Posté le 01-03-2006 à 10:19:29  profilanswer
 

c'est parce que tu connais pas que tu dis ça :o


---------------
:: Light is Right ::
n°787821
Le_Tolier
Hello IT ?
Posté le 01-03-2006 à 10:25:47  profilanswer
 

je connais que trop bien  :pt1cable:  j avais réalise un peu le même programme que celui de ce topic en C mais basé sur le flux netflow.
Il etais bien sauf qu au bout de 3 jours il avait bouffé toute la RAM du pc  :fou: .
Les malloc et les free je les haient  :o


---------------
Never f**k with your systems administrator. Why? Because they know what you do with all that free time! |?? | SAVE Jericho !
n°787822
Tomate
Posté le 01-03-2006 à 10:27:43  profilanswer
 

Le_Tolier a écrit :

je connais que trop bien  :pt1cable:  j avais réalise un peu le même programme que celui de ce topic en C mais basé sur le flux netflow.
Il etais bien sauf qu au bout de 3 jours il avait bouffé toute la RAM du pc  :fou: .
Les malloc et les free je les haient  :o


c'est pas la faute du C mais la tienne hein :heink:  
 
et je persiste : en C ça irait bcp plus vite :p


---------------
:: Light is Right ::
n°787825
trictrac
Posté le 01-03-2006 à 10:39:34  profilanswer
 

oui, mais beaucoup plus lourd à écrire, debugguer, et j'aime bien perl :p
en plus, perl c'est tout a fait adapté au regexp ...

n°787829
Le_Tolier
Hello IT ?
Posté le 01-03-2006 à 10:49:43  profilanswer
 

Tomate a écrit :

c'est pas la faute du C mais la tienne hein :heink:  
 
et je persiste : en C ça irait bcp plus vite :p


 
Oui je sais mais bon j ai jamais aimé le C na  :o


---------------
Never f**k with your systems administrator. Why? Because they know what you do with all that free time! |?? | SAVE Jericho !
n°787830
Tomate
Posté le 01-03-2006 à 10:54:26  profilanswer
 

[:mmmfff]


---------------
:: Light is Right ::
n°787846
Le_Tolier
Hello IT ?
Posté le 01-03-2006 à 11:16:25  profilanswer
 

roh boude pas  :o dès que j ai fini mon parseur je vais regarder ca de plus près


---------------
Never f**k with your systems administrator. Why? Because they know what you do with all that free time! |?? | SAVE Jericho !
n°788054
trictrac
Posté le 01-03-2006 à 20:37:53  profilanswer
 

Alors, toujours pas essayé ?? au lieu de critiquer perl :p

n°788059
dreamer18
CDLM
Posté le 01-03-2006 à 21:07:25  profilanswer
 

hum, je me permets de donner mon avis.
 
Il existe déjà un produit (cisco mars : http://www.cisco.com/en/US/products/ps6241/index.html) qui fait ça. Etant donné que pour être efficace, le soft doit être capable de récupérer et interpreter les formats de multiples modèles de firewall, et donc autant de formats syslog différents et des bases de signatures importantes et mises à jour régulièrement, les gens interessés se tourneront plutot vers un produit payant avec du support, surtout que le MARS n'est pas très cher.

n°788060
trictrac
Posté le 01-03-2006 à 21:21:26  profilanswer
 

et en plus proposé par cisco, donc pourkoi chercher ailleur ..
d'autant plus que mars ne propose pas du tout ce que je propose, désolé ..
c'est d'ailleur parce que cisco n'a rien dans son catalogue qui permet de faire ca que j'avais développé mon soft ..
alors donne toi la peine de te renseigner un peu avant de proposer du cisco a tout va, sans réfléchir .. entre ca et un miucrosoftien lambda, aucun diff ...
pour le fait que mars ne soit pas cher, laisse moi rire, mais je vois personne mettre mars chez soi, une dans une PME .. alors que suivre les conns d'un firewall c'est qd meme super utile pour debugguer ...
pour le fait d'etre compatible avec de nombreux formats de syslog, mon soft a été revu pour justement etre composé de modules, en fonction du type de FW a traiter, et donc permet d'etre adapter ..
a toi de créer de nouveau modules si certains te manquent ...
Et pour l'interface d'un FW, regarde un checkpoint, tu verras que cisco est loin, tres loin derriere avec le PIX, meme avec la version 7.
Ils sont tellement a la ramase que les developpeurs officiels du PIX ont l'interface du checkpoint installée pour voir ce qui y est fait, et ce qui pourrait etre repris.
Maintenant, la question que je te pose:  
en quoi ton post fait avancer quoi que ce soit, hormis proner encore une fois le dieu cisco ??? pour un produit hors scope qui plus est ??

n°788074
trictrac
Posté le 01-03-2006 à 22:19:48  profilanswer
 

sinon, pour recentrer, ce que j'aimerai savoir dans un premier temps, c'est si c'est 'facile' à installer, par la j'entend a la portée du premier admin venu .
Et comme la réponse sera non: qu'est-ce que je peux fair epour améliorer ca ..

n°788094
matafan
Posté le 02-03-2006 à 01:38:51  profilanswer
 

Peux-tu poster une image en 1600x1200 ? J'ai du mal a voir les details.

n°788102
trictrac
Posté le 02-03-2006 à 08:38:53  profilanswer
 

si tu me dis comment faire un preview, pas de prob ...

n°788417
trictrac
Posté le 02-03-2006 à 20:37:18  profilanswer
 

personne pour essayer ?

n°788527
Le_Tolier
Hello IT ?
Posté le 03-03-2006 à 09:09:59  profilanswer
 

Sisi mais surment la semaine prochaine en fait ;)


---------------
Never f**k with your systems administrator. Why? Because they know what you do with all that free time! |?? | SAVE Jericho !
n°790376
Le_Tolier
Hello IT ?
Posté le 08-03-2006 à 09:38:13  profilanswer
 

Bon alors j ai mis place syslog-ng, donc je vais tester tes scritps dans la journée je pense.
J'ai un peu regardé déjà comme c'est strcuturé au niveau bdd, et j'ai pensé un à truc, plutôt que de travailler toujours sur la même, table pourquoi ne pas faire une table pour les connexions journalières une pour les hebdomadaire ......
De plus j ai pas vu d'index pour les tables et d'après ce que j'avais fait il y a quelques annèes sans les index ca risque de mettre du temps à s'afficher en particulier sinon on fait une recherche sur des critères précis ( tel IP, port ..).


---------------
Never f**k with your systems administrator. Why? Because they know what you do with all that free time! |?? | SAVE Jericho !
n°790414
Le_Tolier
Hello IT ?
Posté le 08-03-2006 à 11:16:11  profilanswer
 

bon alors je voulu tester et ca fonctionne ne pas  :whistle:  
pas de message d erreur au lancement, le fichier pid est bien rempli avec un numéro de processus cependant aucun process ne correspont a ce numéro.
je vais creuser pour essayer de voir d'où vient le problème mais bon j'y connais rien en perl  :o
 
Edit :  en lançant  /usr/local/sbin/fwmonitor_dispatcher à la main j'ai ça comme erreur :  

Citation :


monitoring:/var/log# /usr/local/sbin/fwmonitor_dispatcher
Can't locate File/Tail.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.8.4 /usr/local/share/perl/5.8.4 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .) at /usr/local/sbin/fwmonitor_dispatcher line 8.
BEGIN failed--compilation aborted at /usr/local/sbin/fwmonitor_dispatcher line 8.


 
Edit 2 : en fait il manque le fichier Tail
 
Edit 3: c'est reglé c'etait une lib perl en fait  :D


Message édité par Le_Tolier le 08-03-2006 à 12:12:20

---------------
Never f**k with your systems administrator. Why? Because they know what you do with all that free time! |?? | SAVE Jericho !
n°790439
Le_Tolier
Hello IT ?
Posté le 08-03-2006 à 12:21:13  profilanswer
 

bon now ca fonctionne du moins on dirait mais il ne met rien dans la base.
Je pense que ca viens du fait que le log ressemble a ça :  

Code :
  1. Mar  8 12:16:05 1*.*.* kernel: Shorewall:GREEN2RED:ACCEPT:IN=eth0 OUT=eth1 SRC=1.*.*.*
  2. DST=148.129.75.16 LEN=48 TOS=0x00 PREC=0x00 TTL=127 ID=34031 DF PROTO=TCP SPT=1526
  3. DPT=80 WINDOW=64240 RES=0x00 SYN URGP=0


 
donc je vais voir pour modifier les mot clef du parser pour qu'il check  :ACCEPT:


Message édité par Le_Tolier le 08-03-2006 à 12:21:44

---------------
Never f**k with your systems administrator. Why? Because they know what you do with all that free time! |?? | SAVE Jericho !
n°790503
trictrac
Posté le 08-03-2006 à 15:32:02  profilanswer
 

euh .. tu peux pas modifier ta config iptable ?
en tout cas, ta ligne syslog est assez bizarre.
Je suis pas chez moi, mais ce soir je post une ligne syslog "standard" pour un message iptables.
en tout cas, merci d'avoir essayé .;
 
PS: effectivement, il faut que je pense a mettre les dépendances en terme de modules perl

n°790521
Le_Tolier
Hello IT ?
Posté le 08-03-2006 à 15:58:39  profilanswer
 

alors :  
     - non je peux pas modifier la syntaxe du log car j utilise pas directement iptable mais Shorewall donc je peux juste régler les niveau de log ( debug, notice ..... )
 
     - je me suis un peu plongé dans ton code ( -> je me suis mis au perl du coup  :D )  
           j ai remplace ça :  
         

Code :
  1. my %fw = ("192.168.0.1" => "netfilter",
  2.           "autre" => "other_module" );


         donc je pense qu'il faut modifier l'expression reguliere pour essayer de matcher l'ip  
       

Code :
  1. $_ =~ m/(\w{3})\s+(\d{1,2}) (\d{2}:\d{2}:\d{2}) ([^ ]*)  (.*)/))


         à ce niveau là ([^ ]*)
 
         j'ai aussi remplace le Netfilter.pm les accept et drop par ACCEPT et DROP au cour ça serait case sensitive.
         


---------------
Never f**k with your systems administrator. Why? Because they know what you do with all that free time! |?? | SAVE Jericho !
n°790526
Le_Tolier
Hello IT ?
Posté le 08-03-2006 à 16:15:50  profilanswer
 

tiens si tu pouvais aussi m'expliquer cette ligne :

Code :
  1. if ((my $strmonth, my $day, my $hour, my $host, my $msg) = ( $_ =~ m/(\w{3})\s+(\d{1,2}) (\d{2}:\d{2}:\d{2}) ([^ ]*) (.*)/))


 
j'ai bien compris que ca ~m/.... c'est l'expression régulière mais je sais pas trop ce que représente la variable $_ .
De plus je sais pas trop à quoi correspond ce qu'il y a dans la 1er partie du if  :pt1cable:


---------------
Never f**k with your systems administrator. Why? Because they know what you do with all that free time! |?? | SAVE Jericho !
n°790545
trictrac
Posté le 08-03-2006 à 17:34:16  profilanswer
 

$_ est une expression idiomatique de perl, c'est un peu tout en fonction des cas ...
Dans le cas la, c'est le message que le firewall envoie au syslog (la partie apres le hostname, de mémoire)
Les variable de la partie du if sont des affectations: c'est pour récupérer les strings de la regexp en une étape ..

n°790547
Le_Tolier
Hello IT ?
Posté le 08-03-2006 à 17:38:24  profilanswer
 

ok c'est ce que je pensais donc :  
$strmonth = \w{3}
$day = \d{1,2}
$hour = \d{2}:\d{2}:\d{2}
$host = ([^ ]*)
$msg = (.*)
 
donc je vais modifier ([^ ]*) de sorte a chopper mon adress ip  ;) pour entrer dans les if qui suivent


---------------
Never f**k with your systems administrator. Why? Because they know what you do with all that free time! |?? | SAVE Jericho !
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  [projet libre] logiciel d'analyse de firewall

 

Sujets relatifs
projet cluster mosixanalyse de log et TCP
Ne démarrer qu'un seul logiciel sous Linuxcontribuer à un projet libre
logiciel pour portableLogiciel pour libérer de la mémoire vive ?
logiciel pour utiliser linux sous windows ?insertion CDaudio et lancement logiciel
Dossier Sécurité : Firewall, VPN, IPSEC 
Plus de sujets relatifs à : [projet libre] logiciel d'analyse de firewall


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