L'outil lsfw (« list firewall ») permet de lister les règles de pare-feux appliquées entre deux points d'un réseau. Le but est d'aider les administrateurs réseaux à répondre aux questions existentielles : « quelles sont les règles entre ces deux points ? », ou « pourquoi ça passe [pas] ? ». Ce qui n'est pas forcément trivial sur un gros réseau avec plein de règles et plusieurs routeurs/pare-feu sur le chemin.
NdM : merci à Patrick Lamaizière pour son journal.
L'outil interprète la configuration des équipements et émule le comportement (au niveau IP) du filtrage et du routage pour permettre de lister les règles. À ce jour, il interprète les règles de routeur Cisco, de pare-feu Cisco PIX/module FWSM et de Packet Filter (version OpenBSD >= 4.7) avec quelques limitations (voir la doc pour les limitations).
Sur une configuration d'exemple, je veux savoir quelles sont les règles appliquées avec une IP source 1.2.3.4 vers une IP 192.168.0.2, via le protocole TCP, ayant un port source dynamique (comprendre : supérieur à 49152) et comme port destination HTTP. La requête est :
lsfw> probe on R1|10.0.3.1 1.2.3.4 192.168.0.2 tcp dyn:http
###############################
-------- Routed probes --------
Path:
On: R1 (cisco router #1)
FastEthernet1/0 (internet)
interface IP: 10.0.3.1 network: 10.0.3.0/24
FastEthernet1/1 (INTERNAL)
interface IP: 10.0.1.254 network: 10.0.1.0/24
nexthop: 10.0.1.1
On: P1 (firewall #1)
em0 (em0)
interface IP: 10.0.1.1 network: 10.0.1.0/24
em1 (em1)
interface IP: 192.168.0.254 network: 192.168.0.0/24
nexthop: 192.168.0.0/24
------
R1 (cisco router #1)
Matching ACL on input: FastEthernet1/0 (internet)
ACCEPT r1-conf #34: [INTERNET_IN] permit ip any any
DENY [INTERNET_IN] *** implicit deny ***
Matching ACL on output: FastEthernet1/1 (INTERNAL)
ACCEPT r1-conf #69: [INTERNAL_OUT] permit ip any any
DENY [INTERNAL_OUT] *** implicit deny ***
------
P1 (firewall #1)
Matching ACL on input: em0 (em0)
DENY ./conf/pf.conf #26: block all
ACCEPT ./conf/pf.conf #33: pass proto tcp from any to 192.168.0.2 port { http, https }
Matching ACL on output: em1 (em1)
DENY ./conf/pf.conf #26: block all
ACCEPT ./conf/pf.conf #33: pass proto tcp from any to 192.168.0.2 port { http, https }
-----------------
Global ACL result is: ACCEPT
Global routing result is: ROUTED`
L'outil affiche le chemin, puis les règles qui matchent et enfin un diagnostic si ça passe ou non (sachant que plus la requète est précise plus la réponse l'est)
Actuellement, je travaille plutôt coté références croisées et suite de tests (pour nos besoins internes).
Pour finir, l'outil est beaucoup utilisé au boulot. Ce qui fait qu'il est maintenu par rapport à notre config (et je ne promet rien pour les autres config, je ferais au mieux). Je m'en suis aussi pas mal servi pour convertir des règles Cisco vers du bon Packet Filter, en contrôlant le résultat avec des tests de non régression.
Aller plus loin
- Journal à l'origine de la dépêche (214 clics)
- Site internet de lsfw (384 clics)
- Documentation (66 clics)
# lsfw = list firewall
Posté par Patrick Lamaizière (site web personnel) . Évalué à 8.
Bien sûr, lsfw est pour ls firewall (list firewall) et pas "less suitable for work".
On fait un journal et paf on se retrouve sous les feux des projecteurs à la une de linuxfr !
Merci !
les pixels au peuple !
[^] # Re: lsfw = list firewall
Posté par Nÿco (site web personnel) . Évalué à 2.
Ah quand même... merci, c'est corrigé ! ;-)
# et iptables ?...
Posté par jve (site web personnel) . Évalué à 2.
J'aurais bien essayé, mais il ne semble pas y avoir de support d'iptables. C'est prévu ?
[^] # Re: et iptables ?...
Posté par Patrick Lamaizière (site web personnel) . Évalué à 4.
On n'utilise pas de Linux en pare-feu alors non ce n'est pas prévu. Les patchs (et les tests associés) qui vont bien sont bienvenus.
les pixels au peuple !
# Testeur de ports sortants
Posté par Marc Maurice (site web personnel) . Évalué à 3.
Dans le même style j'ai mis en place un testeur de ports sortants il y a quelques temps :
http://portquiz.positon.org/
http://portquiz.positon.org:8080/
http://portquiz.positon.org:666/
Un serveur qui écoute sur tous les ports.
Très pratique pour tester si c'est votre firewall local qui vous empêche de sortir.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.