"Diagnose sniffer packet" op een FortiGate

kennislevel 1 kennislevel 2 kennislevel 3 Technisch niveau Waddinxveen, 27 februari 2017 Waddinxveen, 27 februari 2017 Networking Networking

Inleiding
Het commando "diagnose sniffer packet" is een zeer uitgebreid diagnose commando, op de commandline van een Fortigate. Dit commando wordt gebruikt om verkeersanalyses te maken. Via de web interface is er ook een "Packet sniffer" optie beschikbaar, maar die is niet zo uitgebreid als het "diagnose sniffer packet" commando. Zo kan het "diagnose sniffer packet" commando meerdere filters (en veel uitgebreidere) toepassen, in één keer.

Hoe ga je te werk?

Voordat je begint...
Standaard accelereert een Fortigate alle data met behulp van de NPU/NP2/NP6 processoren. Deze processoren werken onafhankelijk van de CPU en zorgen ervoor dat het verkeer sneller afgehandeld wordt. De enige pakketten die je standaard in een packet capture ziet, zijn de niet versnelde pakketten.

Een packet capture zal dus alleen het volgende laten zien:
• TCP (SYN/ACK/FIN)
• Onbekend UDP verkeer
• Ping/ bepaalde ICMP types
• ARP verkeer
• Broadcast verkeer

Als je wél al het verkeer wilt inzien, kun je specifiek verkeer van een IPv4 policy regel uitsluiten van de NPU processor. Dit kan via het volgende commando:
config firewall policy edit (policy id)
set auto-asic-offload disable next
end
Bedenk wel dat niet geaccelereerd verkeer langzamer is en druk op de CPU zet. Als het veel verkeer is (> 100Mbit/s), is het verstandig om dit in een onderhoudsvenster te doen.

Er is een andere mogelijkheid om al het verkeer uit te sluiten van de NPU processor. Dit commando is afhankelijk van uw Fortigate model/software versie en valt terug te vinden in de Knowledgebase van Fortinet.

Het diagnose commando
Het "Diagnose sniffer packet" commando wordt als volgt opgebouwd:
diagnose sniffer packet [interface] [filter] [verbose] Als de Fortigate VDOMs gebruikt, moet dit commando onder dat VDOM uitgevoerd worden.

Argument [Interface] spreekt voor zich: hier voert u de Interface naam in van waar u verkeer wilt afvangen.
Argument [filter] zullen we verderop bespreken.
Argument [verbose] bepaalt van hoeveel informatie je wordt voorzien. Onderstaand een tabel met de nummers en wat het betekent:

1: Laat alleen de header van de pakketten zien
2: Laat header en data zien van IP pakketten
3: Laat header en data zien van ethernet pakketten (wanneer mogelijk)
4: Laat alleen de header van de pakketten zien met interface naam
5: Laat header en data zien van IP pakketten met interface naam
6: Laat header en data zien van ethernet pakketten met interface naam (wanneer mogelijk)
Als u bijvoorbeeld al het verkeer door de firewall van host 192.168.1.10 wilt zien, met de Interface naam, doet u dit als volgt:
diagnose sniffer packet any "host 192.168.1.10" 3 Uitgebreid filteren
Er kan ook uitgebreid gefilterd worden met vele argumenten.

Argument Betekenis
host 1.1.1.1 Filteren op IP adres
src host 1.1.1.1 Filteren op Source IP adres
dst host 2.1.1.1 Filteren op Destination IP adres
src port 20000 Filteren op Source poort (1 tot 65535)
src portrange 20000-40000 Filteren op Source poort tange (startpoort-eindpoort)
dst port 3389 Filteren op Destination poort (1 tot 65535)
dst portrange 67-68 Filteren op Destination poort tange (startpoort-eindpoort)
net 1.1.1.0/24 Filteren op subnet. Invullen met netwerk adres met class
tcp Filteren op TCP pakketten
udp Filteren op UDP paketten
icmp Filteren op al het ICMP (ping,traceroute) verkeer
arp Filteren op ARP verkeer
broadcast Filteren op Broadcast verkeer
multicast Filteren op Multicast verkeer
ether host aa:bb:cc:11:22:33 ether host aa:bb:cc:11:22:33
Met "AND" of "OR" ("&&" of "||" ) kunnen meerdere argumenten gekoppeld worden. diagnose sniffer packet any "host 192.168.1.10 or host 192.168.1.11" 3 Bij dit voorbeeld wordt al het verkeer van en naar 192.168.1.10 en 192.168.1.11 weergegeven.
Ook kan er uitsluiting gemaakt worden met "NOT" of "!"
diagnose sniffer packet any "net 192.168.1.0 and not host 192.168.1.11" 3 Deze filter laat al het verkeer van 192.168.1.0 zien, maar niet van 192.168.1.11.
Samen met Haak openen/sluiten kunnen twee argumenten samen gevoegd worden tot een uitgebreid filter
diagnose sniffer packet any "(src host 192.168.1.10 or src host 192.168.1.11) and (dst port 80 and tcp)" 3 Bovenstaand filter laat al het verkeer van 192.168.1.10 en 192.168.1.11 met poort TCP poort 80.
Er kan ook gefilterd worden op uitgebreide TCP flags of Pakket gegevens:
Argument Betekenis
tcp[tcpflags] == tcp-syn Filteren op SYN pakketten
tcp[tcpflags] == tcp-ack Filteren op ACK pakketten
tcp[tcpflags] == tcp-rst Filteren op RST pakketten
tcp[tcpflags] == tcp-fin Filteren op FIN pakketten
Er zijn nog vele andere filters te maken, die zelfs tot op bit niveau pakketten kunnen filteren. Deze Filters vallen te vinden in de handleiding van het commando "tcpdump" van Linux.

Wilt u hulp van een gecertificeerd Fortinet expert?

Contact

SolidBE B.V.
Maarten Schoutenstraat 19
2741 SV Waddinxveen

KVK 51248794
NL 82 3170 846 B01
NL07 RABO 0157 5353 98