Yet Another Firewall For Linux

Items
News

YAFFL

Comment ca marche

Qui a fait cette chose

Architecture

Download

Documentation

Changelog

Bugs

TODO

Ca vous a plu ?

Mailing-lists

License

Credits

Projets connexes

 
News

  • 24 Nov 2004 Ipfreeze-0.4.9 est disponible. Cette version permet de placer la chaîne de blacklist dans la table de NAT. Cela permet de rediriger les paquets blacklistés vers une autre machine (honeypot) plutot que de les détruire. Un How-to en anglais est également disponible.
  • 19, Avr 2004 Des paquets debian non officiels (sid) pour les librairies Perl (libipq et NetPacket) sont disponibles sur le site de Yann (merci à lui)
  • 20 Fev 2004 Ipfreeze-0.4.8 est disponible. Je pense mettre en place un système pour passer le paquet à des scripts externes. Cela permettrait d'insérer un jeu de règles spécifiques en fonction du paquet reçu. Ce sera la version 0.5.0 je pense :)
  • 2 Nov. 2003 : Yaffl-1.2-3 est désormais disponible ainsi que ipfreeze-0.4.7. Il est conseillé de mettre au moins ipfreeze à jour, ça vaut le coup :)
  • 27 Oct. 2003 : ipfreeze version 0.4.6 est disponible. Cette version permet de déterminer le sort des paquets des machines blacklistées (DROP, TARPIT, MIRROR etc...)
  • 13 Oct. 2003 : La page de configuration du firewall est en ligne ici.
  • 17 Sep. 2003 : Une page en français pour Yaffl sur TuxFamily...merci à eux.
  • 3 Jui. 2003 : Le projet est rendu publique sur le site de savannah.


 
Mais qu'est ce que c'est ?

YAFFL est une configuration particulière du logiciel pare-feu Netfilter. Cette configuration est couplée avec un outil qui permet de se rendre invisible (sur le réseau) pour les adresses IP au comportement suspect et ce, pour un temps donné. Ce n'est pas la garantie d'une sécurité optimale mais c'est le comportement le plus sain que j'ai trouvé pour sécuriser les machines que je laisse tourner en permanence avec une connexion ADSL. YAFFL propose également de faire passerelle internet pour votre réseau local et aussi de NATer des ports vers une machine de ce réseau.

L'ensemble du code de YAFFL (y'en a pas beaucoup) est disponible sous license GPL. Vous pouvez en faire ce que bon vous semble tant que le code ne change pas de license sans ma permission. Toute utilisation que vous ferez de ce code est sous votre responsabilité.



 
Comment ca marche ?

  • Livré avec
    YAFFL version 1.2 contient les éléments suivants :
    • firewall-default Un script shell pour netfilter avec la configuration par défaut de Yaffl (lecture seule).
    • runme.1st Est ce que votre machine possède les prérecquis nécessaires ? (éxécutable).
    • ipfreeze.pl Le script de surveillance qui gère les blacklists. (éxécutable).


    Une fois que vous avez généré un script fonctionnel (vous pouvez le faire en cliquant ici), l'installateur vous a, si tout s'est bien passé, placé les ipfreeze.pl dans /usr/local/sbin et firewall dans /etc/init.d. Un appel à ce dernier script lancera automatiquement le démon ipfreeze.pl et chargera la configuration du pare-feu dans le noyau.

    A quoi sert ipfreeze.pl ?
    C'est le démon blacklisteur. Le firewall lui donne les paquets réseau qui proviennent d'utilisateurs d'internet au comportement jugé suspect et ce démon rajoute une régle dans la configuration qui détruit tous les paquets provenant de cette source. Au bout d'un certain temps (10 minutes par défaut, parametrable), ipfreeze enlève la règle.

    Qu'est ce qu'un comportement suspect ?
    Le syn flood est un comportement suspect. Il peut s'agir d'une tentative de détection de ports ou plus simplement d'une tentative de forçage. Il est possible de paramétrer un certain nombre de connexions (SYN) maximum par secondes au dela duquel l'IP qui demande la connexion est donnée à ipfreeze. Mais il est également possible de définir des ports interdits. Toute tentative de connexion sur un de ces ports est considéré comme comportement suspect. Par exemple personne n'est sensé essayer de se connecter sur les ports 23 (telnetd) ou 111 (portmap) à moins que vous n'ayez explicitement fait savoir qu'un tel serveur tourne sur votre machine (telnet sur un firewall ?!?!?!).

    Je travaille souvent à distance, puis je être blackisté par erreur ?
    Il existe pour cela un fichier de configuration (ip_whitelist) qui permet de spécifier les adresses IP à ne jamais blacklister. A chaque fois que le firewall lui donne un paquet, il compare l'adresse source aux adresses de ce fichier avant de blacklister ou non. Il est important que la passerelle par défaut soit indiquée dans ce fichier sans quoi un attaquant pourrait faire en sorte que vous blacklistiez tout internet. Il en est de même pour vos DNS s'ils ne sont pas hebergés chez vous.

    Mon firewall blackliste souvent tel ou tel serveur IRC, est ce normal ?
    Oui, les serveurs IRC scannent un certain nombre de ports chez vous quand vous vous connectez chez eux pour être certain de l'existence physique de votre machine. Ce faisant, ils génèrent un flood (l'irc-flood) qui est interprété comme une attaque par le pare-feu : sanction immédiate. Pour cela, il faut fixer le nombre max de connexions par secondes aux alentours de 10. Autre problème, lors du scan, les serveurs tombent (entre autres) régulièrement sur le port 23 ce qui est une autre cause de sanction. Il s'agit donc de parametrer Yaffl sans avoir a trop assouplir notre politique de sécurité uniquement à cause de ces serveurs. La conduite à tenir est soit de les blacklister de façon permanente (ip_blacklist) soit au contraire de les whitelister (ip_whitelist).

    Comment puis je savoir ce qui ce passe ?
    Grâce aux logs. Suivant le niveau de logs que vous avez spécifié, le script rend le noyau plus ou moins volubile. Ipfreeze.pl possède également son propre journal dans lequel il consigne toutes les IP blacklistées avec l'heure du délit (/var/log/ipfreeze.log).



 
