FortiGate packet capture op basis van MAC adres

FortiGate packet capture op basis van MAC adres

De mogelijkheid om een packet capture uit te voeren direct op een FortiGate is een krachtige tool om te kunnen troubleshooten. Eerder schreef collega Tom hier al een artikel over. In dit artikel gaan we dieper in op de packet capture op basis van MAC adres omdat in sommige gevallen, denk aan arp en dhcp, een capture op basis van bijvoorbeeld IP adres of poort niet altijd de meest efficiënte manier is om de gewenste informatie te krijgen.

Hieronder leggen we uit wat de mogelijkheden zijn en ook met welke beperkingen rekening gehouden moet worden bij een capture op basis van MAC adres.

Er zijn meerdere methodes om een capture te maken op basis van een MAC adres. Welke methode gebruikt wordt is afhankelijk van de interface waarop de capture gedaan moet worden. Is dit een specifieke interface, dan kan onderstaand commando gebruikt worden om een capture voor alle verkeer met een specifiek source MAC adres. In dit voorbeeld wordt deze capture gedaan op interface ‘Vlan10’, maar dit kan natuurlijk ook een fysieke interface zijn.

FortiGate # diagnose sniffer packet Vlan10 "ether src 12:34:56:78:9a:bc" 6 0 l    

Voor een capture van alle verkeer met een bepaald destination MAC adres op een specifieke interface is het commando dan als volgt.

FortiGate # diagnose sniffer packet Vlan10 "ether dst 12:34:56:78:9a:bc" 6 0 l    

Mocht bijvoorbeeld niet direct duidelijk zijn vanaf welke interface verkeer van een bepaald MAC adres komt, is er ook de mogelijk om een packet capture te doen op basis van “any” interface waarbij het filterargument “ether” wordt gebruikt. Op de CLI ziet dit er als volgt uit voor een capture van source MAC adres “12:34:56:78:9a:bc”.

FortiGate # diagnose sniffer packet any “(ether[6:4]=0x12345678) and (ether[10:2]=0x9abc)”   

Waarom de argumenten “ether[6:4]’ en ‘ether[10:2]” in dit voorbeeld? Om dit te beantwoorden moeten we wat dieper in de MAC header van een ethernet frame duiken. In onderstaande afbeelding is te zien dat de eerste 6 octetten van de MAC header het destination MAC adres bevatten, en de 6 daaropvolgende octetten bevatten het source MAC adres.

FortiGate packet capture

Het argument “ether[6:4]=0x12345678” betekend, vrij vertaald, “kijk naar 4 octetten uit het ethernet frame waarbij je begint bij het zesde octet en kijk of deze overeenkomen met 12345678 in hexadecimaal”. De beperkende factor hier is dat dit filterargument alleen werkt met een data size van 1, 2 of 4 bytes. Het is dus niet mogelijk om in 1 keer het volledige, 6 byte lange, MAC adres in het argument te gebruiken.

Wel zijn hier variaties op te maken. Zo zijn onderstaande voorbeelden alle valide argumenten voor filteren op, een deel van,  source MAC adres “12:34:56:78:9a:bc”. Hierbij is de ene wellicht praktischer is dan de ander, maar het gaat even om het illustreren van de mogelijkheden en de werking van het filterargument.

(ether[6:4]=0x12345678) and (ether[10:2]=0x9abc)
(ether[6:2]=0x1234) and (ether[8:4]=0x56789abc)
(ether[6:2]=0x1234) and (ether[8:2]=0x5678) and (ether[10:1]=0x9a)
(ether[8:4]=0x56789abc)

Deze logica volgend, zou voor een packet capture op basis van destination MAC adres het volgende filter toegepast kunnen worden.

FortiGate # diagnose sniffer packet any '(ether[0:4]=0xfedcba65) and (ether[4:2]=0x4321)'

Ondanks dat dit een valide filter is, zal deze capture weinig opleveren. Dit wordt veroorzaakt door hoe de packet capture op de achtergrond werkt.

Bij een capture op een specifieke interface worden de source en destination MAC adressen aangeleverd door de ‘libpcap’ library. Echter bij een capture op de “any” interface wordt door deze library de “Linux cooked-mode capture” structuur gebruikt en deze ondersteund niet de weergave van destination MAC adressen. Voor een capture op basis van het destination MAC adres zal dus de interface gespecificeerd moeten worden.

Bovenstaande voorbeelden geven allemaal de CLI syntax weer. Om een capture op basis van MAC adres te doen vanaf de FortiGate GUI kan het filter argument als “advanced” filter ingevuld worden.

packet-capture-2

Vragen?

U kunt altijd contact met SolidBE opnemen mocht u een vraag hebben over een van de besproken onderwerpen (Firewall, Fortinet, TechTalk ) of wanneer u assistentie nodig heeft om netwerk- of security vraagstukken op te lossen. Wij helpen u graag bij de beheren van een veilige en solide ICT omgeving!

Auteur

Ruben is Network Engineer bij SolidBE

Scroll naar boven