Fortinet - analiza problemów sieciowych z FortiGate
Fortinet
Sieci stają się coraz bardziej złożone i zagmatwane. Dlatego potrzebne są narzędzia do analizy i identyfikacji problemów.
Firewall FortiGate oferuje tutaj szeroką gamę narzędzi. Dziś chciałbym przedstawić kilka z nich i wyjaśnić jak z nich korzystać.
Najprostszym narzędziem jest oczywiście klasyczny ping, który wykonuje się w FortiGate poprzez CLI poleceniem execute ping. Istnieją jednak jeszcze możliwości wykorzystania pinga w bardziej ukierunkowany sposób. Aby to zrobić, należy użyć polecenia execute ping-options <'parameter'>. Można tu wykorzystać następujące parametry:
-
adaptive-ping
FortiGate wysyła następny pakiet zaraz po otrzymaniu ostatniej odpowiedzi. - data-size <'bytes'> Określenie rozmiaru datagramu w bajtach.
- df-bit <'yes | no'> Ustaw df-bit na tak, aby zapobiec fragmentacji pakietu ICMP. Ustaw df-bit na no, aby zezwolić na fragmentację pakietu ICMP.
- pattern <'2-byte_hex'> Służy do wypełnienia opcjonalnego bufora danych na końcu pakietu ICMP. Rozmiar bufora jest określany za pomocą parametru data_size. Pozwala to na wysyłanie pakietów o różnych rozmiarach w celu przetestowania wpływu rozmiaru pakietu na połączenie.
- repeat-count <'repeats'> Określenie, jak często ping ma być powtarzany.
- Source {auto | <'source-intf_ip'> } Określenie interfejsu FortiGate, z którego ma być wysyłany ping. Jeśli określisz auto, urządzenie FortiGate wybierze adres źródłowy i interfejs na podstawie trasy do strony <'host-name_str'> lub <'host_ip'>. Określenie adresu IP interfejsu FortiGate służy do testowania połączeń z różnymi segmentami sieci z określonego interfejsu.
- timeout <'seconds'> Określ w sekundach, jak długo należy czekać, aż upłynie czas pingowania.
- tos <'service_type'> Ustaw pole ToS (Type of Service) w nagłówku pakietu, aby wskazać pożądaną jakość usługi.
- Minimalizujopóźnienia lowdelay Delay
- przepustowość Maksymalizacja przepustowości
- niezawodność Maksymalizacja niezawodności
- Minimalizacjaniskich kosztów
-
ttl
Określenie czasu życia. Czas życia to liczba skoków, które pakiet ping może wykonać zanim zostanie odrzucony lub zwrócony. - validate-reply {yes | no} Wybierz tak, aby sprawdzić poprawność danych odpowiedzi.
- view-settings Wyświetla bieżące ustawienia opcji ping.
- reset Resetuj Resetuje ustawienia.
Oczywiście możesz połączyć opcje, aby uzyskać pożądany wynik. Oto przykład:
Execute ping-options source 192.168.10.254 repeat-count 50
execute ping 10.10.10.234
Ta kombinacja wykona ping z adresem źródłowym 192.168.10.254 i adresem docelowym 10.10.10.234. Wysłanych zostałoby 50 pakietów PING.
Jeśli chcesz dowiedzieć się, która reguła firewalla ma zastosowanie w konkretnym przypadku, możesz to sprawdzić również za pomocą CLI. Służy do tego następujące polecenie:
diag firewall iprope lookup <'src_ip'> <'src_port'> <'dst_ip'> <'dst_port'> <'protocol'> <'Source interface'>
- <'src_ip'> Adres źródłowy
- <'src_port'> Port źródłowy
- <'dst_ip'> Adres docelowy
- <'dst_port'> Port przeznaczenia
- <'protocol'> Który protokół ma być symulowany, np. TCP lub UDP
- <'source interface'> Interfejs źródłowy, z którego ma być symulowane żądanie
Jeśli żądania są wykonywane poprawnie, otrzymujemy wyniki takie jak poniżej:
FortiGate # diag firewall iprope lookup 10.187.1.100 12345 8.8.8.8 53 udp port2
FortiGate # diag firewall iprope lookup 10.187.1.100 12345 8.8.8 53 tcp port2
Pierwsze zapytanie daje wynik w postaci polityki firewall o ID 0. Byłaby to reguła implicit deny, która zawsze znajduje się na dole i blokuje każdy ruch sieciowy, który nie pasuje do jednej z poprzednich reguł.
Przy drugim zapytaniu otrzymujemy wynik, że odpowiedzialna jest polityka firewall o ID 2. Dzięki temu mamy pewność, że zastosowana została właściwa reguła zapory.
Ale co zrobić, jeśli wszystko wydaje się pasować, ale nadal nie działa czysto?
Wtedy trzeba przyjrzeć się bezpośrednio ruchowi sieciowemu. FortiGate oferuje kilka możliwości w tym zakresie. Poprzez WebGUI lub CLI.
Przechwytywanie pakietów przez WebGUI
Poprzez Network --> Packet Capture w FortiGate WebGUI można szybko wygenerować dane do analizy za pomocą kilku opcji.
- Wybierz interfejs, na którym FortiGate powinien zbierać dane.
- Liczba pakietów do zebrania, maksymalna to 10 000.
Jeśli włączysz filtry, nadal masz następujące przydatne opcje:
- Host(y) Wprowadź adresy, których dane mają być zbierane. Możesz wprowadzić wiele adresów za pomocą znaku , . Przykład: 192.168.10.254, 10.10.10.234
- Port(y) Tutaj również można zdefiniować kilka portów oddzielonych znakiem , . Przykład: 443, 80
- VLAN(s) Jeśli używasz kilku VLANów na jednym interfejsie w swojej sieci, możesz określić konkretnie VLANy. Przykład: 1, 4096
- Protocol(s) Tutaj wpisujesz numery protokołów, które chcesz analizować. Numery te można znaleźć w oficjalnej dokumentacji IANA: IANA Protocol numbers
- Include IPv6 Packets Pozwala to na rejestrowanie nie tylko pakietów IPv4, ale także pakietów IPv6, jeśli są one używane w twojej sieci.
- IncludeNon-IP Packets Jeśli chcesz nagrać ARP, DHCP lub inne protokoły, które nie zawsze używają IP, możesz je nagrać za pomocą tej opcji.
Zapisz wybór. Następnie można to wybrać w Network -> Packet Capture. Możesz rozpocząć nagrywanie poprzez menu prawego przycisku myszy.
Jeśli pobierzesz nagranie, co jest również możliwe podczas nagrywania, otrzymasz plik PCAP, który możesz otworzyć i obejrzeć w narzędziu do analizy, takim jak Wireshark.
Sniffing pakietów przez CLI
Możesz również szybko i wygodnie obserwować docelowy ruch sieciowy za pomocą wiersza poleceń.
Polecenie ma następującą strukturę:
diag sniffer packet <'interface'> <'filter'> <'verbose'> <'count'> a
- <'interface'> Interfejs, który ma być użyty do podsłuchu. Nazwa jest tutaj wymagana. Przykład: wan1 lub WLAN-Gaeste. Należy pamiętać, że w nazwie rozróżniana jest wielkość liter. Jeśli masz interfejs tunelowy o nazwie WLAN-Gaeste, wlan-gaeste nie będzie działać.
- <'filter'> Prawdopodobnie najbardziej złożony i potężny parametr. Tutaj masz kilka możliwości, które można połączyć:
-
src|dst host
Określenie adresu źródłowego lub docelowego. - arp|ip|gre|esp|udp|tcp Które protokoły mają być monitorowane.
-
port
Który port ma być monitorowany. - <'verbose'> Z jaką częstotliwością mają być rejestrowane pakiety:
- 1: Nagłówki wyjściowe pakietów.
- 2: Wyjście nagłówków i danych pakietów IP.
- 3: Wyjście nagłówka i danych pakietów Ethernet.
- 4: Wyjście nagłówków pakietów z nazwami interfejsów.
- 5: Wyjście nagłówków i danych z IP pakietów z nazwami interfejsów.
- 6: Wyjście nagłówków i danych z Ethernetu pakietów z nazwą interfejsu.
-
Ile pakietów ma być nagranych. Jeżeli zostanie tu wpisane 0, to nagrywanie jest stałe. Nagrywanie może być zatrzymane za pomocą Ctrl+C. - a Używane są tu wtedy bezwzględne znaczniki czasu. Zazwyczaj czas jest wyświetlany w kolejności rosnącej od początku nagrywania w sekundach. Parametr wyświetla wtedy aktualną godzinę i datę.
Przykład: diag sniffer packet internal "host 192.168.0.130 i 192.168.0.1 i tcp port 80" 1
Tutaj rejestrowany jest tylko ruch sieciowy, który miał miejsce pomiędzy dwoma hostami na porcie 80 z protokołem TCP.
Mam nadzieję, że udało mi się dać Wam dobre pierwsze wrażenie na temat metod analizy FortiGate.