Auteur

  • Author: Grégoire HUBERT <greg AT coolkeums POINT org>

Afin que vos questions ou problèmes profitent à tous, veuillez préférer la mailing-list plutôt que de m'écrire directement.


 
Supported architectures

Yaffl a été écrit sous et pour gnu/linux.


 
Download

Yaffl est disponible selon les termes de la license GNU GPL (Cf la partie license).

La dernière version est 1.2-3.



 
Documentation

  • admin@capybarat:~/bin$ ./ipfreeze.pl -h
    Ipfreeze 0.4.8
    Copyright Gregoire Hubert 02-2004

    Usage : ipfreeze.pl [-h|--help] [-l|--logfile file] [-L|--loglevel level] [-b|--blacklist file] [-w|--whitelist file] [-t|--target] [-d|--duration] [-V|--version]
    -l|--logfile : Use the given log file (default is /var/log/ipfreeze.log)
    -L|--loglevel : Set the netfilter logs on : 0=none, 1=temporarily blacklisted, 2=all blacklisted (default is 1)
    -b|--blacklist : Use the given blacklist file (default is /var/log/ipfreeze/ip_blacklist)
    -w|--whitelist : Use the given whitelist file (default is /var/log/ipfreeze/ip_whitelist)
    -t|--target : Specify the netfilter target for blacklisted hosts (default is DROP). It can be a user created chain.
    -d|--duration : Blacklist period in seconds (default is 600)
    -V|--version : Show the version and exit
    -h|--help : show this message and exit


 
Changelog

  • Ipfreeze-0.4.8
    • Options disonibles en ligne de commande
    • Possibilité de choisir ses listes
    • Possibilité de choisir la cible des paquets blacklistés.
      Cela permet par exemple d'envoyer tous les futurs paquets vers une autre chaine
    • Tapez ipfreeze.pl --help pour plus d'infos ;)
  • Yaffl-1.2-3
    • Gère les les ports interdits en UDP
    • Gère les flood sur tous les protocoles IP
    • Protection anti flood sur le périphérique NETLINK
    • Permet d'attribuer une sentence aux nouvelles connexions TCP qui ne sont pas ouvertes ni interdites.
  • Ipfreeze-0.4.7
    • Support de tous les protocoles IP.
    • Reconnaissance des protocoles UDP et ICMP.
    • Permet de loguer les paquets des machines blacklistées.
  • Ipfreeze-0.4.6
    • Support de sentence différentes pour les machines blacklistée en permanence ou épisodiques.
    • Il est conseillé de passer à la version >=0.4.7


 
Bugs

  • Bugs connus:
    • Ipfreeze-0.4.6 place une blackliste uniquement en TCP ! Cette erreur a été corrigée dans la version 0.4.7. La fonctionnalité pour les TARPIT est maintenant placée dans le script de firewall et plus dans ipfreeze.pl.


 
TODO

  • Une version 1.4 qui implémenterait le knocking a été réfléchie...est ce bien util ?


 
De l'aide

Si vous avez envie de participer à ce projet avec des idées ou avec vos doigts, contactez moi, on pourra au moins discuter.


 
Mailing-lists

Une mailing-list existe ici. C'est en anglais n'en déplaise aux anglophobes...



 
License

Toutes les parties de ce projets sont rendues publiques sous la license GPL.

Copyright (C) 2003 grégoire HUBERT.
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Author : grégoire HUBERT


 
Credits

Ce projet a été démarré pour répondre à des besoins personnels. Il est rendu publique dans le but de faire profiter à ceux qui le veulent des services que ce logiciel a su me rendre.
Puisque j'ai l'occasion de remercier des gens, je ne vais pas m'en priver :
  • Klaus Knopper pour ses oeuvres (et le mot est faible)
  • Hervé Eychenne qui fait de la vraie sécurité (allez voir son site). Il m'a généreusement donné sa charte graphique car je suis trop fainéant pour créer la mienne.
  • Tous les développeurs de KDE qui ont fait (et font) un boulot génial.
  • Vincent de nuage rouge qui a accepté d'être testeur... ;)



Grégoire HUBERT, Lundi 19 Avril 2004