Fortigate – Sprawdzanie, która zasada będzie pasować.

Sprawdzany jak śledzić, która polityka zapory będzie pasować na podstawie adresu IP, portów i protokołu oraz najlepszej trasy do użycia poleceń CLI

$ diag firewall iprope lookup <src_ip> <src_port> <dst_ip> <dst_port> <protocol> <Source interface>

diag firewall iprope lookup X.X.X.X 12345 Y.Y.Y.Y 53 tcp port2
<src [X.X.X.X-12345] dst [Y.Y.Y.Y-53] proto tcp dev port2> matches policy id: 2

Zimbra – odblokowanie kont

W zależności od ustawień w panelu administracyjnym „Strona główna -> Konfiguruj -> Klasa usługi -> default -> Zaawansowane ->Polityka błędnego logowania, Zimbra może zablokować konto, jeżeli kilkakrotnie zostało źle podane hasło. Musimy ręcznie odblokować takie konto, ustalając wcześniej przyczynę blokady.

Sprawdzamy status konta:

$ su zimbra
$ zmprov ga admin@nazwadomeny.pl  zimbraAccountStatus

Gdy status jest ustawiony na Locked lub Lockout to sprawdzamy przyczynę blokady.

Szukanie blokady z powodu zbyt dużej ilości błędnych logowań

$ grep -E "account=admin@.* error=account lockout due to too many failed logins" /opt/zimbra/log/audit.log

Przyczynę zablokowania możemy szukać w szerokim kontekście grep -C 10 przeszukując też inne logi, próbując ustalić co się wydarzyło.

$ grep -C 10  -E "authentication failed.+admin@" /opt/zimbra/log/mailbox.log  /opt/zimbra/log/audit.log /var/log/zimbra.log

Odblokowanie konta

$ su zimbra
$ zmprov ma admin@nazwadomeny.pl zimbraAccountStatus active

Fortigate – Poziom logowania inspekcji ssl

Aby łatwiej diagnozować problemy z głęboką inspekcją i inspekcją certyfikatów możemy w profilach inspekcji włączyć opcje  ssl-negotiation-log oraz ssl-handshake-log.

$ config firewall ssl-ssh-profile
$ edit <nazwa_profilu>
$ set ssl-anomalies-log enable
$ set ssl-exemptions-log enable
$ set ssl-negotiation-log enable
$ set ssl-server-cert-log enable
$ next
$ end

Aby widzieć która wersja TLS została użyta do połączenia, włączamy widoczność kolumny „TLS Version” w „Log & Raport > SSL”. Możemy włączyć też kolumnę Common Name Identifier i Hostname.

FortiGate – Czas trwania bezczynnej sesji

Konfiguracja limity czasu trwania, bezczynnej sesji.

TTL sesji to czas, przez jaki sesja TCP, UDP lub SCTP może być bezczynna, zanim zostanie porzucona przez jednostkę FortiGate.

config system session-ttl
    config port
        edit 1
            set protocol 6
            set timeout 1000
            set start-port 444
            set end-port 444
        next
    end
end

timeout – 1 to 604800 sec. Domyślnie 300.

Fortigate – diagnozowanie problemów SSL VPN

$ diagnose debug disable 

$ diagnose debug reset 

$ diagnose debug console timestamp enable

$ diagnose vpn ssl debug-filter src-addr4 < Source ip>

$ diagnose debug application sslvpn -1 

$ diagnose debug application fnbamd -1 

$ diagnose debug enable 


# Po zakończeniu

$ post log collection disable the debug

$ diagnose debug disable 

$ diagnose debug reset 

Fortigate – Firewall dla połączeń przychodzących

Firewall Policy filtruje ruch przechodzący przez Fortigate np. z sieci Lan do Wan i z Wan do Lan. Jeżeli chcemy sprawdzać ruch adresowany do Fortigate np: połączenia ipsec, musimy skonfigurować Local in policy

Przykład pozwalający na połączenia ipsec tylko ze znanego nam adresu Oddzial.

Tworzymy obiekt adresu naszego hosta Oddzial.

config firewall address
    edit "Oddzial"
         set subnet X.X.X.X 255.255.255.255
    next

Tworzymy obiekt adresu naszego WAN IP

edit "WAN"
    set subnet Y.Y.Y.Y 255.255.255.255
