less suitable for work (lsfw) : list firewall

Posté par (page perso) . Édité par Nÿco, Nils Ratusznik et NeoX. Modéré par patrick_g.
Tags : aucun
37
8
fév.
2012
Internet

L'outil lsfwlist 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.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.