next
end

Przygotowujemy dwie polityki lokalne. Pierwsza zezwoli na połączenia przychodzące ipsec z adresu IP „Oddzial”, druga zablokuje pozostałe adresy.

config firewall local-in-policy
    edit 1
        set intf "wan"
        set srcaddr "Oddzial"
        set dstaddr "WAN"
        set action accept
        set service "IKE"
        set schedule "always"
    next
    edit 2
        set intf "wan"
        set srcaddr "all"
        set dstaddr "WAN"
        set action deny
        set service "IKE"
        set schedule "always"
    next
end

Fortigate – Routing asymetryczny

W sieciach, w których jest więcej niż jeden router może się zdarzyć, że niektóre hosty nie mogą połączyć się z innymi sieciami. Taki problem występuje gdy pakiety żądań i odpowiedzi podążają różnymi ścieżkami i nie przechodzą przez ten sam router. To zachowanie jest znane jako routing asymetryczny. Jeśli FortiGate odbiera pakiety odpowiedzi, ale nie żądania, (lub żądania ale nie odpowiedzi) domyślnie blokuje pakiety jako nieprawidłowe.

Jeśli z jakiegoś powodu wymagane jest, aby jednostka FortiGate umożliwiała routing asymetryczny, można ją skonfigurować za pomocą następujących poleceń CLI na VDOM:

config vdom
    edit <vdom_name>
    config system settings
        set asymroute enable
    end
end

Takie ustawienie nie jest jednak zalecane gdyż Fortigate nie może w pełni używać filtrów zapory.

Fortigate – długi czas dostępu do serwerów oceny filtrów

Często możemy zaobserwować, że czas dostępu do serwerów oceny filtrów jest bardzo długi i mamy problemy z dostępem do stron internetowych. Czas ten możemy sprawdzić w fortigate System > FortiGuard tabelka FortiGuard Filter Rating Servers.

Powodem tego może być, że domyślnie Fotigate korzysta z serwera Anycast. Jednym z rozwiązań może być wyłączenie anycast i pobranie serwerów unicat np. z adresu 208.91.112.220

config system fortiguard
set fortiguard-anycast disable
set protocol udp
set port 8888
set sdns-server-ip 208.91.112.220
end

Fortigate – Śledzenie przepływu pakietów w jądrze

$ diagnose debug reset #reset wszystkich wcześniejszych ustawień debug
$ diagnose debug enable #włączenie debug
$ diagnose debug flow filter clear #czyszczenie filtrów przepływów 
$ diagnose debug flow filter addr 192.168.128.100 #ustawienie śledzonego ip
$ diagnose debug flow filter proto 1 #id protokołu.Tutaj ICMP
$ diagnose debug flow show fun enable #włącz pokazywanie funkcji
$ diagnose debug flow show iprope enable #włącz komunikaty śladu dotyczące iprope
$ diagnose debug flow trace start 20 #rozpoczęcie śledzenia 20 sesji

id=20085 trace_id=126 func=print_pkt_detail line=5783 msg="vd-root:0 received a packet(proto=1, 192.168.100.99:1->192.168.128.100:2048) from internal5. type=8, code=0, id=1, seq=224."
id=20085 trace_id=126 func=init_ip_session_common line=5955 msg="allocate a new session-00657adf"
id=20085 trace_id=126 func=rpdb_srv_match_input line=1030 msg="Match policy routing id=2141519874: to 192.168.128.100 via ifindex-40"
id=20085 trace_id=126 func=vf_ip_route_input_common line=2605 msg="find a route: flag=04000000 gw-XX.XX.XX.XX via IPSEC"
id=20085 trace_id=126 func=fw_forward_handler line=869 msg="Allowed by Policy-1:"
id=20085 trace_id=126 func=ipsecdev_hard_start_xmit line=625 msg="enter IPSec interface IPSEC"
id=20085 trace_id=126 func=_do_ipsecdev_hard_start_xmit line=229 msg="output to IPSec tunnel IPSEC"
id=20085 trace_id=126 func=esp_output4 line=867 msg="IPsec encrypt/auth"
id=20085 trace_id=126 func=ipsec_output_finish line=546 msg="send to XX.XX.XX.XX via wan2"


$ diagnose debug flow trace stop #zatrzymanie
$ diagnose debug disable #wyłączenie debug