FortiGate:FAQ

Aus Fortinet Wiki
Zur Navigation springen Zur Suche springen

FortiGate-6.0, FortiGate-6.2,FortiGate-6.4, FortiGate-7.0 FortiGate-7.2 FortiGate 7.4:FAQ
FortiOS 60.svg FortiOS 62.svg FortiOS 64.svg FortiOS 70.svg FortiOS 72.svg FortiOS 74.svg


Vorwort

Dieses FAQ ist für Fortinet Systeme basierend auf FortiOS 6.0, FortiOS 6.2, FortiOS 6.4, FortiOS 7.0 und FortiOS 7.2. Sofern nicht anderes vermerkt, stand zu Test-Zwecken eine Fortigate 60E oder 60F zur Verfügung!


Datenschutz

        *********************************************************************
        *                                                                   *
        *  THIS FILE MAY CONTAIN CONFIDENTIAL, PRIVILEGED OR OTHER LEGALLY  *
        *      PROTECTED INFORMATION. YOU ARE PROHIBITED FROM COPYING,      *
        *    DISTRIBUTING OR OTHERWISE USING IT WITHOUT PERMISSION FROM     *
        *                   ALSO SCHWEIZ SWITZERLAND.                       *
        *                                                                   *
        *********************************************************************

"Die in diesen Artikeln enthaltenen Informationen sind vertraulich und dürfen ohne
  schriftliche Zustimmung der ALSO Schweiz AG gegenüber Dritt-Unternehmen nicht 
                         bekannt gemacht werden"

FAQ

Dokumentation

Wo findet ich die Dokumente wie Datasheets, Quick Start Guide, User Guide etc. ?

Ueber folgenden internen Link findet man Datasheets und Quick Start Guide betreffend FortiGate Devices:

Ebenfalls lohnt es sich folgenden Link zu sichten welcher "Cookbook" ähnliche Dokumente und Videos beinhaltet:

Auf folgender Seite findet man alle Orginaldokumente betreffend FortiGate:

Release Notes:


FortiOS 6.0 Handbook Dokumente


FortiOS 6.4 Handbook Dokumente

Quellen: https://docs.fortinet.com/product/fortigate/7.0

FortiOS Handbook Dokumente

Welche neuen Features sind in einer FortiOS Version hinzugekommen?

In diesen Dokumenten wird beschrieben, welche neue Funktionen in einem FortiOS hinzugefügt wurden oder auch Funktionenen die in dieser Version entfehrnt wurden:

New Features Guide - FortiOS:


New Features Guide - SD-WAN mit FortiOS, FortiManager und FortiAnalyzer:


edit 5.09.2023 - 4Tinu

Wo finde ich offizielle Dokumente über die Hardware Acceleration?

In diesen Dokumenten ist beschrieben wie die verschiedenen Prozesse auf der FortiGate funktionieren:


edit 5.09.2023 - 4Tinu

Wo finde ich die Adminguides für meine FortiGate?

Die Adminguides bechreiben sämtliche Konfigurationsmöglichkeiten, welche man auf der FortiGate durchführen kann:

3G4G LTE Modem Operator's Manual


edit 5.09.2023 - 4Tinu

Welche Best Praxis Tipps gibt es für die FortiGate?

In den folgenden Dokumenten gibt es Tricks und Tipps von Fortinet für eine gute Konfiguration der FortiGate



edit 5.09.2023 - 4Tinu

Wo finde ich den Log Referenzguide fuer die FortiGate?


edit 5.09.2023 - 4Tinu

Wie verarbeitet die FortiGate ein Paket?

In den folgenden Dokumenten wird beschrieben wie der Life of Packet ist:

Info.svg

Mehr Informationen im folgenden Wiki Artikel:

Wo finde ich saemtliche CLI Befehle einer FortiGate?


edit 5.09.2023 - 4Tinu

Welche RFC Normen werden von meinem FortiOS Unterstuetzt?

FortiOS 5x.svg FortiOS 6x.svg FortiOS 7x.svg

Die RFCs findet man auf der folgenden Seite (FortiOS 5.0 - 7.4)

Mit der Kombination Shift+Linksklick auf den Link, wird ein seperates Fenster geöffnet


edit 5.09.2023 - 4Tinu

Welche Services muessen zu oder von der FortiGate fuer gewisse Dienste offen sein?

Wenn eine FortiGate sich im Factory-Reset (Werkszustand) befindet, so werden verschiedene TCP / UDP-Ports durch das FortiOS zur Verfügung gestellt um die notwendigen Funktionen der FortiGate bereitzustellen. Nachfolgende Übersicht zeigt die benötigten Ports (TCP / UDP) auf. Folgendes ist dabei zu berücksichtigen: Diese abgebildeten TCP / UDP-Ports werden nicht standardmässig zur Verfügung gestellt / ersichtlich. Viele Ports sind nur dann ersichtlich wenn die entsprechende Funktion genutzt wird:

       Fortinet-3024.jpg

In den folgenden Dokumenten ist Dokumentiert, wie die FortiGate mit seinen Umsystemen kommuniziert:


edit 5.09.2023 - 4Tinu

Wo finde ich Dokumente über FortiOS Carrier?


edit 5.09.2023 - 4Tinu

Request of Proposal

Ihre Mitarbeit ist Willkommen!
Sie möchten eine Korrektur zu einem Artikel anbringen oder einen Beitrag leisten?
Schreiben Sie uns eine Nachricht auf: fortinet-ch@also.com
Vielen Dank für Ihre Unterstützung!

Hardware

Wo finde ich die Hardware Revision und Hardware Generation Informationen einer FortiGate?

Die FortiGate verfügt über eine entsprechende "Hardware Revision" und "Hardware Generation". Über diese Informationen wird das Gerät identifiziert. Möchte man die "Hardware Revision" einer FortiGate herausfinden kann dies wie folgt bewerkstelligt werden:

Variante Device Label Variante FortiOS

Die "Hardware Revision" wird als "Label" auf der Rückseite der FortiGate aufgeführt und in nachfolgender Form und als Strich-Code:

PN: P15968-01

Wenn man über die CLI folgenden Befehl ausführt erhält man die "Hardware Revision" Informationen:
# get system status | grep Part-Number
System Part-Number: P15968-01

Wie schon zu Beginn erklärt wird ein Device über die "Hardware Revision" und "Hardware Generation" identifiziert. Die "Hardware Generation" kann jedoch nicht eruiert werden. Weder über ein "Label" noch via CLI. Wenn diese Information benötigt wird, muss via ein Customer Care Ticket die entsprechende Information der "Hardware Generation" erfragt werden. Dies kann wie ein Support-Ticket für Fortinet eröffnet werden (siehe nachfolgender Artikel):

       Fortinet:Support-Case

Bei dieser "Hardware Revision", wie in unserem Beispiel gezeigt (P15968-01), handelt es sich zBsp um eine FG-70D. Dies bedeutet, wenn eine neue "Hardware Revision" für dieses Gerät veröffentlicht wird, so kann diese über eine PN Nr. "P15968-01" verfügen, jedoch als "Hardware Generation" die "2". Es kann jedoch auch sein, dass ein neue "Hardware Revision" über eine PN-Nummer verfügt, zBsp "P15978-02". Somit können anhand der PN-Nummer keine Rückschlüsse über folgende, notwenidge Informationen gezogen werden:

      PN-Nummer (Hardware Revision) + Hardware Generation

Diese Informationen der "Hardware Revision", wie auch jene der "Hardware Generation" sind dann wichtig, wenn es sich um ein Cluster handelt. Bei einem RMA Austausch achtet Fortinet darauf und übermittelt der zuständigen Stelle, welche für den Austausch zuständig ist diese Informationen. So kann sichergestellt werden, dass exakt die gleiche "Hardware Revision" und "Hardware Generation" dem Kunden zugestellt wird!

Wo finde ich eine Übersicht welche FortiGate zBsp über wieviel "Memory" verfügt, ein "SOC" und / oder ob ein "NP" verbaut ist?

Nachfolgend eine Aufstellung die zeigt über welche Komponenten, wie "SOC, NP, Memory, Storage" eine FortiGate verfügt:

Hinweis.svg

Diese Informationen stammen aus einem Post aus dem "Fortinet Forum" da Fortinet diese Informationen nicht kommuniziert:

https://forum.fortinet.com/tm.aspx?m=100451#100451

Zusätzlich steht ein Dokument von Fortinet zur Verfügung welches über die Hardware Schematic verschiedener Fortinet Produkte wie zBsp CPU, RAM, Flash usw. Auskunft gibt:

Für die Schematics bitte uns kontaktieren, wir dürfen die Schematics nur eingetragenen Fortinet Partnern zustellen.

       LEGENDE
       FA = FA526id(wb) rev 1 (v4l) FortiSOC (Fortinet)
       I2 = Intel Core 2 Duo
       I3 = Intel Pentium III
       I4 = Intel Pentium 4
       IA = Intel Atom
       IC = Intel Celeron (Covington)
       II3 = Intel Core i3
       II5 = Intel Core i5
       IM = Intel Mobile
       IX = Intel Xeon
       
       CP: Content Processor
       NP: Network Processor
       SoC: System on a Chip
       Fortinet-821.jpg
       Fortinet-822.jpg
       Fortinet-823.jpg
       Fortinet-1611.jpg
       Fortinet-824.jpg

Model name: FortiGate-40F
ASIC version: SOC4
CPU: ARMv8
Number of CPUs: 4
RAM: 1919 MB
EMMC: 3662 MB(MLC) /dev/mmcblk0
Hard disk: not available
USB Flash: not available
Network Card chipset: FortiASIC NP6XLITE Adapter (rev.)
Model name: FortiGate-61F
ASIC version: SOC4
CPU: ARMv8
Number of CPUs: 8
RAM: 1918 MB
EMMC: 3662 MB(MLC) /dev/mmcblk0
Hard disk: 122104 MB /dev/sda
USB Flash: not available
Network Card chipset: FortiASIC NP6XLITE Adapter (rev.)

Was für FortiGate Geräte stehen zur Verfügung und wie finde ich das Passende für mich?

Wenn für einen Kunden eine FortiGate evaluiert werden soll stellt sich jeweils die Frage welches Gerät das Richtige für diesen Kunden ist. Um dies zu eruieren sind folgende Punkte massgebend:

  • Über was für eine Internet Anbindung verfügt der Kunde, an welcher die FortiGate installiert werden soll?
  • Ist ein Ausbau / Wechsel der Internet Anbindung geplant? Falls ja, wie wird diese vergrössert? (Downstream / Upstream)?
  • Wie viele User werden von der FortiGate geschützt?
  • Welche UTM Features sollen auf der FortiGate aktiviert werden? (Antivirus, WebFilter, IPS usw.)
  • Wird "deep inspection" eingesetzt (aufbrechen von verschlüsseltem Traffic)?
  • Werden spezielle Interfaces, wie zum Beispiel SFP+ benötigt?
  • Wird ein spezieller Durchsatz in einem Bereich benötigt?
  • Wie wird das "logging" durchgeführt? Soll auf Disk, FortiAnalyzer oder Syslogserver geloggt werden?

Zusätzlich stellt Fortinet die sogenannte "Produkte Matrix" zur Verfügung. In dieser werden die verschiedenen Modelle gegenübergestellt. Dabei werden die verschiedenen "Durchsätze" in verschiedenen Kategorien wie SSL-VPN, IPSec, UTM Antivirus usw. aufgelistet. Dabei ist zu beachten, dass diese "Durchsätze" als "Feature Only" Durchsatz zu verstehen sind. Dies bedeutet: Wird Antivirus mit 35 Mbps Durchsatz aufgeführt, versteht sich dieser Wert in dem Sinne, dass wenn dieses Device "nur" Antivirus Traffic erhalten würde, der Durchsatz 35 Mbps ist. Aus diesem Grund ist es unerlässlich die Produkte Matrix zu konsultieren um das richtige Device für den Kunden auszuwählen:

       Datei:ProductMatrix.pdf

Zudem stehen zu den verschiedenen FortiGates jeweils die "Datasheets" zur Verfügung welche nochmals detailliert über das jeweilige Gerät Auskunft gibt. Des Weiteren stehen nebst den "Datasheets" ebenso die "Quickstart Guide" zur Verfügung welche zeigen "was" zum Lieferumfang gehört und wie dieses Gerät aussieht / Abbild:

       Fortinet:ProduktInfo#FortiGate

Des Weiteren steht für die Produkte Information der Produkt Guide zur Verfügung welches jede FortiGate in einer Kurzübersicht darstellt:

       Datei:Fortinet-ProductGuide.pdf

Nachfolgend als Anhaltspunkt eine Übersicht der verschiedenen FortiGates welche in den verschiedenen Kategorien wie "Entry Level, Midsize usw." zur Verfügung stehen:

FortiGate Entry Level Series: Comparison
Fortinet-1392-A.jpg

Fortinet-1392-B.jpg

FortiGate Mid Range Devices: Comparison
Fortinet-1393.jpg

Fortinet-1393-A.jpg

Fortinet-1393-B.jpg

FortiGate 1000 und 2000 Series: Comparison
Fortinet-1394.jpg
FortiGate 3000 Series: Comparison
Fortinet-1395.jpg
FortiGate 5000: Comparison
Fortinet-1396.jpg

Einen detaillierten Überblick bekommt man auf der folgenden Seite:

      http://help.fortinet.com/fgt/60/6-0-0/max-values.html

Wie kann ich auf einer FortigGate einen Hardwaretest ausführen (Troubleshooting / HQIP Testing)?

FortiOS 56.svg FortiOS 60.svg

Damit man den "Advanced Hardware Test" resp. HQIP Test durchführen kann, muss ein spezielles "image", welches für jedes Device zur Verfügung gestellt wird, temporär geladen werden. Unter der regulären Support-Seite findet man die Images über das Icon "HQIP Images" am Ende der Seite. Nachfolgend der direkte Link für "HQIP Images":

       https://support.fortinet.com/Download/HQIPImages.aspx
Hinweis.svg

Damit man zu diesem Link gelangt muss sich mittels eines Support Accounts eingeloggen und das damit entsprechende Image herunterladen zu können, muss die entsprechende Serien-Nummer des Devices eingegeben werden. Dies muss durchgeführt werden da jedes Gerät sich anhand der Revision und Generation identifiziert um das entsprechende HQIP Image zur Verfügung stellen zu können. Dies bedeutet auch: Es ist nicht zu empfehlen ein bestehendes Image aus einem früheren HQIP Test zu nutzen um auf einem baugleichen Device den Test durchzuführen, da die Devices -obwohl Baugleich- sich in Revision und Generation unterscheiden können.

Auf der FortiGate wird dieses HQIP Image wie beim "stagging" Prozess selber über TFTP hochgeladen. Nachdem man das HQIP Image über TFTP geladen hat kann mit dem User "admin" eingeloggt werden (kein Passwort). Anhand des Befehls "diagnose hqip start" kann ein Script ausgeführt werden. Dieses Script führt die verschiedenen Hardware Tests aus. Der Unterschied zum regulären "stagging" Prozess ist lediglich, dass dieses Image nicht anhand "D" (Default), "B" (Backup) sondern anhand "R" (Run) installiert wird. Dies bedeutet: dieses Image wird durch "R" (Run) temporären Memory-Bereichzu installieren. Der Output der seriellen Konsole muss "geloggt" werden um dies später dem Fortinet Support zur Verfügung stellen zu können. Im "Putty" wird dies für eine Session unter folgendem Bereich konfiguriert:

       Category > Session > Logging > All Session output

Nachfolgend eine Schritt für Schritt-Anleitung wie so ein HQIP Image geladen, und das Skript ausgeführt werden kann:

       -> Entsprechendes Image herunterladen (siehe Link oben; Serien-Nummer des Gerätes muss angegeben werden)
          
       -> Benenne das File neu mit "image.out" und verschiebe diese in das root Verzeichnis eines TFTP Servers. 
          Wenn kein TFTP Server vorhanden ist empfehlen wird den SolarwindsTFTP Server. Nachfolgend ein Link
          um diesen herunterzuladen:
          
          SolarWinTFTP Server http://www.solarwinds.com/products/freetools/free_tftp_server.aspx
          
       -> Sofern das Web Mgmt. Interface zugänglich ist empfehlen wir vor dem Test ein ordentliches Backup der
          Konfiguration der FortiGate durchzuführen!
          
       -> Führe über die Serielle Konsole nachfolgenden Befehl aus um einen Neustart des Devices durchzuführen:
       
       # execute shutdown
                
       -> Um das HQIP Image über den TFTP Server zu laden muss eine Workstation folgendermassen mit einer FortiGate
          verbunden werden (Beispiel: FortiGate-60D)
       
                      _____________________________
                     |       RS232 Verbindung      |
       Konsolen Port |                             |
          ___________|___                          | RS232 Anschluss
         |               |                     ____|_______________
         | FortiGate 60D |   192.168.1.100/24 |                    |
         |_______________|               _____| LapTop/Workstation | --> SolarWindsTFTP Server starten 
                  |                     | NIC |____________________| --> FortiOS als image.out im C:\TFTP-Root
             WAN1 |                     |      
                  |_____________________|    
        
         NOTE Auf dem Laptop müssen sämtliche Firewalls, Endpoint Security und Netzwerkkarten deaktiviert sein und auf der LAN Netzwerkarte
              muss die IP 192.168.1.100 mit dem Subnet 255.255.255.0 konfiguriert sein (kein DNS, kein Default Gateway nötig)!
       
       -> Öffne über Putty eine serielle Verbindung (Konsole) und achte darauf das "Putty" für Log aktiviert wurde. 
          Schalte die FortiGate ein und breche den Startprozess ab wenn folgendes erscheint:
       
       FortiGate-60D (10:49-11.12.2014)
       Ver:04000024
       Serial number: FGT60D4615013788
       CPU(00): 800MHz
       Total RAM:  2GB
       Initializing boot device...
       Initializing MAC... nplite#0
       Please wait for OS to boot, or press any key to display configuration menu
       
       Unterbreche den Boot-Prozess durch "Press any key"
                
       [C]: Configure TFTP parameters.
       [R]: Review TFTP parameters.
       [T]: Initiate TFTP firmware transfer.
       [F]: Format boot device.
       [I]: System information.
       [B]: Boot with backup firmware and set as default.
       [Q]: Quit menu and continue to boot.
       [H]: Display this list of options.
        
       Enter C,R,T,F,I,B,Q,or H: T
        
       Please connect TFTP server to Ethernet port 'WAN1'.
        
       MAC: 08:5b:0e:d9:18:f0
        
       Connect to tftp server 192.168.1.100 ...
        
       ############################################################
       Image Received.
       Checking image... OK
       
       ACHTUNG - Beim nächsten Menüpunkt wähle "R", NICHT "D" oder "B" um zu speichern, sondern NUR ausführen!
       
       Save as Default firmware/Backup firmware/Run image without saving:[D/B/R]?R
       Reading boot image... 1829759 bytes.
       Initializing firewall...
       
       System is starting..
        
       Test program loading(HQIP, Build1003,Dec 15 2010 19:42:45) ...
        
       You are running HQIP test program. To start testing, login as "admin" without password, and type:
       diagnose hqip start
        
       Melde dich nun  anhand der obigen Informationen an!
        
       HQIP login: admin
       Password:
       Welcome !
       
       HQIP # diagnose hqip start

Nun wird der HQIP Test ausgeführt und zwar für folgende Informationen:

        1.BIOS Integrity Check
        2.System Configuration Check 
        3.Memory test 
        4.CPU test
        5.CPU/Memory Performance Test
        6.FortiASIC Test 
        7.USB Test
        8.Boot Device Test
        9.Hard Disk Test
       10.Network Interface Controller Test
       11.NPU DDR Memory Test
       12.LED Test
       13.Reset Button Test

Dies bedeuetet, dass normalerweise alle Netzwerkkarten Ports angeschlossen werden müssten. Geschieht dies nicht, so erscheint eine Fehlermeldung welche jedoch keinen weiteren Einfluss auf die auszuführenden Tests hat, ausser der Test soll auf den Interfaces ausgeführt werden. Wenn die Netzwerkkarten-Tests korrekt ausgeführt werden sollen, müssen die Ports wie folgt verbunden werden (Beispiel FortiGate-60D):

       Fortinet-1632.jpg

Nachfolgend ein Output eines solchen Tests einer FG-60D (Netzwerk Port gemäss Grafik oberhalb umgangen):

       Datei:Hqip-output-v54.txt

Um die Fortigate wieder in den originalen Zustand zu versetzen führe ein Login über die serielle Konsole mit dem User "admin" (kein Passwort)durch. Danach führe folgendes aus:

       HQIP login: admin
       Password:
       Welcome !
       
       HQIP # execute reboot
       This operation will reboot the system !
       Do you want to continue? (y/n)y

Da das HQIP Image "nur" temporärer (Memory) installiert wurde, sind alle Informationen nach einem Neustart bezüglich diesem Image gelöscht. Wenn es nach dem Neustart zu Hinweisen / Errors betreffend der Konfiguration kommt wie zBsp:

       System is started.
       The config file may contain errors,
       Please see details by the command 'diagnose debug config-error-log read'

Führe ein Login durch und führe folgendes aus:

       # diagnose debug config-error-log read
       >>>  "unset" "post-lang" @ root.firewall.profile-protocol-options.default.ftp:command parse error (error -61)

Oftmals ist ein einfacher Neustart der Fortigate notwendig um das Problem zu beheben:

       # execute reboot

Für die FortiGate der "E"-Serie, sowie FG-300D/500D existiert kein HQIP Image - wie kann ich dennoch einen Hardwaretest ausführen?

Bei der "E"-Serie wie zBsp der FG-51E, sowie der FG-300D und FG-500D, kann via "Support"-Seite kein separates HQIP Image heruntergeladen werden. Auf diesen Umstand wird auf der "Support"-Seite hingewiesen. Hierfür steht jedoch auf den erwähnten FortiGates ein neuer "diagnose" Befehl zur Verfügung, welcher diese "Hardware Tests" im Stil von "HQIP" ausführt:

       # diagnose hardware test [Parameter]

Als "Parameter" kommen folgende Attribute in Frage:

       bios                    führt eine BIOS spezifische Überprüfung durch
       system                  führt ein System spezifische Überprüfung durch
       usb                     führt eine USB spezifische Überprüfung durch
       button                  führt eine button spezifische Überprüfung durch
       cpu                     führt eine CPU spezifische Überprüfung durch
       memory                  führt ein Memory spezifische Überprüfung durch
       network                 führt eine Netzwerkinterface spezifische Überprüfung durch
       disk                    führt eine disk spezifische Überprüfung durch
       led                     führt eine LED spezifische Überprüfung durch
       wifi                    führt eine Wireless spezifische Überprüfung durch
       suite                   runthe HQIP test suite
       setting                 die Testeinstellungen können auf diesen Weg geändert werden
       info                    zeigt die aktuellen Test Parameter an

Um alle "test suite" durchzuführen kann folgendes ausgeführt werden:

       # diagnose hardware test suite all

Nachfolgend ein "Output" dieses Befehls welcher auf auf einer FG-50E basiert:

       Datei:Diagnose-hardware-test-suite-all.txt

Wie erhalte ich eine Übersicht wie die Luftzirkulation (Airflow) in einer FortiGate funktioniert?

Im nachfolgenden Dokument wird aufgezeigt wie die Luftzirkulation / Kühlung der entsprechenden FortiGates aufgebaut ist und wie diese funktionieren:

Seit dem Mai 2022 gibt es die Airflow Diagramme nicht mehr. Es wird im Datenblatt des jeweilgen Gerätes ausgewiesen, wie die Flussrichtung ist.


edit 5.09.2023 - 4Tinu

Wie kann ich die verschiedenen Hardware Informationen auf einer FortiGate anzeigen lassen?

Um die detaillierten Hardware Informationen auf einer FortiGate aufzulisten steht folgender Befehl zur Verfügung:

Config cli.png Konfiguration über die CLI:
 # get hardware [cpu | memory | nic | npu | status]

Somit kann anhand der Optionen folgendes ausgeführt werden:

Config cli.png Konfiguration über die CLI: get hardware cpu
# get hardware cpu
  Processor       : ARMid(wb) rev 1 (v4l)
  model name      : FortiSOC2
  BogoMIPS        : 799.53
  Features        : swp half thumb 
          
  Hardware        : FSoC2_ASIC
  Revision        : 0000
  Serial          : 0000000000000000
  Imp: 0x66 Arch: 0x5 Part: 0x726 Ver: 0x1
  Ctype: 14 DSize: 6 DASS: 8 DLEN: 32 ISize: 6 IASS: 8 ILEN: 32
  Seperated TLB: Associativity 0
  0x0005317f HUM: En Vec Base:0xffff0000 IC:En BP:Dis RomP:Dis
  SysP:En WB:En DC: En Align:En
  0x00000000 SB: Dis DB:Dis RS:Dis
Config cli.png Konfiguration über die CLI: get hardware memory
# get hardware memory
  total:    used:    free:  shared: buffers:  cached: shm:
  Mem:  1928364032 437944320 1490419712        0  2940928 154861568 140664832
  Swap:        0        0        0
  MemTotal:      1883168 kB
  MemFree:       1455488 kB
  MemShared:           0 kB
  Buffers:          2872 kB
  Cached:         151232 kB
  SwapCached:          0 kB
  Active:          74368 kB
  Inactive:        79864 kB
  HighTotal:           0 kB
  HighFree:            0 kB
  LowTotal:      1883168 kB
  LowFree:       1455488 kB
  SwapTotal:           0 kB
  SwapFree:            0 kB
Config cli.png Konfiguration über die CLI: get hardware cpu
  # get hardware cpu
  Processor       : ARMid(wb) rev 1 (v4l)
  model name      : FortiSOC2
  BogoMIPS        : 799.53
  Features        : swp half thumb 
     
  Hardware        : FSoC2_ASIC
  Revision        : 0000
  Serial          : 0000000000000000
  Imp: 0x66 Arch: 0x5 Part: 0x726 Ver: 0x1
  Ctype: 14 DSize: 6 DASS: 8 DLEN: 32 ISize: 6 IASS: 8 ILEN: 32
  Seperated TLB: Associativity 0
  0x0005317f HUM: En Vec Base:0xffff0000 IC:En BP:Dis RomP:Dis
  SysP:En WB:En DC: En Align:En
  0x00000000 SB: Dis DB:Dis RS:Dis
Config cli.png Konfiguration über die CLI: get hardware memory
  # get hardware memory
  total:    used:    free:  shared: buffers:  cached: shm:
  Mem:  1928364032 437944320 1490419712        0  2940928 154861568 140664832
  Swap:        0        0        0
  MemTotal:      1883168 kB
  MemFree:       1455488 kB
  MemShared:           0 kB
  Buffers:          2872 kB
  Cached:         151232 kB
  SwapCached:          0 kB
  Active:          74368 kB
  Inactive:        79864 kB
  HighTotal:           0 kB
  HighFree:            0 kB
  LowTotal:      1883168 kB
  LowFree:       1455488 kB
  SwapTotal:           0 kB
  SwapFree:            0 kB

NOTE Weitere Befehle um detaillierte Informationen bezüglich der Memory-Nutzung zu erhalten können dem nachfolgenden Artikel entnommen werden: Artikel Benutzung Memory anzeigen lassen

Config cli.png Konfiguration über die CLI: get hardware nic
 # get hardware nic
 The following NICs are available:
      dmz
      internal1
      internal2
      internal3
      internal4
      internal5
      internal6
      internal7
      wan1
      wan2
     

NOTE Um detaillierte Informationen über ein spezifisches Interface zu erhalten kann folgender Befehl ausgeführt werden:

 # get hardware nic [Name des Interfaces zBsp "dmz "]
   Driver Name     :Fortinet NP4Lite Driver
   Version         :1.0.0
   Admin           :up
   Current_HWaddr   08:5b:0e:47:db:57
   Permanent_HWaddr 08:5b:0e:47:db:57
   Status          :up
   Speed           :100
   Duplex          :Half
   Host Rx Pkts    :480560
   Host Rx Bytes   :104351252
   Host Tx Pkts    :468353
   Host Tx Bytes   :83937534
   Rx Pkts         :480558
   Rx Bytes        :111078750
   Tx Pkts         :468351
   Tx Bytes        :80501362
   rx_buffer_len   :2048
   Hidden          :No
   cmd_in_list     : 0
   promiscuous     : 1
   enabled 802.1x  : 0
   authorized      : 0
   mac bypass      : 0
Config cli.png Konfiguration über die CLI: get hardware npu
 # get hardware npu 
  legacy    legacy
  np1       np1
  np2       np2
  np4       np4

Dieser Output wird nur angezeigt wenn das entsprechende Gerät, auf welchem dieser Befehl ausgeführt wird auch einen "NPU" (Networking Processing Unit) enthält. Wenn es sich um ein Gerät mit integriertem NPU handelt, wie der SoC, wird kein Output geliefert.

Was bedeuten die verschiedenen LED-Stati auf einer FortiGate?

Eine FortiGate verfügt am FrontPanel über verschiedene LED's wie zBsp High Availability, Power, Status usw. Diese können verschiedenen Stati anzeigen. Die Bedeutung der verschiedenen LED's können der folgenden Tabellen entnommen werden:

LED Status Code

Label

Status

Bedeutung
PWR grün Power is ON
Off Power is off
STA grün Status ist Normal
blinkend grün
  • Die FortiGate bootet
  • Wenn die FortiGate über eine Reset-Taste verfügt, bedeutet grün blinkend auch, dass die Reset-Taste verwendet wurde.
rot Es liegt auf der FortiGate ein kritischer Alarm vor
ALARM Off Kein Alarm oder die FortiGate hat einen minor Alarm
orange(Amber) Die FortiGate hat einen Major Alarm
rot
  • Die FortiGate hat einen kritischen Alarm.
  • Die STA LED wird auch rot leuchten.
HA grün Die FortiGate wird in einem FGCP HA-Cluster betrieben.
rot

Ein Failover ist eingetreten. Dies bedeutet in der Regel, dass eine der FotiGates eines HA-Clusters ausgefallen ist, die HA-Heartbeat Kommunikation zwischen den FortiGates im HA-Cluster ausgefallen ist oder diese unterbrochen wurde.

Off
  • Es ist kein HA Cluster konfiguriert
  • Das HA LED ist nicht auf allen FortiGates vorhanden.
WIFI grün Der Wireless Port ist aktiv
blinkend grün

Das Wireless Interface sendet und empfängt Daten.

Off

Das Wireless Interface ist down

LED Status Codes bei den Interfaces

Port Typ

Status

Bedeutung

Ethernet Port
Link / Aktivität

grün verbunden
blinkend grün senden und empfangen von Daten
Off

Keine Verbindung aktiv

Ethernet Port
Speed

grün verbunden mit 1 Gbps
orange(Amber) verbunden mit 100 Mbps
Off

Nicht verbunden oder mit 10 Mbps verbunden.

  • Bei FortiGate Modellen mit nach vorne gerichteten Interfaces, befinden sich diese LEDs rechts des entsprechenden Port.
  • Bei FortiGate Modellen mit den Interfaces an der Rückseite des Geräts, befinden sich diese LEDs in der unteren Reihe.
SFP Ports grün verbunden
blinkend grün senden und empfangen von Daten
Off Keine Verbindung aktiv

Anordnung Link Status und Link Speed LED bei FortiGate Modellen mit nach vorne gerichteten Interfaces:

Fortinet-2725.jpg

Anordnung Link Status und Link Speed LED bei FortiGate Modellen mit nach hinten gerichteten Interfaces:

Fortinet-2726.jpg

Dokument:

Wie wird ein Hardware Switch auf der FortiGate komplett gelöscht?

FortiOS 56.svg FortiOS 60.svg FortiOS 62.svg FortiOS 64.svg

Um einen virtuellen Switch komplett zu löschen, müssen sämtliche Einstellungen und Objekte, welche darauf referenzieren, zurückgebaut werden. Deshalb ist es am einfachsten, wenn man sich gerade am Anfang, bei der Initialkonfiguration Gedanken macht, ob man diesen virtuellen Switch verwenden möchte oder nicht. Um von einer Fortigate mit Werkseinstellung den virtuellen Switch zu löschen, muss sich via RS232 auf die Firewall verbunden werden, um dann wie folgt vorzugehen:

1. Sämtliche Firewall Policies mit Referenzen auf den Switch werden gelöscht:
fg-lab # config firewall policy
fg-lab (policy) # show
config firewall policy
     edit 1
	set uuid eeaeeb02-1afc-51e8-4dbb-ab7cd6f3a2fe
	set srcintf "internal"
	set dstintf "wan1"
	set srcaddr "all"
	set dstaddr "all"
	set action accept
	set schedule "always"
	set service "ALL"
	set nat enable
	next
     end
fg-lab (policy) # delete 1
fg-lab (policy) # end

Alternativ kann mit dem Befehl purge das ganze Regelwerk auf einmal gelöscht werden:

fg-lab # config firewall policy
fg-lab (policy) # purge
This operation will clear all table!
Do you want to continue? (y/n)y
fg-lab (policy) # end
2. Alle DHCP Server mit Referenzen werden entfernt:
fg-lab # config system dhcp server
fg-lab (server) # show
config system dhcp server
     edit 1
	set dns-service default
	set default-gateway 192.168.1.99
	set netmask 255.255.255.0
	set interface "internal"
	config ip-range
	    edit 1
	        set start-ip 192.168.1.110
                set end-ip 192.168.1.210
	    next
	    end
     next
     edit 2
	set dns-service default
	set default-gateway 10.253.255.254
	set netmask 255.255.255.192
	set interface "wqtn-sw.0"
	config ip-range
	    edit 1
	        set start-ip 10.253.255.193
	        set end-ip 10.253.255.253
	    next
	end
	set timezone-option default
     next
end
fg-lab (server) # delete 1
fg-lab (server) # end

Alternativ kann auch mit dem Befehl purge jeder DHCP Server aufeinmal gelöscht werden:

fg-lab # config system dhcp server
fg-lab (server) # purge
This operation will clear all table!
Do you want to continue? (y/n)y
fg-lab (server) # end
3. Das Interface wird zurückgebaut:
fg-lab # config system interface
fg-lab (interface) # edit internal
fg-lab (internal) # show
config system interface
     edit "internal"
	set vdom "root"
	set ip 192.168.1.99 255.255.255.0
	set allowaccess ping https ssh http fgfm capwap
	set type switch
	set device-identification enable
	set role lan
	set snmp-index 7
     next
end
fg-lab (internal) # set ip 0.0.0.0 0.0.0.0
fg-lab (internal) # next
4. Nun kann der Switch zurückgebaut werden:
fg-lab # config system virtual-switch
fg-lab (virtual-switch) # show
config system virtual-switch
     edit "lan"
	set physical-switch "sw0"
	config port
	    edit "lan1"
	    next
	    edit "lan2"
	    next
	    edit "lan3"
	    next
	    edit "lan4"
	    next
	    edit "lan5"
	    next
	end
     next
end
fg-lab (port) # delete lan1
fg-lab (port) # delete lan2
fg-lab (port) # delete lan3
fg-lab (port) # delete lan4
fg-lab (port) # delete lan5
WARNING: Virtual switch requires at least 1 port. This virtual switch currently has 0 port.But, this message can be ignored if this virtual switch will be set to 802.1x slave mode later.
Do you want to continue? (y/n)y
fg-lab (port) # end

Bei einem FortiWIFI Modell muss auch die Bridge mit dem WLAN-Port entfernt werden:

fg-lab # config system switch-interface
fg-lab (switch-interface) # show
config system switch-interface
     edit "internal"
	set vdom "root"
			set member "wifi" "lan"
     next
end
fg-lab (switch-interface) # delete internal
5. Jetzt kann der virtuelle Switch komplett gelöscht werden:
fg-lab # config system virtual-switch
fg-lab (virtual-switch) # show
config system virtual-switch
     edit "lan"
         set physical-switch "sw0"
     next
end
fg-lab (virtual-switch) # delete lan

Nun können sämtliche Ports auf der Firewall individuell verwendet werden.

Wie kann ich die Tempratur der CPU ermitteln?

Um die Tempratur der CPU zu erfahren, kann im Dashboard ein Sensor Widget angezeigt werden. Es kann folgendermassen vorgegangen werden:

Config webgui.png Konfiguration über das WebGui:
  1. Unter Dashboard -> Main auf den Hauptbildschirm gehen
  2. Mit der Maus ganz nach unten rechts in die Ecke fahren, bis das kleine Zahnrad erscheint.
  3. Zahnrad anklicken und auf Add Widget klicken.
Fortinet-1974.jpg
  1. Die Tempratur Anzeige findet man unter dem Titel System bei Sensor Information
  2. Danach mit Close wird das Widget im Main Dashboard hinzugefügt.
Fortinet-1975.jpg
  1. Im Main Daschboard kann jetzt das Widget Sensor Information gefunden werden
  2. Es wird der allgemeine Tempratur Status angezeigt und der Status des Lüfters (Fan Speed).
  3. Um detailierte Angaben zu bekommen, auf den Status klicken
Fortinet-1976.jpg
  1. Jetzt kann auf Show sensor details geklickt werden
Fortinet-1977.jpg
  1. Es erscheint eine Liste mit allen Tempratur anzeigen, welche vorhanden sind.
  2. Es kann oben rechts zwischen Grad Celsius oder Farenheit eingestellt werden.
Fortinet-1978.jpg

Über die CLI stehen zwei Befehle zur Verfügung, mit welchen die Temperaturen und Alarme auf der FortiGate überprüft werden können. Mit diesen Befehlen können mehr Informationen ermittelt werden:

Config cli.png Konfiguration über die CLI:
# execute sensor list

Wenn die FortiGate im VDOM Modus betrieben wird muss in die globale Konfiguration gewechselt werden:

# config global
# execute sensor list

Es werden die Sensoren und Messwerte von jedem Komponenten aufgeführt. Dabei wird der aktuelle Wert, der Schwellwert und der Alarumstatus angezeigt.

  • Flag = 0 : Die Komponenten arbeiten korrekt.
  • Flag = 1 : Die Komponenten arbeiten nicht richtig.
Beispiel auf einer FortiGate 300D:
# execute sensor list
 1 +3.3V             alarm=0  value=3.3018  	threshold_status=0
 2 +5V               alarm=0  value=5.048  	threshold_status=0
 3 +12V              alarm=0  value=12.136  	threshold_status=0
 4 CPU VCCP          alarm=0  value=1.0295  	threshold_status=0
 5 CPU VTT           alarm=0  value=1.0491  	threshold_status=0
 6 CPU PVSA          alarm=0  value=0.9413  	threshold_status=0
 7 P1V8              alarm=0  value=1.7743  	threshold_status=0
 8 P1V5              alarm=0  value=1.4901  	threshold_status=0
 9 PCH +1.05V        alarm=0  value=1.024  	threshold_status=0
10 VCC 2V5           alarm=0  value=2.464  	threshold_status=0
11 MAIN 12V          alarm=0  value=11.904  	threshold_status=0
12 VCC 1V15          alarm=0  value=1.136  	threshold_status=0
13 DDR3 VTT          alarm=0  value=0.72  	threshold_status=0
14 RPS 12V           alarm=1  value=0  		threshold_status=0x7
15 NCT +3.3V         alarm=0  value=3.264  	threshold_status=0
16 NCT VBAT          alarm=0  value=3.264  	threshold_status=0
17 NCT +3.3VSB       alarm=0  value=3.216  	threshold_status=0
18 NCT VTT           alarm=0  value=1.04  	threshold_status=0
19 DTS CPU           alarm=0  value=63  	threshold_status=0
20 CPU Core 0        alarm=0  value=63  	threshold_status=0
21 CPU Core 1        alarm=0  value=63  	threshold_status=0
22 TD1               alarm=0  value=51  	threshold_status=0
23 TD2               alarm=0  value=39  	threshold_status=0
24 FAN_TMP_3         alarm=0  value=51  	threshold_status=0
25 LM75 U72          alarm=0  value=46  	threshold_status=0
26 LM75 U65          alarm=0  value=46  	threshold_status=0
27 LM75 U62          alarm=0  value=49  	threshold_status=0
28 FAN1              alarm=0  value=6500  	threshold_status=0
29 FAN2              alarm=0  value=6400  	threshold_status=0
30 FAN3              alarm=0  value=6300  	threshold_status=0
# execute sensor details

Wenn die FortiGate im VDOM Modus betrieben wird muss in die globale Konfiguration gewechselt werden:

# config global
# execute sensor details

Mit diesem Befehl werden noch weitere Informationen, wie der niedrigste und höchste Schwellenwert der Sensoren angezeigt:

  • upper_critical = höchster kritischer Wert
  • upper_non_critical = höchster nicht kritischer Wert
  • upper_non_recoverable = höchster nicht wieder herstellbarer Wert
  • lower_non_critical = tiefster nicht kritischer Wert
  • lower_critical = tiefster kritischer Wert
  • lower_non_recoverable = tiefster nicht wieder herstellbarer Wert
Beispiel auf einer FortiGate 300D:
# execute sensor detail 
 1 +3.3V             alarm=0  value=3.3018  threshold_status=0
    type=2/1
    upper_non_recoverable=3.6906
    upper_critical=3.6258
    upper_non_critical=3.5124
    lower_non_critical=3.0912
    lower_critical=2.994
    lower_non_recoverable=2.9292
 2 +5V               alarm=0  value=5.048  threshold_status=0
    type=2/1
    upper_non_recoverable=5.587
    upper_critical=5.489
    upper_non_critical=5.342
    lower_non_critical=4.6805
    lower_critical=4.5335
    lower_non_recoverable=4.4355
 3 +12V              alarm=0  value=12.136  threshold_status=0
    type=2/1
    upper_non_recoverable=14.083
    upper_critical=13.729
    upper_non_critical=13.434
    lower_non_critical=10.602
    lower_critical=10.366
    lower_non_recoverable=10.012
 4 CPU VCCP          alarm=0  value=1.0295  threshold_status=0
    type=2/1
    upper_non_recoverable=1.6959
    upper_critical=1.6665
    upper_non_critical=1.6175
    lower_non_critical=0.2259
    lower_critical=0.2161
    lower_non_recoverable=0.2063
 5 CPU VTT           alarm=0  value=1.0491  threshold_status=0
    type=2/1
    upper_non_recoverable=1.1765
    upper_critical=1.1569
    upper_non_critical=1.1275
    lower_non_critical=0.9315
    lower_critical=0.9021
    lower_non_recoverable=0.8825
 6 CPU PVSA          alarm=0  value=0.9413  threshold_status=0
    type=2/1
    upper_non_recoverable=1.0883
    upper_critical=1.0687
    upper_non_critical=1.0981
    lower_non_critical=0.8237
    lower_critical=0.7943
    lower_non_recoverable=0.7747
 7 P1V8              alarm=0  value=1.7743  threshold_status=0
    type=2/1
    upper_non_recoverable=2.0095
    upper_critical=1.9703
    upper_non_critical=1.9115
    lower_non_critical=1.6959
    lower_critical=1.6371
    lower_non_recoverable=1.6077
 8 P1V5              alarm=0  value=1.4901  threshold_status=0
    type=2/1
    upper_non_recoverable=1.6763
    upper_critical=1.6469
    upper_non_critical=1.5979
    lower_non_critical=1.4117
    lower_critical=1.3627
    lower_non_recoverable=1.3333
 9 PCH +1.05V        alarm=0  value=1.024  threshold_status=0
    type=2/1
    upper_non_recoverable=1.168
    upper_critical=1.152
    upper_non_critical=1.12
    lower_non_critical=0.944
    lower_critical=0.912
    lower_non_recoverable=0.896
10 VCC 2V5           alarm=0  value=2.464  threshold_status=0
    type=2/1
    upper_non_recoverable=2.88
    upper_critical=2.816
    upper_non_critical=2.784
    lower_non_critical=2.24
    lower_critical=2.208
    lower_non_recoverable=2.144
11 MAIN 12V          alarm=0  value=11.904  threshold_status=0
    type=2/1
    upper_non_recoverable=13.824
    upper_critical=13.632
    upper_non_critical=13.248
    lower_non_critical=10.944
    lower_critical=10.56
    lower_non_recoverable=10.368
12 VCC 1V15          alarm=0  value=1.136  threshold_status=0
    type=2/1
    upper_non_recoverable=1.232
    upper_critical=1.2
    upper_non_critical=1.168
    lower_non_critical=1.04
    lower_critical=1.008
    lower_non_recoverable=0.992
13 DDR3 VTT          alarm=0  value=0.72  threshold_status=0
    type=2/1
    upper_non_recoverable=0.848
    upper_critical=0.832
    upper_non_critical=0.8
    lower_non_critical=0.704
    lower_critical=0.688
    lower_non_recoverable=0.672
14 RPS 12V           alarm=1  value=0  threshold_status=0x7
    type=2/1
    upper_non_recoverable=13.824
    upper_critical=13.632
    upper_non_critical=13.248
    lower_non_critical=10.944
    lower_critical=10.56
    lower_non_recoverable=10.368
15 NCT +3.3V         alarm=0  value=3.264  threshold_status=0
    type=2/1
    upper_non_recoverable=3.696
    upper_critical=3.648
    upper_non_critical=3.552
    lower_non_critical=3.12
    lower_critical=2.976
    lower_non_recoverable=2.928
16 NCT VBAT          alarm=0  value=3.264  threshold_status=0
    type=2/1
    upper_non_recoverable=3.696
    upper_critical=3.648
    upper_non_critical=3.552
    lower_non_critical=3.12
    lower_critical=2.976
    lower_non_recoverable=2.928
17 NCT +3.3VSB       alarm=0  value=3.216  threshold_status=0
    type=2/1
    upper_non_recoverable=3.696
    upper_critical=3.648
    upper_non_critical=3.552
    lower_non_critical=3.12
    lower_critical=2.976
    lower_non_recoverable=2.928
18 NCT VTT           alarm=0  value=1.04  threshold_status=0
    type=2/1
    upper_non_recoverable=1.168
    upper_critical=1.152
    upper_non_critical=1.12
    lower_non_critical=0.944
    lower_critical=0.912
    lower_non_recoverable=0.896
19 DTS CPU           alarm=0  value=64  threshold_status=0
    type=1/1
    upper_non_recoverable=110
    upper_critical=105
    upper_non_critical=100
20 CPU Core 0        alarm=0  value=65  threshold_status=0
    type=1/1
    upper_non_recoverable=92
    upper_critical=91
    upper_non_critical=86
21 CPU Core 1        alarm=0  value=64  threshold_status=0
    type=1/1
    upper_non_recoverable=92
    upper_critical=91
    upper_non_critical=86
22 TD1               alarm=0  value=52  threshold_status=0
    type=1/1
    upper_non_recoverable=110
    upper_critical=105
    upper_non_critical=100
23 TD2               alarm=0  value=39  threshold_status=0
    type=1/1
    upper_non_recoverable=110
    upper_critical=105
    upper_non_critical=100
24 FAN_TMP_3         alarm=0  value=51  threshold_status=0
    type=1/1
    upper_non_recoverable=110
    upper_critical=105
    upper_non_critical=100
25 LM75 U72          alarm=0  value=46  threshold_status=0
    type=1/1
    upper_non_recoverable=110
    upper_critical=105
    upper_non_critical=100
26 LM75 U65          alarm=0  value=46  threshold_status=0
    type=1/1
    upper_non_recoverable=110
    upper_critical=105
    upper_non_critical=100
27 LM75 U62          alarm=0  value=50  threshold_status=0
    type=1/1
    upper_non_recoverable=110
    upper_critical=105
    upper_non_critical=100
28 FAN1              alarm=0  value=5700  threshold_status=0
    type=4/1
    upper_non_recoverable=23000
    upper_critical=22000
    upper_non_critical=21000
    lower_non_critical=300
    lower_critical=200
    lower_non_recoverable=100
29 FAN2              alarm=0  value=5800  threshold_status=0
    type=4/1
    upper_non_recoverable=23000
    upper_critical=22000
    upper_non_critical=21000
    lower_non_critical=300
    lower_critical=200
    lower_non_recoverable=100
30 FAN3              alarm=0  value=5600  threshold_status=0
    type=4/1
    upper_non_recoverable=23000
    upper_critical=22000
    upper_non_critical=21000
    lower_non_critical=300
    lower_critical=200
    lower_non_recoverable=100
Hinweis.svg

Falls die FortiGate über keinen Temperatursensor verfügt, wird in der CLI beim eingeben des Befehls eine Fehlermeldung erscheinen:

 
# execute sensor list
command parse error before 'sensor'
Command fail. Return code -61

Content Prozessor

Was hat der CP9 für Funtkionen und Features ?

Der CP9 Kontent Prozessor bietet die folgenden Features und Funktionen:

  • Flow basierte Inspektion (IPS, Applikationskontrolle usw.) Patternmatiching mit einem Durchsatz von über 10 Gbps.
  • IPS-Vorab-Scan.
  • IPS-Signatur-Korrelation.
  • Full match Prozessor.
  • Leistungsstarke VPN Bulk Daten Engine
  • IPsec* und SSL/TLS Protokoll Prozessor.
  • DES/3DES/AES128/192/256 in Übereinstimmung mit FIPS46-3/FIPS81/FIPS197.
  • MD5/SHA-1/SHA256/384/512-96/128/192/256 in Übereinstimmung mit RFC1321 und FIPS180.
  • HMAC in Übereinstimmung mit RFC2104/2403/2404 und FIPS198.
  • ESN-Modus.
  • GCM-Unterstützung für die "Suite B" der NSA (RFC6379/RFC6460) einschließlich GCM-128/256; GMAC-128/256.
  • Key Exchange Processor, der hochleistungsfähige IKE- und RSA-Berechnungen unterstützt.
  • Public Key Exponentiation Engine mit Hardware-CRT-Unterstützung.
  • Primäre Prüfung für die RSA-Schlüsselerzeugung.
  • Handshake-Beschleuniger mit automatischer Schlüsselmaterial-Generierung.
  • Generator für echte Zufallszahlen.
  • Unterstützung elliptischer Kurven für NSA "Suite B".
  • Sub-Public-Key-Engine (PKCE) zur direkten Unterstützung von bis zu 4096-Bit-Betrieb (4k für DH und 8k für RSA mit CRT).
  • DLP-Fingerprint Unterstützung.
  • TTTD (Two-Thresholds-Two-Divisors) zum Chunking von Inhalten.
  • Zwei Schwellenwerte und zwei Teiler sind konfigurierbar NP6Xlite (SOC4)- und NP6lite (SOC3)-Prozessoren umfassen CP9X Lite- und CP9 Lite-Prozessoren, die die meisten CP9-Funktionen bieten, jedoch mit einer geringeren Kapazität.

Wie offloadet NTurbo die flow basierte Verarbeitung ?

NTurbo verlagert Firewall-Sessions, die flowbasierte Sicherheitsprofile enthalten, auf NP6-Netzwerkprozessoren. Ohne NTurbo oder mit deaktiviertem NTurbo werden alle FirewallSessions, die flowbasierte Sicherheitsprofile enthalten, von der FortiGate-CPU verarbeitet. NTurbo lädt auch Sessions ab, die Interfacen- oder DoS-Regeln haben.

NTurbo kann Firewall-Sessions, die flowbasierte Sicherheitsprofile enthalten, nur dann offloaden, wenn die Sitzung ohne das Vorhandensein der flowbasierten Sicherheitsprofile andernfalls hätte abgeladen werden können. Wenn das Abladen der Sitzung durch etwas anderes verhindert wird, wird NTurbo diese Sitzung nicht abladen.

Firewall-Sessions, die Proxy-basierte Sicherheitsprofile enthalten, werden niemals an Netzwerkprozessoren abgeladen und immer von der FortiGate-CPU verarbeitet. NTurbo erstellt einen speziellen Datenpfad, um den Datenverkehr von der Eingangsinterface zum IPS und vom IPS zur Ausgangsinterface umzuleiten. Mit NTurbo können Firewall-Operationen entlang dieses Pfades ausgelagert werden, und IPS kann sich dennoch als eine Stufe in der Verarbeitungspipeline verhalten, wodurch die Arbeitsbelastung der FortiGate-CPU verringert und der Gesamtdurchsatz verbessert wird.

NTurbo-Sessions lagern immer noch Pattern Matching und andere Prozesse an CP-Prozessoren aus, genau wie normale flowbasierte Sessions. NTurbo kann Sessions auslagern, wenn DoS-Regeln (Konfigurations-Firewall DoS-Regel oder DoS-Regel6), Interfacen-Regeln (Konfigurations-Firewall-Interfacen-Regel oder Interfacen-Regel6) oder Zugriffskontrolllisten-Regeln (Konfigurations-Firewall acl oder acl6) zu den Eingangs- oder Ausgangsinterfacen hinzugefügt wurden, die die Sessions empfangen oder senden. Wenn NTurbo vom FortiGate unterstützt wird, konfigurieren Sie es mit dem folgenden Befehl:

# config ips global
    set np-accel-mode {basic | none}
end

basic aktiviert NTurbo und ist die Standardeinstellung für FortiGate-Modelle, die NTurbo unterstützen.
none deaktiviert NTurbo. Wenn die Option 'np-accel-mode' nicht verfügbar ist, unterstützt die FortiGate NTurbo nicht.

Es gibt einige Sonderfälle (unten aufgeführt), in denen Sessions nicht von NTurbo offgeloadet werden, selbst wenn NTurbo explizit aktiviert ist. In diesen Fällen werden die Sessions von der FortiGate-CPU verarbeitet:

  • Die NP-Beschleunigung ist deaktiviert. Beispielsweise ist das automatische Asykus-Offload in der Firewall-Regelnkonfiguration deaktiviert.
  • Die Firewall-Regel enthält Proxy-basierte Sicherheitsprofile.
  • FTP-Sessions können nicht auf NP-Prozessoren ausgelagert werden, da FTP-Sessions den FTP-Sessionhelper verwenden.
  • Tunneling ist aktiviert. Jeglicher Datenverkehr zu oder von einem getunnelten Interface (IPinIP, SSL VPN, GRE, CAPWAP usw.) kann von NTurbo nicht offloadet werden


Disk

Welche Vorteile bringt mir eine FortiGate mit integrierter Disk (z.B. FG-61F,FG-101F etc.)?

FortiOS 6x.svg FortiOS 7x.svg FortiOS 72.svg

Hauptvorteil einer FortiGate mit integrierter (SSD-)Disk ist eine umfangreiche und langfristige Speicherung/Aufbewahrung der Logs. FortiGate-Modelle ohne integrierte Disk haben sehr limitierte und zeitlich begrenzte Log-Kapazitäten.

Folgend eine Übersicht der Vorteile/Features einer integrierten Disk:

Vorteil/Feature:

Beschreibung:

FortiView from Disk

- FortiView from Disk setzt lokale Disk voraus
- FortiView from Disk kann via CLI und WebGUI aktiviert werden
- Falls Sniffer Traffic und Local-Deny Traffic inkludiert werden -> dies muss via CLI eingestellt werden

Packet Capture in Firewall Policy

- Packet Capture (via FW Policy) setzt lokale Disk voraus
- Innerhalb der FW Policy muss Logging aktiviert sein

WAN Optimization

- WAN Optimization setzt lokale Disk voraus
- Zusätzlich wird seitens FortiGate SSL Acceleration vorausgesetzt
- CLI: disk usage muss auf wanopt umgestellt werden

Explicit Proxy & Web Caching

- Explicit Proxy & Web Caching setzt lokale Disk voraus
- WebGUI: Explicit Proxy muss via Feature Visibility aktiviert werden
- CLI: disk usage muss auf wanopt umgestellt werden

Local Reports

- Lokale Disk ermöglicht auf FortiGate sog. Local Reports
- WebGUI: Local Reports muss via Feature Visibility aktiviert werden
- Local Reports zeigen: Bandwidth & Applications, Web Usage, E-Mails, Threats, VPN Usage, AdminLogin & System Events

Store-and-upload Feature for FortiAnalyzer

- Lokale Disk ermöglicht auf FortiGate unter Upload Options (nebst Real Time, Every Minute, Every 5 Minutes) zusätzlich store-and-upload
- Damit können Logs vor Übertragung auf FortiAnalayzer (und FortiManager) lokal auf FortiGate gespeichert werden
- store-and-upload kann nur via CLI aktiviert werden

FortiGate File Quarantine

- Lokale Disk ermöglicht auf FortiGate die Konfiguration von Antivirus Quarantine, damit infizierte Files lokal auf der FortiGate gespeichert werden
- FortiGate File Quarantine kann nur via CLI (u.a. im Antivirus Profile) aktiviert werden

DLP Logging

- Lokale Disk ermöglicht auf FortiGate das Generieren von DLP Logs
- DLP Logs können im CEF-Format an einen Syslog-Server übertragen werden

Historic User & Device Information

- Lokale Disk ermöglicht auf Root-FortiGate die Speicherung/Aufbewahrung von "historischen" User & Device Informationen
- Diese Daten werden u.a. via user_history_daemon und user_info_daemon auf der lokalen Disk gespeichert


add 05.09.2023 - chris

Wie kann ich auf einer FortiGate, die auf der Disk enthaltenen Daten (inkl. Boot Device) vollumfänglich (low level) löschen?

Es gibt die Möglichkeit die internal Disk und/oder den "System Boot Device" über "low level" zu formatieren. Dies kommt dann zum Zuge, wenn ein Device entsorgt wird oder dem Hersteller wegen eines RMA Falls retourniert wird. So wird gewährleistet, dass sämtliche Daten auf der Disk gelöscht werden. Bei der "low level" Formatierung werden die Spuren und Sektoren der "Disk", respektive des "System Boot Device's" mit zufälligen Daten 3mal überschrieben. Mit dieser Methode wird gesorgt, dass die vorhandenen Daten komplett gelöscht werden. Den Vorgang startet man über folgenden CLI Befehl:

Config cli.png Konfiguration über die CLI:
# execute erase-disk [SYSTEM | Internal]

Wenn ein Device aus Gründen der "Security" bei einem RMA Austausch nicht dem Hersteller zurückgesendet werden kann, obwohl die Möglichkeit einer "low level" Formatierung zur Verfügung steht, bietet Fortinet innerhalb des "FortiCare" einen speziellen Vertrag an, welcher es ermöglicht bei einem RMA Austausch das Device selber zu entsorgen, anstelle dies dem Hersteller zurück zu senden. Dieser Service wird "FortiCare RMA Secure Service" genannt. Weitere Informationen sind folgendem Artikel zu entnehmen:

       Fortinet:Support-RMA#Gibt_es_von_Fortinet_einen_.22FortiCare_Secure_RMA_Service.22.3F

Wie kann ich die Disk (Flash, SSD) eines FortiGate Device testen um zu überprüfen, ob diese fehlerhaft ist?

Anhand des Befehls "diagnose disktest" kann auf einer FortiGate die Disk getestet werden. Dazu sollte berücksichtigt werden, dass dieser Test in einem Maintenance-Fenster durchgeführt wird und nicht bei hoher Last. Um diesen Test zu benutzen muss die entsprechende Disk ausgewählt werden. Die Disk's können mit folgendem Behfel aufgelistet werden:

Hinweis.svg

Der Test kann seine Zeit dauern dh. bei einer 60D ohne zusätzlichen Optionen dh. no Limit, läuft der Test für 7728M ca 45 Minuten! Dies gilt für "Round 1" denn sobald diese beendet ist beginnt der Test erneut dh. "Round 2". Der Test kann anhand "Ctrl + C" abgebrochen werden. Wenn dies durchgeführt wird erscheint folgendes:

"User interrupt! Restoring data back to disk....".

Wie schon erwähnt muss für einen Test die entsprechende Disk zuerst ausgewählt werden. Daraus ergibt sich folgendes Vorgehen:

Liste die vorhandenen Device's auf:
# diagnose disktest device ?
1    /dev/sda, size 3864MB, boot device
2    /dev/sdb, size 7728MB
Selektieren die gewünschte Disk zB /dev/sdb dh. "2":
# diagnose disktest device 2
Current Test Device: /dev/sdb
Setze für den Test verschiedene Optionen:
# diagnose disktest [block | time | size]

Die Optionen haben folgende Bedeutung:
     
block       Die Blocksize für jede Lese- sowie Schreiboperation.
timeDie     Limite der Testzeit für jeden Zyklus. Standard: "keine Limite".
sizeDie     Limite der Testgrösse für jeden Zyklus. Standard: "keine Limite".
Wenn das gewünschte Device gesetzt/gewählt wurde/ist, sowie falls notwendig die Optionen konfiguriert wurden, führe den Test aus:
# diagnose disktest run

Round 1 started.
Current Test Device: /dev/sdb
Total size: 7728M
Current Test Block: 4M.
Current Time Limit: No limit
Current Size Limit: No limit
Time(Sec)    Size(MB) Read(MB/s) Write(MB/s)
  0.00(0.00%):  ..................................................  15.0   8.6
 76.0      200(2.59%):  ..................................................  15.1   8.9
150.2      400(5.18%):  ..................................................  15.0   9.0
224.3      600(7.76%):  ..................................................  15.0   8.9
298.8      800(10.35%): ..................................................  15.1   8.9
372.9     1000(12.94%): ..................................................  15.1   9.0
446.9     1200(15.53%): ..................................................  15.1   9.0
520.7     1400(18.12%): ..................................................  15.2   9.0
594.4     1600(20.70%): ..................................................  15.1   9.0
668.4     1800(23.29%): ..................................................  15.2   9.0
742.1     2000(25.88%): ..................................................  15.3   9.0
815.8     2200(28.47%): ..................................................  15.3   9.0
889.5     2400(31.06%): ..................................................  15.3   8.9
963.1     2600(33.64%): ..................................................  15.4   9.0
1036.7    2800(36.23%): ..................................................  15.3   9.0
1110.3    3000(38.82%): ..................................................  15.3   9.0
1183.9    3200(41.41%): ..................................................  15.3   9.0
1257.6    3400(44.00%): ..................................................  15.3   9.0
1331.2    3600(46.58%): ..................................................  15.3   9.0
1404.7    3800(49.17%): ..................................................  15.3   9.0
1478.3    4000(51.76%): ..................................................  15.3   9.0
1551.9    4200(54.35%): ..................................................  15.2   8.9
1625.8    4400(56.94%): ..................................................  14.5   8.6
1702.5    4600(59.52%): ..................................................  15.0   8.8
1777.3    4800(62.11%): ..................................................  15.2   8.9
1851.6    5000(64.70%): ..................................................  15.1   8.9
1925.9    5200(67.29%): ..................................................  15.1   8.9
2000.3    5400(69.88%): ..................................................  15.1   8.9
2074.7    5600(72.46%): ..................................................  15.1   8.9
2148.9    5800(75.05%): ..................................................  15.2   8.9
2223.2    6000(77.64%): ..................................................  15.2   8.8
2297.5    6200(80.23%): ..................................................  15.1   8.9
2371.9    6400(82.82%): ..................................................  15.2   8.9
2446.2    6600(85.40%): ..................................................  15.1   8.9
2520.5    6800(87.99%): ..................................................  15.3   8.9
2594.6    7000(90.58%): ..................................................  14.6   8.6
2671.4    7200(93.17%): ..................................................  15.1   8.4
2748.0    7400(95.76%): ..................................................  15.3   5.4
2851.2    7600(98.34%): ................................
Test Result: Passed
Tested size: 7728MB (100.00% Coverage of whole disk)
Time used: 2901.5 sec
Read Speed:  15.2MB/s
Write Speed:   8.7MB/s
Round 1 Finished!

Round 2 started.
Current Test Device: /dev/sdb
Total size: 7728M
Current Test Block: 4M.
Current Time Limit: No limit
Current Size Limit: No limit
Time(Sec)    Size(MB) Read(MB/s) Write(MB/s)
  0.00(0.00%):  ..................................................  14.7   8.4
 77.9      200(2.59%):  .............User interrupt! Restoring data back to disk...

Test Result: Interrupted
Tested size: 256MB (3.31% Coverage of whole disk)
Time used:  99.3 sec
Read Speed:  14.7MB/s
Write Speed:   8.4MB/s
Round 2 Finished!

Wird bei einem "unclean shutdown" auf einem FortiGate Device beim Systemstart ein "filesystem check" durchgeführt?

Ab der Version 5.2.x wurde diese Funktion integriert sowie zusätzlich die Möglichkeit die Disk explizit manuell zu testen. Weitere Informationen wie man einen "expliziten" Disk Test manuell zeigt folgender Artikel:

       FortiGate-5.4-5.6:FAQ#Wie_kann_ich_die_Disk_.28Flash.2C_SSD.29_eines_FortiGate_Device_testen_um_zu_.C3.BCberpr.C3.BCfen_ob_diese_Fehler_enth.C3.A4lt.3F

Wie erwähnt wurde für ein "unclean shutdown" (zBsp bei Stromunterbruch) im FortiOS 5.2.x die Funktion eingebaut, dass nach einem "unclean shutdwown" während dem Start-Prozess dies erkannt, und automatisch ein "filesystem check" ausgeführt wird. Diese wird "nicht" anhand eines "expliziten" Disk Tst aufgeführt sondern ähnelt einem "fsck" welcher auf einem Linux System ausgeführt wird. In diesem Vorgang wird durch das System bemerkt dass ein "unclean shutdown" stattgefunden hat. Dies wird ebenfalls indiziert in dem beim Start auf der Console folgendes erscheint:

       System is starting...
       Starting system maintenance...
       scanning /dev/sda2... (100%)

In vorhergehenden Versionen des FortiOS dh. zBsp 5.0 wurde dieser "filesystem check" beim Start des Devices durchgeführt. Solch ein "filesystem check" kann einige Zeit in Anspruch nehmen und deshalb wurde die Vorgehensweise ab der FortiOS Version 5.2.3 geändert. Dies bedeutet: Wenn ein "unclean shutdown" stattfindet (ab FortiOS Version 5.2.3), wird kein "filesystem check" mehr direkt beim Neustart des Device ausgeführt sondern nur ein "system maintenace" indiziert. Sobald sich der Administrator auf dem Web Mgmt. Interface einloggt wird ein entsprechender Dialog angezeigt der durch den "unclean shutdown" ausgelöst wurde:

       Fortinet-1609.jpg

Durch diesen Dialog hat der Administrator die Möglichkeit den "filesystem check" auszuführen oder diesen auf einen späteren Zeitpunkt zu verschieben. Wird der "filesystem check" nach dem einloggen des Administrators ausgeführt, so erfolgt ein Neustart des Devices und dieser "filesystem check" wird beim Neustart ausgeführt. Wie schon erwähnt kann dieser "filesystem check" durchaus mehrere Minuten in Anspruch nehmen und der Vorgang sollte auf keinen Fall unterbrochen werden! Wird diese "filesystem check" Meldung beim einloggen auf das Web Mgmt. Interface anhand "Remind me later" auf einen späteren Zeitpunkt verschoben, wird die Meldung nach jedem einloggen angezeigt bis dieser "filesystem check" ausgeführt wird!

PowerSupply

Welche Strom Stecker Typen kann Fortinet International liefern?

Weltkarte:

 Fortinet-2887.jpg

Legende:

Region Farbe Stecker Typ von Fortinet
EU: U.a. Schweiz, Deutschland, Österreich, Italien, Frankreich grün Fortinet-2874.jpg
Typ C
AU: Australien, Neuseeland blau Fortinet-2875.jpg
Typ I
UK: England, Schottland, Wales, (Nord-)Irland violett Fortinet-2876.jpg
Typ G
US: USA, Kanada orange Fortinet-2877.jpg
Typ A
Rest: U.a. Indien, Südafrika Rot Kein Fortinet Kabel erhältlich
Fortinet-2878.jpg
  • für FG-60C and FG/FWF-40C, FG/FWF-60D, 60E, 60F , 80F & FG/FWF-90D

Kann man für FortiGate's seperate spare und / oder redundante PowerSupply (RPS) beziehen?

Für die verschiedenen FortiGate Devices stellt Fortinet seperate "PowerSupplies" zur Verfügung. Für grössere Devices stehen zusätzlich für die Redundanz "RPS Devices" (Redundand PowerSupply) zur Verfügung. Welche Geräte kompatibel sind zu den seperaten "RPS Devices" können nachfolgendem Artikel entnommen werden:

       Fortinet:ProduktInfo#FortiRPS

Nachfolgende Tabelle zeigt für welches FortiGate Device welches sperat zu beziehende "PowerSupply" bestellt werden kann:

       Fortinet-1081.jpg
       Fortinet-1082.jpg
       Fortinet-1885.jpg
       Fortinet-1886.jpg
       Regulatory Doc   Datei:Regulatory-Compliance-Document SP-FG600C-PS Rev 1.00.pdf
       Regulatory Doc   Datei:Regulatory-Compliance-Document SP-FG60C-PDC Rev 1.01.pdf
       Regulatory Doc   Datei:Regulatory-Compliance-Document SP-FG80-PDC Rev 1.pdf

Nachfolgend einige erfasste ALSO Schweiz Artikel betreffend "PowerSupply":

       ALSO Art Nr.    Hersteller SKU          Beschreibung
       2694237         SP-FG20C-PA-EU          AC power adaptor with EU power plug for FG/FWF-20C series, FG/FWF-30D
       2707193         SP-FG30E-PA-EU          AC power adaptor with EU power plug for FG-50E, FG-51E, FWF-50E, FWF-51E, FG-30E, FWF-30E
       2691555         SP-FG80-PDC             AC power adaptor - AC power adaptor for FG/FWF-80C/CM
       2690832         SP-FG60C-PDC            AC power adaptor - AC power adaptor for FG/FWF-40C, FG/FWF-60C, FG/FWF-60D, FG-70D, FG/FWF-90D
       2692305         SP-FG600C-PS            AC power supply - AC power supply for FG-600C, FG-600D, FG-800C, and FG-1000C
       2698983         SP-FG1240B-PS           AC power supply - AC power supply for FG-1200D, FG-1240B, FG-1500D, FG-3040B and FG-3140B

Ebenso stehen für die FortiAP, wie auch für die FortiAP-S "PowerSupplies" zur Verfügung. Weitere Informationen dazu siehe nachstehenden Artikel:

       FortiAP:FAQ#Wo_finde_ich_eine_Uebersicht_ob_ein_FortiAP_mit_PowerAdapter_geliefert_wird_oder_PoE_unterst.C3.BCtzt.3F 
       FortiAP-S:FAQ#Wo_finde_ich_eine_Uebersicht_ob_ein_FortiAP-S_mit_PowerAdapter_geliefert_wird_oder_PoE_unterst.C3.BCtzt.3F

SFP Ports

Kann ich für die SFP Ports auf einer FortiGate ebenfalls Fremdprodukte, wie Cisco oder Huawei einsetzen?

Dies ist möglich, jedoch empfehlen wir dies vorgängig ausgiebig zu testen! Von unserer Seite her haben wir Tests sowie Feedback das folgende Transceiver einwandfrei funktionieren:

       Copper GigaBit 10/100/1000
       
       GLC-T=746320861579     Cisco Catalyst GigaEthernet SFP Modul 1000Base T
       02314171               Huawei Electrical Transceiver SFP Module 1000Base T
       
       NOTE Durch Fortinet werden ebenfalls nicht eigene Transceiver eingesetzt sondern von Fremdherstellern dh. wird ein Transceiver 
            über Fortinet bestellt, wird ein Transceiver zBsp von Huawei geliefert! Weitere Informationen betreffend "offizielle" SFP/SFP+ 
            Module von Fortinet, sowie den Gebrauch von "nicht offiziellen" siehe folgender Artikel:
            
            FortiGate-5.4-5.6:FAQ#Kann_ich_f.C3.BCr_die_SFP_Ports_auf_einer_FortiGate_ebenfalls_Fremdprodukte_wie_Cisco_oder_Huawai_einsetzen.3F

Welche FortiGate Devices unterstützen SFP's und bei welchen FortiGate Devices werden SFP's mitgeliefert?

Nachfolgende Tabelle zeigt welche FortiGate Devices wieviele SFP's unterstützen und bei welchem FortiGate Device bereits SFP Module mitgeliefert werden:

       NOTE NIL = Not Included!
       
       Fortinet-1085.jpg
       Fortinet-1086.jpg
       Fortinet-2075.jpg
       Fortinet-1888.jpg

Es können für die FortiGate Devices auch Fremdprodukte als SFP's eingesetzt werden, jedoch gibt es keine Gewährleistung dass diese einwandfrei funktionieren. Weitere Infos siehe nachfolgender Artikel:

       FortiGate-5.4-5.6:FAQ#Kann_ich_f.C3.BCr_die_SFP_Ports_auf_einer_FortiGate_ebenfalls_Fremdprodukte_wie_Cisco_oder_Huawai_einsetzen.3F)
       
       NOTE Des Weiteren ist nachfolgendes Dokument zu beachten, wenn keine "offiziellen" Tranceiver von Fortinet eingesetzt
            werden (speziell Seite 2 "3rd Party Transceivers Support"):
            
            Datei:Tech Note-Transceivers FAQs-201407-R3.pdf 

Basierend auf den "offiziellen" Tranceiver von Fortinet gemäss Preisliste stehen folgende SFP/SFP+ Module zur Verfügung:

 Transceiver LX, Long Range; all FortiGate models with SFP interfaces                                            ALSO SKU 2690418     (Hersteller SKU FG-TRAN-LX)
 Transceiver SX, Short Range; all FortiGate models with SFP interfaces                                           ALSO SKU 2690421     (Hersteller SKU FG-TRAN-SX)
 Transceiver Base-T (Copper); all FortiGate models with SFP interfaces (supports 10/100/1000)                    ALSO SKU 2690420     (Hersteller SKU FG-TRAN-GC)
  
 10-Gig transceiver, short range SFP+; all FortiGate models with SFP+ interfaces                                 ALSO SKU 2697310     (Hersteller SKU FG-TRAN-SFP+SR)
 10-Gig transceiver, short range XFP; all FortiGate models with XFP interfaces                                   ALSO SKU 2690412     (Hersteller SKU FG-TRAN-XFPSR)
 10-Gig transceiver, SFP+, Long Range; all FortiGate models with SFP+ interfaces                                 ALSO SKU 2690413     (Hersteller SKU FG-TRAN-SFP+LR)
 10-Gig transceiver, XFP, Long Range; all FortiGate models with XFP interfaces                                   ALSO SKU 2690414     (Hersteller SKU FG-TRAN-XFPLR)
  
 40-Gig transceiver, QSFP+, short range; all FortiGate models with QSFP+ interfaces                              ALSO SKU 2694715     (Hersteller SKU FG-TRAN-QSFP+SR)
 40-Gig transceiver, QSFP+, long range; all FortiGate models with QSFP+ interfaces                               ALSO SKU auf Anfrage (Hersteller SKU FG-TRAN-QSFP+LR)
       
 100-Gig transceiver, CFP2, short Range; all FortiGate models with CFP2 interfaces (10 Channel parallel fiber)   ALSO SKU auf Anfrage (Hersteller SKU FG-TRAN-CFP2-SR10)
 100-Gig transceiver, CFP2, long Range; all FortiGate models with CFP2 interfaces (only singlemode)              ALSO SKU 2707368     (Hersteller SKU FG-TRAN-CFP2-LR4)
       

Für eine direkte Verbindung zweier Fortigates über ein "direct attach cable" steht folgender Artikel zu Verfügung:

 10-Gig transceiver, SFP+, 10m direct attach cable; all FortiGate models with SFP+ and SFP/SFP+ interfaces       ALSO SKU auf Anfrage (Hersteller SKU SP-Cable-ADASFP+)      

Eine detaillierte Beschreibung der Tranceivereigenschaften können folgendem Dokument entnommen werden:

Was sind die genauen Spezifikationen der SFP's Module welche von Fortinet für die FortiGate Devices geliefert werden?

Im nachfolgenden Artikel wird beschrieben ob ein SFP/SFP+ Module zu einer FortiGate mitgeliefert wird, und welche SFP/SFP+ Module offiziell zu den FortiGate's zur Verfügung stehen:

       FortiGate-5.4-5.6:FAQ#Welche_FortiGate_Device.27s_unterst.C3.BCtzen_SFP.27s_und_bei_welchen_FortiGate_Devices_werden_SFP.27s_mitgeliefert.3F

In der nachfolgenden Tabelle werden die technischen Spezifikationen der SFP Module aufgelistet welche von Fortinet für die FortiGate Devices geliefert werden:

       Fortinet-1087.jpg
       NOTE Die Informationen stammen aus einem Fortinet "Knowledgebase Artikel" über welchen auch weitere Informationen verfügbar sind:
            
            http://kb.fortinet.com/kb/dynamickc.do?cmd=show&forward=nonthreadedKC&docType=kc&externalId=13823&sliceId=1
       Transceivers
       Fortinet-1129.jpg
       Breackout Cables
       Fortinet-1887.jpg

Nachfolgend das offizielle "Regulatory Compliance Document" betreffend SFP SX Transceiver:

       Regulatory Doc   Datei:Regulatory-Compliance-Document FG-TRAN-SX Rev 1.03.pdf
       Regulatory Doc   Datei:Regulatory-Compliance-Document FG-TRAN-CFP2-LR4 Rev 1.00.pdf
       Regulatory Doc   Datei:Regulatory-Compliance-Document FG-TRAN-CFP2-SR10 Rev 1.00.pdf
       Regulatory Doc   Datei:Regulatory-Compliance-Document FG-TRAN-GC Rev 1.02.pdf
       Regulatory Doc   Datei:Regulatory-Compliance-Document FG-TRAN-GC Rev 2.0.pdf
       Regulatory Doc   Datei:Regulatory-Compliance-Document FG-TRAN-LX Rev 2.0.pdf
       Regulatory Doc   Datei:Regulatory-Compliance-Document FG-TRAN-QSFP+-LR Rev 1.00.pdf
       Regulatory Doc   Datei:Regulatory-Compliance-Document FG-TRAN-QSFP+-SR Rev 1.00.pdf
       Regulatory Doc   Datei:Regulatory-Compliance-Document FG-TRAN-SFF Rev 1.00.pdf
       Regulatory Doc   Datei:Regulatory-Compliance-Document FG-TRAN-SFP+-LR Rev 2.0.pdf
       Regulatory Doc   Datei:Regulatory-Compliance-Document FG-TRAN-SFP+-SR Rev 2.0.pdf
       Regulatory Doc   Datei:Regulatory-Compliance-Document FG-TRAN-SFP+-SX Rev 1.02.pdf
       Regulatory Doc   Datei:Regulatory-Compliance-Document FG-TRAN-XFPLR Rev 1.00.pdf
       Regulatory Doc   Datei:Regulatory-Compliance-Document FG-TRAN-XFPSR Rev 1.00.pdf

Wie kann ich ein SFP Module / Tranceiver für ein FortiGate Device überprüfen?

Bis anhin war es nicht möglich über ein FortiGate Device dh. via ein FortiOS ein SFP Module/Tranceiver zu überprüfen dh. zBsp ob dieser korrekt erkannt wurde. Neu, unter FortiOS 5.4 ist dies anhand nachfolgendem Befehl möglich für Devices der FortiGate D-Serie, sowie FGT-1000D oder grösser und für SFP und QSFP Module/Transceiver. Handelt es sich um ein SFP/QSFP Fiber Module/Tranceiver kann ebenfalls die Temperatur, Spannung sowie Optical Power abgefragt werden. Wird ein Fremdprodukt als SFP/QSFP Module/Transceiver eingesetzt, sollte dies kurz anhand des nachfolgenden Befehls überprüft werden:

       # get system interface transceiver
       Interface port9: SFP/SFP+
         Vendor Name: Axcen Photonics
         Part No.   : AXXE-5886-05B1
         Serial No. : AX14170008967
       Interface port10: SFP or QSFP transceiver is not detected.
       Interface port11: SFP/SFP+
         Vendor Name: FIBERXON INC.
         Part No.   : FTM-8012C-SL
         Serial No. : A8660061719307
                                             Optical    Optical    Optical
       SFP/SFP+      Temperature  Voltage    Tx Bias    Tx Power   Rx Power
       Interface     (Celsius)    (Volts)    (mA)       (dBm)      (dBm)
       ------------  -----------  ---------  ---------  ---------  --------
              port9   34.1         3.31       6.35       -1.9      -40.0 --
             port11   N/A          N/A        N/A        N/A        N/A
         ++ : high alarm, + : high warning, - : low warning, -- : low alarm, ? : suspect.

Wieso hat mein gekaufter Fortinet-Transceiver kein Fortinet-Label?

Beispiel eines Fortinet-Transceivers mit dem Fremd-Label "Avago":

Transceiver 1.png

Grund für das Fremd-Label:

- Beim oberen Beispiel handelt es ich um den Artikel mit folgender SKU: FG-TRAN-QSFP+SR-BIDI -> ist gemäss SKU & Produktbeschreibung ein offizieller Fortinet-Artikel bzw. -Transceiver

- Dennoch steht der Hersteller Avago inkl. Avago-SKU AFBR-79EBPZ darauf

- Das liegt daran, dass Fortinet viele Transceiver extern produzieren lässt -> die beiden Haupt-Hersteller sind: Avago & Finisar (daher das entsprechende Label)

- Trotz Fremd-Hersteller, sind solche Transceiver bezüglich Kompatibilität und Funktionalität ohne Probleme/Einschränkungen im Zusammenspiel mit Fortinet Devices (z.B. FortiGates, FortiSwitches) einsetzbar

Offizielle Avago-Website (gehört zu Broadcom): https://www.broadcom.com/products/fiber-optic-modules-components/networking/optical-transceivers/ 
Offizielle Finisar-Website (gehört zu II-VI Incorporated): https://ii-vi.com/product-category/products/optical-communications/optical-transceivers/

add 23.08.2023 - chris

Wieso werden Fortinet SFP Module als "unsupportet 3rd Party Module" im FortiOS 6.2.2 angezeigt?

Im FortiOS 6.2.2 werden SFP Transceiver, welche als orginal Fortinet Transeiver erworben wurden, zum Teil als "nicht supportet 3rd Party Module" angezeigt:

Fortinet-2595.jpg

Es handelt sich hierbei um einen BUG. Dieser sollte im FortiOS 6.2.3 behoben werden:

Diese Information haben wir durch ein L1 Supportticket vom TAC bekommen:

       I have looked into this and found engineering ticket 563053 in where this exact behavior was discussed. 
       For the FG-TRAN-SFP+SR, these were shipped with different vendor names other than Fortinet. 
       Due to a bug in 6.2.2, these are now showing as third party devices - this has been identified and scheduled to be fixed in 6.2.3.

SPU

Wo und wie wird meine SPU auf der FortiGate verwendet?

Auf der folgenden Tabelle kann ermittelt werden welcher Prozessor für welche Aufgabe zuständig ist:

System Performanz Verantwortliche Komponente
Firwall Durchsatz NP Aceleration
Firwall Latenz NP Aceleration
Firwall Durchsatz (Pakete per Sekunde) NP Aceleration
Gleichzeitige Sessions Memorie
IPsec VPN Durchsatz NP Aceleration
IPS Durchsatz CP + CPU (NTurbo)
SSL Inspektions Durchsatz CP + CPU
Applikationskontrolle Durchsatz CP + CPU (NTurbo)
NGFW Durchsatz CP + CPU (NTurbo)
Threat Protection Durchsatz CP + CPU (NTurbo)

Welcher Netzwerkprozessor benutzt meine FortiGate?

SoC2 (NP4Lite) SoC3 (NP6Lite) SoC4 (NP6XLite) NP6 NP7
  • FortiGate Rugged-60D
  • FortiGate/FortiWiFi 60E
  • FortiGate/FortiWiFi 61E
  • FortiGate 60E-POE
  • FortiGate 80/81E
  • FortiGate 80/81E-POE
  • FortiGate 100/101E
  • FortiGate 100EF
  • FortiGate 140E
  • FortiGate 140E-POE
  • FortiGate 200/201E
  • FortiGate/FortiWiFi 40F
  • FortiGate/FortiWiFi 40F-3G4G
  • FortiGate/FortiWiFi 60/61F
  • FortiGate Rugged-60F
  • FortiGate 80/81F
  • FortiGate 100/101F
  • FortiGate 200/201F
  • FortiGate 300/301E
  • FortiGate 400/401E
  • FortiGate 500/501E
  • FortiGate 600/601E
  • FortiGate 800D
  • FortiGate 900D
  • FortiGate 1000D
  • FortiGate 1100/1101E
  • FortiGate 1200D
  • FortiGate 1500D/-DC
  • FortiGate 1500DT
  • FortiGate 2000E
  • FortiGate 2200/2201E
  • FortiGate 2500E
  • FortiGate 3000D/-DC
  • FortiGate 3100D/-DC
  • FortiGate 3200D/-DC
  • FortiGate 3300/3301E
  • FortiGate 3400/3401E
  • FortiGate 3600/3601E
  • FortiGate 3700D/-DC
  • FortiGate 3800D/-DC
  • FortiGate 3960E/-DC
  • FortiGate 3980E/-DC
  • FortiGate 6300/6301F
  • FortiGate 6500/6501F
  • FortiGate 5001D
  • FortiGate 5001E/1
  • FortiGate 1800/1801F
  • FortiGate 4200/4201F
  • FortiGate 4400/4401F

Schematic vom SoC3:

Fortinet-2860.jpg

Schematic vom SoC4:

Fortinet-2861.jpg

SoC Prozessoren Generationen Vergleich:

Fortinet-2862.jpg

SoC3 und SoC4 im Vergleich zum NP6:

Fortinet-2863.jpg


FortiGuard (FDDS)

Wo finde ich den Service Status der FortiGuard?

FortiOS 56.svg FortiOS 6x.svg FortiOS 7x.svg

Unter folgendem Link kann man den Status der FortiGuard Dienste auf seitens Fortinet abfragen. Dabei wird auch die Region unterschieden. So wäre es bei einem Ausfall möglich auf eine andere Region auszuweichen.

https://www.fortiguard.com/service-status

Fortinet-2885.jpg

Wieso bekomme ich im WebGUI von FortiOS 6.4 die Meldung Unable to connect to FortiGuard Servers?

FortiOS 64.svg FortiOS 70.svg

Im WebGUI kann folgende Meldung erscheinen: Unable to connect to FortiGuard Servers

Fortinet-2809.jpg

Folgendermassen kann man versuchen diese Meldung zu beheben:

Config cli.png Konfiguration via CLI:
 
 config system fortiguard 
    set fortiguard-anycast <span style="background-color: #ddb6dd;">disable</span> 
    set protocol udp 
    set port <span style="background-color: #ddb6dd;">8888</span> 
 end 

Nach ein paar Minuten ist die Meldung weg:

Fortinet-2810.jpg

Weitere Informationen findet man in folgendem Artikel:

https://docs.fortinet.com/document/fortigate/6.2.0/new-features/656177/fortiguard-third-party-ssl-validation-and-anycast-support

Wie kann ich auf einer FortiGate einen FortiManager für FortiGuard konfigurieren?

Wenn eine FortiGate so konfiguriert werden soll, dass diese die Updates der FortiGuard über einen FortiManager durchführen soll, so kann dies via CLI konfiguriert werden. Wenn ein FortiGate Device ausschliesslich einen FortiManager für den FortiGuard Server nutzen soll, so kann dies wie folgt konfiguriert werden:

  
       # config system central-management
       # config server-list
       # edit [vergebe einen entsprechenden Integer zBsp "1"]
       # set server-type update rating
       # set server-address [IPv4 Adresse des FortiManagers für FortiGuard]
       # next
       # end
       # end

Somit kann zBsp auch ein dezidierter FortiManager konfiguriert werden, welcher nur für FortiGuard zur Verfügung steht und ein zweiter FortiManager welcher das Management der FortiGate übernimmt:

 
       # config system central-management
       # set type fortimanager
       # set fmg [IPv4 Adresse des FortiManagers für das Device Management]
       # config server-list
       # edit [vergebe einen entsprechenden Integer zBsp "1"]
       # set server-type update rating
       # set server-address [IPv4 Adresse des FortiManagers für FortiGuard]
       # next
       # end
       # end

Anleitung von Fortinet wie man einen FortiManager als FDS konfiguriert:

FortiCloud

Wie kann ich die FortiCloud auf der FortiGate aktivieren?

FortiOS 6x.svg FortiOS 70.svg
Damit die FortiGate die Logdaten in die FortiCloud senden kann, muss diese zuerst auf der FortiGate aktiviert werden. Es gibt die Möglichkeit die Daten in die Cloud in Europa oder Global zu senden. Es ist zu beachten, die Daten werden nicht in beide Clouds synchronisiert.

Der FortiGate Cloud Account wird automatisch auf den Account geschlüsselt, auf welche die FortiGate registriert ist. Daher empfiehlt es sich, für jeden Kunden einen eigenen Account im Partnerportal anzulegen, damit man eine "Mandantenfähigkeit" bekommt.

Config webgui.png Konfiguration über das WebGui:

Auf der FortiGate sieht man im Dashboard den Status der FortiGate Cloud:

Fortinet-2920.jpg
  • Um die Cloud zu aktivieren, einfach rechts auf Not Activated klicken.
  • Activate auswählen
Fortinet-2921.jpg
  • Wir sehen, die Emailadresse ist voreingestellt und kann nicht editiert werden. (Auf diese Adresse ist die FortiGate registriert)
  • Passwort angeben für den Zugang zum Account (Partnerportal)
  • in der Domaine kann definiert werden, ob die Daten in das Datencenter in Europa (Frankfurt) oder Global (US) gesendet werden sollen. Wir empfehlen Europa
  • Mit OK bestätigen
Fortinet-2922.jpg

Nun ist die FortiGate mit der Cloud verbunden und sendet die Logdaten in das angegebene Datencenter

Fortinet-2923.jpg

Wie finde ich die FortiGate in der FortiCloud?

Um sich in der FortiCloud anzumelden gibt es verschiedene Methode.

1 Einloggen über die FortiGate:

Config webgui.png Konfiguration über das WebGui:

Im Dashboard der FortiGate kann bei FortiGate Cloud direkt beim Status rechts geklickt werden und so über Launch Portal die Verbindung zur Cloud aufgebaut werden

Fortinet-2924.jpg

2 Einloggen über die URL:
Mann kann direkt über die URL in die Cloud einloggen:


Bei beiden Methoden muss authentifiziert werden:

Fortinet-2926.jpg

Nach erfolgreichem anmelden erscheint das Dashboard der Cloud:

Fortinet-2927.jpg

1. Im Inventory finde ich alle für diesen Account verknüpften FortiGates
2. Device Hostname und Serienummer
3. Cloud Standort
4. Subscription, der rote Warnhinweis bedeutet, dass der FortiGate Analytics & Management Service nicht abonniert ist und somit die Daten nur sieben Tage zu Verfügung stehen.

Fortinet-2928.jpg 

5. mit Undeploy kann ich die Verbindung zur FortiCloud unterbrechen und es werden keine Logs mehr empfangen von diesem Gerät

Was sind FortiGateCloud-Lizenzen?

FortiGateCloud ist ein kostenpflichtige Lizenz, welche zahlreiche Management-Funktionen bietet (siehe Details unten), die allesamt via Dashboard im FortiCloud/Support Portal wahrgenommen werden können.

FortiGateCloud-Lizenzen werden auf spezifische FortiGate-Modelle konfiguriert/lizentziert. Folglich referenzieren sich SKU & Produktbeschreibung immer auf das entsprechende FortiGate-Modell. Beispiel:

FC-10-0040F-131-02-DD
FortiGate-40F FortiGate Cloud Management, Analysis and 1 Year Log Retention

Diese Single-Device Lizenzen unterstützen u.A. folgende Features:
- Configuration Management > war früher kostenlos
- Configuration Backup and Restoration > war früher kostenlos
- Firmware Upgrade
- 1x Jahr Log Retention
Mehr Details/Features: https://docs.fortinet.com/document/fortigate-cloud/22.4.0/administration-guide/215425/feature-comparison

Was genau bedeutet 1x Jahr Log Retention?

Die Logs sind jeweils für die Laufzeit von 1/3/5 Jahren zu einem gewünschten Stichtag, wo etwas nachgeschaut werden muss, für 1 Jahr retrospektiv abrufbar.

Beispiel: Der Kunde registriert 3-Jahr-Lizenz am 15.1.2023 -> Lizenz als ist somit bis zum 14.1.2026 gültig.
Am 1.5.2025 muss der Kunde die Logs kontrollieren -> an diesem Stichtag sind die Logs retrospektiv bis zum 1.5.2025 abrufbar (= 1x Jahr Log Retention)
Wichtig.svg

Aufgrund ähnlicher Produktbeschreibung, werden Modell-spezifische FortiGateCloud-Lizenzen (z.B. FortiGate-40F FortiGate Cloud Management, Analysis and 1 Year Log Retention) fälschlicherweise als Alternative zu ehemaligen (EOL), Modell-spezifischen FortiManagerCloud-Lizenzen (z.B. FortiGate 40F DD Year FortiManager Cloud:
Cloud-Based Central Management & Orchestration Service
) betrachtet.

Mehr Informationen im folgenden Wiki Artikel:


add 24.07.2023 - chris

Wieviele Dateien kann ich pro Tag in die FortiSandbox Cloud hochladen?

Wenn man die AntiVirus Lizenz, und mindestens das FortiOS 6.0.1 auf der FortiGate installiert hat, kann die FortiCloud Sandbox genutzt werden.

Folgende Limitierungen gibt es von der Anzahl Files welche pro Tag in die Cloud hochgeladen werden können. Dabei spielt ist die Grösse der FortiGate massgebend:

Limiten für das hochladen auf die FortiCloud Sandbox:
Fortinet-2665.jpg

Referenz: DESCRIPTION FORTISANDBOX CLOUD

Config webgui.png Konfiguration über das WebGui:

Über das WebGui der FortiGate kann im Dashboard die aktuelle Quote angezeigt werden: (Beispiel hier einer FortiGate 60F):

Fortinet-2666.jpg

USB Port

Was ist beim benutzen eines USB-Sticks an einer FortiGate zu berücksichtigen?

Wenn ein USB-Stick über eine FortiGate formatiert werden soll, so wird dieser im "FAT" Format formatiert! Um den USB Stick über das FortiOS zu formatiert wird folgende Vorgehensweise über die CLI angewendet:

Config cli.png Konfiguration via CLI:
 
# execute usb-disk format
This operation will ERASE all data in USB disk!
Do you want to continue? (y/n)'''y'''

Format USB disk /dev/sdc1 ...
Create file system on /dev/sdc1 ...

Danach kann der USB-Stick genutzt werden um zBsp ein Forti-Backup auf den USB-Stick zu spielen. Möchte man den USB-Stick vorbereiten, resp. nicht über das FortiOS formatieren, sondern zBsp unter Windows 10, so kann folgendes ausgeführt werden:

  1. Verbinde den USB-Stick mit der Workstation und verifiziere den zugewiesenen Laufwerksbuchstaben!
  2. Jetzt eine DOS-Box öffnen (unter Windows 10 = Windows durchsuchen > cmd )
  3. Danach gebe in der DOS-Box folgendes ein:
DOS/Shell CMD:
           
format [Laufwerks Name zBsp "F"]: /FS:FAT /V:[Name des USB-Sticks/Laufwerk zBsp "FortiGate"]
legen Sie eine neue Diskette in Laufwerk D: ein,
und drücken Sie die EINGABETASTE.
Der Typ des Dateisystems ist EXFAT.
Das neue Dateisystem ist FAT.
Überprüfung von 1009.4 MB
Die Dateizuordnungstabelle (FAT) wird initialisiert...
Formatieren beendet.
     1009.1 MB Speicherplatz auf dem Datenträger insgesamt.
     1009.1 MB sind verfügbar.

        16'384 Bytes in jeder Zuordnungseinheit
        64'585 Zuordnungseinheiten auf dem Datenträger verfügbar
            
     16 Bits in jedem FAT-Datensatz.
            
Volumeseriennummer : 4E6E-9DDF

Kann ich ein "Image"/ eine Konfiguration über einen USB-Stick automatisiert auf eine FortiGate aufspielen?

Eine Automatisierung einer Installation einer FortiGate mit einer entsprechenden Konfiguration lässt sich über einen USB-Stick komplett automatisieren.

Config webgui.png Konfiguration über das WebGui:
  1. Menu System > Settings > USB Auto-Install
  2. Detect configuration Name der Konfig.-Datei im .conf Format angeben.
  3. Detect firmware Name der Image Datei im .out Format angeben.
Fortinet-2661.jpg
Config cli.png Konfiguration über die CLI:
 
# config system auto-install
# set auto-install-config [enable oder disable]
# set auto-install-image [enable oder disable]  
# set default-config-file [File Name]
# set default-image-file [File Name]
# end

Die Voraussetzung, dass über einen USB-Stick diese "USB Auto-Install" Funktion genutzt werden kann, ist ein korrekt formatierter USB-Stick. Weitere Informationen dazu siehe nachfolgender Artikel: USB Stick Formatieren Wenn die Funktion des "USB Auto-Install" für das "Image" und/oder "config" File aktiviert, und der USB-Stick entsprechend korrekt formatiert wurde kann in das Root-Verzeichnis des USB-Sticks ein entsprechendes "image" eines FortiOS, wie auch die Konfiguration einer FortiGate, basierend auf dem "image" des FortiOS auf den USB-Stick abgespeichert werden. Dabei müssen die File-Namen des "image", sowie der Konfiguration übereinstimmen mit der Konfiguration resp. Definition des "default-image-file" sowie des "default-config-file"! Wenn nun der USB-Stick an die FortiGate angeschlossen ist, und die FortiGate eingeschaltet oder neu gestartet wird, wird folgendes durchgeführt:

1ter Neustart:

Die Funktion "USB Auto-Install" überprüft ob in der aktiven Partition das FortiOS gemäss dem "image" File auf dem USB-Stick installiert ist! Ist dies nicht der Fall wird in der nicht aktiven Partition das FortiOS anhand des "image" Files auf dem USB-Stick installiert! Nach der Installation wird ein Neustart ausgeführt. Ist die aktive Partition mit dem "image" File auf dem USB-Stick identisch, wird eine 2te Neustart-Überprüfung ausgeführt!

2ter Neustart:

Nach der Installation des "images" auf dem USB-Stick, oder bei Übereinstimmung der aktiven Partition mit dem "image" wird geprüft ob die Konfiguration in der aktiven Partition mit dem Konfigurtions-File auf dem USB-Stick übereinstimmt. Ist dies nicht der Fall, wird ein Restore anhand des Konfigurationsfiles auf dem USB-Stick ausgeführt. Ist die Konfiguration auf dem USB-Stick gleich wie jene auf der aktiven Partition wird keine Änderung durchgeführt und der Neustart regulär fortgesetzt!

Es empfiehlt sich den Vorgang bei einem Test über den Konsolen-Port (RS232) mitzuverfolgen, damit allfällige Fehlermeldungen über die Konsole mitverfolgt werden können. Mit dieser Funktion kann so die FortiGate mit einem entsprechenden "image", sowie mit einer eigenen Konfiguration komplett automatisiert werden. Dabei ist jedoch folgendes zu berücksichtigen: Durch die Funktion "USB Auto-Install" wird die FortiGate nicht von Grundauf neu installiert. Dies bedeutet dass der "boot device" nicht neu formatiert etc. wird wie wenn die FortiGate von Grundauf neu installiert (staging) wird (siehe nachfolgenden Artikel): FortiGate neu Staggen

Konsolen Port

Was für ein Kabel wird für den Konsolen-Anschluss (RS-232) benötigt?

Eine Fortigate Firewall kann über den Konsolen-Port, SSH oder HTTPS administriert werden. Für das initiale Setup, wie auch bei der Störungssuche ist der Konsolen-Port die beste Wahl. Der Konsolen-Port auf der FortiGate kommt in Form einer RS232 Schnittstelle daher. Problematisch ist, dass die heutigen Workstations / Laptops nicht mehr über einen RS232 Anschluss verfügen. Als Workaround gibt es Adapterkabel von USB auf RS232. Folgende Adapter bietet ALSO im Sortiment an:

USB-Stecker Typ A

LINDY USB RS232 Converter w/ COM Port Retention RS-232 Port
Transfer Rate: up to 230 kBit/s
Chipset: FTDI
Hersteller Artikel-Nr.: 42686
ALSO Artikel-Nr.: 2909413
EAN-Code: 4002888426862
Link: https://www.also.ch/ec/cms5/6110/ProductDetailData.do?prodId=2909413

USB Stecker Typ C

LINDY USB Type C Serial Converter
Hersteller Artikel-Nr.: 43248
ALSO Artikel.Nr.: 3023950
EAN-Code: 4002888432481
Link: https://www.also.ch/ec/cms5/6110/ProductDetailData.do?prodId=3023950
Treiber:Datei:PL2303 Prolific DriverInstaller v1190.zip

Fortinet-2962.jpg
RS232-to-RJ45 Kabel

Bei beiden Adaptern wird kein RS232-to-RJ45 Kabel mitgeliefert. Dies kann unter folgender ALSO-Artikel-Nr. bezogen werden:

Fortinet-2963.jpg

Nachfolgendes Dokument zeigt wie auf einem MacOSx, basierend auf diesem "USB to RS232 Converter" Adapter konfiguriert wird inklusive der Konfiguration eines TFTP Servers. Dieses Dokument wurde durch einen Kunden zur Verfügung gestellt:

       Datei:RS232-USB-Converter-TFTP-Server-Konfig-MacOSx.pdf

Weitere Informationen zur genauen Pinbelegung betreffend Fortinet Appliance und dem seriellen Konsolen-Port siehe nachfolgenden Artikel:

       FortiGate-6.0:FAQ#Wie_sieht_die_PIN-Belegung_der_Seriellen_Consolen_.28RS-232_.2F_DB9_.2F_RJ-45_.2F_AUX.29_auf_einem_FortiGate_Device_aus.3F

Wie sieht die Pinbelegung der seriellen Konsolen (RS-232 / DB9 / RJ-45 / AUX) auf der FortiGate aus?

Nachfolgend die technischen Informationen über die Pinbelegung der seriellen Konsole der Fortinet Produkte wie FortiGate, FortiAnalyzer, FortiManager sowie FortiMail. In den meisten Fällen haben die Geräte eine RJ45 Schnittstelle als Konsolen-Port. Ältere Modelle können auch über einen RS-232 DB9 Port verfügen. Es gibt auch Modelle mit einem AUX-Port. Die Geräte haben alle etwas gemeinsam: sie nutzen die gleiche Pinbelegung:

Pinbelegung RJ45
Fortinet-1083-A.jpg
Pinbelegung RS232
Fortinet-1083-B.jpg

Kann ich auf einer FortiGate den seriellen Konsolen-Port (RS-232) deaktivieren?

Wenn man zum Beispiel verhindern möchte, dass auf ein Datacenter oder ähnlichem, via seriellen Konsole-Port unerlaubt zugegriffen wird, kann dies mit folgendem Befehl deaktiviert werden:

Config cli.png Konfiguration über die CLI:
 
# config system console
# set login disable
# end

Es wird nur der "Konsolen-Port" deaktiviert und der "USB" Port muss, sofern erwünscht, separat deaktiviert werden:

Config cli.png Konfiguration über die CLI:
 
# config system console
# set fortiexplorer disable
# end

Web-GUI

Wie kann ich den Hostnamen auf der Web-GUI Login Page sichtbar machen?

FortiOS 6x.svg FortiOS 7x.svg

Wenn man sich über das Web-GUI auf die FortiGate verbindet, wird defaultmässig auf der Anmeldemaske der Hostname der Firewall nicht angezeigt.

Um den Hostname auf der Anmeldemaske zu aktivieren, muss dies über die CLI wie folgt aktiviert werden:

Config cli.png Konfiguration über die CLI:
 
# config system global
# set gui-display-hostname [enable | disable] 
# end

Das Resultat:

Fortinet-1614.jpg

Wie kann ich die update Notification beim einloggen der FortiGate deaktivieren?

FortiOS 64.svg FortiOS 70.svg

Wenn man sich auf die FortiGate über das WebGui anmeldet, erscheint seit FortiOS 6.4 eine Notification, was noch alles optimiert werden kann. Dazu gehört auch, wenn eine neue FortiOS Version zu verfügung steht und man updaten sollte. Wenn man nicht will, dass diese Notification beim einloggen erscheint, kann dies über die CLI deaktiviert werden:

Config webgui.png Konfiguration über das WebGui:

Nach dem einloggen auf die FortiGate über das WebGui erscheint zum teil folgende Meldung:

Fortinet-2879.jpg
Config cli.png Konfiguration über die CLI:

Notification ausschalten:
Ab FortiOS 6.4.1 und 7.0.0:

 
config system global
     set gui-firmware-upgrade-warning disable
end

Für FortiOS 6.4.0:

 
# config system global
    set gui-firmware-upgrade-setup-warning ​​​​disable
end

Notification einschalten:
Ab FortiOS 6.4.1 und 7.0.0:

 
config system global
     set gui-firmware-upgrade-warning enable
end

Für FortiOS 6.4.0:

 
# config system global
    set gui-firmware-upgrade-setup-warning ​​​​enable 
end


Wie kann ich den Administrationsport des WebUI aendern?

FortiOS 6x.svg FortiOS 7x.svg

In der Default Konfiguration greife ich über http://MANAGEMENT-IP oder https://MANAGEMENT-IP auf das WebGui zu.Wir empfehlen dringendst die Default Ports zu ändern.

Config cli.png Konfiguration über die CLI:

Navigieren über das Menu: System -> Settings -> Administraion Settings:

Fortinet-3259.jpg
  • HTTP port von 80 auf neuen Wert setzen
  • Redirect to HTTPS deaktivieren (kein redirect von http auf https zulassen)
  • HTTPS port von 443 auf einen neuen Wert setzen
  • SSH port von 22 auf einen neuen Wert setzen.

Nach dem bestätigen wird man aus dem WebGui disconcetet und man muss sich neu folgendermassen einloggen:

https://MANAGEMENT-IP:[CUSTOM-PORT]
zum Beispiel:
https://198.18.0.111:4443

Config cli.png Konfiguration über die CLI:

HTTP-Port anpassen:
Wir empfehlen den HTTP Port nicht für den Zugang zu nutzen nur https

 
Syntax:
    config system global
       set admin-port [PORT-HTTP]
    end
Beispiel:
    config system global
       set admin-port 4080
    end

HTTPS-Port anpassen:

 
Syntax:
    config system global
       set admin-sport [PORT-HTTPS]
       set admin-https-redirect disable
    end
Beispiel:
    config system global
       set admin-sport 4443
       set admin-https-redirect disable
    end

SSH-Port anpassen:

 
Syntax:
    config system global
       set admin-ssh-port [PORT-SSH]
    end
Beispiel:
    config system global
       set admin-ssh-port 4022
    end

TELNET ist generell zu deaktivieren:
Wir empfehlen unbedingt den TELNET Zugriff auf die FortiGate zu unterbinden und diesen zu deaktivieren:

 
    config system global
       set admin-telnet disable
    end

add 10.03.2023 - 4Tinu

Wie können Abhängigkeiten angezeigt werden?

Damit auf einer FortiGate Firewall Elemente gelöscht werden können, muss zuerst sichergestellt werden, dass keine weiteren Abhängigkeiten (dependencies) von anderen Elementen auf das zu löschende Objekt besteht. Diese Abhängigkeiten können wie folgt angezeigt werden:

Im GUI:
Beispiele von Abhängigkeiten von einem Interface sind jeweils hier zu finden:

Fortinet-2256.png

Im CLI:

Config cli.png Konfiguration über die CLI:
 
fgt200-master # diagnose sys cmdb refcnt show system.interface.name port1
entry used by complex system.ha:monitor
entry used by table system.dhcp.server:id '3'
entry used by child table srcintf:name 'port1' of table firewall.policy:policyid '1'

Genereller Syntax:

 
  diagnose sys cmdb refcnt show <path.object.mkey> 
Interface Referenzen:  
<pre style="background-color:#252269;color: #FFFFFF"> 
 diagnose sys cmdb refcnt show system.interface.name <interface name>

Beispiel SD-WAN Zone virual-wan-link:

 
 diagnose sys cmdb refcnt show system.interface.name virtual-wan-link
 entry used by child table dstintf:name 'virtual-wan-link' of table firewall.policy:policyid '11'
 entry used by child table dstintf:name 'virtual-wan-link' of table firewall.policy:policyid '50'
 entry used by child table dstintf:name 'virtual-wan-link' of table firewall.policy:policyid '40'
 entry used by child table dstintf:name 'virtual-wan-link' of table firewall.policy:policyid '19'
 entry used by child table dstintf:name 'virtual-wan-link' of table firewall.policy:policyid '9'

Adressobjekte:

 
 diagnose sys cmdb refcnt show firewall.address:name <address name>

Security Profile:

 
 diagnose sys cmdb refcnt show firewall.profile: <profile name>

Service Gruppen:

 
diagnose sys cmdb refcnt show firewall.service.group:name <servicegroup name>

Beispiel Port tcp-4443

 
 diagnose sys cmdb refcnt show firewall.service.group:name tcp-4443
 entry used by child table service:name 'tcp-4443' of table firewall.policy:policyid '32'

edit 19.12.2022 - 4Tinu

Wo kann ich das Farbschema für das WebGui anpassen?

FortiOS 7x.svg

Es ist möglich, mehr Farbe ins Spiel zu bringen und die Weboberfläche in verschiedenen Farbschemen anzuzeigen. Natürlich sind die verschiedenen Themen Geschmackssache es wird sicher für jeden ein passendes dabei sein:

Config webgui.png Konfiguration über das WebGui:

Über das Menu System->Settings zu den View Settings scrollen im Feld Theme das Farbthema auswählen:

Fortient-2964.jpg

Hier findet man eine Liste der Möglichen Themen im FortiOS 7.0 und FortiOS 7.2:

Neutrino:
Fortient-2966.jpg
Mariner:
Fortient-2967.jpg
Graphite:
Fortient-2968.jpg
Melongene
Fortient-2969.jpg
Retro:
Fortient-2970.jpg
Eclipse:
Fortient-2971.jpg
Onyx:
Fortient-2972.jpg
Dark Matter:
Fortient-2973.jpg
Jade (default):
Fortient-2974.jpg
Config cli.png Konfiguration über die CLI:
 
config system global
set gui-theme ? <-- Mögliche Themen werden aufgelistet:
jade           Jade theme.
neutrino       Neutrino theme.
mariner        Mariner theme.
graphite       Graphite theme.
melongene      Melongene theme.
retro          FortiOS v3 Retro theme.
dark-matter    Dark Matter theme.
onyx           Onyx theme.
eclipse        Eclipse theme.
 
config system global
set gui-theme [Themen_Name_eingeben]
end

CLI

Welche Platzhalter-Variabeln gibt es in der CLI?

Die CLI unterstützt die folgenden Platzhalter-Variabeln. Bei den Variablennamen wird zwischen Gross- und Kleinschreibung unterschieden.

Liste der Platzhalter-Variabeln:

Variabel:

Beschreibung:

$USERFORM

Die Management Zugriffs Methode (ssh, jsconsole usw.) und die IPv4-Adresse des Administrators, der das Element konfiguriert hat.

$USERNAME

Der Accountname des Administrators, der das Element konfiguriert hat.

$SerialNum

Die Serienummer des FortiGate Gerätes

Beispielsweise kann der Hostname des FortiGate Gerätes auf seine Seriennummer gesetzt werden:

Config cli.png Konfiguration über die CLI:
 
# config system global
# set hostname $SerialNum
# end

Kann ich in der CLI meinen Output nach bestimmten Wörter filtern?

Wenn ich ein show, get oder diagnose Befehl auf der CLI einsetze, bekomme ich oft einen sehr grossen und umfangreichen Ouptut. Daher ist es oft von Nutzen, nur den Output zu sehen, der für mich relevant ist und der Rest nicht angezeigt wird. Im FortiOS kann mit dem grep Befehl der Output gefiltert werden. Der grep-Befehl basiert auf dem Standard-UNIX Grep Befehl, welcher für die Suche nach Textausgaben auf der Basis von regulären Ausdrücken verwendet wird.

Der folgende Befehl zeigt zum Beispiel die MAC-Adresse des internal5 Interfaces an:

Config cli.png Konfiguration über die CLI:
get hardware nic internal5 | grep Current_HWaddr
Current_HWaddr        90:6c:ac:a9:d7:47

Der folgende Befehl zeigt alle TCP Sessions an, inklusive Zeilennummer welche sich in der Session Liste befinden:

Config cli.png Konfiguration über die CLI:
 
# get system session list | grep -n tcp

5:tcp     3187   198.18.1.18:54740 146.4.73.70:54740 40.67.254.36:443 -               
7:tcp     3544   198.18.1.208:54324 146.4.73.70:54324 40.67.254.36:443 -               
10:tcp     3597   198.18.0.1:1065  -                198.18.0.12:514  -               
13:tcp     3587   198.18.1.10:64704 146.4.73.70:64704 172.217.168.74:443 -               
24:tcp     3593   198.18.1.63:46340 146.4.73.70:46340 52.5.144.164:443 -               
27:tcp     9      198.18.0.200:53041 146.4.73.66:53041 172.16.0.1:8013  -               
28:tcp     8      198.18.1.143:300 146.4.73.70:811  10.3.0.1:111     -               
36:tcp     3597   198.18.1.166:50320 146.4.73.70:50320 54.156.181.70:443 -               
51:tcp     3      198.18.0.200:53028 146.4.73.66:53028 172.16.0.1:8013  -               
52:tcp     2      198.18.1.178:46020 146.4.73.70:46020 192.168.1.176:389 -               
53:tcp     3573   198.18.0.200:52815 146.4.73.66:52815 185.60.216.53:443 -               
55:tcp     2469   198.18.1.142:57170 146.4.73.70:57170 40.67.254.36:443 -               
56:tcp     3596   198.18.0.1:1415  -                198.18.0.12:514  -               
73:tcp     8      198.18.0.21:65394 146.4.73.66:65394 52.5.76.173:8347 -               
74:tcp     3      198.18.0.11:38838 217.193.240.162:38838 96.45.33.86:443  -               
76:tcp     7      198.18.0.1:14681 -                198.18.0.101:8000 -               
81:tcp     3590   198.18.1.63:48378 146.4.73.70:48378 54.84.191.209:443 -               
86:tcp     9      198.18.200.45:29948 146.4.73.68:29948 194.115.91.54:25 -               
91:tcp     3595   198.18.1.163:55696 146.4.73.70:55696 192.146.155.80:443 -               
92:tcp     3600   198.18.0.200:52835 -                198.18.0.1:22    -               
102:tcp     8      198.18.0.9:34137 146.4.73.66:34137 198.18.6.10:139  -               
105:tcp     5      198.18.0.200:53029 146.4.73.66:53029 172.16.0.1:8013  -               
107:tcp     3490   198.18.0.200:52729 146.4.73.66:52729 40.67.251.132:443 -               
118:tcp     3599   198.18.1.163:54718 146.4.73.70:54718 192.146.155.82:443 -               
119:tcp     0      198.18.1.163:53038 146.4.73.70:53038 192.146.155.81:443 -               
120:tcp     3513   198.18.1.18:56352 146.4.73.70:56352 40.79.67.176:443 -               
126:tcp     3586   172.16.99.4:55785 146.4.73.71:55785 13.224.96.67:443 -               
129:tcp     3599   172.16.99.4:57452 146.4.73.71:57452 172.217.168.46:443 -               
144:tcp     3572   198.18.1.10:49867 146.4.73.70:49867 54.186.97.86:443 -               
148:tcp     6      198.18.0.200:53034 146.4.73.66:53034 172.16.0.1:8013  -               
150:tcp     3599   198.18.1.163:42980 146.4.73.70:42980 192.146.155.76:443 -               
151:tcp     3598   198.18.0.1:24004 -                198.18.0.11:541  -               
152:tcp     3595   198.18.0.1:1073  -                198.18.0.12:514  -               
167:tcp     1      198.18.0.200:53017 146.4.73.66:53017 172.16.0.1:8013  -               
169:tcp     3589   146.4.73.66:9421 -                154.45.1.53:514  -               
173:tcp     3599   198.18.1.209:37791 146.4.73.70:37791 3.135.144.181:443 -               
175:tcp     3583   198.18.1.224:57385 146.4.73.70:57385 13.59.223.49:443 -               
176:tcp     3585   198.18.1.2:44996 146.4.73.70:44996 3.212.241.156:443 -               
177:tcp     3595   198.18.0.1:1074  -                198.18.0.12:514  -            

Der folgende Befehl zeigt alle Zeilen in der HTTP Replacement-Message an, die das Wort URL oder url enthalten:

show system replacemsg http | grep -i url

Weitere Optionen die verfügbar sind:

  • -A <num> After (Nachher)
  • -B <num> Before (Vorher)
  • -C <num> Context (Kontext)

Die Option -f ist verfügbar, um kontextuelle Ausgaben zu unterstützen und die komplette Konfiguration anzuzeigen. Das folgende Beispiel zeigt den Unterschied, wenn -f verwendet wird und wenn -f nicht benutzt wird:

grep ldap-group1 Ohne -f grep -f ldap-group1 Mit -f:
 
show | grep ldap-group1
    edit "ldap-group1"
        set groups "ldap-group1"
 
show | grep -f ldap-group1
config user group
    edit "ldap-group1"
        set member "pc40-LDAP"
    next
end
config firewall policy
    edit 2
        set srcintf "port31"
        set dstintf "port32"
        set srcaddr "all"
        set action accept
        set identity-based enable
        set nat enable
        config identity-based-policy
        edit 1
            set schedule "always"
            set groups "ldap-group1"
            set dstaddr "all"
            set service "ALL"
        next
        end
    next
end

Zusätzlich stehen dem Befehl "grep" folgende Optionen zur Verfügung:

Config cli.png Konfiguration über die CLI:
 
 Usage: grep [-invfcABC] PATTERN
 Options:
        -i      Ignore case distinctions
        -n      Print line number with output lines
        -v      Select non-matching lines
        -f      Print fortinet config context
        -c      Only print count of matching lines
        -A      Print NUM lines of trailing context
        -B      Print NUM lines of leading context
        -C      Print NUM lines of output context

edit 30.06.2022 - 4tinu

Wie kann ich ein Fragezeichen in regulären Ausdrücken über die CLI einfügen?

FortiOS 62.svg FortiOS 64.svg FortiOS 70.svg

Wenn man über die CLI ein Fragezeichen ? eingibt, wird standartmässig das Hilfemenu aufgerufen und angezeigt. Es kann vorkommen, dass man aber das Fragezeichen in einem regulären Ausdruck braucht.

Weil aber das Symbol des Fragezeichens für das Hilfemenu reserviert ist, wird es nicht möglich sein, das Fragezeichen in den Ausdrücken einzugeben, einzufügen oder zu kopieren.

Im folgenden Beispiel eines DLP Sensor wird das Fragezeichen ? für den regexp Syntax benötigt:

Config cli.png Konfiguration über die CLI:
config dlp sensor
edit "default"
set comment "Default sensor."
config filter
edit 1
set proto smtp pop3 imap http-post
set filter-by regexp
set regexp "('?s:(\\d{10}.*))"
set action block
next
end
next
end

Lösung:
Damit man das Fragezeichen Symbol einfügen kann muss mit zBsp. einem Putty-Client gearbeitet werden.

  1. Putty öffnen
  2. Tastenkombination ctrl-V und dann ? eingeben
Info.svg

Mit der im WebGui verfügbaren CLI Konsole funktioniert diese Methode nicht!

Veranschauung:

Config cli.png Konfiguration über die CLI:

Ich gebe in der CLI einfach das Fragezeichen ? ein. Es wird automatisch das Hilfemenu angezeigt:

 
#
config      Configure object
get         Get dynamic and system information
show        Show configuration
diagnose    Diagnose facility
execute     Execute static commands
alias       Execute alias commands
exit        Exit the CLI

Ich drücke zuerst ctrl+v und sehe danach in der CLI das Fragezeichen ohne dass das Hilfemenu aufgerufen wird:

 
# ?

Wie sehe ich den Output der CLI von WebGui Konfigurationen?

FortiOS 5x.svg FortiOS 6x.svg FortiOS 7x.svg

Konfigurieren im WebGui ist eine gute Sache. Bei den vielen Funktionen und Einstellungen, die in FortiOS zur Verfügung stehen, ist es manchmal schwierig, die entsprechenden CLI-Befehle nachzuvollziehen. Damit ich sehe was hinter einem Klick im WebGui eigentlich auf der CLI passiert, gibt es eine coole funktion die mir die änderungen auf der CLI anzeigt:

Config cli.png Konfiguration über die CLI:
 
diagnose debug cli 5
diagnose debug enable

Zeigt mir den Output auf der CLI an. In diesem Beispiel werden wir auf dem Interface internal4 die IP Adresse 192.168.150.5/24 konfiguerieren:

Config webgui.png Konfiguration über das WebGui:
Fortinet-2880.jpg

sobald ich Okey drücke, wird die Konfiguration aktiv und auf der CLI der Output generiert: Mit dem Level 5 sieht man den output, welcher in der CLI konfiguriert werden müsste um das selbe Resultat wie im WebGui zu erhalten:

Config cli.png Konfiguration über die CLI:

Output CLI:

 
config system interface
0: edit "internal4"
0: set ip 192.168.150.5 255.255.255.0
0: end
0: config system interface
0: edit "internal4"
0: config ipv6
0: end
0: end
Fortinet-2881.jpg

Wenn ich den Level 8 aktiv habe, werde ich auch noch sehen in welche Objekte und welche Dateien meine Konfiguration gespeichert wird:

 
diagnose debug cli 8
diagnose debug enable
Fortinet-2882.jpg

Um das ganze wieder zu deaktivieren muss ich folgendes eingeben:

 
diagnose debug reset
diagnose debug disable

Upgrade

Wo finde ich den Upgrade-Pfad um das FortiOS auf eine neue Version anzuheben?

Seit September 2018 hat Fortinet folgendes Tool zu Verfügung gestellt welches ein korrektes Update vereinfacht:

Alternativ kann der Upgrade-Pfad auf dem Supportportal im Download Center entnommen werden (support.fortinet.com). Leider ist dieser nur bis zur Startversion 5.2.9 hinterlegt.

FortiOS Download über das Supportportal:
support.fortinet.com -> DOWNLOAD -> FIRMWARE IMAGES
Fortinet-20006.jpg

Was muss ich beachten wenn ich auf das FortiOS 6.2.2 upgraden will?

Wichtig.svg

Vorsicht wenn eine FortiGate welche einen SoC3 verbaut hat und man auf die Version 6.2.2 upgraden will.

Es muss beachtet werden, dass die Authentifizierung mit dem Mobile Token für das SSL-VPN nicht mehr funktioniert.

Welche Geräte sind betroffen?

  • FG-60E
  • FG-60E-POE
  • FG-61E
  • FG-80E
  • FG-80E-POE
  • FG-81E
  • FG-81E-POE
  • FG-100E
  • FG-100EF
  • FG-101E
  • FG-140E
  • FWF-60E
  • FWF-61E

Diese Information kann aus den Release Notes von OS 6.2.2 entnommen werden:

https://docs.fortinet.com/document/fortigate/6.2.2/fortios-release-notes/501077/mobile-token-authentication

Über ein Fortinet Support Ticket haben wir noch folgendes in Erfahrung bringen können:
Dieses Problem wurde im 6.2.3 gelöst.

Empfohlener Workaround:
Versuchen sie sich mit dem SSL-VPN zu verbinden. Beim Passwort-Feld das Passwort eingeben und danach ohne Leerzeichen gleich den Tokencode eingeben. (Passwort und TokenCode bilden eine Zeichenkette) Achtung, es muss nicht sein das dies zu 100% funktioniert. Es wurde im Ticket ausdrücklich auf versuchen verwiesen für diesen Workaround.

Backup / Restore

Wie kann ich das Konfigurationsfile von der FortiGate backupen?

FortiOS 5x.svg FortiOS 6x.svg FortiOS 70.svg

"Backup ist nur für Feiglinge". Dieser Spruch hört oder liest man oft, doch wenn die FortiGate ersetzt werden muss ist man froh wenn man ein aktuelles Backup der Konfiguration besitzt. Es empfiehlt sich vor und nach jeder Konfigurationsänderung ein Backup zu erstellen. So ist es jederzeit möglich, wieder auf den ursprünglichen Stand zurück zu kehren.

Config webgui.png Konfiguration über das WebGui:
  1. Im Header Rechts auf den Admin User das Menu öffnen
  2. Configuration anwählen
  3. Backup anwählen
Fortinet-2629.jpg

Das Backup kann mittels "Backup to" auf den lokalen PC, oder falls ein USB Stick an der FortiGate eingesteckt ist auch diesen als Speicherziel wählen. Die Option Encryption ist dafür da, dass man das Backup File verschlüsselt abspeichern kann. Das Passwort, welches man definieren muss, darf nicht verloren gehen. Wenn das Passwort nicht mehr bekannt ist, gibt es keine Möglichkeit dieses Backupfile wieder in die FortiGate einzulesen. Auch über ein Support Ticket wird dies unmöglich sein. Wenn man das Backup verschlüsselt ablegt, ist es nicht mehr möglich die Konfiguration im Texteditor zu lesen oder zu bearbeiten.

Fortinet-2630.jpg

Es kann definiert werden, wohin das Backup File abgespeichert werden soll. Es wird eine Datei mit der Endung .conf abgelegt. Diese Datei kann im Texteditor bearbeitet werden. Somit können gewisse Änderungen direkt im Backupfile vorgenommen werden. Man kann dies dann wieder als .conf Datei abspeichern und sie in die FortiGate einlesen.

Fortinet-2631.jpg

Config cli.png Konfiguration über die CLI:

Über die CLI gibt es noch weitere Orte auf welche das Backup abgespeichert werden kann. Zum Beispiel ist es möglich, das Backup auf einen FTP oder TFTP Server zu speichern.
Der grundlegende Befehlt um eine Backup durchzuführen ist execute backup config <Location>
Wenn man ein ? nach config eingibt, werden alle möglichen Speicherorte angezeigt:

# execute backup config ?
flash                 Backup config file to flash.
ftp                   Backup config file to ftp server.
management-station    Backup config file to management station.
tftp                  Backup config file to TFTP server.
usb                   Backup config file to USB disk.
usb-mode              Backup config file for USB mode.

Um ein Backup auf einen FTP Server zu speichern kann wie folgt vorgegangen werden:

execute backup config ftp <File_Name> <FTP_Server_IP> [<Port>] [<Usermame>] [<Passwort>]

Wie kann ich das gesamte Konfigurationsfile einer FortiGate mit mehreren VDOMs sichern?

FortiOS 5x.svg FortiOS 6x.svg FortiOS 70.svg

Wenn ich über die CLI ein Backup estellen will, wird normalerweise der Befehl execute backup config verwendet. Wenn auf der FortiGate VDOM konfiguriert sind, wird mit diesem Befehl nur noch die aktuelle VDOM gesichert. Damit über die CLI sämtliche VDOMs und die GLOBALEN Settings in ein Backupfile geschrieben werden muss folgender Befehl verwendet werden:

Config cli.png Konfiguration über die CLI:
 
# execute backup full-config

Folgende Parameter stehen zu verfügung:

 
(global) # execute backup full-config ?
ftp         Backup full config file to FTP server.
sftp        Backup full config file to SFTP server.
tftp        Backup full config file to TFTP server.
usb         Backup full config file to USB disk.
usb-mode    Backup full config file for USB mode.

Über das WebGui kann die Option GLOBAL oder VDOM angewählt werden.

Config webgui.png Konfiguration über das WebGui:

Um die ganze Konfiguration mit sämtlichen VDOMs und GLOBALEN Paramenter zu backupen GLOBAL auswählen:

Fortinet-3114.jpg

Um eine einzelne VDOM über das WebGui zu backupen kann die Option VDOM angewählt werden, dannach im Menu die eintsprechende Instanz. In diesem Beispiel wird die VDOM fv_schulung gebackupt:

Fortinet-3115.jpg

add 16.02.2022 - 4Tinu

Firmware

Wo finde ich die Release Notes für FortiOS 6.0?

Die aktuellen Release Notes für das FortiOS 6.0 kann der folgenden Tabelle entnommen werden:

FortiOS 60.svg FortiOS 6.0 Release Notes

Die aktuellen Release Notes, welche von Fortinet direkt gepflegt & geupdatet werden sind auf der Docs-Seite aufgeführt:

Wichtig.svg

Das FortiOS 6.0 ist seit 29.09.2022 end of Support. Bitte Update dein System auf eine Supportete Version!


edit 5.09.2023 - 4Tinu

Wo finde ich die Release Notes für FortiOS 6.2?

Die aktuellen Release Notes für das FortiOS 6.2 kann der folgenden Tabelle entnommen werden:

FortiOS 62.svg FortiOS 6.2 Release Notes

Die aktuellen Release Notes, welche von Fortinet direkt gepflegt & geupdatet werden sind auf der https://docs.fortinet.com Seite: aufgeführt:

Wichtig.svg

Das FortiOS 6.2 wird am 28.09.2023 end of Support gehen. Bitte Update dein System auf eine Supportete Version! ( >= 6.4)


edit 5.09.2023 - 4Tinu

Wo finde ich die Release Notes für FortiOS 6.4?

Die aktuellen Release Notes für das FortiOS 6.4 kann der folgenden Tabelle entnommen werden:

FortiOS 64.svg FortiOS 6.4 Release Notes

Die aktuellen Release Notes, welche auch immer gepflegt werden, findet man auf der https://docs.fortinet.com Seite:


edit 5.09.2023 - 4Tinu

Wo finde ich die Release Notes für FortiOS 7.0?

Das FortiOS 7.0.0 ist seit 30.März 2021 verfügbar.

Die aktuellen Release Notes für das FortiOS 7.0 kann der folgenden Tabelle entnommen werden:

FortiOS 70.svg FortiOS 7.0 Release Notes

Die aktuellen Release Notes, welche auch immer gepflegt werden, findet man auf der https://docs.fortinet.com Seite:


edit 5.09.2023 - 4Tinu

Wo finde ich die Release Notes für FortiOS 7.2?

Das FortiOS 7.2.0 ist seit 31.März 2022 verfügbar.

Die aktuellen Release Notes für das FortiOS 7.2 kann der folgenden Tabelle entnommen werden:

FortiOS 72.svg FortiOS 7.2 Release Notes

Die aktuellen Release Notes, welche auch immer gepflegt werden, findet man auf der https://docs.fortinet.com Seite:


edit 5.09.2023 - 4Tinu

Wo finde ich die Release Notes für FortiOS 7.4?

Das FortiOS 7.4.0 ist seit 11.05.2023 verfügbar

Die aktuellen Release Notes für das FortiOS 7.4 kann der folgenden Tabelle entnommen werden:

FortiOS 74.svg FortiOS 7.4 Release Notes

Die aktuellen Release Notes, welche auch immer gepflegt werden, findet man auf der https://docs.fortinet.com Seite:


edit 5.09.2023 - 4Tinu

Unterstützt meine FortiGate eine bestimmte FortiOS Version?

FortiOS 5x.svg FortiOS 6x.svg FortiOS 7x.svg

In den folgenden Tabellen kann entnommen werden, ab wann eine bestimmte FortiGate nicht mehr mit einer FortiOS GA Version funktioniert. Bevor man eine neue GA Version auf einer FortiGate installiert, sollte man in den Release Notes prüfen, ob die entsprechende Version auch für dieses Gerät vorhanden ist. Alle nachfolgenden Angaben wurden der Fortinet Support Seite entnommen und sind ohne Gewähr.

      https://support.fortinet.com/Information/ProductLifeCycle.aspx

Die unten aufgeführten Hardware-Modelle unterstützen die FortiOS-Version 5.4 nicht:

FortiGate Modelle die 5.4 nicht unterstützen:

  • 20C
  • 40C
  • 60C
  • 60C-SFP
  • 60C-POE
  • 60D-3G4G-VZW*
  • Rugged-100C
  • 110C
  • 111C
  • 140D-POE-T1
  • 200B
  • 200B-LENC
  • 200B-POE
  • 300C
  • 300C-LENC
  • 310B
  • 310B-DC
  • 310B-LENC
  • 311B
  • 620B
  • 620B-DC
  • 620B-LENC
  • 621B
  • 1240B
  • 1240B-DC
  • 3016B
  • 3040B
  • 3040B-LENC
  • 3140B
  • 3140B-LENC
  • 3810A
  • 3810A-DC
  • 3810A-E4
  • 3810A-LENC
  • 3950B
  • 3950B-LENC
  • 3951B
  • 3951B-DC
  • 5001A
  • 5001A-DW
  • 5001A-DW-LENC
  • 5001A-SW
  • 5001B
  • 5101C
  • 5101C-LENC

FortiGate-WIFI Modelle die 5.4 nicht unterstützen:

  • 20C
  • 40C
  • 60C
  • 60CM-3G4G-B
  • 60CX-ADSL-A
  • 60D-3G4G-VZW

Der Zugang zum Fortinet-Kundendienst für Support zu 5.2 ist für diese Hardware-Modelle bis zur erlangung des Hardware-End-of-Support-Datums möglich.


Die unten aufgeführten Hardware-Modelle unterstützen die FortiOS-Version 6.0 nicht:

FortiGate Modelle die 6.0 nicht unterstützen:

  • 80C
  • 80CM
  • 91E
  • 600C
  • 800C
  • 1000C
  • 5001C
  • 3600C
  • 3240C

FortiGate-WIFI Modelle die 6.0 nicht unterstützen:

  • 80CM
  • 81CM

Die unten aufgeführten Hardware-Modelle unterstützen die FortiOS-Version 6.2 nicht:

FortiGate Modelle die 6.2 nicht unterstützen:

  • 30D
  • 30D-POE
  • 60D
  • 60D-POE
  • FG-70D
  • 70D-POE
  • 90D
  • 90D-POE
  • 94D-POE
  • 98D-POE
  • 200D
  • 200D-POE
  • 240D
  • 240D-POE
  • 280D-POE

FortiGate-WIFI Modelle die 6.2 nicht unterstützen:

  • 30D
  • 30D-POE
  • 60D
  • 60D-POE
  • 90D
  • 90D-POE
  • 92D

FortiGate Rugged Modelle die 6.2 nicht unterstützen:

  • 60D

Die unten aufgeführten Hardware-Modelle unterstützen die FortiOS-Version 6.4 nicht:

FortiGate Modelle die 6.4 nicht unterstützen:

  • 30E
  • 30E-3G4G
  • 50E
  • 51E
  • 52E
  • 80D
  • 92D
  • 100D
  • 140D
  • 140D-POE

FortiGate-WIFI Modelle die 6.4 nicht unterstützen:

  • 30E
  • 30E-3G4G
  • 50E
  • 50E-2R
  • 51E

FortiGate Rugged Modelle die 6.4 nicht unterstützen:

  • 30D
  • 35D

FortiGate Modelle die 7.0 noch nicht unterstützen:

  • 1800F Serie
  • 2600F Serie
  • 4200F Serie
  • 4400F Serie
  • 6000 Serie
  • 7000 Serie

Die unten aufgeführten Hardware-Modelle unterstützen die FortiOS-Version 7.0.0 nicht (Stand: Juni 2021).

FortiGate Modelle die 7.0 momentan (Stand: Juni 2021) nicht unterstützen:
https://docs.fortinet.com/document/fortigate/7.0.0/fortios-release-notes/305956/part-numbers-of-unsupported-fg-10xf-fgr-60f-and-fgr-60f-3g4g-generation-2-models

  • FG-100F-Gen2 P24589-20
  • FG-101F-Gen2 P24605-20

FortiGate Rugged Modelle die 7.0 momentan (Stand: April 2021) nicht unterstützen:
https://docs.fortinet.com/document/fortigate/7.0.0/fortios-release-notes/305956/part-numbers-of-unsupported-fg-10xf-fgr-60f-and-fgr-60f-3g4g-generation-2-models

  • FGR-60F-Gen2 P25210-21
  • FGR-60F-3G4G-Gen2 P25587-21

Das FortiOS 7.0 wird von folgenden Geräten unterstützt:

Fortinet-2961.jpg

Das FortiOS 7.2 wird von folgenden Geräten unterstützt:

Fortinet-3148.jpg

Artikel editiert 08.06.2022 / 4Tinu

Wann geht eine FortiOS Version End of Support?

FortiOS 5x.svg FortiOS 6x.svg FortiOS 7x.svg

Um zu wissen ob auf der vorhandenen OS-Version der FortiGate noch Support-Anspruch besteht / noch unterstützt wird, kann dies am einfachsten auf dem Partner-Portal, welches immer geupdated wird, überprüft werden. Im Partner-Portal ist dies hier zu finden:

Info.svg

https://support.fortinet.com/Information/ProductLifeCycle.aspx

So wird zum Beispiel das FortiOS 6.0 im September 2023 "End of Support" gehen.

Der Life Cycle vom FortiOS ist wie folgt definiert:

Fortinet-1866.jpg

Die GA-Phase dauert 36 Monate, danach geht das FortiOS automatisch in den Status "End of Engineering Support". Nach weiteren 18 Monaten geht das FortiOS "End of Support". Sobald das FortiOS in diesem Stadium ist, gibt es seitens Fortinet keinen technischen Support. Dies bedeutet, dass Tickets erst bearbeitet werden, wenn die FortiGate auf einen aktuellen Software Stand angehoben wurde. Der ganze Life Cycle einer FortiOS Generation dauert entspechend 54 Monate.

       Mehr zum TAC Support     : Fortinet:Support-Case#Was_wird_vom_Technischen_Fortinet_Support_.28TAC.29_nicht_unterst.C3.BCtzt.3F

In der nachstehenden Tabelle sind die Daten welche der offiziellen Fortinet Supportseite entnommen wurden:

Software Version Release Date (GA) End of Engineering Support Date (EOES) End of Support Date (EOS)
3.3 02.10.2006 - 02.10.2009
3.4 29.12.2006 - 29.12.2009
3.5 03.07.2007 - 07.03.2010
3.6 04.02.2008 - 04.02.2011
3.7 08.07.2008 - 18.07.2011
4.0 24.02.2009 - 24.02.2012
4.1 24.08.2009 - 24.08.2012
4.2 01.04.2010 - 01.04.2013
4.3 19.03.2011 - 19.03.2014(1)
5.0 01.11.2012 01.11.2015 01.05.2017
5.2 13.06.2014 13.06.2017 13.12.2018
5.4 21.12.2015 21.12.2018 21.6.2020
5.6 FortiOS 56.svg 2017-03-30 30.03.2020 30.9.2021
6.0 FortiOS 60.svg 29.03.2018 29.03.2021 29.09.2022
6.2 FortiOS 62.svg 28.03.2019 28.03.2022 28.09.2023 Achtung.svg
6.4 FortiOS 64.svg 31.03.2020 31.03.2023 30.09.2024
7.0 FortiOS 70.svg 30.03.2021 30.03.2024 30.09.2025
7.2 FortiOS 72.svg 31.03.2022 31.032025 30.09.2026
7.4 FortiOS 74.svg 11.05.2023 11.05.2026 11.11.2027

Ausnahmen werden hier aufgeführt:
https://support.fortinet.com/Information/ProductLifeCycle.aspx


edit 5.09.2023 - 4Tinu

Wie wird eine FortiGate von Grund auf mit einem entsprechenden FortiOS installiert (staging)?

FortiOS 5x.svg FortiOS 6x.svg FortiOS 7x.svg

Wenn ein FortiGate Device von Fortinet ausgeliefert wird, kann dieses Device auf irgend einem FortiOS basieren! Grundsätzlich werden immer die neusten FortiOS Versionen durch Fortinet vorinstalliert. Wenn es sich um ein neu lanciertes Modell eines FortiGate Devices handelt, basiert dies oft auf einem sogenannten "Branche Release". Ein "Branche Release" ist eine Vorabversion eines "GA" Releases (General Availibility). Aus diesem Grund empfehlen wird bei jedem FortiGate Device ein "staging" mit einem FortiOS nach Wahl durchzuführen. Dabei spielt es keine Rolle welches FortiOS oder welche Konfiguration auf der FortiGate existiert oder vorhanden ist, da durch ein "staging" die FortiGate von Grundauf neu installiert wird und sämtliche Konfiguration und das bestehende FortiOS dabei verloren gehen. Somit sollte jedes FortiGate Device nach diesem Vorgehen aufgesetzt werden. Zwingende Voraussetzung für ein "staging" ist eine korrekte Verbindung von der entsprechenden Workstation zum "Consolen Port" (RS232) des FortiGate Devices. Dies bedeutet:

Parameter für RS232 Verbindung
 
8 bits 
no parity 
1 stop bit 
9600 baud (the FortiGate-300 uses 115,000 baud) 
Flow Control = None 

Die heutigen Laptop/Workstation verfügen in den seltensten Fällen einen "RS-232" Port. Dies bedeutet dass mit einem entsprechenden Device, zBsp "USB Konverter" gearbeitet werden muss. Wir empfehlen den "EX-1301-2" USB Konverter welcher sich durch eine hohe Kompatibilität auszeichnet. Weitere detaillierte Informationen betreffend "Konsolen Port" resp. RS-232 Console findet man im folgenden Artikel:

       FortiGate-6.0:FAQ#Was_f.C3.BCr_ein_Kabel_.28Konverter.29_ben.C3.B6tige_ich_f.C3.BCr_den_Konsolen_Anschluss_.28Seriell_RS-232.29_auf_einer_FortiGate.3F

Beim "staging" Prozess überträgt das BIOS des FortiGate Devices das entsprechende FortiOS welches von einem TFTP Server auf die FortiGate um dies nachträglich zu installieren. Aus diesem Grund muss auf der entsprechende Workstation, welche mit dem FortiGate Device verbunden ist ein TFTP Server installiert werden. Wir empfehlen folgenden TFTP Server welcher kostenlos erhältlich ist:

Für den "Solarwinds TFTP Server" muss eine Standard-Installation durchgeführt werden. Nach der Installation steht im Startmenü "SolarWinds TFTP Server" zur Verfügung und unter dem Menu-Punkt "TFTP Server". Starte den TFTP Server anhand dieses Menu-Eintrages. Danach wähle:

       File > Configure > Start

Der TFTP Server wird gestartet und dies wird auch unter der Position "Status" als "Started" angezeigt. Nun bestätige durch "OK" das "Configure" Fenster und sobald dies geschieht "initial" wird der TFTP Server gestoppt. Der Grund hierfür ist der folgender: Beim ersten Start des TFTP Servers wird das "TFTP Server Root Directory" angelegt und der Server stoppt. Standardmässig befindet sich das "TFTP Server Root Directory unter folgendem Verzeichnis "C:\TFTP-Root". Kontrolliere kurz ob dieses Verzeichnis angelegt wurde und starte den TFTP Server mehrmals und kontrolliere dessen Status:

       File > Configure > Start [Kontrolliere den Status "Started"]

Nun muss in das "TFTP Server Root Direktory" das entsprechende FortiOS Image kopiert werden. Benenne dieses Image um in "image.out". Als nächsten Schritt konfiguriere die Netzwerkkarte der entsprechende Workstation welche mit dem FortiGate Device über "Consolen Port" verbunden ist mit folgender IPv4-Adresse / Subnet Maske und deaktiviere sämtlichen anderen Netzwerkkarten wie zBsp jenes für das WLAN:

       192.168.1.100
       255.255.255.0
Info.svg Die IPv4-Adresse des TFTP Servers resp. der Netzwerkkarte der entsprechenden Workstation kann für die verschiedenen Modelle des FortiGate Devices variieren. Beim "staging" Prozess kann diese jedoch eruiert werden!

Die Konfiguration der Netzwerkkarte benötigt keinen "Default Gateway" und auch keinen DNS Server. Achte darauf, dass auf der entsprechenden Workstation sämtliche Firewall, Endpoint Security usw. deaktiviert wurden damit die Anfrage des FortiGate Devices für die Übertragung des FortiOS Image zum TFTP Server zugelassen wird. Aus diesen Ausführung ergibt sich folgende Konstellation:

Prinzip
 
                  _____________________________
                 |       RS232 Verbindung      |
   Consolen Port |                             |
      ___________|___                          | RS-232 Anschluss
     |               |                     ____|_______________
     | FortiGate 50E |   192.168.1.100/24 |                    |
     |_______________|               _____| LapTop/Workstation | --> SolarWindsTFTP Server Status "Started" 
              |                     | NIC |____________________| --> FortiOS als "image.out" im C:\TFTP-Root
         WAN1 |                     |                            --> Fireweall, Endpoint Security deaktiviert!
              |_____________________|
Info.svg Als Verbindung von WAN1 zur Netzwerkkarte der entsprechenden Workstation benutze ein normales RJ-45 Kabel. Der entsprechende Netzwerk-Port in unserem Beispiel ("WAN1") ist abhängig des FortiGate Devices. Der entsprechend zu nutzende Port wird während dem "staging" Prozess aufgelistet!

Nun muss das FortiGate Device neu gestartet werden (execute restart) oder ein "power-on" ausgeführt werden. Sobald die FortiGate startet muss auf folgende Meldung geachtet werden um den Start-Prozess abzubrechen und so in dass BIOS der FortiGate zu gelangen:

Config cli.png Konfiguration über die CLI:
 Please wait for OS to boot, or press any key to display configuration menu..
 
 FortiGate-50E (12:55-08.13.2015)
 Ver:05000011
 Serial number: FGT50E3U15000635
 CPU(00): 1600MHz
 Total RAM: 2GB
 Initializing boot device...
 Initializing MAC... egiga1
 '''Please wait for OS to boot, or press any key to display configuration menu..'''

Wenn der Start-Prozess mit "press any key...." abgebrochen wurde wird folgendes Menü angzeigt:

 
 [C]: Configure TFTP parameters.
 [R]: Review TFTP parameters.
 [T]: Initiate TFTP firmware transfer.
 [F]: Format boot device.
 [I]: System information.
 [B]: Boot with backup firmware and set as default.
 [Q]: Quit menu and continue to boot.
 [H]: Display this list of options.

Nun kann für den TFTP "staging" Prozess anhand "[R]: Review TFTP parameters." die vorgegebenen Konfiguration eingesehen werden. Möchte man diese Konfiguration verändern kann dies anhand "[C]: Configure TFTP parameters." durchgeführt werden. Dabei ist zu beachten das diese Veränderung "persistens" ist und zukünftig für jeden "staging" Prozess betreffend TFTP Parameter für dieses FortiGate Device gilt:

 Enter C,R,T,F,I,B,Q,or H: R <-- Buchstabe R auswählen
  
 Image download port:    WAN1
 DHCP status:            Disabled
 Local VLAN ID:          <NULL>
 Local IP address:       192.168.1.188
 Local subnet mask:      255.255.255.0
 Local gateway:          192.168.1.254
 TFTP server IP address: 192.168.1.100
 Firmware file name:     image.out

Führe folgende Kontrolle betreffend der Konfiguration des "staging" Prozesses durch:

  • Ist das RJ-45 Kabel am korrekten Netzwerk-Port der FortiGate angeschlossen (Beispiel: WAN1)
  • Wurde die korrekte IPv4-Adresse, wie auch die Subent Maske auf der Netzwerkkarte der entsprechenden Workstation konfiguriert
  • Ist der TFTP Server gestartet und befindet sich im "TFTP Server Root Directory" (C:\TFTP-Root) das entsprechende Image des FortiOS als File "image.out"

Als nächsten Schritt muss der "boot device" neu formatiert werden. Dabei wird die Boot-Partition gelöscht und neu angelegt. Sämtliche vorhandenen Daten/Informainen gehen dabei verloren. Wähle die Position "[F]: Format boot device.":

 Enter C,R,T,F,I,B,Q,or H: '''F'''
 It will erase data in boot device. Continue? [yes/no]: yes <-- yes ausschreiben
 Formatting............................ Done.

Nun, um den "staging" Prozess zu starten führe den Punkt "[T]: Initiate TFTP firmware transfer." aus:

 Enter C,R,T,F,I,B,Q,or H: T <-- Buchstabe T auswählen

Nun wird der "staging" Prozess durchgeführt. Achte dabei auf den "TFTP Server" resp. dessen Console in welcher der Transfer des Files bestätigt wird! Auf dem FortiGate Device wird eine korrekte Übertragung folgendermassen angezeigt:

 Please connect TFTP server to Ethernet port 'WAN1'.
 
 MAC: 90:6c:ac:13:80:10
 
 Connect to tftp server 192.168.1.100 ...
 
 #############################################################
 Image Received.
 Checking image... OK
 Save as Default firmware/Backup firmware/Run image without saving:[D/B/R]? D <-- Buchstabe D auswählen

Wenn D für "default" ausgeführt wird, so wird das FortiOS in die Partition installiert und diese "active" gesetzt und somit beim nächsten Neustart des Devices verwendet. Wird B für "backup" gewählt, so wird die Partition nicht "active" gesetzt und beim nächsten Neustart nicht genutzt. Wenn "R" für "run" ausgeführt wird, so wird das FortiOS in den Memory Bereich installiert. Dies bedeutet dass nach einem Neustart des Devices diese Installation nicht mehr zur Verfügung da durch den ausgeführten Neustart der Memory Bereich gelöscht wird! Für ein "staging" speziell wenn der "boot device" Formatiert wird ist immer "D" zu wählen für "default".

          
 Programming the boot device now.
 ....................................
 .............................................................
 .............................................................
 ...............................................................
 ...
 
 Booting OS...
 
 Reading boot image... 2800640 bytes.
 Initializing firewall...
 
 System is starting...
 
 FGT50E3U15000635 login: 

Das FortiOS ist nun grundsätzlich installiert. Als nächsten Schritt sollte die "disk" eines FortiGate Devices formatiert werden. Bei kleineren FortiGate Devices steht die "disk" für ein "Logging" nicht mehr zur Verfügung. Dennoch sollte die "disk" Formatiert werden da ein FortiOS für viele Funktionen diese "disk" benutzen wird, wie zBsp DHCP Lease File, Caching Informationen usw. Steht die "disk" nicht zur Verfügung, da diese nicht formatiert wurde, werden diese Informationen in den Memory-Bereich geschrieben was das Memory zusätzlich belastet oder stehen teilweise gänzlich nicht zur Verfügung. Um sich Initial nach einem "staging" auf einem FortiGate Device einzuloggen müssen folgende Login-Informationen verwendet werden:

 User: admin
 Password: [Kein Passwort]

Nun kann die "disk" mittels folgendem Befehl formatiert werden:

 # execute formatdisk
 Log disk is /dev/sdb4
 Formatting this storage will erase all data on it, including
   Logs, quarantine files;
   WanOpt caches;
 and requires the unit to reboot.
 Do you want to continue (y/n) y <-- Buchstabe y auswählen

Nach dem Formatieren der "disk" wird ein Neustart ausgeführt! Dieser Befehl "execute formatlogdisk" kann auf neueren FortiGate Modellen, wie zBsp einer FG-50E nicht ausgeführt werden. Der Grund ist der wie folgt: Diese FortiGate Modelle verfügen zwar über eine "disk" jedoch die "disk" wird als Subsystem im Flash-Bereich angelegt (MTD; Memory Technology Device). Die "MTD" Technology ist Bestandteil des Linux Kernels resp. des FortiOS Kernels. Um festzustellen ob das FortiGate Modell über eine "MTD" Implementation verfügt kann folgender Befehl eruiert werden:

 # fnsysctl df -h
 Filesystem                 Size       Used  Available Use% Mounted on
 rootfs                   123.9M      53.6M      70.2M  43% /
 /dev/root                123.9M      53.6M      70.2M  43% /
 none                       1.5G       1.5M       1.4G   0% /tmp
 none                       1.5G          0       1.5G   0% /dev/shm
 none                       1.5G      16.9M       1.4G   1% /dev/cmdb
 /dev/mtd5                 18.0M       6.6M      11.3M  37% /data    <-- effektive Disk
 /dev/mtd7                 30.0M       2.3M      27.6M   8% /data2   <-- effektive Disk

Bei den Verzeichnissen "/data" sowie "/data2" welche als "/dev/mtd*" indiziert werden und somit als "MTD" Subsysteme gelten, handelt es sich effektiv um die "disk". Diese "disk" resp. das "MTD Subsystem" wird anhand eines Files, welches in den Flash-Bereich kopiert wird angelegt. Dabei muss berücksichtigt werden, dass alle Informationen der "disk" verloren gehen. Somit FortiGate Modelle, welche anhand dieser "MTD Subsystem" Technology verfügen resp. anhand dieser eine "disk" dargestellt wird können Informationen nicht "persistent" speichern dh. nach einem Neustart gehen alle Informationen verloren! Für ein "MTD" Subsystem wird auf einer FortiGate-50E 128 MB alloziert. Als nächster Schritt im "staging" Prozess sollten die Interface's auf dem internal Switch aufgebrochen werden. Um dies durchzuführen muss zwischen folgenden Möglichkeiten unterschieden werden:

Durch das Aufbrechen des internen Swichtes gehen sämtliche Konfigurationen auf den Interfaces für den "internen" Switch verloren Dies beutet dass nach dem ausgeführten Neustart auf den Interfaces für den internen Switch einzeln verfügbar sind keine IP Adressen mehr konfiguriert sind. Um auf einen Zugriff über das Mgmt. Interfaces der FortiGate zu gewährleisten muss folgendes auf einem entsprechenden Interface ausgeführt werden:

Verifiziere die einzelnen Interface Namen

 
 # show system interface

Konfiguriere ein entsprechendes Interface

      
 # config system interface
 # edit [Name des Interface zB "internal1"]
 # set ip [IPv4 Adresse plus Subnet Maske zB "192.168.1.99 255.255.255.0]
 # set allowaccess [http | https | ssh | telnet | ping]
 # end

Wenn "http" sowie "https" aktiviert werden wird standardmässig ein "redirect" auf "https" durchgeführt. Möchte man dies unterbinden kann folgendes zusätzlich ausgeführt werden:

 
 # config system global
 # set admin-https-redirect [enable | disable]
 # end

Der "staging" Prozess ist nun abgeschlossen und due FortiGate kann in Betrieb genommen werden!

Hier kann eine Anleitung heruntergeladen werden:


edit 29.07.2022 - 4tinu

Wie kann ich im FortiOS 6.0 einen Firmware Upgrade vornehmen?

FortiOS 60.svg

Da das FortiOS 6.0 ist seit dem 29. September 2022 end of Support ist. Um weiter den Support von Fortinet zu erhalten, müssen die FortiGates mit der Version 6.0.x auf einen höheren GA upgegradet werden.
Folgendes vorgehen wird bei einem Upgrade empfohlen:

  1. Upgrade Pfad überprüfen
  2. Release Notes lesen
  3. Wartungsfenster definieren/Kunde informieren
  4. Fallback Szenarium planen
  5. Konfiguration sichern (Backup erstellen)
  6. Richtigen FortiOS Versionen vom Supportportal herunterladen
  7. Upgrade im Wartungsfenster vornehmen, dabei den Upgrade Pfad genau einhalten
  8. Überprüfen der Funktion

Falls eine Testumgebung besteht zuerst diese Updaten um allfällige Impacts im Vorfeld zu erkennen und entpsrechende Massnahmen einleiten lassen.

Upgrade auf der FortiGate vornehmen:

Config webgui.png Konfiguration über das WebGui:
  1. Navigiere auf über das Menu System --> Firmware zur Firmware Management Seite
  2. Unter Upload Firmeware kann bei +Browse das File über den Dateimanager ausgewählt werden.
Fortinet-3235.jpg
  1. Das File hat die Endung .out Achte darauf, dass du das File für die richtige Firewall Hardware ausgewählt hast.
  2. Mit Backup config and upgrade wird der Upgrade gestartet. Es wird aber automatisch noch ein Backup der Konfiguration in dein Standart Ordner gespeichert bevor der Upgrade beginnt.
Fortinet-3236.jpg

Du wirst noch darauf hingewiesen, dass die FortiGate nach dem Upgrade neu starten wird. Daher ist es wichtig, dass du den Upgrade in einem Wartungsfenster vornimmst und so auch deine Kunden nicht verärgerst.

Fortinet-3237.jpg

Das File wird auf die FortiGate eingelesen.

Fortinet-3238.jpg

sobald das File eingelesen ist, beginnt die Installation des Images.

Fortinet-3239.jpg

Nach erfolgreichem implementieren, wird die FortiGate neu gestartet.

Fortinet-3240.jpg

Du siehst bei den Systeminformationen nun die neue aktuelle FortiOS Version.

Fortinet-3241.jpg

Nach dem Upgrade kann in der CLI noch nach allfälligen Fehlern gesucht werden, welche eventuell beim Upgrade passiert sind:

Config cli.png Konfiguration über die CLI:
  
 # diagnose debug config-error-log read

Dieses "config-error-log" kann nach Verifizierung ebenfalls zurückgesetzt resp. gelöscht werden:

  
 # diagnose debug config-error-log clear

edit 29.09.2022 - 4tinu

Wie kann ich im FortiOS 6.2 einen Firmware Upgrade vornehmen?

FortiOS 62.svg

Da das FortiOS 6.2 wird am dem 28. September 2023 end of Support gehen. Um weiter den Support von Fortinet zu erhalten, müssen die FortiGates mit der Version 6.0.x auf einen höheren GA upgegradet werden.
Folgendes vorgehen wird bei einem Upgrade empfohlen:

  1. Upgrade Pfad überprüfen
  2. Release Notes lesen
  3. Wartungsfenster definieren/Kunde informieren
  4. Fallback Szenarium planen
  5. Konfiguration sichern (Backup erstellen)
  6. Richtigen FortiOS Versionen vom Supportportal herunterladen
  7. Upgrade im Wartungsfenster vornehmen, dabei den Upgrade Pfad genau einhalten
  8. Überprüfen der Funktion

Falls eine Testumgebung besteht zuerst diese Updaten um allfällige Impacts im Vorfeld zu erkennen und entpsrechende Massnahmen einleiten lassen.


Nach dem Upgrade kann in der CLI noch nach allfälligen Fehlern gesucht werden, welche eventuell beim Upgrade passiert sind:

Config cli.png Konfiguration über die CLI:
  
 # diagnose debug config-error-log read

Dieses "config-error-log" kann nach Verifizierung ebenfalls zurückgesetzt resp. gelöscht werden:

  
 # diagnose debug config-error-log clear

add 06.01.2023 - 4tinu

Wie kann ich eine FortiGate über das Fabric Management upgraden?

FortiOS 70.svg FortiOS 72.svg

In diesem Artikel wird beschrieben, wie man ab FortiOS 7.0 über das Fabric Management die FortiGate upgraden kann.

Config webgui.png Konfiguration über das WebGui:
Fortinet-3149.jpg
  1. Notifikation erscheint in der Titelleiste bei der Glocke, dass eine neue Firmware verfügbar wäre
  2. über System -> Fabric Management öffnet man das Fabrik Management Menu
  3. Durch anwählen des Fabric Upgrade Buttons werden die verfügbaren Releases angezeigt
Fortinet-3150.jpg
  1. Unter Select Firmware können die FortiOS Builds ausgewählt werden. Dabei ist unter Latest immer die neueste FortiOS Version abgebildet. Bei All Upgrades können alle Versionen angezeigt werden und unter All Downgrade findet man die Versionen die benutzt werden können für einen Downgrade (Nicht empfohlen)
  2. Wähle die FortiOS Version aus, auf welche du die FortiGate upgraden willst. Du hast die Möglichkeit direkt noch die Release Notes anzuschauen.
Wichtig.svg

Upgrade Pfad beachten beim Updaten, damit keine Konfigurationsverluste entstehen!

Fortinet-3151.jpg
  • Wenn das gewünschte Release ausgewählt ist geht es mit Next einen Schritt weiter.
Fortinet-3152.jpg
  1. Nun muss gewählt werden, ob der Upgrade zu einer bestimmten Zeit oder sofort durchgeführt wird. Dabei kann mit Immediate der Upgrade sofort initiert werden, hingegen bei der Option Custom wird ein Zeitpunkt (Datum und Uhrzeit) definiert.
  2. Mit Next geht es einen Schritt weiter
Fortinet-3153.jpg
  • Bevor der Upgrade startet, kann man das ganze nocheinmal kontrollieren (Zeitfenster, Firmware version)
  • Mit Confirm and Backup Config startet man den Upgrade. Dabei wird vorab noch ein Backup der Konfiguration erstellt.
Fortinet-3154.jpg
  1. Wenn ein Zeitplan eingestellt wurde, hat man immer noch die Möglichkeit den Upgrade zu stoppen mit dem Button Cancel Fabric Upgrade
  2. Unter Firmware Status findest du eine Übersicht in welchem Status die Geräte momentan sind.
  3. in der Tabelle auch unter Firmware Status sieht man auf welche Version upgegradet wird in welchem Zeitraum
Fortinet-3155.jpg
  • Nach dem Update startet die FortiGate neu
Fortinet-3156.jpg
  • Nun findet man in der Fabric Management Übersicht die FortiGate in der Übersicht mit der aktuellen FortiOS Version und unter Update Status den Hinweis, dass die aktuellste Version installiert ist.

add 22.06.2022 - 4tinu

Wie kann ich einen FortiOS Rollback durchführen?

FortiOS 5x.svg FortiOS 6x.svg FortiOS 7x.svg

Auf der FortiGate bestehen zwei Partitionen auf der Festplatte, auf welcher die Konfiguration und das FortiOS Image geschrieben wird. Es ist immer eine Partion mit dem aktuellen FortiOS und der aktuellen Konfiguration aktiv. Wenn ein Upgrade auf eine neue FortiOS Version durchgeführt wird, wird die Konfiguration auf die passive Partition geschrieben und auf dieser das neue FortiOS installiert. Nach der Installation wird dann diese Partition aktiv geschalten und die andere passiv.

Durch dieses Verhalten ist es möglich, dass wir nach einem missglückten OS-Update wieder ein Schritt zurück gehen können indem wir mit der passiven Partition die FortiGate neu starten. So initiert die FortiGate nach einem Reboot wieder mit der vorherigen OS-Version und deren Konfiguration.

Wichtig zu wissen ist, dass man immer nur ein Schritt zurück gehen kann. Daher empfiehlt es sich nach jedem Update-Schritt das Verhalten der FortiGate zu überprüft.

Als Erstes müssen wir schauen, welche Partition momentan gerade aktiv ist. Dies kann mit diagnose sys flash list überprüft werden. Danach müssen wir definieren, mit welcher Partition wir beim nächsten Mal starten wollen (primäre oder sekondäre)

Config cli.png Konfiguration über die CLI:
# diagnose sys flash list
Partition  Image                                     TotalSize(KB)  Used(KB)  Use%  Active
1          FGT60E-6.02-FW-build1010-191008                  253920     83060   33%  No
2          FGT60E-6.02-FW-build1066-191218                  253920     82168   32%  Yes
3          ETDB-77.00885                                   3021708    130964    4%  No
Image build at Dec 18 2019 22:30:39 for b1066


Wir sehen in diesem Beispiel, dass die Partition 2 (secondary) aktiv ist. Auf dieser ist das FortiOS Build 1066 (FortiOS 6.2.3) installiert. Auf der Partition 1 (primär) ist das FortiOS Build 1010 (FortiOS 6.2.2) installiert.

Mit dem Befehl execute set-next reboot [primary|secondary] kann ich definieren mit welcher Partition beim nächsten Reboot gestartet werden soll.

In unserem Beispiel wollen wir den Fallback auf das FortiOS 6.2.2. Dies bedeutet, dass wir die primäre Partition auswählen müssen:

# execute set-next-reboot primary
Default image is changed to image# 1.

Wir können dies jetzt auch mit diagnose sys flash list überprüfen:

# diagnose sys flash list
Partition  Image                                     TotalSize(KB)  Used(KB)  Use%  Active
1          FGT60E-6.02-FW-build1010-191008                  253920     82168   32%  Yes
2          FGT60E-6.02-FW-build1066-191218                  253920     82168   32%  No
3          ETDB-77.00885                                   3021708    130964    4%  No
Image build at Dec 18 2019 22:30:39 for b1066

Mit execute reboot kann die FortiGate neu gestartet werden und startet nun künftig mit der primären Partition, deren Konfig und der entsprechenden FortiOS Version 6.2.2.

Datei:HowTo FortiOS rollback.pdf

Wie kann ich eine FortiGate auf den Fabrikzustand zurück setzen?

FortiOS 5x.svg FortiOS 6x.svg FortiOS 7x.svg

Mit dem folgenden CLI Befehl kann die FortiGate auf die Grundkonfiguration zurückgesetzt werden:

Config cli.png Konfiguration über die CLI:
  
 #execute factoryreset
 This operation will change all settings to factory defaults!
  
 Do you want to continue? (y/n)'''y''' <-- Mit '''y''' bestätigen oder mit '''n''' Aktion abbrechen.
 
 System is resetting to factory defaults...

Nach dieser aktion startet die FortiGate neu und es kann mit folgenden Parametern auf die FortiGate eingeloggt werden:

      Managment IP : 192.168.1.99
      Admin User   : admin
      Passwort     : kein Passwort

Mit dem Befehl execute factoryreset2 wird die ganze Konfiguration zurücksetzen mit folgendern Ausnahmen:

  • Adminusern
  • Interface Konfigurationen
  • statischen Routings.

Damit bleiben folgende Konfigurationskontainer erhalten auf dem Gerät:

  • system.global.vdom-admin/VDOMs/
  • system.interface/
  • system.settings/router.static/router.static6.
Config cli.png Konfiguration über die CLI:
 
       execute factoryreset2
Hinweis.svg

Bei VM Modellen wird die Lizenz beibehalten wenn keepvmlicense angegeben ist!

Wie kann ich eine FortiGate auf den Fabrikzustand zurück setzen und sie dann direkt herunterfahren?

FortiOS 6x.svg FortiOS 7x.svg

Es gibt ein Kommando, welches die FortiGate auf den Fabrikzustand setzt und das Gerät direkt sauber heruntergefahren wird.

Dafür kann folgendes Kommando verwendet werden:

Config cli.png Konfiguration über die CLI:
 
       execute factoryreset-shutdown

add 30.06.2022 - 4tinu

DNS

Wie konfiguriere ich auf einer FortiGate die System DNS Server?

FortiOS 60.svg FortiOS 62.svg

Dem DNS Server auf einer FortiGate kommt eine wichtige Funktion zu. Die FortiGate nutzt die DNS Server für unzählige Funktionen und müssen entsprechend einwandfrei funktionieren. Die DNS Server-Einstellung ist eine globale Einstellung. Dies bedeutet, dass wenn mit VDOM gearbeitet wird der System DNS Server für alle gleich ist. Konfiguriert werden die System-DNS-Einstellungen im Menu DNS:

Config webgui.png Konfiguration über das WebGui:

Über das Menu Network > DNS

Fortinet-2616.jpg

Über die CLI werden die System DNS Server wie folgt konfiguriert:

Config cli.png Konfiguration über die CLI:
 
# config system dns
# set primary [IPv4 Adresse des DNS 1 Serves]
# set secondary [IPv4 Adresse des DNS 2 Servers]
# set ip6-primary :: [IPv6 Adresse des DNS1 Server]
# set ip6-secondary :: [IPv6 Adresse des DNS2 Server]
# set domain [Lokale Domaine]
# set source-ip [Source IP die benützt werden soll für die DNS Anfrage]
# end

Über die CLI kann die Speicherdauer, wie lange der DNS-Eintrag im Cache gespeichert werden soll, konfiguriert werden. Weiter kann auch konfiguriert werden wie viele DNS Einträge im Cache maximal gespeichert werden sollen.

Config cli.png Konfiguration über die CLI:
 
# config system dns
# set dns-cache-limit [Maximum Einträge die im Cache verbleiben; Standard 5000]
# set dns-cache-ttl [Maximum Zeit in der die DNS Cache vebleibt; Standard 1800]
# end

Die Anweisung "cache-notfound-response" ist ein Log relevanter Eintrag. Wird dieser aktiviert, und sind die relevanten Log's aktiviert, so wird im Log, sofern die Anfrage im "local cache" nicht gefunden wird ein "NOTFOUND" ausgegeben. Defaultmässig ist diese Option deaktiviert.

Config cli.png Konfiguration über die CLI:
 
# config system dns
# set cache-notfound-response [enable | disable]
# end

Bei FortiGate Geräten mit mehreren CPUs können die DNS-Prozessnummer von 1 bis zur Anzahl der CPUs eingestellt werden. Die Standard-DNS-Prozessnummer ist 1.

Config cli.png Konfiguration über die CLI:
 
# config system global
# set dnsproxy-worker-count <integer>
# end

Wie konfiguriere ich auf der FortiGate "DNS over TLS"?

FortiOS 62.svg FortiOS 64.svg
Seit dem FortiOS 6.2 wurde diese Option DNS over TLS (DoT) hinzugefügt.

Wie funktioniert DoT?

Der noch recht junge Standard "DNS over TLS" (RFC 7858) soll drei Probleme von DNS und DNSSEC lösen:

  • Schützen der Privatsphäre von Anwender und gegen abhören schützen
  • Einschleusen von manipulierten DNS-Informationen unterbinden
  • Verhindern von Denial-of-Service-Attacken via DNS

Die Funktion von DoT ist ziemlich einfach. Klassisch ruft der Client die DNS Informationen beim Resolver über eine ungesicherte UDP Kommunikation auf. Bei DoT wird dies über eine TCP Verbindung in der Security Schicht aufgerufen, welche authentifiziert und verschlüsselt ist. So bezieht der Client eine DNSSEC validierte Information des Namensservers. So kann ausgeschlossen werden dass Drittpersonen mitlesen. Die Namensauflösung des Resovers erfolgt dann im Klartext. Dies ist aber nicht gravierend, da der Urheber der Anfrage nicht ersichtlich ist. Es soll aber bereits Pläne geben welche die Kommunikation zwischen DNS-Resolver und dem zuständigen DNS-Server via DoT auch gesichert wird. DoT kommuniziert mit dem TCP Port 853. Ein Client der DoT fähig ist versucht die DNS-Anfrage zuerst über dieses Protokoll. Falls der Dienst nicht verfügbar ist, wird in der Regel über UDP53 die Anfrage getätigt (dies ist jedoch abhängig wie die Sicherheitseinstellungen des Systems sind). Auf der FortiGate ist es so eingestellt, dass wenn die DoT Anfrage nicht funktioniert normal über UDP53 die Anfrage unverschlüsselt abgesetzt wird. Dies ist problematisch da der Port 853 an vielen Orten (Perimeter Firewalls, Hotels oder öffentliche Hot Spots) noch blockiert wird. Des Weiteren bringt TCP, zusätzlich in Kombination mit TLS, einiges an Verwaltungs-Overhead mit sich, der die für zügiges surfen elementare Namensauflösung bremst.

Fortinet-2618.jpg

Wie konfiguriere ich DoT auf der FortiGate?

Um "DNS over TLS" zu aktivieren kann im WebGUI über das Menu: Network > DNS der entsprechende Status konfiguriert werden:

Fortinet-2617.jpg

  • disable DNS over TLS ist deaktiviert
  • enable DNS over TLS soll für DNS-Abfragen verwenden werden, sofern TLS verfügbar ist
  • force Nur TLS für DNS-Abfragen verwenden. Greift nicht auf unverschlüsselte DNS-Abfragen zurück, wenn TLS nicht verfügbar ist
Config cli.png Konfiguration über die CLI:
 
# config system dns
# set dns-over-tls [disable|enable|force]  
# set ssl-certificate "Fortinet_Factory"
# end

Wie kann ich auf einer FortiGate das DNS Cache löschen?

FortiOS 60.svg FortiOS 62.svg

Das DNS Cache einer FortiGate kann über CLI mit folgendem Befehl gelöscht werden:

diagnose test application dnsproxy 1

Die Option "1" steht für "Clear DNS cache". Unter "dnsproxy" stehen noch folgende weitere Optionen zu Verfügung:

Config cli.png Konfiguration über die CLI:
     
diagnsoe test application dnsproxy ?         
1.  Clear DNS cache
2.  Show stats
3.  Dump DNS setting
4.  Reload FQDN
5.  Requery FQDN
6.  Dump FQDN
7.  Dump DNS cache
8.  Dump DNS DB
9.  Reload DNS DB
10. Dump secure DNS policy/profile
11. Dump Botnet domain
12. Reload Secure DNS setting
13. Show Hostname cache
14. Clear Hostname cache
15. Show SDNS rating cache
16. Clear SDNS rating cache
17. DNS debug bit mask
99. Restart dnsproxy worker

DNS Database

Wie kann ich auf einer FortiGate einen Split-DNS Server einrichten?

FortiOS 60.svg FortiOS 62.svg

Ein Split-DNS Server ist ein DNS-Server der auf Anfrage einer bestimmten Source/Environement (internal und/oder external) die entsprechende Antwort liefert. Nehmen wir an wir hätten einen DMZ WebServer mit der IP Adresse 192.168.1.1 (FQDN www.mydomain.ch). Dieser FQDN ist auf dem external DNS Server (authoritativ) registriert. Wenn kein Split-DNS-Server konfiguriert ist und ein User im "internal LAN" diesen Server, im Browser versucht zu öffenen (www.mydomain.ch), so wird diese Anfrage an den DNS Server gesendet (konfigurierter Public-DNS-Server der FortiGate). Dieser Request wird vom DNS Server (sofern für www.mydomain.ch nicht authoritativ) an den Root-Server gesendet. Dies geschieht nur sofern die Anfrage nicht bereits schon im Cache des DNS-Servers vorhanden ist, welcher den autoritativen DNS-Server für www.mydomain.ch anfragen. Die Antwort, welche zurückgegeben wird ist die "public IP" (Virtual IP). Nun kann es zu Problemen kommen wenn der User sich im internen LAN befindet und vom DNS die Public IP (Virtual IP) erhält um www.mydomin.ch aufzurufen. Auch die DNS-Auflösung benötigt Zeit und verlangsamt den Zugriff zusätzlich. Um nun die zwei Welten (intern & extern) abzubilden kann ein Split-DNS-Server konfiguriert werden. Mit einer FortiGate kann dies mittels «DNS Database» umgesetzt werden. Standardmässig ist dieses Feature auf der FortiGate NICHT ERSICHTLICH und muss erst unter folgendem Abschnitt konfiguriert werden:

Config webgui.png Konfiguration über das WebGui:

Über das Menu :System -> Feature Visibility muss das Feature DNS Database eingeschaltet werden:

Fortinet-2619.jpg
Config cli.png Konfiguration über die CLI:
 
# config system settings
# set gui-dns-database enable
# end

Sobald die Funktion aktiviert ist, erscheint unter "Network" -> "DNS Servers" der entsprechende Punkt. In unserem Beispiel sind wir davon ausgegangen, dass unser DMZ Server folgende Infos betreffend DNS hat:

Konfigurations Parameter:

192.168.1.1

IP Adresse des WebServers im DMZ

www.mydomain.ch

FQDN konfiguriert und registriert auf dem Authoritativen DNS Server im Internet

212.59.153.115

Public IP "A" Record konfiguriert auf dem Authoritativen DNS Server im Internet

Nehmen wir an im internen LAN würde es ebenfalls die Domaine "mydomain.ch" geben. Ziel wäre es, dass wenn die User im "internen LAN" www.mydomain.ch im Browser eingeben der DNS Server anstelle der Public IP 212.59.153.115 die interne Adresse des WebServers im DMZ (192.168.1.1) zurückgibt, da die Anfrage vom "INTERNEN" LAN kommt und nicht von extern. Um so eine Konfiguration durchzuführen muss folgendes angepasst werden:

Config webgui.png Konfiguration über das WebGui:
Über das Menu Network -> DNS-Servers bei "DNS Database" auf "Create New" eine neue DNS-Zone für MyDomain.ch erfassen:
Fortinet-2620.jpg

Der zu konfigurierende DNS Server muss als MASTER Server konfiguriert werden, jedoch NICHT als Authoritativ!

Fortinet-2621.jpg

Der DNS Server ist konfiguriert - nun muss für die entsprechende Zone ein "A" Record für www.mydomain.ch erfasst werden!

Fortinet-2622.jpg
Fortinet-2623.jpg

Es ist zu empfehlen für den Host ebenfalls einen "PTR-Record" zu erstellen!

Fortinet-2624.jpg

Um die Einträge für einen DNS Server auf einer FortiGate aufzulisten resp. die DNS Database zu "dumpen" kann folgender Befehl verwendet werden:

 # diagnose test application dnsproxy 8
Config cli.png Konfiguration über die CLI:
 
# config system dns-database
# edit MYDOMAIN.CH
# set domain mydomain.ch
# set type master
# set view shadow
# set ttl 86400
# set primary-name dns
# set contact hostmaster@mydomain.ch
# set authoritative disable
# config dns-entry
# edit 1
# set hostname www.mydomain.ch
# set type A
# set ip 192.168.1.1
# set status enable
# end
# end

Diese Art der Konfiguration ist ein Hybrid d. h. KEIN echter Split-DNS Server, da der Authoritative DNS Server im Internet steht und nicht auf der FortiGate konfiguriert ist. Um jedoch zu gewährleisten, dass unser neu konfigurierte DNS Server NICHT authoritativ ist und das NICHT gefundene DNS Einträge extern abgefragt werden, muss die View auf shadow gesetzt werden!

Konfiguration DNS Dienst - Externes Interface

Um die Konfiguration abzuschliessen muss der externe Port (WAN) auf "Recursive" gesetzt werden, das heisst, dass der externe Port "Recursive" Anfragen absetzt:

Fortinet-2625.jpg
Fortinet-2626.jpg


Es kann noch ein DNS-Filter Profil direkt angehängt werden.

Konfiguration über die CLI:
 
# config system dns-server
# edit wan1
# set mode recursive
# set dnsfilter-profile "[Profile_Name]" -> "default"
# end
Konfiguration DNS Dienst - Internes Interface

Damit auf dem "internen" Interface der DNS Server - den wir erstellt haben - erreichbar ist, muss folgende Konfiguration durchgeführt werden::

Fortinet-2627.jpg
Config cli.png Konfiguration über die CLI:
 
# config system dns-server
# edit internal
# set mode recursive
# end

Nun fehlt nur noch der letzte Schritt -> User über DHCP der entsprechende DNS Server zugeweisen:

Konfiguration DHCP Server internal Interface:
  1. Über das Menu Network -> Interfaces das interne Interface wählen. (in unserem Fall internal)
  2. Rechtsklick und das internal Interface editieren
  3. Bei der Option DHCP Server den DNS Server auf same as Interface IP setzen.
  4. same as Interface IP bedeutet, dass die IP Adresse des internal Interfaces propagiert wird (192.168.1.99)
  5. mit OK wird die Konfiguration aktiv.
Fortinet-2628.jpg
Config cli.png Konfiguration über die CLI:
 
# config system dhcp server
# edit 1
# set dns-service local
# set default-gateway 192.168.1.99
# set netmask 255.255.255.0
# set interface "internal"
# config ip-range
# edit 1
# set start-ip 192.168.1.110
# set end-ip 192.168.1.210
# next
# end
# set timezone-option default
# next
# end

Die Konfiguration ist abgeschlossen. Wenn nun ein User im "Internal" LAN ein DNS Request absetzt (DNS Server dem User zugewiesen über DHCP 192.168.1.99) schaut die FortiGate im internen DNS Server nach und, sofern ein Eintrag gefunden wird diesen ausgeliefert. Ist kein entsprechender Eintrag vorhanden wird die Anfrage über das "WAN" Interface an die externen DNS Server weitergeleitet (definierte System DNS Server).

Wie kann ich auf der Fortigate für den DNS Server und eine bestimmten Zone ein "Zonen Transfer" aktivieren?

FortiOS 60.svg FortiOS 62.svg

Wenn auf einer FortiGate ein DNS Server konfiguriert wird, ob mit oder ohne Split-DNS Server, stellt sich die Frage ob die entsprechende Zone, zum Beispiel "mydomain.ch", automatisch ein Update erhält, wenn der "authoritative" DNS Server für "mydomain.ch" ein Update für einen Eintrag durchführt.

Config cli.png Konfiguration über die CLI:
# config system dns-database 
# edit [Name des entsprechenden Zonen Eintrages zB. "mydomain.ch"] 
# set allow-transfer [Gebe die IPv4 Adresse des "authoritativen" Servers an für "mydomain.ch"] 
# end

Wie auf einer FortiGate ein DNS Server eingerichtet wird kann dem folgenden Artikel entnommen werden:

FortiGate:FAQ#Wie_kann_ich_auf_einer_FortiGate_einen_Split-DNS_Server_einrichten.3F

Des Weiteren ist bei der Komunikation zwischen "authoritativen" und/oder "none-authoritativen" Servern darauf zu achten, mit welcher IP die Komunikation durchgeführt wird. Dies bedeutet, dass im Normalfall der "non-authoritative" Server (in unserem Beispiel die FortiGate) ebenfalls im "authoritativen" Server eingetragen wird. Kommuniziert die FortiGate nicht die gewünschte "Source IP Adresse" zum authoritativen Server, kann diese mit folgender Konfiguration entsprechend manuell gesetzt werden:

Config cli.png Konfiguration über die CLI:
# config system dns-database
# edit [Name des entsprechenden Zonen Eintrages zB. "mydomain.ch"] 
# set source-ip [IPv4 Adresse die als Source konfiguriert werden soll]
# end

Kann ich auf einer FortiGate eine bestimmte DNS Anfrage umschreiben / verändern?

FortiOS 60.svg FortiOS 62.svg

Wenn in einer bestimmten Umgebung eine DNS Anfrage anderst beantwortet werden soll als in einer anderen Umgebung, so spricht man von einem Split DNS Server. Dies bedeutet, dass dieser Anfragen von bestimmten Source Adressen anders beantwortet als von anderen Source Adressen. Dies wird dann genutzt wenn "interne" Informationen und "externe" kollidieren.

Beispiel:
Wenn ein User als Mail Server "mail.mydomain.ch" konfiguriert hat, so wird dieser Mail Server ausserhalb des "Office" als "Public IP" aufgelöst, z.B. "212.59.153.125". Benutzt der User den Mail Server im "Office", und im Office existiert "kein" interner DNS Server, so wird "mail.mydomain.ch" abermals als "Public IP" aufgelöst. Der Nachteil ist, obwohl sich der User und Mail Server im gleichen Segment befinden, wird der Traffic von "mail.mydomain.ch" zur Firewall gesendet, da dieser mit der Public IP aufgelöst wird. Der Grund ist Routing bedingt, d. h. "212.59.153.125" befindet sich nicht im internen Netz, also wird der Traffic über den default Gateway des Users zur Firewall gesendet. Die richtige Lösung für dieses Problem ist ein "Split DNS" Server. Dies bedeutet, dass wenn ein interner DNS Server vorhanden ist ein "Forwarder" für "mydomain.ch" konfiguriert wird und für "mail.mydomain.ch" die IP Adresse zBsp "192.168.1.100" konfiguriert, welche die interne Adresse von "mail.mydomian.ch" darstellt. Ist kein interner DNS Server vorhanden kann die "Split DNS" Server Funktion auf einer FortiGate benutzt werden. Weitere Informationen können nachstehendem Artikel entnommen werden:

FortiGate:FAQ#Wie_kann_ich_auf_einer_FortiGate_einen_Split-DNS_Server_einrichten.3F

Kann / möchte man aus irgendwelchen Gründen KEIN "Split DNS" Server konfigurieren, so kann die Funktion "dnstranslation" angewendet werden. Diese Funktion steht im Zusammenhang mit dem "Session-Helper". Um eine "dnstranslation" zu implementieren gehe folgendermassen vor:

Beispiel:
  • Mail Server FQDN: mail.mydomain.ch
  • Mail Server Public IP: 212.59.153.125
  • Mail Server Internal IP: 192.168.1.100
Schritt 1:

Kontrolliere als Erstes ob für DNS (UDP) ein DNS Session-Helper existiert:

 
# show system session-helper
................
edit 13
set name dns-udp
set port 53
set protocol 17
................ 

Ist der Session-Helper für DNS (UDP) nicht vorhanden, so konfiguriere diesen wie folgt:

        
# config system session-helper
# edit [Wähle einen Integer zB 20]
# set name dns-udp
# set port 53
# set protocol 17
# end

NOTE Weitere Informationen über die Option "protocol" können folgendem Artikel entnommen werden:

Allgemein:Assigned-Internet-Protocol-Numbers-RFC
Schritt 2:

Als nächstes konfigurieren wir die "dnstranslation" gemäss unserem Beispiel:

        
# config firewall dnstranslation
# edit [Gebe einen Integer an zB "1"]
# set dst [IPv4 Internal Adresse von mail.mydomain.ch "192.168.1.100"]
# set netmask [Netmask für mail.mydomain.ch "255.255.255.255"]
# set src [IPv4 Public Adresse von mail.mydomain.ch "212.59.153.125"]
# end
Erklärung:

Die Anfrage an den Public DNS Server, wie auch dessen Antwort werden wie folgt auf der FortiGate abgearbeitet:

Fortinet-2632.jpg
Fortinet-2633.jpg

NOTE wie hier in diesem Beispiel gezeigt, kann die Funktion anhand "nslookup" getestet, und somit verifiziert werden ob die "dnstranslation" korrekt funktioniert!

In diesem Sinne kann jede DNS Anfrage, welche über die FortiGate geht umgeschrieben werden. Natürlich ist diese Funktion nicht "nur" auf Public DNS Server beschränkt, sondern nur auf Port 53 DNS (UDP). Dies bedeutet, dass diese Funktion "dnstranslation" ebenfalls für temporäre Umleitungen im internen Bereich benutzt werden kann. Diese Funktion kann, oder sollte jedoch kein Split DNS Server ersetzen da die verschiedenen Einträge auf der FortiGate nicht ersichtlich sind.

DDNS

Wie kann ich DDNS debuggen?

Config cli.png Konfiguration über die CLI:
 
# diagnose debug application ddnscd -1
# diagnose debug enable

Um das Debug zu beenden:

 
# diagnose debug disable
# diagnose debug reset

Beispiel:

 
1592256317: Start to update FortiGuardDDNS (sekinfw.float-zone.com)
1592256317: next wait timeout 10 seconds
[111] __ssl_cert_ctx_load: Added cert /etc/cert/factory/root_Fortinet_Factory.cer, root ca Fortinet_CA, idx 0 (default)
[111] __ssl_cert_ctx_load: Added cert /etc/cert/factory/root_Fortinet_Factory_Backup.cer, root ca Fortinet_CA_Backup, idx 1 
[721] ssl_ctx_create_new_ex: SSL CTX is created
[748] ssl_new: SSL object is created
fgt_ddns_connect()-725: SSL connecting
[621] __ssl_info_callback: before SSL initialization
[621] __ssl_info_callback: SSLv3/TLS write client hello
__ddns_ssl_connect()-651: ssl_res=1 
[621] __ssl_info_callback: SSLv3/TLS write client hello
[621] __ssl_info_callback: SSLv3/TLS read server hello
[621] __ssl_info_callback: SSLv3/TLS read server certificate
[645] __ssl_info_callback: Current cert idx 0, SSL verion 'TLS 1.2'
[656] __ssl_info_callback: Got server cert chain, num 2
[664] __ssl_info_callback: Server root issuer /C=US/ST=California/L=Sunnyvale/O=Fortinet/OU=Certificate Authority/CN=support/emailAddress=support@fortinet.com
[667] __ssl_info_callback: Client root issuer /C=US/ST=California/L=Sunnyvale/O=Fortinet/OU=Certificate Authority/CN=fortinet-ca2/emailAddress=support@fortinet.com
[596] __ssl_switch_cert: Update with next cert, idx 1
[621] __ssl_info_callback: SSLv3/TLS read server key exchange
[621] __ssl_info_callback: SSLv3/TLS read server certificate request
[621] __ssl_info_callback: SSLv3/TLS read server done
[621] __ssl_info_callback: SSLv3/TLS write client certificate
[621] __ssl_info_callback: SSLv3/TLS write client key exchange
[621] __ssl_info_callback: SSLv3/TLS write certificate verify
[621] __ssl_info_callback: SSLv3/TLS write change cipher spec
[621] __ssl_info_callback: SSLv3/TLS write finished
__ddns_ssl_connect()-651: ssl_res=1 
[621] __ssl_info_callback: SSLv3/TLS write finished
[621] __ssl_info_callback: SSLv3/TLS read server session ticket
[621] __ssl_info_callback: SSLv3/TLS read change cipher spec
[621] __ssl_info_callback: SSLv3/TLS read finished
__ddns_ssl_connect()-651: ssl_res=0 
fgd_ddns_fcp_exchange()-860: Sending FCPC=Protocol=3.4|SerialNumber=FGT61FTK19000538|Firmware=FGT61F-FW-6.02-1066|Command=DDNSUpdate|DomainName=sekinfw.float-zone.com|Address=Automatic
fgt_unpack_fcpr()-567: Unpacked obj: Protocol=3.4|SerialNumber=DDNS-R710-VM-01|ResponseStatus=1|Command=DDNSUpdate|DomainName=sekinfw.float-zone.com|Address=198.18.254.15
fgd_ddns_fcp_exchange()-891: Recvd FCPR=Protocol=3.4|SerialNumber=DDNS-R710-VM-01|ResponseStatus=1|Command=DDNSUpdate|DomainName=sekinfw.float-zone.com|Address=198.18.254.15
[201] __ssl_data_ctx_free: Done
[1012] ssl_free: Done
[193] __ssl_cert_ctx_free: Done
[1022] ssl_ctx_free: Done
[1003] ssl_disconnect: Shutdown
fgd_ddns_extract_fcpr_rcode()-416: code=1
fgd_ddns_extract_fcpr_bound_ip()-446: Bound ip=198.18.254.15
1592256318: Succeed to update FortiGuardDDNS (sekinfw.float-zone.com ==> 198.18.254.15)

edit 5.09.2023 - 4Tinu

DHCP

Wie kann ich eine Vendor DHCP Option auf einem WAN Interface konfigurieren?

FortiOS 64.svg FortiOS 7x.svg

Wenn ich die FortiGate an eine VDSL Leitung von der Swisscom anschliesse, bekommt die FortiGate die IP Adressen automatisch per DHCP auf das WAN Interface zugewiesen. Damit dies korrekt funktioniert ist es notwendig, dass man die DHCP Client Option Vendor ID der Swisscom auf dem WAN Interface konfiguriert. Seit FortiOS 6.4.0 ist dies möglich:

Config cli.png Konfiguration über die CLI:
 
# config system interface
# edit "[INTERFACE]" --> Interface Name
# set mode dhcp
# config client-options
# edit 1
# set code [integer] --> DHCP Client Optionen 0-255 default Wert ist 0
# set type [hex | string | ip | fqdn] --> DHCP Client Option Typ default Wert ist hex
# set value [Wert für DHCP Client Option] --> Wert für DHCP Client Option
# end
# end

Für das Swisscom VDSL Setup mit DHCP Client Option 60 (Vendor ID) muss der String "100008,0001,fortigate" konfiguriert werden:

 
# config system interface
# edit "wan1"
# set mode dhcp
# config client-options
# edit 1
# set code 60
# set type string
# set value "100008,0001,fortigate"
# end
# end

Vielen Dank an Daniel von IQantum GmbH
edit 5.09.2023 - 4Tinu

ARP

Wie kann ich im FortiOS einer FortiGate "ARP"-Einträge auflisten, hinzufügen oder löschen?

FortiOS 5x.svg FortiOS 6x.svg FortiOS 7x.svg

Um eine Liste der ARP-Einträge auf der FortiGate zu erhalten nutzt man den get system arp Befehl auf der CLI:

Config cli.png Konfiguration über die CLI:
 
 # get system arp
Address           Age(min)   Hardware Addr      Interface
10.60.60.10       0          48:8d:36:61:84:28 internal
10.60.60.100      0          1c:1b:0d:6a:27:80 internal
10.60.60.11       0          00:19:fd:4c:97:9b internal
10.60.100.10      0          70:4c:a5:89:01:48 dmz
10.60.60.101      0          1c:1b:0d:68:ff:94 internal
10.60.61.100      1          38:ca:da:b5:a1:db luz0002-prod
10.60.61.103      0          64:5d:86:fd:97:79 luz0002-prod
192.168.50.2      0          7c:b7:33:3b:a1:18 wan1

Die Position "Age(min)" im hier gezeigtem "output" zeigt die Zeit in Minuten welche verstrichen ist seit kein Traffic mehr für den entsprechenden "ARP" Eintrag stattgefunden hat. Wenn für einen entsprechenden "ARP" Eintrag kein Traffic stattgefunden hat während einer vordefinierte Zeit, so wir dieser "ARP" Eintrag auf "age out" gesetzt.

Eine weitere Möglichkeit "ARP" Einträge mit entsprechenden Details aufzulisten ist folgender Befehl: diagnose ip arp list

Config cli.png Konfiguration über die CLI:
 
# diagnose ip arp list
index=22 ifname=internal 10.60.60.10 48:8d:36:61:84:28 state=00000002 use=27 confirm=740 update=740 ref=3
index=22 ifname=internal 10.60.60.100 1c:1b:0d:6a:27:80 state=00000002 use=373 confirm=2004 update=2004 ref=8
index=22 ifname=internal 10.60.60.11 00:19:fd:4c:97:9b state=00000008 use=1 confirm=2847 update=204 ref=4
index=7 ifname=dmz 10.60.100.10 70:4c:a5:89:01:48 state=00000002 use=2 confirm=671 update=671 ref=2
index=22 ifname=internal 10.60.60.101 1c:1b:0d:68:ff:94 state=00000002 use=457 confirm=87 update=87 ref=7
index=20 ifname=luz0002-prod 10.60.61.100 38:ca:da:b5:a1:db state=00000004 use=39878 confirm=39878 update=618 ref=1
index=20 ifname=luz0002-prod 10.60.61.103 64:5d:86:fd:97:79 state=00000002 use=2 confirm=2607 update=2607 ref=2
index=5 ifname=wan1 192.168.50.2 7c:b7:33:3b:a1:18 state=00000002 use=4 confirm=119 update=1416 ref=48

Infos wie man diesen Output interpretiert: Welche Inforamtionen bekomme ich aus der ARP Liste?

Wenn sehr viele "ARP" Einträge auf verschiedenen Interface's exisiteren, und man einen spezifischen Eintrag sucht sollte im Zusammenhang mit dem "diagnose" Kommando "grep" benutzt werden:

Config cli.png Konfiguration über die CLI:
 
# diagnose ip arp list | grep 10.60.60.100
index=22 ifname=internal 10.60.60.100 1c:1b:0d:6a:27:80 state=00000004 use=2968 confirm=6101 update=594 ref=9

Weitere Informationen dazu wie "grep" benutzt wird siehe nachfolgenden Artikel:

       FortiGate:FAQ#Kann_ich_in_der_CLI_meinen_Output_nach_bestimmten_W.C3.B6rter_filtern.3F

Anhand dieses Kommando "diagnose" lässt sich ein "ARP" Eintrag "temporär" hinzufügen oder löschen. Das hinzufügen eines "ARP" Eintrages anhand des "diagnose" Kommandos ist nicht "persistent". Dies bedeutet wenn ein Neustart der FortiGate ausgeführt wird geht diese Konfiguration verloren:

Config cli.png Konfiguration über die CLI:
 
'''Füge einen "ARP" Eintrag "temporär" hinzu'''
<pre>
# diagnose ip arp add [Interface Name zBsp "internal"] [IPv4 Adresse für den ARP Eintrag] [MAC Adresse für den ARP Eintrag XX:XX:XX:XX:XX:XX]

Lösche einen "ARP" Eintrag

 
# diagnose ip arp delete [Interface Name zB "internal"] [IPv4 Adresse für den ARP Eintrag]

Möchte man einen permanenten "ARP" Eintrag konfigurieren, welcher auch nach einem Neustart der FortiGate aktiv bleibt, muss diese Konfiguration anhand der "arp-table" durchgeführt werden. Dies wird wie folgt konfiguriert:

Config cli.png Konfiguration über die CLI:
 
# config system arp-table 
# edit [Gebe einen entsprechenden Integer an zBsp "1"]
# set interface [Name des Interfaces zBsp "wan1"]
# set ip [IPv4 Adresse für den ARP Eintrag]
# set mac [MAC Adresse für den ARP Eintrag zBsp für "wan1"]
# end

Um die entsprechende MAC Adresse eines Interfaces zu eruieren, können folgende Behehle ausgeführt werden:

Config cli.png Konfiguration über die CLI:
 
# diagnose hardware deviceinfo nic
The following NICs are available:
       dmz
       internal1
       internal2
       internal3
       internal4
       internal5
       internal6
       internal7
       wan1
       wan2

# diagnose hardware deviceinfo nic wan1
Driver Name     :Fortinet NP4Lite Driver
Version         :1.0.0
Admin           :up
Current_HWaddr   08:5b:0e:47:db:58
Permanent_HWaddr 08:5b:0e:47:db:58
Status          :up
Speed           :100
Duplex          :Half
Host Rx Pkts    :11371
Host Rx Bytes   :835610
Host Tx Pkts    :16174
Host Tx Bytes   :2043274
Rx Pkts         :11370
Rx Bytes        :994717
Tx Pkts         :16168
Tx Bytes        :1883038
rx_buffer_len   :2048
Hidden          :No
cmd_in_list     : 0
promiscuous     : 1
enabled 802.1x  : 0
authorized      : 0
mac bypass      : 0

Wenn die "ARP" Informationen auf den neusten Stand gebracht werden sollen so muss ein "flush" ausgeführt werden. Dies bedeutet: Alle "dynamischen" ARP Einträge werden gelöscht und neu durch "who-as" gelernt. Somit wird gewährleistet, dass nicht mehr verbundene Devices aus der "ARP" Tabelle gelöscht werden. Um ein "flush" durchzuführen gebe auf der CLI folgendes ein:

Config cli.png Konfiguration über die CLI:
 
# execute clear system arp table

Wenn dies durchgeführt wird kann über das "sniffer" Kommando das "neu lernen" der "ARP" Einträge mitverfolgt werden:

Config cli.png Konfiguration über die CLI:
 
# diagnose sniffer packet any arp
interfaces=[any]
filters=[arp]
0.682098 arp who-has 198.18.3.3 tell 198.18.3.1
0.682251 arp reply 198.18.3.3 is-at 8:5b:e:5d:f7:c

edit 5.09.2023 - 4Tinu

Was ist der Unterschied zwischen den Funktionen "system arp-table" und "proxy-arp?

FortiOS 5x.svg FortiOS 6x.svg FortiOS 7x.svg

Wenn im FortiOS auf dem externen Interface, zBsp "wan1" ein public IP Range konfiguriert wird, sei es über statische und/oder dynamischer Konfiguration, und zu diesem konfigurierten public IP Range eine neuer public IP Range dazu konfiguriert werden soll, hat man verschiedenen Möglichkeiten dies vorzunehmen. Eine Möglichkeit ist, den neuen public IP Range auf dem externen Interface als "Secondary Interface" zu konfigurieren. Dadurch wird der neue public IP Range auf dem Secondary Interface zur MAC Adresse des Interface hinzugefügt auf dem die "Secondary Interface" Konfiguration durchgeführt wird. Eine andere Möglichkeit ist ein VIP Objekt zu erstellen. Durch die Erstellung eines VIP Objekts wird durch die Option "arp-reply enable" auf Layer 4 ein entsprechender ARP Eintrag anhand der MAC Adresse durchgeführt, das Interface das im VIP Objekt konfiguriert wird. Da dieser ARP Eintrag auf Layer 4 durch "arp-reply enable" konfiguriert wird, ist dieser ARP Eintrag auf Layer 3 anhand des Kommandos "get system arp" nicht ersichtlich. Wiederum eine andere Möglichkeit ist ein statischer ARP Eintrag mittels "system arp-table" zu erstellen. Alle diese Möglichkeiten haben das Ziel anhand der MAC Adressen den zusätzlichen public IP Range auf das entsprechende Interface zu binden. Wenn jedoch der neue public IP Range nicht auf dem externen Interface verwendet wird, sondern zBsp lediglich auf dem "dmz" Interface für eine Public IP Adressierung der Server, muss dem externen Interface mitgeteilt werden, dass dieses "dmz" Interface für diesen neuen IP Range zuständig ist. Dies da dieser public IP Range auf das externe Interface, zBsp "wan1" geroutet wird. Wird dies mit einem statischen ARP Eintrag in der "system arp-table" auf dem externen Interface durchgeführt, wird der Traffic nicht auf das "dmz" Interface weitergeleitet da das FortiOS davon ausgeht, dass sich der neue public IP Range auf dem externen Interface, zBsp "wan1" befindet. In so einem Fall wird ein "system proxy-arp" erstellt dh., es wird dem FortiOS durch einen "system proxy-arp" Konfiguration mitgeteilt, dass die Zuständigkeit einer oder mehrer public IP/s sich nicht mehr auf dem externe Interface befindet, wie zBsp "wan1" sondern auf dem "dmz" Interface. Dies bedeutet: Das FortiOS nimmt den/die neue/n public IP Range/s auf dem externen Interface an und leitet diesen an das Interface gemäss der Konfiguration "system proxy-arp" weiter. Diese Art der Implementierung wird auch "IP Adresse zu MAC Adress Translation" genannt! Um einen "system proxy-arp" zu konfigurieren muss über CLI folgendes durchgeführt werden:

Config cli.png Konfiguration über die CLI:
 
# config system proxy-arp
# set interface [Namen des Externes Interface zB "wan1"]
# set ip [Public IPv4 Adresse des Servers im DMZ]
# set end-ip [Public IPv4 End Adresse des Servers im DMZ]
# end

Im FortiOS kann anhand der Option "end-ip" die End Adresse des Public IP Ranges definiert werden. Diese steht im Zusammenhang mit der Option "ip" dh., es wird nur die Iption "ip" benutzt und so gilt nur diese Konfiguration einer IPv4 Adresse. Wird "end-ip" definiert gilt die Option "ip" als Start Adresse des IPv4 Adress Definition.


edit 5.09.2023 - 4Tinu

Welche Informationen bekomme ich aus der ARP Liste?

FortiOS 56.svg FortiOS 6x.svg FortiOS 70.svg

Bei der Fehlerbehebung von bestimmten Verbindungsproblemen ist es erforderlich zu schauen was im Layer 2 so passiert. Mit dem Befehl diagnose ip arp listkann die im Cache befindliche ARP Liste auf der FortiGate angezeigt werden. In dieser Liste können diverse Details entnommen werden.

Config cli.png Konfiguration über die CLI:
 
 # diagnose ip arp list
 
 1.) index=9 ifname=port1 198.18.0.162 04:d5:90:36:e6:62 state=00000002 use=25 confirm=1552 update=1552 ref=10
 2.) index=37 ifname=vdom-wan1 192.168.1. 8c:59:c3:cb:14:2b state=00000004 use=6473 confirm=12473 update=4584 ref=0
 3.) index=9 ifname=port1 198.18.0.47 state=00000000 use=31279 confirm=37279 update=31279 ref=1
 4.) index=9 ifname=port1 198.18.0.13 00:50:56:b6:08:b9 state=00000008 use=25 confirm=2072 update=181 ref=27
 5.) index=4 ifname=mgmt2 169.254.0.2 90:6c:ac:17:a2:82 state=00000080 use=623303789 confirm=623303770 update=623303770 ref=0
 6.) index=19 ifname=ssl.root 0.0.0.0 state=00000040 use=1047885 confirm=1053885 update=1047885 ref=2

1.) ARP Anfrage ist empfangen worden:

index=9 ifname=port1 198.18.0.162 04:d5:90:36:e6:62 state=00000002 use=25 confirm=1552 update=1552 ref=10

2.) ARP Antwort wird nicht innerhalb der erwartenden Zeit empfangen:

index=37 ifname=vdom-wan1 192.168.1. 8c:59:c3:cb:14:2b state=00000004 use=6473 confirm=12473 update=4584 ref=0

3.) Pseudozustand, der verwendet wird, während ein ARP-Eintrag anfänglich erstellt wird oder kurz bevor er entfernt wird:

index=9 ifname=port1 198.18.0.47 state=00000000 use=31279 confirm=37279 update=31279 ref=1

4.) Verzögerte ARP Anfrage:

index=9 ifname=port1 198.18.0.13 00:50:56:b6:08:b9 state=00000008 use=25 confirm=2072 update=181 ref=27

5.) Statisch konfigurierter ARP-Eintrag:

index=4 ifname=mgmt2 169.254.0.2 90:6c:ac:17:a2:82 state=00000080 use=623303789 confirm=623303770 update=623303770 ref=0

6.) Device unterstützt kein ARP hier ssl-vpn Interface:

index=19 ifname=ssl.root 0.0.0.0 state=00000040 use=1047885 confirm=1053885 update=1047885 ref=2

In der folgenden Tabelle sehen wir die verschiebenen Staten der ARP Einträge. Damit man sie besser oben zuordnen kann, sind sie verschieden farbig markiert.

Parameter Tabelle diagnose ip arp list

Parameter

Bedeutung

index

Index des entsprechenden Interfaces auf der FortiGate.

ifname

Name des Interfaces

X.X.X.X

Dies ist die IP-Adresse des Nachbardevices, welches an das entsprechende Interface angeschlossen ist.

00:00:00:00:00:00

Dies ist die MAC-Adresse, die der obigen IP-Adresse entspricht.

state

state Parameter Liste:

Status Name

Wert

Bedeutung
NONE 0x00 Pseudozustand, der verwendet wird, während ein ARP-Eintrag anfänglich erstellt wird oder kurz bevor er entfernt wird
INCOMPLETE 0x01 Erste ARP-Anfrage gesendet
REACHABLE 0x02 ARP Anfrage ist empfangen worden
STALE 0x04 ARP Antwort wird nicht innerhalb der erwartenden Zeit empfangen
DELAY 0x08 Verzögerte ARP Anfrage
PROBE 0x10 Aktives Senden von ARP Anfragen, um zu versuchen, die Adresse aufzulösen
FAILED 0x20 Es ist nicht gelungen, ARP innerhalb der maximal konfigurierten Anzahl von Probe aufzulösen
NOARP 0x40 Device unterstützt kein ARP z.B. IPsec Interface
PERMANENT 0x80 Statisch konfigurierter ARP-Eintrag

use

ist die Anzahl der Sekunden seit dem letzten Mal, als der ARP-Eintrag verwendet wurde, um den MAC an ein Egress-Paket anzuhängen.

confirm

ist die Anzahl der Sekunden, seit der ARP-Eintrag in den Zustand CONNECTED übergegangen ist, was im Allgemeinen bedeutet, dass er nun REACHABLE ist (dies gilt jedoch auch für PERMANENT- und NOARP-Einträge).

update

Ist die Anzahl der Sekunden seit der letzten Aktualisierung des Eintrags. Allgemeinen bedeutet dies den Zeitpunkt, an dem die letzte ARP-Antwort empfangen wurde.

ref

Gibt an, wie oft der ARP-Eintrag zur Weiterleitung eines eingehendem Pakets verwendet wurde.


edit 5.09.2023 - 4Tinu

Routing

Wie funktioniert das Routing auf einer FortiGate?

FortiOS 5x.svg FortiOS 6x.svg FortiOS 7x.svg

Beim Routing entscheidet die FortiGate, welche im NAT-Modus betrieben wird, wohin die Pakete gesendet werden sollen, die empfangen oder durch die FortiGate selber erzeugt werden.

Alle Netzwerkgeräte, die ein Routing durchführen, besitzen eine Routingtabelle. Eine Routingtabelle enthält eine Reihe von Regeln. Jede Regel gibt den nächsten Hop an, der das endgültige Ziel des Pakets sein kann, oder auch an einen nächsten Hop geht. Jeder Routing-Hop im gerouteten Pfad erfordert eine Routingtabellensuche (Routing Lookup), um das Paket weiterzuleiten, bis dies das endgültige Ziel erreichen kann.

Beim Routing von Paketen findet die FortiGate zunächst eine passende Route in ihrer Routing-Liste, basierend auf der Zieladresse des Pakets. Bei dieser Übereinstimmung wertet die FortiGate die gesamte Routingtabelle aus, um die spezifischste Übereinstimmung zu finden, bevor eine Route ausgewählt wird. Wenn die FortiGate mehrere Übereinstimmungen findet, verwendet sie verschiedene Routenattribute, um die beste Route zu ermitteln.

Die richtige Routing-Konfiguration ist wichtig. Wenn Routen falsch konfiguriert sind, erreichen die Pakete ihr Ziel nicht und gehen verloren.

Standardmässig sind viele Aspekte auf FortiGate "stateful". So entscheidet die FortiGate viele Dinge zu Beginn einer Session, also dann, wenn sie das erste Paket erhält.

Für jede Session führt die FortiGate zwei Routing-Lookups durch:

  • Für das erste vom Absender gesendete Paket
  • Für das erste Antwortpaket, das vom Responder kommt

Nach diesen beiden Lookups schreibt die FortiGate die Routinginformationen in ihre Session-Tabelle. Alle folgenden Pakete werden gemäss Session-Tabelle, und nicht nach der Routingtabelle weitergeleitet. So werden alle Pakete, welche zur gleichen Session gehören dem gleichen Pfad zugewiesen, auch nach einer Änderung der statischen Routen. Es gibt jedoch eine Ausnahme dieser Regel. Wenn es eine Änderung in der Routingtabelle gibt, entfernt die FortiGate die Routeninformationen für die Session Tabelle, und dann führt sie eine zusätzliche Routingtabellen des Lookups durch, um diese Informationen wiederherzustellen.

Eine Methode der manuell konfigurierten Routen ist die statische Route. Wenn man eine statische Route konfiguriert, wird der FortiGate mitgeteilt: "Wenn du ein Paket siehst, dessen Ziel innerhalb eines bestimmten Bereichs liegt, sende dies über ein bestimmtes Netzwerkinterface an einen bestimmten Router". Man kann auch die Distanz und die Priorität so konfigurieren, dass die FortiGate die beste Route zu jedem Ziel ermitteln kann, welche mehreren Routen entspricht.

In einfachen Heimnetzwerken ruft beispielsweise DHCP automatisch eine statische Route ab und konfiguriert diese selbstständig. Das Modem des ISPs sendet dann den gesamten ausgehenden Datenverkehr über dessen Internet-Router, welcher die Pakete an ihr Ziel weiterleitet. Dies wird typischerweise als Standard-Route bezeichnet, da der gesamte Traffic, der nicht mit anderen Routen übereinstimmt, standardmässig über diese Route geleitet wird. Hier ein Beispiel einer Standardroute:

Fortinet-2572.jpg

Das Ziel-Subnetzwert von 0.0.0.0.0.0/0.0.0.0.0 passt zu allen Adressen innerhalb eines Subnetzes. Da die meisten FortiGates als Perimeter-Gerät des Netzwerkes fungieren, verfügen über mindestens eine dieser Standardrouten. Damit wird sichergestellt, dass der Internettraffic an den ISP weitergeleitet wird.

Subnetze welche auf der FortiGate über eine direkt Layer 2 Konnektivität verfügen benötigen keine statische Route.

Jede Route in einer Routingtabelle hat folgende Attribute:

  • Network
  • Gateway IP
  • Interfaces
  • Distance
  • Metric
  • Priority

Fortinet-2573.jpg

Distanz:
Die Distanz, resp. die administrative Distanz ist eine Zahl, die von Routern verwendet wird, um zu bestimmen, welche Route für ein bestimmtes Ziel bevorzugt wird. Wenn es zwei Routen zum gleichen Ziel gibt, wird jene mit der geringeren Distanz als besser angesehen und für die Routenführung verwendet. Die Routen mit grösseren Entfernungen sind inaktiv und werden nicht in die Routingtabelle aufgenommen.

Fortinet-2574.jpg

Standardmässig haben Routen, die über das RIP-Protokoll gelernt wurden, einen höheren Distanzwert als Routen, die über das OSPF-Protokoll gelernt wurden. Dabei gilt das OSPF-Protokoll als genauer als das RIP.

Die folgenden Werte sind die Distanzen auf einer FortiGate:
0 - direkt angeschlossen
5 - DHCP-Gateway
20 - externe BGP (EBGP) Routen
200 - interne BGP (IBGP) Routen
110 - OSPF-Routen
120 - RIP-Routen
10 - statische Routen

Metric:
Das Metric Attribut wird verwendet, um die beste Route zu einem Ziel zu bestimmen, wenn es um Routen geht, welche durch ein dynamisches Routing-Protokoll gelernt wurden. Wenn zwei Routen den gleichen Abstand haben, wird der metrische Wert verwendet um das Band zu brechen. Für das Routing wird die Route mit der niedrigsten Metric gewählt.

Wie der Metric-Wert gemessen wird, hängt vom Routing-Protokoll ab. Zum Beispiel verwendet RIP die Hop Count, d.h. die Anzahl der Router, die das Paket durchlaufen muss, um das Ziel zu erreichen. OSPF verwendet Kosten, die sich danach richten, wie viel Bandbreite eine Verbindung zu Verfügung hat.

Fortinet-2575.jpg

Priorität:
Wenn mehrere statische Routen den gleichen Distanzwert haben, sind beide in der Routingtabelle aktiv. Welche Route wird also verwendet, um passende Pakete zu routen? In diesem Szenario verwendet die FortiGate den Prioritätswert als Tiebreaker, um die beste Route zu ermitteln. Routen mit geringerer Priorität werden stets bevorzugt.

Das Prioritätsattribut gilt nur für statische Routen und wird unter den erweiterten Optionen auf der Benutzeroberfläche konfiguriert. Standardmässig haben alle statischen Routen eine Priorität von 0.

Fortinet-2576.jpg

Was bedeutet der Begriff "ECMP" beim Routing?

FortiOS 5x.svg FortiOS 6x.svg FortiOS 7x.svg

Im Normallfall wird die Beste Route anhand von Routenattributen ermittelt, welche durch das Routing zu Verfügung gestellt werden. (Metric, Distanz, Priorität ..) Was passiert also, wenn zwei oder mehrere Routen zur gleichen Destination die gleichen Werte für alle Attribute besitzen? Wenn mehrere Routen zum gleichen Ziel die gleiche Distanz, Metric und Priorität haben, gelten sie alle als der beste Kandidat. Wenn die Routen statisch, OSPF oder BGP sind, gleicht die FortiGate die Last des Traffics über alle Routen aus. Dies wird als Equal Cost Multi-Path (ECMP) bezeichnet.

ECMP kann den Ausgleichstraffic mit einer dieser vier Methoden behandeln:

  • Source IP (default)
  • Source-Destination IP
  • Weighted
  • Usage (spillover)

Source IP Based:

Session können je nach Source IP Adresse, Source und Destination IP Adressen Routen oder Gewichtung des Interfaces, oder Interface Sitzungen können je nach Quell-IP-Adresse, Quell- und Ziel-IP-Adresse, Routen- oder Interfacegewicht oder Interfacevolumenschwellwert auf gleiche Routen verteilt werden.

Source-Destination IP Based:

Die Source-Destination-IP-Methode funktioniert ähnlich, berücksichtigt aber auch die Destination IP. Es wird also erwartet, dass die Session von einer bestimmten Source zu einer bestimmten Destination den gleichen Pfad verwenden.

Weight Based: (Gewichtung)

Wenn die ECMP Methode auf weighted konfiguriert ist, verteilt die FortiGate die Sessions mit verschiedenen Destination IPs, indem sie einen Zufallswert erzeugt um die zu wählende Route zu bestimmen. Die Wahrscheinlichkeit eine Route über eine andere auszuwählen basiert auf dem Weight Wert jeder Route oder Interface. Es ist wahrscheinlicher, dass höhere Weights gewählt werden.

Spillover (Usage Based)

Es gibt eine zusätzliche Methode namens usage-based (oder spillover). Beim nutzungsabhängigen Lastausgleich verwendet die FortiGate eine primäre Route, bis ein Schwellenwert des Verkehrsaufkommens erreicht ist; danach verwendet es die nächste verfügbare Route.


Achtung.png

Wenn eine der ECMP-Routen ausfällt, und aus der Routingtabelle entfernt wird, wird der Traffic über die restlichen Routen geleitet.
Es ist keine spezielle Konfiguration für die Ausfallsicherung der Route erforderlich.

Die FortiGate verwendet source-ip-based als Standard-ECMP-Methode. In der CLI kann die gewünschte Methode konfiguriert werden:

Source IP Based:

# config system settings
# set v4-ecmp-mode source-ip-based 
# end

Source-Destination IP Based:

# config system settings
# set v4-ecmp-mode source-dest-ip-based 
# end

Weight Based: (Gewichtung)

# config system settings
# set v4-ecmp-mode weight-based
# end

Auf den Interfaces muss die Gewichtung konfiguriert werden:

# config system interface
# edit [INTERFACE_NAME]
# set weight [Wert definieren zwischen 0 und 255]
# end

Gewichtung muss pro Route definiert werden:

# config router static
# edit [ROUTEN-ID]
# set weight [Wert definieren zwischen 0 und 255]
# end

Spillover (Usage Based)

# config system settings
# set v4-ecmp-mode usage-based
# end

Für Spillover-ECMP müssen die Spillover-Schwellenwerte per Interface konfiguriert werden:

# config system interface
# edit [INTERFACE_NAME]
# set spillover-threshold [Wert zwischen 0 und 16776000 definieren]

BEISPIEL:
In diesem Szenario hat die FortiGate zwei gleichwertige Kandidatenrouten für das Subnetz 192.168.4.0/24 mit Port1 bzw. Port2. Unter Verwendung der standardmässig Sourcebasierten ECMP-Methode kann die FortiGate einen der beiden Wege nutzen, um Datentraffic für das Subnetz 192.168.4.0/24 von Benutzer A und Benutzer B zu liefern. Wenn Port1 die Verbindung verliert, verwendet die FortiGate automatisch Port2, um den gesamten Datentraffic für das Subnetz 192.168.4.0/24 zu liefern.

ECMP ermöglicht es uns, mehrere Links für dasselbe Ziel zu verwalten und ein integriertes Failover bereitzustellen. Dies kann für alle Netzwerkressourcen bereitgestellt werden welche eine hohe Bandbreitenanforderungen haben und unternehmenskritisch sind. Die Verwendung von ECMP für diese Ressourcen ermöglicht es uns, die verfügbare Bandbreite mehrerer Links zu aggregieren und den Lastausgleichstraffic über diese Links zu verteilen.

Wenn wir ECMP verwenden, müssen wir über die richtigen Firewallregeln verfügen, damit der Datentraffic alle am ECMP beteiligten Interfaces verlassen kann. Während wir ECMP verwenden können, um mehrere Internet-(WAN)-Verbindungen auf der FortiGate zu verwalten, kann es effizienter sein, die softwaredefinierte WAN-Funktion (SD-WAN) zu verwenden, um dies zu erreichen. Wir können ECMP weiterhin für interne Ressourcen verwenden.

Fortinet-2577.jpg

# get router info routing-table all

S       192.168.4.0/24 [10/0] via 192.168.1.254, port1,   [5/0]
        192.168.4.0/24 [10/0] via 192.168.2.254, port1,   [5/0]
C       192.168.1.0/24 is directly connected, port1
C       192.168.2.0/24 is directly connected, port2
C       192.168.3.0/24 is directly connected, port3

Wie funktioniert das "Reverse Path Forwarding" auf der FortiGate (Antispoofing)?

FortiOS 5x.svg FortiOS 6x.svg FortiOS 7x.svg

Pakete werden manchmal aus Routing- oder/und Sicherheitsgründen gelöscht. Reverse Path Forwarding (RPF) ist ein Mechanismus der FortiGate welcher das Netzwerk vor IP-Spoofing-Angriffen schützt. Dabei wird überprüft, ob es eine Route zurück zur Destination des Paketes gibt. Diese Prüfung wird auf dem ersten Paket einer neuen Session durchgeführt. Ebenso wird diese Prüfung nach einer Routenänderung auf dem nächsten Paket in der ursprünglichen Richtung ausgeführt.

Es gibt zwei RPF-Methoden:

  • Loose
  • Strict

Veranschauungsbeispiel:

Beschreibung

In diesem Szenario wird der eingehende Internetverkehr, welcher bei wan1 ankommt akzeptiert, da die Standardroute eine gültige Route zurück zur Source ist.

Es gibt jedoch zwei Interfaces welche eingehenden Datentraffic nicht weiterleiten: port1 und wan2. Port1 wird den Datentraffic nicht weiterleiten, da das Subnetz für Benutzer C 192.168.4.0/24 ist. Es gibt keine aktive Route für dieses Subnetz via Port1. So wird der Datentraffic von 192.168.4.0.0/24 zu Port1 eingestellt, weil dieser bei der RPF-Prüfung fehlgeschlagen ist.

Das andere Interface, welches den Datentraffic nicht weiterleitet, ist wan2. Während wan2 physisch mit dem Internet verbunden ist, sind die einzigen IP-Adressen, welche als Sourcen oder Destinationen für wan2 gelten jene im Subnetz 198.18.2.0/24. So wird der eingehende Datentraffic einer anderen Source nicht durch die RPF-Prüfung geleitet und umgehend gelöscht.

# get router info routing-table all

S*      0.0.0.0/0        [10/0] via 198.18.1.254, wan1
C       198.18.1.0/24    is directly connected, wan1
C       198.18.2.0/24    is directly connected, wan2
C       192.168.3.0/24   is directly connected, port1
Diagramm
Fortinet-2578.jpg

So fixen wir das Problem:

Beschreibung

Das erste Problem wird behoben indem eine statische Route zu 10.0.4.0.0/24 über Port1 hinzugefügt wird. Wenn die FortiGate nun die RPF-Prüfung für die Pakete von Benutzer C ausführt, findet diese eine aktive Route zu diesem Subnetz über Port1 und das Paket wird akzeptiert.

Das zweite Problem wird ebenfalls gelöst indem eine statische Route hinzugefügt wird. In diesem Fall ist es eine Standardroute für wan2. Diese zweite Standardroute muss die gleiche Distanz aufweisen wie jende für wan1. Damit wird sichergestellt, dass beide Routen in der Routingtabelle aktiv sind. Beide können unterschiedliche Prioritäten haben, aber sie müssen die gleiche A haben, um aktiv zu sein.

In diesem Beispiel wurden zwei Routen mit gleicher Distanz, aber unterschiedlicher Priorität konfiguriert. Eine Route ist also die bessere (jene mit der niedrigsten Priorität), aber beide sind aktiv. Die beste Route wird für den ausgehenden Traffic verwendet, aber beide können eingehende Traffic empfangen, ohne die RPF-Prüfung zu durchlaufen.

# get router info routing-table all

S*      0.0.0.0/0        [10/0] via 198.18.1.254, wan1
                         [10/0] via 198.18.2.254, wan2, [5/0]
S       192.168.4.0/24   [10/0] via 10.0.3.254, port1	
C       198.18.1.0/24    is directly connected, wan1
C       198.18.2.0/24    is directly connected, wan2
C       192.168.3.0/24   is directly connected, port1
Diagramm
Fortinet-2579.jpg

Das RPF kann entweder stricte oder loose durchgesetzt werden.

Im loose Modus wird das Paket akzeptiert solange ein aktiver Weg zur Source-IP über das eingehende Interface besteht. Es muss nicht die beste, sondern lediglich eine aktive Route sein.

Im Strict Modus überprüft die FortiGate ob der beste Weg zur Source-IP-Adresse über das eingehende Interface führt. Die Route muss entgegen dem "loose Modus" nicht nur aktiv sein, sondern auch die beste.

Die RPF-Prüfung kann auf zwei Arten deaktiviert werden. Wenn man das asymmetrische Routing aktiviert, wird die RPF-Prüfung systemweit deaktiviert. Dies reduziert jedoch die Sicherheit des gesamten Netzwerks erheblich. Funktionen wie Antivirus und IPS werden wirkungslos. Wenn man also die RPF-Prüfung deaktivieren muss, kann man dies auf der Interface-Ebene mit folgenden Befehlen vornehmen:

Loose RPF

Defaultmässig ist die FortiGate im Loose Mode
Per Interfaces:

# config system interface
# edit [INTERFACE_NAME]
# set src-check disable
# end

Global in den System Settings:

# config system setting
# set strict-src-check disable 
# end
Strict RPF

Per Interfaces:

# config system interface
# edit [INTERFACE_NAME]
# set src-check enable
# end

Global in den System Settings:

# config system setting
# set strict-src-check enable 
# end


Beispiel 1

In diesem Beispiel sendet der Host 10.0.4.1 ein SYN-Paket an 10.0.1.2, spooft aber eine Quell-IP von 10.0.1.1. Dadurch scheint das Paket aus dem internen Netzwerk hinter Port1 initiiert zu werden. Lose RPF erlaubt diesen Traffic, da die aktive Route auf wan1 eine Standardroute (0.0.0.0.0.0/0) ist.

Anschlissßend würde 10.0.1.2 (Benutzer B) das SYN/ACK-Paket an das reale Gerät mit der IP-Adresse 10.0.1.1.1 (Benutzer A) senden.

Da 10.0.1.1.1 (Benutzer A) keine SYN/ACK-Pakete erwartet (weil dieser zuvor kein SYN-Paket an 10.0.1.2 gesendet hat), antwortet er mit einem RST-Paket (Reset).

Fortinet-2580.jpg
Beispiel 2

In diesem Beispiel sendet der Host 10.0.4.1 ein SYN-Paket an 10.0.1.2, spooft aber eine Source-IP von 10.0.1.1. Dadurch scheint das Paket aus dem internen Netzwerk hinter Port1 initiiert zu werden. Loose RPF erlaubt diesen Traffic, da die aktive Route auf wan1 eine Standardroute (0.0.0.0.0.0/0) ist.
Anschlissßend würde 10.0.1.2 (Benutzer B) das SYN/ACK-Paket an das reale Gerät mit der IP-Adresse 10.0.1.1.1 (Benutzer A) senden.
Da 10.0.1.1.1 (Benutzer A) keine SYN/ACK-Pakete erwartet (weil er zuvor kein SYN-Paket an 10.0.1.2 gesendet hat), antwortet er mit einem RST-Paket (Reset).

Fortinet-2581.jpg

Was passiert aber im gleichen Szenario, wenn Strict RPF verwendet wird?
Das stricte RPF löscht das SYN-Paket. Auch wenn die wan1-Standardroute eine aktive Route für das Subnetz 10.0.4.0/24 ist, ist sie nicht die beste Route. Die beste Route wäre über das Interface port1, da diese einen niedrigeren Distanzwert hat.

Achtung.png

Beachte, dass die Default Distanz für direkt verbundene Routen 0 ist, was niedriger ist als die Distanz der Standardroute von 10.

Obwohl das stricte RPF sicherer ist, kann dies bei Verwendung des dynamischen Routings zu Fehlalarmen führen. Dynamische Routen können sich schnell ändern, und sie können die FortiGate veranlassen, legitimierte Pakete jedes Mal zu verwerfen sobald sich die bevorzugte Route ändert. Im Allgemeinen wird empfohlen loose RPF in Kombination mit Firewallregeln zu verwenden. So kann gefälschter Datenverkehr blockiert werden anstelle strict RPF zu diesem Zweckzu verwenden.

Wie wird auf einer FortiGate das Routing abgearbeitet?

FortiOS 5x.svg FortiOS 6x.svg FortiOS 70.svg

Dieser Artikel beschreibt wie die FortiGate das Routing abarbeitet und selektiert was heisst, welches Routing zuerst greift (wie zum Beispiel Cache, Policy Routen usw.). Wenn verschiedene Routings verwendet werden zum Beispiel Policy Route (Layer 4), Distanz (Layer 3) ist es wichtig zu wissen, wie diese Routings abgearbeitet werden. In der folgenden Liste kann entnommen werden, wie die FortiGate das Routing generell abarbeitet (Abarbeitung von oben nach unten)

  • 0) Routing Cache
  • 1) Policy Route
  • 2) Longest Match
  • 3) Distance
  • 4) Priority
  • 5) Metric (Dynamisches Routing)
  • 6) ECMP (Equal Cost Multiple Path)
Achtung.png

Ein FortiOS resp. eine FortiGate im "Transparent Mode" aggiert wie eine Bridge und leitet den Traffic im Layer-2 weiter. Dies bedeutet dass Ethernet-Packetebasierend deren "MAC Adressen" abgearbeitet werden und "nicht" anhand deren IP's.
Es findet deshalb kein "Routing" statt und Routen sind, ausser für das Mgmt. Interface der "Transparent" Firewall, resp. vdom nicht konfigurierbar!

Wie der "cache" eines Routing eingesehen und auf den neusten Stand gebracht werden kann kann nachfolgendem Artikel entnommen werden: Routing Cache anzeigen

Nachfolgendes Diagramm zeigt wie ein "lookup" in Zusammenhang mit den verschiedenen "Routing Tabellen" durchgeführt wird:

Config webgui.png Routing Flow Diagramm:

Dieses Diagramm zeigt auf dass verschiede "Routing Tabellen" existieren welche für die verschieden eingesetzten Routing Technologien wie Policy Route, Cache, Statische Route usw. entscheidend sind. Die Informationen dieser "Routing Tabellen" spielen somit eine entscheidende Rolle ob ein Routing selektiert wird oder nicht!

Diagramm:

Fortinet-1604.jpg

Wie kann ich auf einer FortiGate die Routing-Tabelle ansehen?

FortiOS 5x.svg FortiOS 6x.svg FortiOS 7x.svg

Wenn ich ab dem FortiOS 5.4 die Routing-Tabelle auf einer FortiGate ansehen möchte, so muss folgendes beachtet werden. Es besteht die Möglichkeit die aktiven Routen in der Routing-Tabelle anzuschauen (nur Routen die momentan aktiv sind). Es gibt auch ein Befehl, mit welchem ich alle Routen sehen kann, welche in der Routing-Tabelle eingetragen sind (aktive, und auch inaktive Routen).

Über das WebGui kann ich nur die aktive Routing-Tabelle anschauen:

Config webgui.png Konfiguration über das WebGui:

Routing-Tabelle im WebGui für FortiOS Versionen 5.6/6.0/6.2:
FortiOS 56.svg FortiOS 60.svg FortiOS 62.svg

Über das WebGui kann ich nur die aktive Routing-Tabelle anschauen:
Navigiere über Monitor -> Routing Monitor

Fortinet-2571.jpg

Routing-Tabelle im WebGui ab FortiOS Version 6.4:

FortiOS 64.svg FortiOS 7x.svg

Menu Dashboard -> Network und dann beim Widget Static & Dynamic Routing auf die Grafik klicken

Fortinet-2720.jpg

Nun sieht man die Routing-Tabelle im Diagramm und in aufgelisteter Form.

Fortinet-2721.jpg

In der CLI ist die FortiOS Version nicht relevant, da ist der Syntax bei allen gleich:

Config cli.png Konfiguration über die CLI:

Um auf der CLI nur die "aktiven" Routing-Einträge aufzulisten kann folgender Befehl ausgeführt werden:

 
# get router info routing-table all 

Routing table for VRF=0
Codes: K - kernel, C - connected, S - static, R - RIP, B - BGP
       O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
       * - candidate default

S*      0.0.0.0/0 [10/0] via 217.193.240.161, vdom-wan1
S       172.16.10.0/24 [10/0] via 198.18.0.138, sg0e0-hp0
S       172.16.20.0/24 [10/0] via 198.18.0.138, sg0e0-hp0
S       172.16.30.0/24 [10/0] via 198.18.0.138, sg0e0-hp0
S       172.16.40.0/24 [10/0] via 198.18.0.138, sg0e0-hp0
S       172.16.99.0/24 [10/0] via 198.18.0.138, sg0e0-hp0
C       198.18.0.0/27 is directly connected, port1
S       198.18.0.40/29 [10/0] via 198.18.0.142, sg0e0-dmz0
S       198.18.0.48/29 [10/0] via 198.18.0.142, sg0e0-dmz0
C       198.18.0.128/30 is directly connected, sg0e0-cisco0
C       198.18.0.136/30 is directly connected, sg0e0-hp0
C       198.18.0.140/30 is directly connected, sg0e0-dmz0
S       198.18.0.160/28 [10/0] via 198.18.0.142, sg0e0-dmz0
S       198.18.0.176/28 [10/0] via 198.18.0.142, sg0e0-dmz0
S       198.18.0.192/28 [10/0] via 198.18.0.142, sg0e0-dmz0
S       198.18.1.0/24 [10/0] via 198.18.0.130, sg0e0-cisco0
S       198.18.3.0/24 [10/0] via 198.18.0.138, sg0e0-hp0
C       198.18.4.0/24 is directly connected, sg0-e-link-lan
S       198.18.10.0/25 [10/0] is directly connected, ssl.root
S       198.18.11.0/25 [10/0] is directly connected, ssl.root
S       198.18.13.0/25 [10/0] is directly connected, ssl.root
S       198.18.13.128/25 [10/0] is directly connected, ssl.root
C       217.193.240.160/29 is directly connected, vdom-wan1

get router info routing-table database
Wenn ich die gesamte Routing-Tabelle sehen möchte (aktive und inaktive Routen) kann ich die Routing Datenbank wie folgt abfragen:

Config cli.png Konfiguration über die CLI:
 
# get router info routing-table database 

Routing table for VRF=0
Codes: K - kernel, C - connected, S - static, R - RIP, B - BGP
       O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
       > - selected route, * - FIB route, p - stale info

S    *> 0.0.0.0/0 [10/0] via 217.193.240.161, vdom-wan1
S    *> 172.16.10.0/24 [10/0] via 198.18.0.138, sg0e0-hp0
S    *> 172.16.20.0/24 [10/0] via 198.18.0.138, sg0e0-hp0
S    *> 172.16.30.0/24 [10/0] via 198.18.0.138, sg0e0-hp0
S    *> 172.16.40.0/24 [10/0] via 198.18.0.138, sg0e0-hp0
S    *> 172.16.99.0/24 [10/0] via 198.18.0.138, sg0e0-hp0
C    *> 198.18.0.0/27 is directly connected, port1
S    *> 198.18.0.40/29 [10/0] via 198.18.0.142, sg0e0-dmz0
S    *> 198.18.0.48/29 [10/0] via 198.18.0.142, sg0e0-dmz0
C    *> 198.18.0.128/30 is directly connected, sg0e0-cisco0
C    *> 198.18.0.136/30 is directly connected, sg0e0-hp0
C    *> 198.18.0.140/30 is directly connected, sg0e0-dmz0
S    *> 198.18.0.160/28 [10/0] via 198.18.0.142, sg0e0-dmz0
S    *> 198.18.0.176/28 [10/0] via 198.18.0.142, sg0e0-dmz0
S    *> 198.18.0.192/28 [10/0] via 198.18.0.142, sg0e0-dmz0
S    *> 198.18.1.0/24 [10/0] via 198.18.0.130, sg0e0-cisco0
S    *> 198.18.3.0/24 [10/0] via 198.18.0.138, sg0e0-hp0
C    *> 198.18.4.0/24 is directly connected, sg0-e-link-lan
S    *> 198.18.10.0/25 [10/0] is directly connected, ssl.root
S    *> 198.18.11.0/25 [10/0] is directly connected, ssl.root
S    *> 198.18.13.0/25 [10/0] is directly connected, ssl.root
S    *> 198.18.13.128/25 [10/0] is directly connected, ssl.root
C    *> 217.193.240.160/29 is directly connected, vdom-wan1
  • Aktive Routen werden durch das Symbol * markiert

Folgende Optionen stehen weiter für das Commande get router info routing-table zur Verfügung:

Parameter Beschreibung
details Anzeigen der Detail-Informationen der Routing-Tabelle
all Anzeigen von allen Einträgen in der Routing-Tabelle
rip Anzeigen der RIP Routing-Tabelle
ospf Anzeigen der OSPF Routing-Tabelle
bgp Anzeigen der BGP Routing-Tabelle
isis Anzeigen der IS-IS Routing-Tabelle
static Statische Routing-Tabelle anzeigen
connected zeigt die Routing-Tabelle der verbundenen Routen an
database zeigt die Datenbank der Routing-Tabelle an (alle aktiven und passiven Routen)

edit 5.09.2023 - 4Tinu

Wie kann ich auf einer FortiGate den Routing "cache" auflisten und aktualisieren?

FortiOS 6x.svg FortiOS 7x.svg

Auf der FortiGate wird ein Cache angelegt. Dies bedeutet, dass wenn ein Routing Eintrag erstellt wird (wie zum Beispiel eine statische Route konfiguriert wird), so wird beim ersten Nutzen der Route im Hintergrund automatisch ein Eintrag im Cache angelegt. Dadurch muss die FortiGate nicht jedes Mal die Routing Tabelle konsultieren, sondern erhält bei einer nächsten Anfrage die Routinginformationen schneller und direkter aus dem Cache. Wenn ich sehen will, welche Routen im Cache sind kann ich folgenden Befehl verwenden:

diagnose ip rtcache list

Config cli.png Konfiguration über die CLI:
 
# diagnose ip rtcache list

family=02 tab=254 vf=0 type=02 tos=0 flag=80000200
0.0.0.0@0->198.18.0.1@64(root) gwy=0.0.0.0 prefsrc=198.18.0.1
ci: ref=1 lastused=1 expire=0 err=00000000 used=819 br=0 pmtu=16436

family=02 tab=254 vf=0 type=03 tos=0 flag=90000200
193.193.135.65@5(wan1)->193.193.135.95@64(root) gwy=0.0.0.0 prefsrc=0.0.0.0
ci: ref=1 lastused=220 expire=0 err=00000000 used=5 br=0 pmtu=1492

family=02 tab=254 vf=0 type=02 tos=0 flag=80000200
193.193.135.65@5(wan1)->193.193.135.66@64(root) gwy=0.0.0.0 prefsrc=193.193.135.66
ci: ref=3 lastused=0 expire=0 err=00000000 used=348 br=0 pmtu=1492

family=02 tab=254 vf=0 type=01 tos=0 flag=00000200
198.18.3.1@0->198.18.3.3@4(dmz) gwy=0.0.0.0 prefsrc=0.0.0.0
ci: ref=1 lastused=8 expire=0 err=00000000 used=952 br=0 pmtu=1500

family=02 tab=254 vf=0 type=03 tos=0 flag=90000200
0.0.0.0@66(fortinet4intern)->255.255.255.255@64(root) gwy=0.0.0.0 prefsrc=198.18.2.1
ci: ref=1 lastused=282 expire=0 err=00000000 used=0 br=0 pmtu=1500

family=02 tab=254 vf=0 type=01 tos=0 flag=00000200
0.0.0.0@0->193.193.135.65@5(wan1) gwy=0.0.0.0 prefsrc=193.193.135.66
ci: ref=1 lastused=0 expire=0 err=00000000 used=2109 br=0 pmtu=1492

family=02 tab=254 vf=0 type=01 tos=0 flag=00000200
0.0.0.0@0->193.193.135.65@5(wan1) gwy=0.0.0.0 prefsrc=193.193.135.66
ci: ref=1 lastused=0 expire=0 err=00000000 used=8022 br=0 pmtu=1492

family=02 tab=254 vf=0 type=01 tos=0 flag=00000200
0.0.0.0@0->198.18.3.3@4(dmz) gwy=0.0.0.0 prefsrc=198.18.3.1
ci: ref=1 lastused=4 expire=0 err=00000000 used=59 br=0 pmtu=1500

family=02 tab=254 vf=0 type=03 tos=0 flag=90000200
198.18.2.2@66(fortinet4intern)->198.18.2.127@64(root) gwy=0.0.0.0 prefsrc=0.0.0.0
ci: ref=1 lastused=135 expire=0 err=00000000 used=61 br=0 pmtu=1500

family=02 tab=254 vf=0 type=01 tos=0 flag=00000200
198.18.2.1@0->198.18.2.2@66(fortinet4intern) gwy=0.0.0.0 prefsrc=0.0.0.0
ci: ref=1 lastused=48 expire=0 err=00000000 used=22 br=0 pmtu=1500

family=02 tab=254 vf=0 type=01 tos=0 flag=00000200
0.0.0.0@0->198.18.0.90@7(internal1) gwy=0.0.0.0 prefsrc=198.18.0.1
ci: ref=1 lastused=3 expire=0 err=00000000 used=491 br=0 pmtu=1500

family=02 tab=254 vf=0 type=02 tos=0 flag=80000200
198.18.3.2@4(dmz)->198.18.3.1@64(root) gwy=0.0.0.0 prefsrc=198.18.3.1
ci: ref=3 lastused=13 expire=0 err=00000000 used=572 br=0 pmtu=1500

family=02 tab=254 vf=0 type=02 tos=0 flag=80000200
198.18.2.2@66(fortinet4intern)->198.18.2.1@64(root) gwy=0.0.0.0 prefsrc=198.18.2.1
ci: ref=10 lastused=0 expire=0 err=00000000 used=20 br=0 pmtu=1500

family=02 tab=254 vf=0 type=01 tos=0 flag=00000200
198.18.3.1@0->198.18.3.2@4(dmz) gwy=0.0.0.0 prefsrc=0.0.0.0
ci: ref=1 lastused=13 expire=0 err=00000000 used=660 br=0 pmtu=1500

family=02 tab=254 vf=0 type=01 tos=0 flag=00000200
198.18.0.1@0->198.18.0.90@7(internal1) gwy=0.0.0.0 prefsrc=0.0.0.0
ci: ref=1 lastused=1 expire=-2395 err=00000000 used=440 br=0 pmtu=1500

family=02 tab=254 vf=0 type=02 tos=0 flag=80000200
198.18.3.3@4(dmz)->198.18.3.1@64(root) gwy=0.0.0.0 prefsrc=198.18.3.1
ci: ref=3 lastused=4 expire=0 err=00000000 used=1 br=0 pmtu=1500

Der Cache selbst kann nicht direkt verändert oder manipuliert werden. Es ist auch nicht möglich einzelne Einträge aus dem Cache zu löschen. Will man den Cache aktualisieren oder löschen so kann dies indirekt über das refreshen der Routing Tabelle vorgenommen werden. Mit diesem Kommando execute router restart werden im Cache, wie auch im Kernel die Routing Informationen auf den neuesten Stand gebracht:

execute router restart

Config cli.png Konfiguration über die CLI:
 
# execute router restart

Aus diesem Grund wird empfohlen nach jeder Routing Änderungen diesen Befehl abzusetzen um gewährleisten zu können, dass alle Routing Informationen aller Routing Tabellen auf den neusten Stand gebracht wurden.

Wichtig.svg

Nichts im Cache aufgelistet? Eventuell hilft dieser KB weiter:
https://community.fortinet.com/t5/FortiGate/Troubleshooting-Tip-Route-cache-is-removed-from-FortiGates/ta-p/265370


edit 5.09.2023 - 4Tinu

Was ist eine Blackhole-Route?

FortiOS 5x.svg FortiOS 6x.svg FortiOS 70.svg

Eine Blackhole-Route ist eine Route, die den gesammten, an sie gesendeten Datentraffic unterbindet. Dies funktioniert sehr ähnlich wie /dev/null in der Linux-Programmierung. Blackhole-Routen werden verwendet, um Pakete zu entsorgen, anstelle auf verdächtige Anfragen zu reagieren. Dies bietet zusätzliche Sicherheit, da der Absender keine Informationen aus dem Destination-Netzwerk erhält.

Blackhole-Routen können auch den Traffic in einem Subnetz einschränken. Wenn einige Subnetzadressen nicht verwendet werden, kann der Traffic zu diesen Adressen (Traffic, welcher gültig oder bösartig sein kann) an ein Blackhole-Route geleitet werden. So kann zusätzliche Sicherheit gewährleisten werden oder den Traffic zum Subnetz zu reduziert werden.

Zum Beispiel bei einer IPSec Site-to-Site Verbindung wird, wenn das Tunnelinterface aktiv ist (und somit der VPN Tunnel up), ein Routing Eintrag erstellt. Wenn dieser Tunnel und somit auch das Tunnelinterface down geht, wird die nächste zutreffende Route für die Session genutzt. Meist ist dies die Default Route zum Standard Gateway. Dies bedeutet, dasss der Traffic welcher für die remote Lokation des Tunnels gedacht ist, ins Internet geroutet wird. Kommt jetzt das Tunnelinterface wieder hoch, bleibt die Session aber über den Standard Gateway aktiv. Dieser Zustand bleibt solange bestehen bis diese Session nicht mehr aktiv ist oder manuell beendet wird. Ein "Refreshing" der Routing Tabelle mit dem Befehl "execute router restart" löst dieses Problem nicht, weil durch dieses Kommando eine Session nicht beendet wird. Die einzige Möglichkeit wäre, die Session manuell zu löschen. Jetzt kommt die Blackhole-Route ins Spiel. Die Blackhole-Route wird das Netz an ein Nulldevice routen. Eine Blackhole-Route muss mit einer grösseren Distanz konfiguriert werden, als die anderen Routen. Empfohlen wird die Distanz 254 zu wählen.

Config webgui.png Konfiguration über das WebGui:

Im Menu Netzwork -> Static Routes Createnew.jpg

  1. Destinations Netzwerk konfigurieren
  2. Interface auf Blackhole wählen
  3. Administrative Distance muss höher als die eigentliche Route sein. Wir empfehlen den Wert 254 zu nehmen.
  4. Kommentare schaffen Klarheit
  5. Status enable um die Route aktiv zu schalten
  6. mit OK die Route einrichten.
Fortinet-2542.jpg
Config cli.png Konfiguration über die CLI:
config router static
edit [ID] -> Route ID angeben z.B 1
set dst 172.16.16.0 255.255.255.0
set distance 254
set comment "Blackhole Route 172.16.16.0/24"
set blackhole enable
end

Statische Route 172.16.16.0/24 auf Tunnel Interface aktiv:

Wir haben ein VPN-Tunnel welcher das Netz 172.16.16.0/24 auf das Tunnel Interface vpn_to_siteB routet. Wenn wir die Routingtabelle anschauen, sehen wir dass dieses Netz 172.16.16.0/24 auf das Interface vpn_to_siteB mit der Distanz 10 geroutet wird.

Config webgui.png Konfiguration über das WebGui:
  1. Gehe ins Menu Monitor -> Routing Monitor
Fortinet-2543.jpg
Config cli.png Konfiguration über die CLI:
get router info routing-table all

Routing table for VRF=0
Codes: K - kernel, C - connected, S - static, R - RIP, B - BGP
       O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
       * - candidate default

S*      0.0.0.0/0 [1/0] via 198.18.0.1, wan1
S       172.16.16.0/24 [10/0] is directly connected, vpn_to_siteB
C       192.168.2.0/24 is directly connected, internal
C       198.18.0.0/27 is directly connected, wan1

Statische Route 172.16.16.0/24 auf Tunnel Interface aktiv:

Jetzt wird der VPN-Tunnel unterbrochen und das Tunnel Interface vpn_to_sieB wird inaktiv. Wenn wir jetzt keine default Route hätten, würde das Netz 172.16.16.0/24 auf den default Gateway (198.18.0.1) geroutet. Da wir jetzt aber die Blackhole-Route für die 172.16.16.0/24, mit der Distanz 254 konfiguriert haben, sehen wir in der Routingtabelle, dass der ganze Traffic zum Destinations Netz 172.16.16.0/24 auf das Blackhole Interface routet wird:

Config webgui.png Konfiguration über das WebGui:
  1. Gehe ins Menu Monitor -> Routing Monitor

Fortinet-2544.jpg

Config cli.png Konfiguration über die CLI:
get router info routing-table all

Routing table for VRF=0
Codes: K - kernel, C - connected, S - static, R - RIP, B - BGP
       O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
       * - candidate default

S*      0.0.0.0/0 [1/0] via 198.18.0.1, wan1
S       172.16.16.0/24 [254/0] is a summary, Null
C       192.168.2.0/24 is directly connected, internal
C       198.18.0.0/27 is directly connected, wan1

Wenn ich die ganze Routing Tabelle anschaue (auch mit den inaktiven Routen) sehe ich beide Routen auf die Adresse 172.16.16.0/24. Die Route welche mit einem * markiert wird, ist die aktive Route.

get router info routing-table database
Routing table for VRF=0
Codes: K - kernel, C - connected, S - static, R - RIP, B - BGP
       O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
       > - selected route, * - FIB route, p - stale info

S    *> 0.0.0.0/0 [1/0] via 198.18.0.1, wan1
S       172.16.16.0/24 [10/0] is directly connected, vpn_to_siteB inactive  --> Die Route auf das Tunnel Interface ist inaktiv
S    *> 172.16.16.0/24 [254/0] is a summary, Null                           --> Die Route auf das Null Device (Blackhole) ist aktiv  
C    *> 192.168.2.0/24 is directly connected, internal
C    *> 198.18.0.0/27 is directly connected, wan1
Tipp.png

Grundsätzlich kann man auf jeder FortiGate die privaten IP Ranges auf eine Blackhole-Route konfigurieren. Mit diesen drei Routen kann so jeglicher Traffic, welcher in das Public WAN (INTERNET) geroutet wird, direkt abgefangen werden.

Für folgende private Netze kann also eine Blackhole Route defaultmässig eingerichtet werden:

Private Netze Gemäss RFC1918:

  • 10.0.0.0/8
  • 172.16.0.0/12
  • 192.168.0.0/16

Siehe auch : https://tools.ietf.org/html/rfc1918

Config cli.png Konfiguration über die CLI:
config router static
edit 0
set dst 10.0.0.0/8
set distance 254
set comment "Blackhole 10.0.0.0/8 - RFC1918"
set blackhole enable
next
edit 0
set dst 172.16.0.0/12
set distance 254
set comment "Blackhole 172.16.0.0/12 -RFC1918"
set blackhole enable
next
edit 0
set dst 168.168.0.0/16
set distance 254
set comment "Blackhole 192.168.0.0/16-RFC1918"
set blackhole enable
next
end

Weitere Informationen betreffend privatem IP Adress-Bereich siehe auch: https://de.wikipedia.org/wiki/Private_IP-Adresse

Achtung.png

Wenn ein Class D (Verwendung für Multicast-Anwendungen) oder Class E Netz (reserviert für zukünftige Zwecke) in eine Blackhole-Route konfiguriert werden soll, wird dies von der FortiGate nicht unterstützt.

Weitere Infos über die Netzklassen : https://de.wikipedia.org/wiki/Netzklasse

Beispiel in der CLI:

config router static 
edit 0
new entry '0' added
set blackhole enable 
set distance 254
set dst 224.0.0.0/3
ip address must be a class A, B, or C ip
value parse error before '224.0.0.0/3'
Command fail. Return code -8

Wie kann ich das Swisscom TV über die FortiGate betreiben?

FortiOS 60.svg FortiOS 62.svg

Um das Swisscom TV über die FortiGate zu routen müssen Multicast Routen eingerichtet werden. Wir gehen in diesem Fall von folgendem Szenario aus: Wir haben einen Swisscom Router, eine FortiGate und die Swisscom TV Box. Wir wollen die FortiGate zwischen dem Router und der TV-Box dazwischen als Perimeter Firewall schalten. Dafür müssen wir auf dem Swisscom Router die "DMZ" Funktion aktiveren und sämtlichen eingehenden Traffic auf die FortiGate weiterleiten. Zwischen der FortiGate und dem Swisscom Router konfigurieren wir ein Transit Netz. Jetzt haben wir sämtlichen Traffic (ausser die Telefone welche direkt am Router angehängt sind) auf der FortiGate. Jetzt können auf der FortiGate die Multicast Policies konfiguriert werden und das Swisscom TV läuft. In dieser Anleitung zeige ich ein praktisches Beispiel wie man das konfigurieren könnte:

Als erstes auf dem Swisscom Router folgende Konfigurationen vornehmen:

DMZ Funktion einschalten und auf die FortiGate weiterleiten.

Konfiguration WebGui Swisscom Router
Fortinet-1988.jpg

Um sämtlichen eingehenden Traffic auf die FortiGate weiter zu leiten, muss auf dem Swisscom Router die DMZ Funktion aktiviert werden. Als Destination wird die FortiGate ausgewählt.

Wir nutzen auf der FortiGate auf dem internal Interface (LAN) den DHCP Dienst. Damit die Swisscom TV Box immer die selbe IP Adresse bekommt, konfigurieren wir eine MAC Reservierung:

Fortinet-1989.jpg

config system dhcp server
edit 1
config reserved-address
edit 1
set ip 10.60.60.10
set mac 48:8d:XX:XX:XX:XX
set description "swisscom TV Box"
next
end
next
end

Auf der FortiGate erfassen wir ein Adressen Objekt für die Swisscom TV Box (in unserem Fall 10.60.60.10/32)

Fortinet-1990.jpg

config firewall address
edit "h_swisscomTV-10.60.60.10-32"
set comment "Swisscom TV Device"
set color 3
set subnet 10.60.60.10 255.255.255.255
next
end

Nun muss auf der FortiGate das Multicast Routing ausgeschaltet oder überprüft werden dass dieses ausgeschaltet ist:

config router multicast
set multicast-routing disable
end

Die Multicast Weiterleitung konfigurieren:

config system settings
set multicast-forward enable
end

Wir wollen verhindern, dass die FortiGate bei den weitergeleiteten Multicast Paketen den TTL Wert nicht erhöht:

config system settings
set mutlicast-ttl-notchange enable
end

Im nächsten Schritt müssen zwei Multicast Regeln konfiguriert werden. Damit wir im WebGui die Option sehen, muss diese eventuell noch aktiviert werden:

Policy&Objects -> Mutlicast Polciy -> Create New+

Datei:Fortinet-1991.jpg

Jetzt müssen wir zwei Multicast Adress-Objekte für 224.0.0.0 - 224.255.255.255 und 239.0.0.0 - 239.255.255.255 erstellen.

Config webgui.png Konfiguration über das WebGui:

Menu:Policy & Objects -> Addresses -> Create New+ -> Category Multicast Address

Fortinet-1992.jpg 
Config webgui.png Konfiguration über das WebGui:
config firewall multicast-address
    edit "mc-swisscom_224.0.0.0-224.255.255.255"
        set start-ip 224.0.0.0
        set end-ip 224.255.255.255
        set color 26
    next
    edit "mc-swisscom_239.0.0.0-239.255.255.255"
        set start-ip 239.0.0.0
        set end-ip 239.255.255.255
        set color 26
    next
end

Regel 1: von 0.0.0.0/0 zu den Multicast Adressen SNAT in dieser Regel nicht aktivieren.

Fortinet-1994.jpg

Regel 2: Von der Swisscom TV Box zu den Multicast Adressen
SNAT muss in dieser Regel aktiviert werden

Fortinet-1995.jpg

Nun sollte das Swisscom TV über die FortiGate funktionieren.

Wie kann ich eine Local Out Route verwenden?

FortiOS 70.svg FortiOS 72.svg

Im FortiOS 7.0.0 ist ein neues Feature hinzugefügt worden, welches ermöglicht, verschiedene Local Out Services wie FortiAnalyzer, FortiGuard usw über ein definiertes Interface zu routen. Diese Funktion ist sehr praktisch wen mehrere ISP Interfaces oder noch spezielle ServiceLan's für bestimmte Dienste an die FortiGate angebunden sind. Das Feature Local Out Routing Feature unterstützt auch MultiVdom.

Config webgui.png Konfiguration über das WebGui:

Damit man Local Out Routen im WebGui konfigurieren kann, muss zuerst das Feature aktiviert werden.
Über das Menu System --> Feature Visbility in der Sektion Additional Features kann das Local Out Routing aktiviert werden:

Fortinet-2947.jpg
Config cli.png Konfiguration über die CLI:
config system global
     set gui-local-out enable <-- disable um das Feature zu deaktivieren
end

Nun kann man im Menu Network den Menupunkt Local Out Routing sehen und verwenden

link

Alle Services welche nun speziel geroutet werden können werden aufgelistet. Dabei sind ausgegraute Punkte nicht verfügbar, da sie in der jetztigen Konfiguration nicht verwendet werden. Zum Beispiel Log syslogd Setting wenn kein Syslog Server konfiguriert ist.

Fortinet-2956.jpg

Allgemein zur Konfiguration:
Was bedeuten die verschiedenen Optionen beim Outgoing Interface?

link
  • Auto : Das ausgehende Interface wird automatisch anhand der Routing Tabelle definiert.
  • SD-WAN : Das ausgehende Interface wird automatisch anhand der SD-WAN Regeln definiert.
  • Specify : Das ausgehende Interface wird manuell definiert

Im Menupunkt Specify habe ich die Möglichkeit Interface und IP Adresse zu definieren:
Dabei gibt es die Option , dass die Interface IP Adresse benutzt wird oder dass man eine IP Adresse auswählen welche z.B als Sekundäre IP Adresse auf dem Interface konfiguriert ist. Es können also nur IP Adressen ausgewählt werden, welche zum entsprechenden Interface einen Bezug haben.

Interface Konfiguration:

Fortinet-2958.jpg

Local Out Routing Möglichkeiten:

Fortinet-2957.jpg

Anwendungsbeispiel:
Wir haben folgendes Szenarium :

Fortinet-2960.jpg

Interface Definitionen:

  • Eine SD-WAN Zone mit dem ISP1 auf dem wan1 interface und dem ISP2 auf dem wan2 Interface.
  • Für die Services wie FortiAnalyzer haben wir über den Port internal5 ein Service Lan definiert.

Interface Routing:

  • Die FortiGuard soll automatisch das beste Interface wählen.
  • Der System DNS wollen wir über beide SD-WAN Interfaces routen.
  • Der FortiAnalyzer muss über das ServiceLan erreicht werden können.

Konfiguration:
FortiAnalyzer:

Config webgui.png Konfiguration über das WebGui:

Über das Menu Network --> Local Out Routing kann in das Konfigurations Menu gelangt werden.

Wir sehen jetzt, dass der FortiAnalyzer Automatisch ein Interface und Dynamisch eine IP Adresse wählt.

Fortinet-2948.jpg

Dies kann dazu führen, dass die FortiGate über ein nicht vorgesehenes Interface versucht den FortiAnalyzer zu erreichen und wir dadurch einen Verbindungsfehler bekommen:

Fortinet-2949.jpg

Wir werden jetzt die Local Out Route für den FortiAnalyzer konfigurieren: Dafür kann man direkt vom FortiAnalyzer Menu im Menupunkt Local Out Setting gehen.

Fortinet-2950.jpg

Natürlich kann auch über das klassische Local Out Routing Menu navigiert werden.

Fortinet-2951.jpg
  1. Ausgehendes Interface auf Specify setzen
  2. Das service-lan (internal5) Interface auswählen
  3. Die Interface IP Adresse benutzen. Falls benötigt kann hier auch eine spezifische IP Adresse angegeben werden. Mit dieser IP Adresse wird die FortiGate beim FortiAnalyzer wahrgenommen.
  4. OK schliesst die Konfiguration ab
Config cli.png Konfiguration über die CLI:
config log fortianalyzer setting
     set interface-select-method specify 
     set interface "internal5"
     set source-ip "0.0.0.0" 
end

System DNS:

Config webgui.png Konfiguration über das WebGui:

Man kann auch hier direkt von der System DNS Konfiguration im Menupunkt Local Out Setting zu den Local Out Routings gelangen:

Fortinet-2950.jpg

Oder man navigiert über den Local Out Routing Menupunkt in die Konfigurationsoberfläche:
Unter dem Abschnitt System der Punkt System DNS auswählen:

Fortinet-2953.jpg
  1. Ausgehendes Interface auf SD-WAN setzen
  2. Bei Source IP wird die jeweilige Interface IP Adresse verwendet Use Interface IP)
  3. Wir sehen die konfigurierten System DNS Server. Über Edit Service kann direkt in das System DNS Menu gewechselt werden
  4. Mit OK die Konfiguration abschliessen.
Config cli.png Konfiguration über die CLI:
config system dns
     set interface-select-method sdwan
end

System FortiGuard:

Config webgui.png Konfiguration über das WebGui:

Vom FortiGuard Konfigurationsmenu kann auch direkt zu den Local Out Routen gelangt werden:

Fortinet-2950.jpg

Alternativ über Local Out Routing navigieren:
Im Abschnitt System den Punkt System FortiGuard anwählen:

Fortinet-2954.jpg
  1. Ausgehendes Interface auf Auto setzen
  2. Bei Source IP wird die jeweilige Interface IP Adresse verwendet Use Interface IP)
  3. Über Edit Service kann direkt in die FortiGuard Distribution Network Konfiguration navigiert werden.
  4. Zum Bestätigen OK wählen.
Config cli.png Konfiguration über die CLI:
config system fortiguard
     set interface-select-method auto
end

Ergebniss:

Fortinet-2959.jpg
Config cli.png Konfiguration über die CLI:

FortiAnalyzer:

fwalem-lab-0157 # diag sys session filter dst 198.18.0.12
fwalem-lab-0157 # diag sys session list

session info: proto=6 proto_state=01 duration=17991 expire=3595 timeout=3600 flags=00000000 socktype=0 sockport=0 av_idx=0 use=3
origin-shaper=
reply-shaper=
per_ip_shaper=
class_id=0 ha_id=0 policy_dir=0 tunnel=/ helper=rsh vlan_cos=255/255
state=log local
statistic(bytes/packets/allow_err): org=413544/7199/1 reply=306665/3605/1 tuples=2
tx speed(Bps/kbps): 22/0 rx speed(Bps/kbps): 17/0
orgin->sink: org out->post, reply pre->in dev=0->12/12->18 gwy=0.0.0.0/198.18.0.157
hook=out dir=org act=noop 198.18.0.157:8777->198.18.0.12:514(0.0.0.0:0)
hook=in dir=reply act=noop 198.18.0.12:514->198.18.0.157:8777(0.0.0.0:0)
pos/(before,after) 0/(0,0), 0/(0,0)
misc=0 policy_id=0 auth_info=0 chk_client_info=0 vd=0
serial=00006c0b tos=ff/ff app_list=0 app=0 url_cat=0
sdwan_mbr_seq=0 sdwan_service_id=0
rpdb_link_id=00000000 rpdb_svc_id=0 ngfwid=n/a
npu_state=00000000
no_ofld_reason:  local
fwalem-lab-0157 # diag sniffer packet any "host 198.18.0.12" 4
interfaces=[any]
filters=[host 198.18.0.12]
2.389952 internal5 out 198.18.0.157.8777 -> 198.18.0.12.514: psh 895497223 ack 2558983702
2.390352 internal5 in 198.18.0.12.514 -> 198.18.0.157.8777: psh 2558983702 ack 895497257
2.390426 internal5 out 198.18.0.157.8777 -> 198.18.0.12.514: ack 2558983745
4.109882 internal5 out 198.18.0.157.16255 -> 198.18.0.12.514: udp 477
5.249888 internal5 out 198.18.0.157.8778 -> 198.18.0.12.514: psh 3863284655 ack 4177359170
5.250222 internal5 in 198.18.0.12.514 -> 198.18.0.157.8778: psh 4177359170 ack 3863284689
5.250288 internal5 out 198.18.0.157.8778 -> 198.18.0.12.514: ack 4177359213
7.399907 internal5 out 198.18.0.157.8777 -> 198.18.0.12.514: psh 895497257 ack 2558983745
7.400319 internal5 in 198.18.0.12.514 -> 198.18.0.157.8777: psh 2558983745 ack 895497291
7.400389 internal5 out 198.18.0.157.8777 -> 198.18.0.12.514: ack 2558983788

System DNS:

fwalem-lab-0157 # diag sniffer packet any "port 53" 4
interfaces=[any]
filters=[port 53]
wan1 out 192.168.1.95.4181 -> 192.168.1.1.53: udp 27
wan1 in 192.168.1.1.53 -> 192.168.1.95.4181: udp 43
wan2 out 146.4.73.72.4181 -> 146.4.73.65.53: udp 35
wan2 in 146.4.73.65.53 -> 146.4.73.72.4181: udp 268
fwalem-lab-0157 # diag sys session filter dport 53
fwalem-lab-0157 # diag sys session list

session info: proto=17 proto_state=01 duration=70 expire=176 timeout=0 flags=00000000 socktype=0 sockport=0 av_idx=0 use=3
origin-shaper=
reply-shaper=
per_ip_shaper=
class_id=0 ha_id=0 policy_dir=0 tunnel=/ helper=dns-udp vlan_cos=255/255
state=log local nds
statistic(bytes/packets/allow_err): org=120/2/1 reply=369/2/1 tuples=2
tx speed(Bps/kbps): 1/0 rx speed(Bps/kbps): 2/0
orgin->sink: org out->post, reply pre->in dev=0->5/5->18 gwy=0.0.0.0/192.168.1.95
hook=out dir=org act=noop 192.168.1.95:4181->192.168.1.1:53(0.0.0.0:0)
hook=in dir=reply act=noop 192.168.1.1:53->192.168.1.95:4181(0.0.0.0:0)
misc=0 policy_id=0 auth_info=0 chk_client_info=0 vd=0
serial=00009dd7 tos=ff/ff app_list=0 app=0 url_cat=0
sdwan_mbr_seq=2 sdwan_service_id=0
rpdb_link_id=00000000 rpdb_svc_id=0 ngfwid=n/a
npu_state=00000000
no_ofld_reason:  local

session info: proto=17 proto_state=01 duration=62 expire=118 timeout=0 flags=00000000 socktype=0 sockport=0 av_idx=0 use=3
origin-shaper=
reply-shaper=
per_ip_shaper=
class_id=0 ha_id=0 policy_dir=0 tunnel=/ helper=dns-udp vlan_cos=255/255
state=log local nds
statistic(bytes/packets/allow_err): org=71/1/1 reply=304/1/1 tuples=2
tx speed(Bps/kbps): 0/0 rx speed(Bps/kbps): 0/0
orgin->sink: org out->post, reply pre->in dev=0->6/6->18 gwy=0.0.0.0/0.0.0.0
hook=out dir=org act=noop 146.4.73.72:4181->146.4.73.65:53(0.0.0.0:0)
hook=in dir=reply act=noop 146.4.73.65:53->146.4.73.72:4181(0.0.0.0:0)
misc=0 policy_id=0 auth_info=0 chk_client_info=0 vd=0
serial=00009ddd tos=ff/ff app_list=0 app=0 url_cat=0
sdwan_mbr_seq=1 sdwan_service_id=0
rpdb_link_id=00000000 rpdb_svc_id=0 ngfwid=n/a
npu_state=00000000
no_ofld_reason:  local

FortiGuard:

fwalem-lab-0157 # diag sniffer packet any "port 8888" 4
interfaces=[any]
filters=[port 8888]
57.766328 wan2 out 146.4.73.72.3748 -> 96.45.33.64.8888: udp 64
57.917133 wan2 in 96.45.33.64.8888 -> 146.4.73.72.3748: udp 12
57.955508 wan2 out 146.4.73.72.14927 -> 96.45.33.64.8888: udp 64
58.107836 wan2 in 96.45.33.64.8888 -> 146.4.73.72.14927: udp 12
174.549443 wan2 out 146.4.73.72.23987 -> 96.45.33.64.8888: udp 64
174.556676 wan2 out 146.4.73.72.14090 -> 96.45.33.64.8888: udp 64
174.699688 wan2 in 96.45.33.64.8888 -> 146.4.73.72.23987: udp 12

Den ganzen Artikel findet man auch im folgenden PDF: Datei:HowTo FortiGate LocalOutRoute fos70.pdf

Beitrag erfasst am 27.05.2021 - fortinu

SD-WAN

Wie kann ich für ECMP oder SD-WAN Hilfesession (Auxiliary-session) auf der FortiGate aktivieren?

FortiOS 6x.svg FortiOS 7x.svg

Wenn wir ECMP oder SD-WAN benutzen, sind mehrere Interfaces für den eingehenden oder ausgehenden Traffic definiert. Dies bedeutet, dass der Traffic eingehend oder ausgehend auf einem anderen Interface stattfinden kann. Wenn der Datentraffic wieder von der FortiGate ausgeht, versucht er einer bestehenden TCP Session zu entsprechen. Diese TCP-Session wird aber fehlschlagen, da sich das Interface für den eingehenden Datentraffic geändert hat. Default mässig wird nur eine Session zur Abwicklung des Datentraffics verwendet. Jede Änderung auf dem eingehenden Interface (Orginal/Antwort) führt zu einer dirty Session und wird verworfen. Aktiviert man die auxiliary-session Funkion wird eine Multisession aktivert. Dies bedeutet dass eine Hauptsession und Hilfssesions (verschiedene eingehende Interfaces) gibt um den Traffic zu handeln.

Config cli.png Konfiguration über die CLI:
id=20085 trace_id=10 func=print_pkt_detail line=5501 msg="vd-root:0 received a packet(proto=6, 172.22.4.99:47287->172.23.4.100:443) from vlan4. flag [S], seq 3291199818, ack 0, win 65535"
id=20085 trace_id=10 func=init_ip_session_common line=5666 msg="allocate a new session-000015a7"
id=20085 trace_id=10 func=vf_ip_route_input_common line=2596 msg="find a route: flag=04000000 gw-80.78.133.251 via tun1"
id=20085 trace_id=10 func=fw_forward_handler line=771 msg="Allowed by Policy-14: SNAT"
id=20085 trace_id=10 func=ids_receive line=289 msg="send to ips"
id=20085 trace_id=10 func=__ip_session_run_tuple line=3286 msg="SNAT 172.22.4.99->192.168.1.1:47287"
id=20085 trace_id=10 func=ipsecdev_hard_start_xmit line=777 msg="enter IPsec interface-tun1"
id=20085 trace_id=10 func=esp_output4 line=904 msg="IPsec encrypt/auth"
id=20085 trace_id=11 func=print_pkt_detail line=5501 msg="vd-root:0 received a packet(proto=6, 172.22.4.99:47287->172.23.4.100:443) from vlan4. flag [.], seq 3291199819, ack 1663915319, win 1034"
id=20085 trace_id=11 func=resolve_ip_tuple_fast line=5581 msg="Find an existing session, id-000015a7, original direction"
id=20085 trace_id=11 func=ids_receive line=289 msg="send to ips"
id=20085 trace_id=11 func=ip_session_core_in line=6275 msg="outgoing dev changed:44->42 dir=original, drop"
id=20085 trace_id=12 func=print_pkt_detail line=5501 msg="vd-root:0 received a packet(proto=6, 172.22.4.99:47287->172.23.4.100:443) from vlan4. flag [.], seq 3291199819, ack 1663915319, win 1034"
id=20085 trace_id=12 func=vf_ip_route_input_common line=2596 msg="find a route: flag=04000000 gw-192.168.1.1 via tun1"
id=20085 trace_id=12 func=fw_forward_dirty_handler line=385 msg="no session matched"

Default mässig ist die Funktion deaktiviert. Dies können wir auch über die CLI wie folgt ermitteln:

Config cli.png Konfiguration über die CLI:
# config system settings
# show full-configuration | grep aux
# set auxiliary-session disable

Die Funktion kann wie folgt eingeschaltet werden:

Config cli.png Konfiguration über die CLI:
# config system settings
# set auxiliary-session enable
# end


Welche OIDs gibt es im Zusammenhang mit dem Link Monitor um den SD-WAN Status abzufragen?

Folgende OIDs gibt es welche den Status vom Link Monitor angeben:

OID Beschreibung
.1.3.6.1.4.1.12356.101.4.8.2 fgLinkMonitorTable
.1.3.6.1.4.1.12356.101.4.8.2.1.1 fgLinkMonitorID
.1.3.6.1.4.1.12356.101.4.8.2.1.2 fgLinkMonitorName
.1.3.6.1.4.1.12356.101.4.8.2.1.3 fgLinkMonitorState
.1.3.6.1.4.1.12356.101.4.8.2.1.4 fgLinkMonitorLatency
.1.3.6.1.4.1.12356.101.4.8.2.1.5 fgLinkMonitorJitter
.1.3.6.1.4.1.12356.101.4.8.2.1.6 fgLinkMonitorPacketSend
.1.3.6.1.4.1.12356.101.4.8.2.1.7 fgLinkMonitorPacketRecv
.1.3.6.1.4.1.12356.101.4.8.2.1.8 fgLinkMonitorPacketLoss

Kann eine FG-90D in die die neue SD-WAN Orchestration eingebunden werden?

FortiOS 64.svg

SD-WAN Orchestration kann mit der FG90D aktuell nicht genutzt werden, da dieses Modell aktuell noch nicht unterstützt wird:

https://docs.fortinet.com/document/fortimanager/6.4.1/sd-wan-orchestrator-release-notes/798783/supported-fortigate-models

edit 5.09.2023 - 4Tinu



Wie kann ich im SD-WAN sicher stellen, dass mein VoIP Traffic immer nur über das richtige wan Interface geroutet wird?

FortiOS 6x.svg FortiOS 7x.svg

In diesem Artikel schauen wir folgende Problematik an. Wir haben auf dem wan1 Interface eine Internetverbindung über den ISP1. Auf dem wan2 ist der ISP2 angeschlossen. Beim ISP2 benutzen wir einen VoIP Dienst des Providers. Wir besitzen ein eigenes Lan in unserem Netzwerk in welchem die VoIP Clients sich befinden. Den VoIP Dienst kann nur über den ISP2 erreicht werden. Alle Anfragen welche von einem anderen IP Range als die des ISP2 kommen werden nicht berücksichtigt.

Wir haben auf der FortiGate ein SD-WAN mit den beiden Interface wan1 (ISP1) und wan2 (ISP2) konfiguriert. Sämtlicher Internettraffic soll über beide Interfaces geroutet werden (die beste Leitung wird bevorzugt). Damit aber der VoIP Traffic nur über den ISP2 (das wan2 Interface) geht, ist eine SD-WAN Regel konfiguriert, welche sämtlichen Traffic vom VoIP Client Netz über das wan2 Interface Routet. Dieses Setup funktioniert tadellos, solange beide ISP online sind. Problematisch wird es, wenn beim ISP2 oder dem wan2 Interface eine Störung vorliegt. Dann wird anhand der default SD-WAN Regel der Traffic über alle verfügbaren Interfaces rausgeroutet.

Nun geht es darum, sicherzustellen, das der Traffic des VoIP Client Netz nicht über das wan1 Interface raus geht, wenn wan2 eine Störung hat.

Wir gehen davon aus, dass der SD-WAN Teil bereits konfiguriert ist.

Damit dies funktioniert müssen wir folgendes konfigurieren:

  • Eine Firewall Regel, welche den Traffic des VoIP Client Netz ins Internet (SD-WAN-Zone) blockiert. Diese Regel ist Standartmässig im Regelset deaktiviert.
  • Unter der Drop Regel wird eine Firewallregel für das VoIP client Netz erstellt, welche den Zugang ins Internet (SD-WAN-Zone) erlaubt.
  • Einen Automatischen Stitch welche die VoIP Drop Regel aktiviert, wenn das Interface wan2 eine Störung hat
  • einen Automatischen Stitsch, wenn das wan2 Interface wieder richtig funktioniert, um die VoIP Drop Regel zu deaktivieren.

Schritt 1 - Konfiguration der Firewall Regeln
Als erstes ein Adressobjekt definieren, welche das VoIP Client Netz beinhaltet: In unserem Beispiel sieht das Objekt folgendermassen aus:

Name  : net_VoIP-CLIENTs
Color : 5 (irgend so ein Rosarot) --> Gemäss interner Abklärungen es ist Lachsfarbig
Type  : Subnet
IP    : 10.180.253.0/24
Config webgui.png Konfiguration über das WebGui:

Menu: Policy & Objects -> Addresses -> Create New -> Address :

Fortinet-3282.jpg
Config cli.png Konfiguration über die CLI:
 
config firewall address
    edit "net_VoIP-CLIENTs"
        set comment "VoIP Client Netzwerk"
        set color 5
        set subnet 10.180.253.0 255.255.255.0
    next
end

Da nun alle Objekte, welche wir brauchen definiert sind, können die beiden Firewallregeln konfiguriert werden:

Name                       : DROP-VoIP-Traffic_to_INTERNET
Source Interface           : Interface_SIP_Clients
Destination Interface      : SD-WAN Zone
Source IP                  : net_VoIP-CLIENTs
Destination IP             : Alle
Service                    : Alle
Aktion                     : DENY
Log Aktion                 : Logen aktivieren
Status                     : deaktiviert
Config webgui.png Konfiguration über das WebGui:

Menu: Policy & Objects -> Firewall Policy -> Create New :

Fortinet-3283.jpg
  1. Incoming Interface ist das Interface, hinter welchem die VoIP Clients an die FortiGate angeschlossen sind. In diesem Beispiel das internal1 Interface
  2. Outgoing Interface ist die SD-WAN Zone (in diesem Beispiel ext-ISP-Internet)
  3. Source ist das net_VoIP-CLIENTs Adressobjekt
  4. Destination das Adressobjekt all auswählen
  5. Service benutzen wir das Objekt ALL
  6. Action wird auf Deny (ist ein Silent Drop) konfiguriert
  7. Damti wir im Trafficlog entsprechende Einträge sehen, die Log Violation Traffic Option aktivieren
  8. Kommentare erleichtern später das Troubleshooting und das Auditieren.
  9. Die Opiton Enable this policy muss in diesem Fall deaktiviert sein.

In unserem Beispiel hat es nach dem erstellen der Firewallregel die Policy ID 2 gebildet. Dies muss dann ermittelt werden für die weiteren Konfigurationen

Config cli.png Konfiguration über die CLI:
 
config firewall policy
edit 0 
set name "DROP-VoIP-Traffic_to_INTERNET"
set srcintf "internal1"         <-- Interface der VoIP Clients
set dstintf "ext-ISP-Internet"  <-- SD-WAN Zone
set srcaddr "net_VoIP-CLIENTs"  <-- VoIP Client Adress Objekt
set dstaddr "all"
set schedule "always"
set service "ALL"
set logtraffic all              <-- Das Log aktivieren 
set comments "Blockiert Traffic vom VoIP Client Netz ins INTERNET - Wird aktiviert, wenn wan2 Interface eine Störung hat"
set status disable              <-- Wichtig, den Status auf DISABLE setzen
end                           

In unserem Beispiel hat es nach dem erstellen der Firewallregel die Policy ID 2 gebildet. Dies muss dann ermittelt werden für die weiteren Konfigurationen

Nun kann noch die zweite Firewall Regel konfiguriert werden, diese wird direkt unterhalb der vorhin angelegten VoIP Drop Regel:

Name                       : VoIP-Traffic_to_INTERNET
Source Interface           : Interface_SIP_Clients
Destination Interface      : SD-WAN Zone
Source IP                  : net_VoIP-CLIENTs
Destination IP             : Alle
Service                    : Alle
Aktion                     : ACCEPT
Security Profile           : Individuell bestimmen gemäss Kundenvorgaben
NAT                        : Aktivieren (Ausgehendes Interface)
Log Aktion                 : All Sessions Loggen
Status                     : Aktiviert
Config webgui.png Konfiguration über das WebGui:

Menu: Policy & Objects -> Firewall Policy ->Rechtsklick auf die Policy ID2 -> Unten Anfügen:

Fortinet-3286.jpg

Nun kann die Firewallregel gemäss Vorlage konfiguriert werden:

Fortinet-3284.jpg
  1. Incoming Interface ist das Interface, hinter welchem die VoIP Clients an die FortiGate angeschlossen sind. In diesem Beispiel das internal1 Interface
  2. Outgoing Interface ist die SD-WAN Zone (in diesem Beispiel ext-ISP-Internet)
  3. Source ist das net_VoIP-CLIENTs Adressobjekt
  4. Destination das Adressobjekt all auswählen
  5. Service benutzen wir das Objekt ALL
  6. Action wird auf Accept konfiguriert
  7. NAT Option aktivieren und das ausgehende Interface auswählen Use Outgoing Interface Address (So werden die Clients mit der wan2 IP Adresse im Internet gesehen)
  • Weitere Optionen (Loggen oder Security Feature nach Bedarf und Kundenwunsch konfigurieren)
  • Die Firewallregel muss aktiv sein (Status enable)
Config cli.png Konfiguration über die CLI:
 
config firewall policy
edit 0
set name "VoIP-Traffic_to_INTERNET"
set srcintf "internal1"
set dstintf "ext-ISP-Internet"
set action accept
set srcaddr "net_VoIP-CLIENTs"
set dstaddr "all"
set schedule "always"
set service "ALL"
set logtraffic all
set nat enable
set comments "Erlaubt Traffic vom VoIP Client Netz ins INTERNET"
next
end

Nun sollte das Regelwerk so weit komplett sein. Wenn alles richtig Konfiguriert wurde, sieht es in etwa so aus:

Fortinet-3285.jpg

Wir sehen die Policy ID Nummern 2 und 3 und dass die Policy mit der ID 2 im Feld Status deaktiviert ist. (Die ganze zeile ist milchig dargestellt)

Damit man das Feld ID und das Feld Status in der Übersicht sieht, kann dies folgendermassen aktiviert und an die forderste Stelle geschoben werden:

Config webgui.png Konfiguration über das WebGui:
Fortinet-3287.jpg

Danach die entsprechenden Optionen selektieren und mit apply bestätigen:

Fortinet-3288.jpg
Fortinet-3289.jpg

Schritt 2 - Konfiguration der Stitches
Um einen Stitch zu erstellen muss über das Menu Security Fabric -> Automation navigiert werden.
Konfiguration der Triggers:
Als erstes werden wir die Trigger konfigurieren. Die Trigger sind dafür da, um die Bedingung zu schaffen, wann genau eine Aktion ausgeführt werden soll. Diese Triggers bilden die Grundlage damit die entsprechende Aktion danach ausgeführt werden kann.

Für unser Szenarium müssen zwei Triggers konfiguriert werden:

  • Trigger zum ermitteln ob eine SLA Verletzung für das entsprechende SIP-WAN Interface besteht.
  • Trigger um zu ermitteln ob das SIP-WAN Interface wieder in Ordnung ist

Der Erste Trigger evaluiert ob das Interface wan2 probleme verursacht oder down geht:
Der Trigger braucht die Informationen aus dem Eventlog:

Event  : SDWAN SLA information warning
ID     : 22931
Name   : LOG_ID_EVENT_VWL_SLA_INFO_WARNING
Fortinet-3280.jpg
Config webgui.png Konfiguration über das WebGui:

Dafür das Menu Trigger auswählen:

Fortinet-3290.jpg

Es öffnet sich eine grössere Auswahlliste mit diversen Trigger Möglichkeiten. Wir werden einen Trigger erstellen, welcher auf das Resultat eines Eventlog Ereignis basiert. Daher müssen wir die Option FortiOS Event Log auswählen:

Fortinet-3291.jpg

Nun kann der Trigger definiert werden:

Fortinet-3292.jpg
  1. Name für den Trigger definieren. In unserem Beispiel SDWAN-Interface-wan2-down
  2. Das Richtige Event heraussuchen. SDWAN SLA information warning --> hat die ID 22931
  3. über das Suchfeld mit dem Stichwort SDWAN werden alle Eventlogs mit SDWAN bezug angezeigt, so geht das selektieren ein wenig einfacher.
  4. Feldfilter setzen: Field name : interface dazu den Value des zu überwachenden Interface (in unserem Fall wan2)
  5. Feldfilter setzen: Field name: newvalue dazu den Value dead konfigurieren
  6. Mit OK wird der erste Trigger erstellt.
Config cli.png Konfiguration über die CLI:
 
config system automation-trigger
edit "SDWAN-Interface-wan2-down" <-- Trigger Name
set event-type event-log         
set logid 22931                  <-- ID des Event 
config fields
edit 1
set name "interface"             <-- Filter interface setzen
set value "wan2"                 <-- Interface definieren
next
edit 2                           
set name "newvalue"              <-- Filter newvalue setzen (Neuer Status )
set value "dead"                 <-- Den Wert dead (Interface Status)
next
end
next
end


Konfiguration des Triggers um zu prüfen ob das Interface neu UP ist:
Der Zweite Trigger prüft ob das wan2 Interface wieder in Ordnung ist. Dafür werden folgende Daten aus dem EventLog benötigt:

Event  : SDWAN SLA notification
ID     : 22933
Name   : LOG_ID_EVENT_VWL_SLA_INFO_NOTIF
Fortinet-3281.jpg
Config webgui.png Konfiguration über das WebGui:

Der zweite Trigger wird genau wie der Erste Trigger erstellt mit folgenden Konfigurationsänderungen:

Fortinet-3294.jpg
  1. Name für den Trigger definieren. In unserem Beispiel SDWAN-Interface-wan2-up
  2. Das Richtige Event heraussuchen. SDWAN SLA notification --> hat die ID 22933
  3. Feldfilter setzen: Field name : interface dazu den Value des zu überwachenden Interface (in unserem Fall wan2)
  4. Feldfilter setzen: Field name: newvalue dazu den Value alive konfigurieren
  • Mit OK wird der zweiteTrigger erstellt.
Config cli.png Konfiguration über die CLI:
  
config system automation-trigger
edit "SDWAN-Interface-wan2-up" <-- Trigger Name
set event-type event-log
set logid 22933                <-- ID des Event 
config fields
edit 1
set name "interface"
set value "wan2"               <-- Interface definieren
next
edit 2
set name "newvalue"            <-- Filter newvalue setzen (Neuer Status )
set value "alive""             <-- Den Wert alive (Interface Status)
next
end
next
end 

Konfiguration der Aktionen:
Wichtig ist die Policy ID zu ermitteln, damit diese im Skript verwendet werden kann. Wir wollen zwei Aktionen konfigurieren.
In unserem Beispiel hat die Firewallregel die ID 2 (Siehe in der Policy Übersicht, wenn das ID Feld eingeblendet ist.)

  • Aktion um die Policy mit der Drop Aktion für das SIP Netzwerk zu aktivieren
  • Aktion um die Poliy mit der Drop Aktion für das SIP Netzwerk zu deaktivieren

Aktion 1 - VoIP Deny Policy aktivieren:

Config webgui.png Konfiguration über das WebGui:

Im Menu nun die Option Action auswählen:

Fortinet-3295.jpg

Nun die Option CLI Script suchen und auswählen.

Fortinet-3296.jpg

Jetzt kann die Aktion konfiguriert werden. Dabei wird ein CLI Script erstellt, welches die Policy der VoIP Drop Regel (in unserem Fall ID2) aktiviert

Fortinet-3298.jpg
  1. Name der Aktion definieren (in unserem Fall policyID2-enable)
  2. das CLI Skript konfigurieren zum aktivieren der Policy (in unserem Fall ID2)
  3. Es muss ein Administrations Profil ausgewählt werden, welches eine Schreibberechtigung hat.
  4. Mit OK wird die Aktion erstellt.

Script welches ausgeführt werden soll:

config firewall policy
edit [POLICY_ID] <-- in unserem Fall edit 2
set status enable
end
Config cli.png Konfiguration über die CLI:
  
config system automation-action
edit "policyID2-enable"
set action-type cli-script         <-- AktionsTyp ist ein CLI Skript
set script "config firewall policy <-- Anführungszeichen nicht vergessen
  edit 2                           <-- Policy ID der VoIP-block Regel verwenden
  set status enable                <-- VoIP-block Regel aktivieren
  end"                             <-- Schlusszeichen nicht vergessen
set accprofile "super_admin"       <-- Admin Profil mit write Berechtigung auswählen
next
end

Aktion für die SIP Drop Policy zu deaktivieren:
Nun muss noch die zweite Aktion vorbereitet werde, wenn das wan2 Interface wieder in Ordnung ist, soll der Traffic nicht mehr blockiert werden. Dazu wird ein zweites Skript ausgeführt, dieses aktiviert die VoIP Deny Regel aber wieder. Es kann genau gleich wie bei der ersten Aktion vorgegangen werden, mit dem Unterschied, dass im Skript jetzt der Status auf disable konfiguriert wird.
Aktion 2 - VoIP Deny Policy deaktivieren:

Config webgui.png Konfiguration über das WebGui:

Eine neue CLI-Aktion erstellen:

Jetzt kann die Aktion konfiguriert werden. Dabei wird ein CLI Script erstellt, welches die Policy der VoIP Drop Regel (in unserem Fall ID2) aktiviert

Fortinet-3297.jpg
  1. Name der Aktion definieren (in unserem Fall policyID2-disable)
  2. das CLI Skript konfigurieren zum deaktivieren der Policy (in unserem Fall ID2)
  3. Adminprofil mit Schreibberechtigung auswählen.
  4. Mit OK wird die Aktion erstellt.

Script welches ausgeführt werden soll:

config firewall policy
edit [POLICY_ID] <-- in unserem Fall edit 2
set status disable
end
Config cli.png Konfiguration über die CLI:
  
config system automation-action
edit "policyID2-disable"             <-- Aktionsname
  set action-type cli-script         <-- AktionsTyp ist ein CLI Skript
  set script "config firewall policy <-- Anführungszeichen nicht vergessen
  edit 2                             <-- Policy ID der VoIP-block Regel verwenden
  set status disable                 <-- VoIP-block Regel deaktivieren
  end"                               <-- Schlusszeichen nicht vergessen
set accprofile "super_admin"         <-- Admin Profil mit write Berechtigung auswählen
next
end

Konfigurieren der Automatischen Stitches

Wenn die Trigger und Aktionen konfiguriert sind, können zwei Stitches erstellt werden.

  1. Stitch zum aktivieren der VoIP-Drop Firewall Regel, wenn das Interface wan2 ausfällt.
  2. Stitch zum deaktivieren der VoIP-Drop Firewall Regel, wenn das Interface wan2 regulär funktioniert

Automatischer Stitch um die VoIP Drop Regel zu aktivieren, wenn das Interface DOWN geht:
In diesem Stitch wird der Trigger SDWAN-Interface-wan2-down verwendet und die Aktion policyID2-enable

Config webgui.png Konfiguration über das WebGui:

Im Menu nun die Option Action auswählen und mit Create New ein neuer Stitch konfigurieren:

Fortinet-3299.jpg
Fortinet-3300.jpg
  1. Name des Stitch definieren
  2. im Feld Trigger den SDWAN-Interface-wan2-down Trigger auswählen
  3. im Feld Action wird policyID2-enable ausgewählt
  4. mit OK ist der Stitch für das Aktivieren der VoIP Drop Policy konfiguriert.
Config cli.png Konfiguration über die CLI:
  
config system automation-stitch
edit "SDWAN_wan2-goes-Down"               <-- Name des Stitch
set trigger "SDWAN-Interface-wan2-down"   <-- Trigger auswählen (Interface geht down)
config actions
edit 1
set action "policyID2-enable"             <-- Aktion auswählen (VoIP Drop Policy aktivieren)
set required enable
next
end
next
end

Automatischer Stitch um die VoIP Drop Regel zu deaktivieren, wenn das Interface UP geht:

In diesem Stitch wird der Trigger SDWAN-Interface-wan2-up verwendet und die Aktion policyID2-disable

Config webgui.png Konfiguration über das WebGui:

Mit Create New noch den zweiten Stitch erstellen:

Fortinet-3301.jpg
  1. Name des Stitch definieren
  2. im Feld Trigger den SDWAN-Interface-wan2-up Trigger auswählen
  3. im Feld Action wird policyID2-disable ausgewählt
  4. mit OK ist der Stitch erstellen
Config cli.png Konfiguration über die CLI:
  
config system automation-stitch       
edit "SDWAN-wan2-goes-Up"               <-- Name des Stitch
set trigger "SDWAN-Interface-wan2-up"   <-- Trigger auswählen (Interface geht Up)
config actions
edit 1
set action "policyID2-disable"         <-- Aktion auswählen (VoIP Drop Policy deaktiveren)
set required enable
end
end

Es sind nun zwei Stitches konfiguriert. Wir sehen diese auch in der Übersicht bei den FortiOS Event Log:

Das Feld Triggger Count zeigt an, wie oft dieser Stitch schon ausgelöst wurde:

Fortinet-3302.jpg

Schritt 3 - Konfiguration testen
Nun wollen wir das ganze einmal ausprobieren:

Am einfachsten deaktiveren wir das Interface wan2 und schauen ob die Policy ID2 aktiv geschaltet wurde:
Navigiere über System -> Interface auf das wan2 Interface und mit rechtsklick die Option disable auswählen. (Achtung du wirst diese Leitung deaktiveren, stelle sicher, dass du nicht über dieses Interface mit der FortiGate remote verbunden bist, ansonsten wird es eine längere Autofahrt geben)

Fortinet-3303.jpg

Im SD-WAN Menu sollte das Interface wan2 jetzt ausgegraut erscheinen (deaktiviert)

Datei:Fortinet-3304.jpg

Navigiere jetzt zu den Policies. Wenn alles richtig konfiguriert wurde, sollte jetzt die Firewall Regel PolicyID 2 aktiv erscheinen.

Fortinet-3305.jpg

In der Triggerübersicht, müsste der Counter jetzt beim SDWAN_wan2-goes-Down Stitch um eins herhöt sein:

Fortinet-3306.jpg

Nun aktivieren wir das Interface wan2 wieder.

Fortinet-3307.jpg 

Nach kurzer Zeit, sollte die Policy ID2 wieder deaktiviert sein:

Fortinet-3308.jpg 

In der Triggerübersicht, müsste der Counter im SDWAN-wan2-goes-Up Stitch der Zähler auch um eins erhöht worden sein.

Fortinet-3309.jpg 

Ich werde das ganze auch noch mit dem debug Flow zeigen, dafür muss ich aber noch einen aktiven Client konfigurieren, bitte um ein wenig Geduld.


edit 5.09.2023 - 4Tinu

Zwei Faktor Authentifizierung

Wie kann ich die Timeouts für die 2FA Dienste auf der FortiGate anpassen?

FortiOS 5x.svg FortiOS 6x.svg FortiOS 70.svg

Wenn das SSL-VPN mit Zwei-Faktor-Authentifizierungen(2FA) wie E-Mail, SMS, FortiToken konfiguriert ist, kann unter Umständen ein längerer Token-Ablauf des Timers erforderlich sein, als jener der Standardeinstellung von 60 Sekunden. Die Ablaufzeiten können wie folgt konfiguriert werden:

Config cli.png Konfiguration über die CLI:
# config system global
# set two-factor-ftk-expiry [Zeit in Sekunden]    -> FortiToken Session Timeout 
# set two-factor-ftm-expiry [Zeit in Sekunden]    -> FortiToken Mobile Session Timeout 
# set two-factor-sms-expiry [Zeit in Sekunden]    -> SMS Session Timeout
# set two-factor-fac-expiry [Zeit in Sekunden]    -> FortiAuthenticator Token Session Timeout
# set two-factor-email-expiry [Zeit in Sekunden]  -> Email Session Timeout
# end

Während diese Timer für die Token selbst gelten (und die Token-Codes so lange gültig bleiben, wie sie konfiguriert sind), muss beim SSL-VPN jedoch nicht für die gesamte Dauer der Gültigkeit der Token akzeptieren. Um sicherzustellen, dass SSL-VPN die Token akzeptiert, muss ein weiterer Zeitgeber konfiguriert werden:

Config cli.png Konfiguration über die CLI:
# config system global
# set remoteauthtimeout [1-300s]
# end

Die maximal konfigurierbare Zeitüberschreitung hierfür beträgt 5 Minuten. Das SSL-VPN wartet maximal 5 Minuten auf die Bereitstellung eines gültigen Token-Codes, bevor die Verbindung beendet wird, auch wenn der Token-Code länger gültig ist.

Tipp.png

Die remoteauthtimout Einstellung zeigt nicht nur an, wie lange SSL-VPN auf die Bereitstellung des Token wartet, sondern auch auf andere Remote-Authentifizierungen, wie zum Beispiel die Authentifizierung von LDAP, RADIUS usw.

Das bedeutet, dass wenn der Timer erhöht wird, die FortiGate beinträchtig werden kann. Der Server ist nicht erreichbar, wenn der erhöhte Timer zu lange benötigt, um die FortiGate zu erreichen.


FortiGate und FortiAuthentikator:

Was auch beachtet werden muss ist, dass wenn mit einem FortiAuthenticator gearbeitet wird, dieser auch einen Timer für die Token hat. Die FortiGate verwendet die RADIUS-Authentifizierung für die SSL-VPN-Benutzerauthentifizierung. Der FortiAuthenticator wird als RADIUS-Server verwendet. Um die Sicherheitsstufen zu verstärken, ist FortiAuthenticator so konfiguriert, dass für eine erfolgreiche Authentifizierung eine Zwei-Faktor-Authentifizierung (2FA) erforderlich ist. Der FortiAuthenticator verfügt über mehrere Optionen, um 2FA von einem Benutzer zu verlangen. Diese können Hardware FortiToken, FortiToken Mobile, Mail oder SMS-Dienste sein. Bei den letzteren beiden kann es zu Zeitüberschreitungen kommen. Standardmässig erwartet FortiAuthenticator den Token-Code nach 60 Sekunden. Dieser Wert kann angepasst werden. Es reicht jedoch nicht aus, nur das Timeout im FortiAuthenticator zu ändern, da die FortiGate auch einen eigenen Timeout-Wert hat. Man muss diesen Wert also auch ändern, wenn man die Zeit zwischen der Eingabe von Benutzername/Passwort und Token-Code erhöhen möchten. Die Timer sind auf der FotiGate wie oben erklärt, anpassbar.

Auf dem FortiAuthentikator kann das unter folgendem Menue konfiguriert werden:

Config webgui.png Konfiguration im FortiAuthenticator 6.x:

Über das Menue User Account Policies -> Tokens können die Timeouts konfiguriert werden:

  1. Im Feld FortiToken der Menue-Punkt TOTP authentication window kann der Wert für die FortiToken Timeouts konfiguriert werden. Default ist 1 Minute eingestellt. Möglich ist 1 Minute - 60 Minuten.
  2. Unter Email/SMS kann der Token Timeout in Sekunden (10-3600) angepasst werden.
Fortinet-2676.jpg

Wie kann ich auf einer FortiGate einen SMS Service / Provider konfigurieren?

FortiOS 60.svg FortiOS 62.svg

Wenn auf einer FortiGate eine Two-Factor Authentication konfiguriert wird, so soll basierend auf ODA (On-Demand Authentication) muss ein entsprechender SMS Service resp. Provider konfiguriert werden. Per Standard steht auf einer FortiGate ein FortiGuard SMS Provider zur Verfügung jedoch ist dieser FortiGuard SMS Provider nicht in FortiCare und/oder FortiGuard enthalten. Bei diesem FortiGuard SMS Provider handelt es sich um den Amerikanischen SMS Provider Clickatell.

Anstelle des FortiGuard SMS Services kann auch ein lokaler SMS Provider gewählt werden. Dabei muss beachtet werden, dass der SMS Provider einen SMS Versandt über EMail unterstützt. Grund ist, dass die FortiGate kein SMS Versand über HTTP/S GET und POST unterstützt. Ein paar SMS-Provider welche wir empfehlen:

Da der SMS Versand über den Email Service durchgeführt wird, gilt die Konfiguration eines Email Service als Voraussetzung für die Konfiguration eines SMS Service. Wie der Email Service zu konfigurieren ist siehe nachfolgender Artikel: Email Service auf der FortiGate konfigurieren. Danach sind die Voraussetzungen gegeben einen SMS Service respektive Provider auf der FortiGate zu konfigurieren. Die Konfiguration kann über CLI durchgeführt werden:

Config cli.png Konfiguration über die CLI:
# config system sms-server
# edit [Name des Service/Provider zB "swisscom"]
# set mail-server [FQDN des Mail Server für SMS Versandt zB "sms.ip-plus.net"]
# end

Wird ein User lokal erfasst und dieser mittels SMS eine Two-Factor Authentifizierung aktiviert werden muss für, diesen User eine entsprechende Mobile Nummer definiert werden. Wird über einen Service auf der FortiGate eine Two-Factor Authentifizierung ausgelöst so wird im Hintergrund über den definierten SMS Service/Provider der für die Mobiel Nummer konfiguriert wurde ein Email generiert in folgender Form: [Land][Vorwahl][Mobile Nummer]@[FQDN des Mail Server für SMS Versandt]

Siehe auch: Wie konfiguriere ich einen User mit SMS Zweifaktor Authentifizierung?

Wie kann ich den Lizenzkey für den FortiGuard SMS Service auf der FortiGate einlesen?

FortiOS 60.svg FortiOS 62.svg

Auf der FortiGate kann ich Two Factor Authentifizierung einrichten. Es gibt die Möglichkeit von Fortinet selber einen SMS Dienst zu erwerben. Die SMS werden von der FortiGuard her ausgelöst. Diese Lizenz enthält jeweils 100 SMS. Der Artikel welcher hierfür erworben werden kann:

SMS-ELIC-100 FortiSMS - License for 100 SMS text messages

Der Lizenz Key kann über folgenden Befehl auf die FortiGate eingelesen werden:

Config cli.png Konfiguration über die CLI:
# execute fortiguard-message add xxxx-xxxx-xxxx-xxxx-xxxx ---> Den Aktivierungs Code der SMS Lizenz gemäss erhaltenem Dokument einfügen. 
# execute fortiguard-message update 

Das Guthaben kann wie folgt über die CLI abgefragt werden: execute fortiguard-message info

Config cli.png Konfiguration über die CLI:
# execute fortiguard-message info
Controller server status: registered
Expiry date: 20200102
SMS max allowed: 4
SMS used: 4
Last update: Wed Apr 17 10:31:02 2019

Current message server: 208.91.113.184:443
Message server status: unknown

Kann ich die Fortinet SMS Lizenz im Cluster nutzen?

Den Activation Key vom ForitGuard Messagin Service Dienst (SMS-ELIC-100) wird auf die Serienummer der FortiGate aktiviert.
Ein Cluster hat so gesehen nicht eine Serienummer über beide Devices und kennt daher nicht alle Mitglieder des Clusters.
Das bedeutet, es müssen alle Mitglieder des Clusters eine einzelne SMS-ELIC-100 Lizenz aktivieren.

Bei einem SMS Versand wird jeweils das Guthaben der aktiven FortiGate benutzt. Heisst wenn immer die gleiche FortiGate aktiv ist, wird nur dessen Guthaben heruntergezählt.

FortiToken:FAQ#Wie_verschiebe_ich_einen_registrierten_FortiToken_auf_einer_FortiGate_von_einer_VDOM_zu_einer_anderen_VDOM.3F

Brauche ich beim FortiToken auf der FortiGate für jeden Clustermember eine eigene Lizenz?

Diese Frage wird im FortiToken FAQ beantwortet:
FortiToken:FAQ#Wie_verschiebe_ich_einen_registrierten_FortiToken_auf_einer_FortiGate_von_einer_VDOM_zu_einer_anderen_VDOM.3F

FortiView

Wo ist die Ansicht "All-Session" im FortiOS 6.4.0?

FortiOS 64.svg

Im FortiOS 6.4.0 fällt einem sicher sehr schnell auf, dass die Option All-Session in der FortiView nicht mehr vorhanden ist.
Es handelt sich hier um einen Bug im FortiOS 6.4.0. Wir haben es dem TAC gemeldet und diese haben es an das Developpentteam weitergeleitet.
Der Bug wird unter der Nummer 615524 behandelt.

In der Zwischenzeit kann man unter den Top Policies by Session im Drilldown-Menu zu den Sessions gelangen:

Config webgui.png Konfiguration über das WebGui:
Fortinet-2717.jpg

Der Bug ist im FortiOS 6.4.1 behoben worden
Nun findet man die Session-Ansicht in der FortiView:

Config webgui.png Konfiguration über das WebGui:
Fortinet-2729.jpg

Prozesse

Wie kann ich auf einer FortiGate die Prozesse auflisten?

FortiOS 60.svg FortiOS 62.svg

Auf einer FortiGate existieren unzählige von Prozesse und Dienste welche zuständige sind um die verschiedenen Aufgaben einer Firewall durchzuführen. Um die Prozesse aufzulisten kann folgendes Kommando benutzt werden:

Config cli.png Konfiguration über die CLI:
# diagnose sys top [refresh_time_sec] [number_of_lines]

Wenn man die "top" 20 Prozesse (Standard) auflisten möchte, kann der # diagnose sys top Befehl ohne die Optionen von "refresh_time_sec" sowie "number_of_lines" benutzt werden:

# diagnose sys top
Run Time:  0 days, 2 hours and 1 minutes
0U, 0N, 0S, 100I, 0WA, 0HI, 0SI, 0ST; 1866T, 636F
       ipsengine      358      S <     0.1     5.0
       extenderd      178      S       0.1     0.4
          lnkmtd      161      S       0.1     0.3
          newcli      554      R <     0.1     0.3
       ipsengine      356      S <     0.0     5.0
       ipsengine      357      S <     0.0     5.0
       ipsengine      359      S <     0.0     5.0
       ipshelper      355      S <     0.0     4.2
       scanunitd      352      S <     0.0     2.1
       scanunitd      525      S <     0.0     2.0
       scanunitd      526      S <     0.0     2.0
       scanunitd      523      S <     0.0     1.9
       scanunitd      524      S <     0.0     1.9
         cmdbsvr      100      S       0.0     1.7
       forticron      136      S       0.0     1.4
         pyfcgid      495      S       0.0     1.2
          cw_acd      168      S       0.0     1.2
          httpsd      212      S       0.0     1.0
          httpsd      210      S       0.0     1.0
          httpsd      127      S       0.0     0.9

Um den Befehl respektive die Funktion zu beenden benütze "Ctrl + C".

Beschreibung:

Datei:Fortinet-307.jpg

Die in der zweiten Ausgabezeile angezeigten Codes haben folgende Bedeutung:
0U, 0N, 0S, 100I, 0WA, 0HI, 0SI, 0ST; 1866T, 636F

  • U ist der Prozentsatz der User-Space-Anwendungen, welche die CPU verwenden. Im Beispiel bedeutet 0U 0 % der User-Space-Anwendungen, die CPU verwenden.
  • S ist % der Systemprozesse (oder Kernelprozesse), welche die CPU verwenden. Im Beispiel bedeutet 0S, dass 0 % der Systemprozesse die CPU verwenden.
  • I ist % die ungenutzte CPU. Im Beispiel bedeutet 98I, dass die CPU zu 100% im Leerlauf ist.
  • T ist der gesamte FortiOS-Systemspeicher in Mb. In dem Beispiel bedeutet 1866T, dass 1866 Mb des Systemspeichers vorhanden ist.
  • F ist der freie Speicher in Mb. Im Beispiel bedeutet 636F, dass 636 Mb freier Speicher vorhanden sind.
  • KF ist die Summe der verwendeten Shared-Memory-Seiten. Wenn zum Beispiel 32KF stehen würde, bedeutet dies, das System 32 Seiten des gemeinsamen Speichers verwendet werden.

Jede zusätzliche Zeile der Befehlsausgabe zeigt Informationen für jeden der auf der FortiGate laufenden Prozesse an. Die dritte Zeile der Ausgabe lautet in diesem Beispiel:
ipsengine 358 S < 0.1 5.0

  • ipsengine ist der Name des Prozesses. Andere Prozessnamen können newcli, sshd, cmdbsrv, httpsd, scanunitd und miglogd enthalten.
  • 358 ist die Prozess-ID. Die Prozess-ID kann eine beliebige Zahl sein.
  • S ist der Zustand in welchem sich der Prozess befindet. Es gibt folgende Prozesszustände:
    • S = Sleeping
    • R = Running
    • D = Do not disturb
    • Z = Zombie

R und S Status Informationen eines Prozesses sind normal.
Das ein Prozess in den Status D wechselt kann für kurze Zeit vorkommen. Bleibt der Status jedoch für längere Zeit im Status D ist dies ein Indiz dass dieser Prozess nicht korrekt arbeitet.
Ein Status Z für einen Prozess ist klar ein Indiz das dieser Prozess nicht korrekt läuft. Ein Prozess im Status Z kann nicht mit "kill" beendet werden dh., um diesen Prozess zu beenden ist ein Neustart des Devices notwendig! Um eine FortiGate neu zu starten benutze : execute reboot

  • 0.1 ist die Menge von der CPU, welche der Prozess verwendet. Der CPU-Verbrauch kann von 0.0 (für einen Prozess der schläft), bis zu höheren Werten reichen wenn ein Prozess viel CPU-Zeit benötigt.
  • 5.0 ist die Menge an Memory, welche der Prozess verwendet. Der Speicherverbrauch kann von 0.1 bis 5.5 und höher gehen.

Während der diagnose sys top Befehl ausgeführt wird, kann mit folgenden Tasten eingewirkt werden:

  • Taste q zum beenden.
  • Taste c um die Prozesse nach Benutzung der CPU zu sortieren.
  • Taste m um die Prozesse nach Benutzung des Memories zu sortieren.

Wenn Prozesse untersucht/beobachtet werden sollen kann anhand "refresh_time_sec" und "number_of_lines" der Befehl erweitert werden. Das folgenden Beispiel zeigt, wie der Befehl ausgeführt wird mit einer "refresh_time_sec" von 5 Sekunden und "number_of_lines" von 10. Dies heisst, es werden nur die Top 10 Prozesse/Dienste aufgelistet:

Config cli.png Konfiguration über die CLI:
# diagnsoe sys top 5 10
Run Time:  0 days, 2 hours and 7 minutes
0U, 0N, 0S, 100I, 0WA, 0HI, 0SI, 0ST; 1866T, 651F
         miglogd      196      S       0.3     0.9
       ipsengine      356      S <     0.1     5.0
       ipsengine      357      S <     0.1     5.0
          cw_acd      168      S       0.1     1.2
         miglogd      195      S       0.1     0.9
         src-vis      152      S       0.1     0.6
          lnkmtd      161      S       0.1     0.3
          newcli      568      R <     0.1     0.3
          proxyd      144      S       0.1     0.3
       ipsengine      359      S <     0.0     5.0

Wie kann ich auf der FortiGate die Prozesse nach Memorie-Auslastung auflisten?

FortiOS 60.svg FortiOS 62.svg

Eine weitere Möglichkeit die Prozesse aufzulisten ist:

Config cli.png Konfiguration über die CLI:
# diagnose sys top-summary -h
Usage: top-summary [options]

Options:
  -n LINES, --num=LINES
                        Number of top processes to show (20 by default)
  -i INTERVAL, --interval=INTERVAL
                        Update interval, in seconds (1 by default)
  -s SORT, --sort=SORT  Sort mode: [cpu_percent (default)|mem|fds|pid]
  -d, --dump            Dump stats to the files
  -h, --help            show this help message and exit

Anhand dieser Optionen kann folgender Befehl abgesetzt werden um mit "-s mem" die Prozesse nach Memory-Nutzung zu sortieren und alle 60 Sekunden "-i 60" einen Refresh durchzuführen, sowie mit "-n 10" die Top 10 Prozesse aufzulisten:
diagnose sys top-summary '-s mem -i 60 -n 10'

# diagnose sys top-summary '-s mem -i 60 -n 10'
   CPU [||||||||||                              ]  25.0%
   Mem [||||||||||||||||||||||||||              ]  65.0%  1227M/1866M
   Processes: 10 (running=1 sleeping=135)

   PID      RSS   CPU% ^MEM%   FDS     TIME+  NAME
 * 130     420M    0.0 22.5   423  02:32.11  ipsmonitor [x6]
   352      39M    0.0  2.1    53  00:31.92  scanunitd [x5]
   100      32M    0.0  1.7    14  00:07.14  cmdbsvr
   136      26M    0.0  1.4    26  00:09.10  forticron
   495      24M    0.0  1.3    12  00:00.56  pyfcgid [x4]
   168      23M    0.0  1.2    31  05:45.90  cw_acd
   127      20M    0.0  1.1    41  00:26.25  httpsd [x11]
   125      17M    0.0  0.9    65  00:12.11  miglogd [x3]
   167      13M    0.0  0.7    22  00:00.98  fgfmd
   591      12M    0.0  0.7    12  00:00.66  newcli [x2]

Die Angabe "-s mem" indiziert die Spalte "MEM%" das heisst die Prozesse sollen nach "CPU%" Auslastung sortiert werden anstelle von "-s mem" die Angabe "-s cpu" benützt werden!

Wo finde ich den diagnose sys top-summary Befehl ab FortiOS 6.4?

FortiOS 64.svg FortiOS 70.svg

Im FortiOS 6.4.x wird man feststellen, dass das Kommando diagnose sys top-summary eine Fehlermeldung generiert:

Config cli.png Konfiguration über die CLI:
# diagnose sys top-summary

command parse error before 'top-summary'
Command fail. Return code -61

In den Release Notes 6.4.0 ist dokumentiert, dass der Befehl entfernt wurde:

https://docs.fortinet.com/document/fortigate/6.4.0/fortios-release-notes/517622/changes-in-cli
Fortinet-2820.jpg

edit 5.09.2023 - 4Tinu

Welche Prozesse existieren auf einer FortiGate und welche Aufgaben haben diese?

FortiOS 5x.svg FortiOS 6x.svg FortiOS 7x.svg

Auf der FortiGate existieren unzählige Prozesse welche für verschiedene Aufgaben zuständig sind. Diese könne zBsp anhand "diagnose sys top 5 99" eingesehen werden. Viele Prozesse existieren nur dann, wenn eine entsprechende Konfiguration durchgeführt wird. Andere existieren nur dann, wenn ein bestimmtes FortiGate Modell benutzt wird wie zBsp PoE (Power over Ethernet). Wiederum andere existieren und sind mit dem Stauts "idle" versehen da die Funktion deaktiviert wurde wie zBsp Wirless Controller "cw_acd". Nachfolgend eine Auflistung der bekannten Prozess und einer Kurzbeschreibung dieser:

Prozess: Beschreibung:
initXXXXXXXXXXX its job is to start other processes
zebos_launcher zebos launcher daemon
hp_api hp api
cmdbsvr cmdb server - update processes / configuration
uploadd upload daemon
adsl2plus adsl2plus daemon
sqldb sqldb
reportd report daemon
sql_logd sql log daemon
miglogd log daemon
chlbd chassis loadbalance daemon
haocd content cluster HA over chassis daemon
kmiglogd kernel log daemon
httpsd https daemon
pyfcgid python config daemon
sslvpnd ssl vpn
info_sslvpnd ssl vpn info daemon
smbcd smb client daemon
lcdapp Control the LCD panel
proxyd proxy daemon
imd IM proxy daemon
wad_launcher wan acceleration proxy
wad explicit proxy, mapi rpc
wad_diskd wan acceleration disk daemon
dlpfingerprint dlp fingerprint daemon
dlpfpcache dlp fingerprint cache daemon
scanunitd scanunit daemon
getty wait for console/telnet connection
mingetty tty1 mingetty tty1 daemon
mingetty tty2 mingetty tty2 daemon
iked ike daemon
nids_monitor_name ips monitor daemon
updated update daemon <= to init some shared memory segment used by other executables
merged_daemons merge daemon - should be split in future. There is a mantics.
fclicense FC license daemon
amc_monitor AMC monitor daemon
forticron crl update daemon
bypass_monitor bypass monitor daemon
chassis5000d chassis 5000 daemon
chassisd 192.168.127.254 chassis daemon
fdsmgmtd fortiguard management daemon
fds_msg fds message daemon
snmpd snmp
dhcpd dhcp server
dhcpcd dhcp client
dhcprd dhcp relay
hatalk ha protocol module
haysnc ha synchronization module
harelay ha relay module for tcp
pptpd pptp
l2tpd l2tp
ipldbd ipldbd daemon
vsd virtual server daemon
acd aggregate controller daemon
src-vis source visibility daemon
pppoed pppoe daemon
ddnscd ddns client daemon
urlfilter URL filter daemon
ntpd ntp server daemon
sshd ssh daemon
tftpd tftp daemon
telnetd telnet daemon
authd authenticated daemon
fssod fsso daemon
quard quarantine daemon
rtmon ping server
radvd router adv daemon
alertemail alertemail daemon
dnsproxy dns proxy daemon
sflowd sflow protocol daemon
nat64d NAT64 daemon
radiusd radius daemon
notifd notification daemon = carrier only
gtpgkd gtp daemon = carrier only
mass_mmsd mass mms daemon, carrier only
alarmd alarm daemon
pptpcd pptp client daemon
wpad_client port access client daemon - atheros wifi
wpad port access entity daemon - prism54 wifi
eap_proxy epa proxy - wpa enterprise wifi
modemd modem daemon
dialinsvr dial-in server daemon
cardmgr pcmcia card manager daemon
getty aux getty aux daemon
pppoatmd ppp over atm daemon
adsl_mon adsl monitor daemon
l2tpcd l2tp client daemon
httpclid http client daemon
sessionsync session sync daemon
fgfmd fortigate/fortimanager communication daemon
wccpd wccp daemon
garpd vip gratuitous arp daemon
cw_acd capwap ac daemon
wpad_ac wpad ac daemon
cw_wtpd capwap wtp daemon
cw_stad capwap sta daemon
fortilinkd fortilinkd
cu_acd cu_acd
swctrl_authd Switch controller authentication daemon
vrrpd vrrp daemon
usbmuxd usbmux daemon
fsd forti-start daemon
proxyacceptor proxyacceptor daemon
proxyworker proxyworker daemons
sslacceptor sslacceptor daemon
sslworker sslworker daemons
imd imd daemons
fcnacd forticlient NAC daemon
stpd_name spanning tree protocol daemon
wiredapd wired ap 802.1x port based auth daemon
confsynchbd conf-sync heartbeat daemon
confsyncd conf-sync daemon
poed poe daemon
cbp cbp daemon
nsm routing FIB update
imi routing related
bgpd bgp
ospfd ospf
ospf6d ospfv3
pim6d pim multicast v6
pimd pim multicast
pdmd pim dense monde
ripd rip
ripngd ripv6
netscan netscan daemon
dhcp6s dhcp6 server
dhcp6r dhcp6 relay
dhcp6c dhcp6 client
lted usb lte daemon - start only if hardware has usb port and not run in vmware
newcli CLI commands execution - ssh, telnet
vpd vpn policy daemon - handle vpn traffic to know to which policy the traffic corresponds
rlogd reliable syslog daemon
Referenz der Prozesse aus: https://kb.fortinet.com/kb/documentLink.do?externalID=FD40822

Wie finde ich die PID von einem bestimmten Prozess heraus?

FortiOS 60.svg FortiOS 62.svg

Die PID ist die Prozess Nummer (Prozess ID). Um einen Prozess zu stoppen muss diese angegeben werden. Damit man die Prozessnummer(n) herausfindet kann dies mit folgendem Befehl durchgeführt werden:

diagnose sys process pidof [ProzessName]

Wenn ich zum Beispiel die Prozessnummern für httpsd haben möchte gebe ich folgendes ein:

Config cli.png Konfiguration über die CLI:
# diagnose sys process pidof httpsd
127
210
212
214
225
228
248
295
323
326
475

Wie kann ich auf der FortiGate einen laufenden Prozess stoppen?

FortiOS 60.svg FortiOS 62.svg

Folgender Befehl kann verwendet werden um einen laufende Prozesse zu stoppen:
diagnose sys kill [Signal] [Prozess-ID]
Beschreibung:

  • Signal kann eine beliebige Zahl sein. Es empfiehlt sich die 11 zu nehmen, weil dieses Signal eine Ausgabe an das Crashlog sendet, welches vom Fortinet-Support zur Fehlerbehebung verwendet werden kann.
  • Prozess-ID ist die Prozess-ID, die vom Befehl diagnose sys top aufgelistet wird. (Siehe Artikel Wie kann ich auf einer FortiGate die Prozesse auflisten?)

Mit diagnose sys kill 11 956 wird der Prozess mit der ID 956 gestoppt.

Wie kann ich herausfinden, welcher Prozess auf welchem CPU Core läuft?

FortiOS 5x.svg FortiOS 6x.svg FortiOS 70.svg

Konfiguration über CLI:

Als Erstes müssen wir wissen, welcher Prozess welche Prozess-Nummer erhalten hat. Dies wird mit dem Befehl diagnose sys top ermittelt:

# diagnose sys top
Run Time:  0 days, 7 hours and 50 minutes
0U, 0N, 0S, 100I, 0WA, 0HI, 0SI, 0ST; 2012T, 681F
       ipshelper      314      S <     0.0     3.9
         cmdbsvr      124      S       0.0     3.3
       ipsengine      315      S <     0.0     3.0
          httpsd      379      S       0.0     3.0
         miglogd      144      S       0.0     2.4
         pyfcgid      284      S       0.0     2.3
          httpsd      209      S       0.0     2.2
          httpsd      380      S       0.0     2.0
         reportd      163      S       0.0     2.0
          httpsd      317      S       0.0     1.8
         pyfcgid      286      S       0.0     1.8
       forticron      155      S       0.0     1.7
          httpsd      656      S       0.0     1.6
          cw_acd      180      S       0.0     1.4
          httpsd     1338      S       0.0     1.4
         miglogd      196      S       0.0     1.4

Wir ermitteln jetzt auf welchem CPU-Kern der Prozess ipsengine läuft. Wir haben herausgefunden, dass die Prozessnummer für ipsengine die 315 ist. Mit dem Befehl diagnose sys process dump [PROZESS_ID] | grep Cpu kann der Kern ermittelt werden:

Konfiguration über CLI:
# diagnose sys process dump 315 | grep Cpu
Cpus_allowed: 1                          <---- 0001  (binär umgerechnet).
Cpus_allowed_list: 0                     <----  CPU Nummer 0

Bei einem zweiten Beispiel wollen wir vom Prozess miglogd wissen, auf welchem Kern dieser läuft. Hier ist die ProzessID die 196

Konfiguration über CLI:
# diagnose sys process dump 196 | grep Cpu
Cpus_allowed: 2                       <----- 0010 (binär umgerechnet).
Cpus_allowed_list: 1                  <-----  CPU Nummer 1
Tipp.png

Hier ist ein Link um dezimale Zahlen in binäre Zahlen umzurechnen:

Wie kann ich Prozesse (CPU und Memory) im WebGUI monitoren/beeinflussen?

FortiOS 70.svg FortiOS 72.svg FortiOS 74.svg

Ab FortiOS 7.0 bzw. 7.0.4 ist es möglich, Prozesse - welche ggf. CPU und/oder Memory strapazieren - mittels WebGUI zu monitoren und entsprechend zu beeinflussen.

Config webgui.png Konfiguration über das WebGUI:

Unter Status, in das CPU Widget reinklicken, und Process Monitor auswählen:

Fortinet-0029.png

Anschliesend erscheint eine Liste -> analog zum Output vom CLI-Command diagnose sys top:

Fortinet-0030.png

Aktive Prozesse können einzeln ausgewählt und via Rechtslick z.B. gestoppt werden (ACHTUNG: Kill-Process-Commands sind vorsichtig zu verwenden, da laufende/produktive Prozesse ungewollt beendet werden):

Fortinet-0031.png

Im oberen Suchfeld kann auch nach bestimmten Prozessen gefiltert/gesucht werden -> siehe Beispiel (sslvpnd):

Fortinet-0032.png

edit 01.09.2023 - chris

System

Wie generiere ich einen TAC Report für den technischen Support von Fortinet?

Damit der technische Support von Fortinet effizient arbeiten kann, ist es von grossem Nutzen bei einem Störungsfall den TAC Report beim Supportticket hochzuladen. In den meisten Fällen wird dieser Report sowieso eingefordert und man gewinnt Zeit indem man diesen Report gleich von Anfang an mitsendet. Wen man den Report ausführt wird ein vordefiniertes Skript eine Reihe von Diagnose-Befehlen durchführen. Diese ermöglichen eine Momentaufnahme des aktuellen Zustands der FortiGate festzuhalten. Diese Ausgaben der Befehle können dann in eine Log Datei geschrieben, und so dem technischen Support von Fortinet zur Verfügung gestellt werden.

Im TAC Report werden folgende Daten generiert und abgelegt:

  • Seriennummer des Gerätes
  • Benutzte Firmwareversion
  • Status der FortiGuard-Updates
  • Memorie und CPU Auslastung
  • Globale Konfiguration
  • Hardware Features
  • Interface Fehler
  • Traffic Statistiken
  • HA-Diagnostik
  • Prozess Crash Logs

Der TAC Report kann folgendermassen generiert und heruntergeladen werden:

Config webgui.png Konfiguration über das WebGui:
  1. System -> Settings
Fortinet-2727.jpg
  1. ganz nach unten zu Debug Logs scrollen
  2. Download anwählen und Datei herunterladen
Fortinet-2728.jpg
Config cli.png Konfiguration über die CLI:
# execute tac report
      Datei:HowTo FortiOS TAC-Report.pdf

Zertifikate

Was ist der Unterschied zwischen SSL Certificate Inspection und Full SSL Inspection?

Info.svg

Datenaustausch im Internet:

Sicherheit beim Datenaustausch im Internet wird u.a. durch das kryptographische Protokoll TLS (Transport Layer Security) bzw. SSL (Secure Sockets Layer) gewährleistet. Dabei müssen sowohl Client wie auch Server TLS/SSL verwenden, und gegenseitig den Gebrauch zusammen mit weiteren Parametern (z.B. SSL Version) mittels SSL Handshake bestätigen, um Sicherheit beim Datenaustausch zu gewährleisten.

Der Client verwendet sämtliche Server-Informationen um den Server per se zu authentifizieren -> Beispiel: Web-Browser verbindet sich mit Web-Server, dabei überprüft Web-Browser, ob Subject Name vom Zertifikat (erhalten vom Web-Server) mit dem Namen des Web-Servers übereinstimmt. Ausserdem wird überprüft, ob der Herausgeber des Zertifikats glaubwürdig ist, und ob das Zertifikat abgelaufen und/oder widerrufen worden ist. Falls das Server-Zertifikat von den erwähnten Kriterien abweicht, erhält der Client/User eine entsprechende Warnung/Fehlermeldung.

Umgekehrt (jedoch optional) kann auch der Server eine Authentifizierung des Clients verlangen. Sowohl Client wie auch Server generieren bzw. verwenden Session Keys um Datenaustausch während einer TLS/SSL Session zu ver- und entschlüsseln.


SSL Certificate Inspection:

Bei SSL Certificate Inspection betrachtet FortiGate nur den Teil des Zertifikats, welcher den CN (Common Name) des Zertifikats bzw. die URL enthält. Somit kann FortiGate die entsprechende URL in der eigenen, Kategorie-basierten Datenbank überprüfen/abgleichen. Kurz gesagt, fokussiert sich SSL Certificate Inspection nur auf den "Kopf" der Datenpakete, und verringert somit das Auftreten von Certificate Errors. Diese treten bei SSL Certificate Inspection nur dann auf, wenn FortiGate Replacement Messages via HTTPS sendet. Um dies zu verhindern, muss auf dem Client/Endpoint ein entsprechendes Zertifikat installiert werden -> siehe Details im nächsten Unterkapitel Full SSL Inspection.

Folglich eignet sich SSL Certificate Inspection beispielsweise in Policies, welche nur WebFilter verwenden, um lediglich den Web-Server zu identifizieren. Somit wird verhindert, dass HTTPS-Protokolle als "Workaround" missbraucht werden, um auf Websites zu gelangen, die durch den WebFilter geblockt werden.

Full SSL Inspection:

Hauptzweck der Full SSL Inspection ist u.a. die Überprüfung heruntergeladener Datenpakete, um mögliche Angriffe, Viren und Applikationen aufzudecken, die sich oft in verschlüsselten HTTPS Sessions verstecken.

Im Gegensatz zur SSL Certificate Inspection, wird der oben-erwähnte SSL Handshake (i.e. gegenseitige Bestätigungen) durch FortiGate unterbrochen. Aus Sicht des Clients agiert FortiGate als Server, und umgekehrt nimmt FortiGate die Rolle des Clients aus Sicht des Servers an. Falls der Client eine URL abruft, dann muss FortiGate diesem ein entsprechendes Zertifikat zur Verfügung stellen. Es handelt sich dabei um ein Fortinet-internes Zertifikat, welches nicht von einer CA (Certificate Authority) ausgestellt wurde, und folglich Certificate Errors generiert. Um dies zu verhindern, muss dieses Zertifikat (i.e. SSL_Proxy_Inspection) auf dem Client/Endpoint bzw. dessen Betriebssystem, Browser etc. installiert werden.

Bei Full SSL Inspection ist Datenaustausch zwischen Client und FortiGate, sowie zwischen Server und FortiGate, verschlüsselt. Während der Untersuchung entschlüsselt FortiGate die Datenpakete um Bedrohungen zu erkennen/blockieren, und verschlüsselt diese anschliessend wieder mittels dem oben-erwähnten, Fortinet-internen Zertifikat, welches beispielsweise dem Client präsentiert wird.

Wie kann unter Windows 10 ein SelfSign Zertifikat erstellt werden, welches auf die Firewall geladen werden kann?

Unter Windows 10 kann ein entsprechendes Zertifikat mit Powershell erstellt werden. Folgende Parameter werden dazu benötigt:

	PS C:\temp> New-SelfSignedCertificate -CertStoreLocation Cert:\LocalMachine\My -DnsName "meineseite.local" 
	-FriendlyName "MySiteCert" -NotAfter (Get-Date).AddYears(10)
	
	PSParentPath: Microsoft.PowerShell.Security\Certificate::LocalMachine\My
	Thumbprint                                Subject
	----------                                -------
	9598EC7B469ADFE74474CD75C5FEFCBF8B7EB478  CN=meineseite.local

Um dieses Zertifikat anschliessend auch als File vom Windows Zertifikatsspeicher in ein passwortgeschütztes *.pfx-File exportieren zu können, muss erst das Passwort in einer Variablen abgelegt werden, bevor dann mittels CMDlet das Zertifikat exportiert werden kann:

	PS C:\temp> $CertPwd = ConvertTo-SecureString -String "test" -Force -AsPlainText
	PS C:\temp> Export-PfxCertificate -cert cert:\localMachine\my\9598EC7B469ADFE74474CD75C5FEFCBF8B7EB478
	-FilePath C:\temp\test.pfx -Password $CertPwd

	Verzeichnis: C:\temp
	Mode                LastWriteTime         Length Name
	----                -------------         ------ ----
	-a----       27.06.2018     16:43           2749 test.pfx

Das Zertifikat wird anschliessend wie folgt importiert:

Fortinet-2250.png

Wie kann unter Windows 10 ein CA erstellt werden, welches auf die Firewall geladen werden kann?

  1. Herunterladen des Tools XCA Datei:Setup xca-1.4.1.zip
  2. Installieren von XCA auf einem Windows PC
  3. Generieren einer CA mit XCA gemäss folgender Anleitung: Datei:Xca howto.pdf (Quelle: barracuda.com)
  4. Exportieren der CA im *.pem Format
  5. Importieren des Zertifikates auf der Fortigate Firewall unter System > Certificates > Import > CA Certificate > Type=File

Wie kann ich Zertifikate sichern (Back-Up) und wiederherstellen?

Info.svg

Mit der Sicherung einer FortiGate-Konfiguration werden simultan die Keys sowie die Zertifikate gesichert. Zusätzlich lassen sich auf der FortiGate Zertifikate als PKCS#12-File sichern, welches folgendes beinhaltet:

- Private Key
- Public Key
- Zertifikat per se

Das PKCS#12-File kann auf jedem FortiGate-Modell (sowie jeder Firmware-Version), und auf nicht-Fortinet Firewalls wiederhergestellt werden.

Das Sichern bzw. Back-Up ist nur über CLI möglich (ausserdem wird ein TFTP-Server vorausgesetzt).

Config cli.png Konfiguration über die CLI:
 # execute vpn certificate local import tftp <file-name_str> <tftp_ip>
 # execute vpn certificate local export tftp <file-name_str> <tftp_ip>

Wie konfiguriere ich Zertifikate (VDOM und global)?

Info.svg

FortiGate erlaubt es, dass ein CA sowie ein lokales Zertifikat für eine VDOM oder global konfigurierbar sind.

  • Wenn ein Zertifikat auf einer VDOM hochgeladen wird, kann dieses Zertifikat nur auf der gleichen VDOM aufgerufen werden
  • Wenn ein Zertifikat global hochgeladen wird, kann es auf allen VDOMS sowie global aufgerufen werden

Die Konfiguration der Zertifikate (VDOM und global) ermöglicht es, die Zertifikate herunterzuladen, zu importieren, und zu löschen.

Ausserdem sind bei der Konfiguration sämtliche Details zu den Zertifikaten sichtbar. Einige Zertifikate haben eine bestimmte Länge im Namen, sowie bestimmte Algorithmen in der Signatur. Beispiel: Fortinet_SSL_ECDSA256 -> das Suffix ECDSA256 steht für Elliptic Curve Digital Signature Algorithm 256.

Config cli.png Konfiguration über die CLI:
   # config certificate local
     edit Fortinet_Factory
     set range <global/vdom>
     set source <factory/user/bundle/fortiguard>
     end   

ACME Zertifikat - Troubleshooting

Prüfen der Konnektivität mit Let's encrypt (ändere die <RESOLVED_IP_ON_PING> mit der beim ersten Ping aufgelösten IP)

exec ping acme-v02.api.letsencrypt.org
exec telnet <RESOLVED_IP_ON_PING> 443

Überprüfe dass die Ports 443 und 80 geöffnet sind:

diagnose sys tcpsock | grep :443
diagnose sys tcpsock | grep :80

ACME-Kommunikationsstatus (<Zertifikat_Name> mit dem auf WAN Interface erstellten Zertifikat ändern)

get system acme status
get system acme acc-details
diag sys acme status-full <Certificate_Name>

Zertifikatsdetails (ändern den <Zertifikat_Name> mit dem auf dem WAN Interface erstellten Zertifikat)

get vpn certificate local details <Certificate_Name>
show fu vpn certificate local 

add 19.12.2022

Interface

Was bedeutet die Funktion "Role" innerhalb einer Interface Konfiguration?

Wenn man ab dem FortiOS 5.4 im Interface die verschiedenen Konfigurationspositionen näher anschaut, fällt einem die Position "Role" auf:

Config webgui.png Konfiguration über das WebGui:
  1. Network -> Interfaces -> auf das entsprechende Interface gehen.
  2. Unter der Position "Role" die gewünschte Rolle auswählen
Fortinet-2667.jpg
Config cli.png Konfiguration über die CLI:
# config system interface
# edit [Name des entsprechenden Interface zB "internal"]
# set role [lan | wan | dmz | undefined]
# end

Nun stellt sich die Frage wobei es sich bei diesem Konfigurationspunkt handelt. Nach Auskunft von Fortinet handelt es sich hierbei um ein neues Feature unter FortiOS 5.4 das Fehlkonfigurationen auf früheren FortiOS verhindern soll. Dies wiederum bedeutet: Durch das hinzufügen einer bestimmten "Role" zu einem Interface stehen diesem bestimmte Konfigurationen nicht mehr zur Verfügung. Dadurch wird verhindert das zBsp auf einem "DMZ" Interface eine DHCP Server Konfiguration durchgeführt wird. Dabei ist wichtig zu wissen welche Konfigurationspunkte durch welche "Role" auf einem Interface entfernt werden. Nachfolgend eine Übersicht der zur Verfügung stehenden "Role" für ein Interface:

Rolen Typen

Undefined Role:

Alle Optionen im WebGui sind sichtbar und können konfiguriert werden.

WAN Role:

  • Das Interface dient zur Verbindung zum Internet
  • Das Interface ist standardmässig auf DHCP konfiguriert
  • Die folgenden Funktionen und Optionen sind in der DMZ "Role" nicht verfügbar:
    • Geräte-Identifikation
    • One-Arm Sniffer
    • Dedizierung für Extension/FortiAP Modus
    • DHCP-Server
    • Security Mode und Admission Control

LAN Role

  • Das Interface wird für Verbindungen mit dem lokalen Netzwerk mit Endpoints verwendet
  • Die folgenden Funktionen und Optionen sind ausgeblendet (nur 5.4.0):
    • Secondäre IP Adresse

DMZ Role

  • Interface wird für Verbindungen zu Servernetzwerken/Server benutzt.
  • Die folgenden Funktionen und Optionen sind ausgeblendet
    • Secondäre IP Adresse (nur FortiOS 5.4.0)
    • DHCP Server
Fortinet-2111.jpg

Wir empfehlen grundsätzlich diese "Role" nicht zu benutzen und für ein Interface die Einstellung "undefined" zu benutzen wodurch alle Funktionen resp. Konfigurationen für ein Interface zur Verfügung stehen. Nach Auskunft von Fortinet sind diese "Role" im FortiOS nicht konfigurierbar dh. diese sind "hardcoded" implementiert und können nicht verändert werden. Es stehen auf der CLI keine Befehle zur Verfügung um diese "Role" zu verändern oder abzufragen um allenfalls herauszufinden zu können welche Funktionen für eine bestimmte "Role" entfernt wurde oder zur Verfügung steht.

Wie kann ich die Interface Statistik auf einer FortiGate anschauen?

FortiOS 60.svg FortiOS 62.svg

Um die Interface Statistik anzuschauen kann über die CLI folgender Befehl eingegeben werden:

Config cli.png Konfiguration über die CLI:
# get hardware nic <INTERFACE_NAME>

Beispiel:

# get hardware nic port1
Description     :FortiASIC NP6 Adapter
Driver Name     :FortiASIC Unified NPU Driver
Name            :np6_0
PCI Slot        :0000:01:00.0
irq             :16
Board           :FGT300d
SN              :FGT************
Major ID        :5
Minor ID        :0
lif id          :0
lif oid         :130
netdev oid      :130
netdev flags    :1303
Current_HWaddr   00:09:0f:09:00:02
Permanent_HWaddr 90:6c:ac:17:b0:ac
phy name        :port1
bank_id         :1
phy_addr        :0x00
lane            :0
flags           :220
sw_port         :0
sw_np_port      :0
vid_phy[6]      :[0x02][0x00][0x00][0x00][0x00][0x00]
vid_fwd[6]      :[0x00][0x00][0x00][0x00][0x00][0x00]
oid_fwd[6]      :[0x00][0x00][0x00][0x00][0x00][0x00]
========== Link Status ==========
Admin           :up
netdev status   :up
autonego_setting:1
link_setting    :1
link_speed      :1000
link_duplex     :0
Speed           :1000
Duplex          :Full
link_status     :Up
rx_link_status  :1
int_phy_link    :0
local_fault     :0
local_warning   :0
remote_fault    :0
============ Counters ===========
Rx_CRC_Errors   :0
Rx_Frame_Too_Longs:0
rx_undersize    :0
Rx Pkts         :3130045
Rx Bytes        :752876757
Tx Pkts         :3430304
Tx Bytes        :2363052814
Host Rx Pkts    :3130032
Host Rx Bytes   :691819956
Host Rx dropped :0
Host Tx Pkts    :3430304
Host Tx Bytes   :2348345744
Host Tx dropped :0
Config cli.png Konfiguration über die CLI:
# fnsysctl ifconfig <INTERFACE_NAME>

Beispiel:

# fnsysctl ifconfig port1
port1   Link encap:Ethernet  HWaddr 00:09:0F:09:00:02
        inet addr:198.18.0.1  Bcast:198.18.0.31  Mask:255.255.255.224
        UP BROADCAST RUNNING PROMISC ALLMULTI MULTICAST  MTU:1500  Metric:1
        RX packets:3131156 errors:0 dropped:0 overruns:0 frame:0
        TX packets:3431342 errors:0 dropped:0 overruns:0 carrier:0
        collisions:0 txqueuelen:1000 
        RX bytes:753144031 (718.3 MB)  TX bytes:2363678516 (2.2 GB) 

Wie konfiguriere ich ein VLAN-Interface auf der FortiGate?

Ein VLAN-Interface kann auf der FortiGate relativ einfach konfiguriert werden.

Config webgui.png Konfiguration über das WebGui:

Über das Menu Network -> Interfaces -> Createnew.jpg

  1. Interface Name definieren
  2. Alias bei Bedarf definieren (dieser Name wird in den Polices angezeigt)
  3. den Typ auf VLAN einstellen
  4. Das physikalische Interface auswählen, bei welchen das VLAN angebunden werden soll
  5. VLAN ID definieren und konfigurieren
  6. Netzwerk Konfigurationen vornehmen wie bei einem physikalischen Interface
Fortinet-2718.jpg

Die VLAN Interfaces sieht man beim physikalischen Interface wenn man auf das + klickt.

Fortinet-2719.jpg
Config cli.png Konfiguration über die CLI:
config system interface
    edit "vl_1500_userlan"
        set vdom "root"
        set ip 172.16.18.2 255.255.255.0
        set alias "vl1500-ulan_frontend"
        set device-identification enable
        set role lan
        set interface "internal7"
        set vlanid 1500
    next
end

Wie kann ich auf einem VLAN Interface eine sekundäre IP Adresse konfigurieren?

Bei einem VLAN Interface kann die sekundäre IP Adresse nicht einfach mit dem Befehl config secondaryip konfiguriert werden. Bevor man diesen Befehl nutzen kann, muss noch das entsprechende Feature auf dem Interface aktiviert werden. Dies wird mit dem Befehl secondary-IP {enable | disable} erreicht.

Config cli.png Konfiguration über die CLI:
config system interface
edit int_vl1200
set secondary-IP enable
set interface "internal"
set vlanid 1200
config secondaryip 
edit 1 
set ip 172.16.17.1 255.255.255.0   
next
end
next
end
Config webgui.png Konfiguration über das WebGui:

Um auf dem WebGui die sekundäre IP zu konfigurieren muss einmal das Feature aktiviert worden sein. Danach ist es möglich auf allen Interfaces diese Option über das WebGui zu benutzen.

  1. Menu Network -> Interfaces -> das entsprechende vlan Interface editieren
  2. Die Option Secondary IP address aktivieren
  3. Mit Createnew.jpg kann eine neue sekundäre IP Adresse auf das VLAN konfiguriert werden.
Fortinet-2695.jpg

Wie kann ich den MTU Wert auf einem Interface anpassen?

FortiOS 5x.svg FortiOS 6x.svg FortiOS 70.svg

Der Maximum Transmission Unit (MTU) Wert definiert die grösste, hardwareabhängige Paketgrösse gemessen in Byte, welche ein Netzwerk übertragen kann. Wenn ein Paket grösser als der MTU Wert ist, werden die Pakete vom Sender aus in kleinere Pakete aufgeteilt. Der Standard MTU Wert auf einem FortiGate Interface ist 1500. Es kann vorkommen, dass man diesen Wert auf dem Interface anpassen muss, weil gewisse Paket Grössen nicht mehr durch kommen. Dieses Phänomen tritt häufig bei DSL Verbindungen auf, über welche noch ein IPSec VPN Tunnel gehen. Dies zeigt sich dann anhand des Phänomens, dass der Tunnel up ist, die ICMP Pakete durch gehen (ich kriege eine Antwort über den PING vom Remote System), aber die Daten selber nicht durch den Tunnel gehen.

Die MTU-Grösse der von der FortiGate übertragenen Pakete kann angepasst werden um die Netzwerkleistung zu verbessern. Idealerweise sollte die MTU der Pakete mit der kleinsten MTU aller Netzwerke zwischen der FortiGate und dem Ziel identisch sein. Falls die von der FortiGate gesendeten Pakete grösser sind als die kleinste MTU, werden diese zerlegt / fragmentiert, was die Übertragung verlangsamt. Man kann leicht experimentieren, indem die MTU verringert wird um eine MTU Grösse für eine optimale Netzwerkleistung zu finden.

  • 68 bis 1500 Bytes für den statischen Modus
  • 576 bis 1500 Bytes für den DHCP-Modus
  • 576 bis 1492 Bytes für den PPPoE-Modus

Grössere Frame-Grössen (falls vom FortiGate-Modell unterstützt), bis zu 9216 Byte für NP2-, NP4- und NP6-beschleunigte Interfaces sind möglich. Diese Option ist nur für physische Interfaces verfügbar. Virtuelle Interface (vlan) welche einem physischen Interface zugeordnet sind, erben die MTU-Grösse des physischen Interfaces.

Die Interfaces gewisser FortiGate-Modelle unterstützen Frames, welche grösser als die herkömmlichen 1500 Byte sind. Jumbo-Frames werden bei FortiGate-Modellen, welche ab SOC2 (oder höher) oder NP4lite (ausser die FortiGate 30D) und bei Modellen der FortiGate 100D-Serie unterstützt. Wenn grössere Frames über eine Route gesendet werden, müssen alle Netzwerk-Devices auf diesem Weg die Framegrösse unterstützen. Falls dies nicht der Fall ist, werden die grösseren Frames nicht erkannt und dann verworfen.

Wenn man Datentraffic mit der Standardgrösse und grösseren Frames auf demselben Interfaces hat, kann das Routing allein diese nicht auf verschiedene Wege routen, die nur auf der Frame-Grösse basieren. Man kann jedoch VLANs verwenden, um sicherzustellen, dass der Datenverkehr mit grösseren Frames über Netzwerkgeräte geroutet wird, welche die grössere Grösse unterstütz. VLANs erben die MTU-Grösse von dem übergeordneten Interface. Das VLAN muss so konfiguriert werden, dass es beide Enden des Pfads, sowie alle Switches und Router entlang des Weges umfasst.

Die MTU-Paketgrösse kann konfiguriert werden. Wenn man eine MTU-Grösse wählt, welche grösser ist als jene die vom FortiGate-Modell unterstützt wird, kommt eine Fehlermeldung ("Paket müsste fragmentiert werden, DF-Flag ist jedoch gesetzt"). In dieser Situation soll man versuchen eine kleinere MTU-Grösse zu konfigureren, bis der Wert unterstützt wird und die Pakete nicht mehr fragmentiert werden müssen.

Achtung.png

Eine Änderung des MTU-Wertes kann den Internetzugang für eine kurze Zeit beeinträchtigen, da nach der Anpassung des Wertes ein Reboot der Hardware vorgenommen werden muss. Es wird empfohlen die MTU-Änderung in einem Wartungsfenster vorzunehmen oder den Kunden zu informieren, dass es zu einem Unterbruch kommt!

MTU Standardwerte: DHCP-Verbindung: 1500 PPPoE-Verbindung: 1492 Wird eine eigene VPN-Verbindung (via IPSec) aufgebaut, so muss nach dem ermitteln der "optimalen" MTU noch -100 gerechnet werden um den für das VPN korrekte MTU-Wert zu erlangen.

Die optimale MTU kann via CLI mit folgendem Befehl ermittelt werden: ping <<Zielhost>> -f -l 1492

Erscheint die Fehlermeldung "Paket müsste fragmentiert werden", ist der Wert noch zu hoch und muss weiter reduziert werden bis der Ping ohne Fehlermeldung durch geht.

Folgendermassen kann ich auf den Interfaces die MTU Werte anpassen:

Config cli.png Konfiguration über die CLI:
config system interface
     edit [INTERFACE]
          set mtu-override [enable|disable]
          set mtu [MTU_WERT]
     end
end

Beispiel:

config system interface
     edit internal1
          set mtu-ovveride enable
          set mtu 1492
     end
end
Achtung.png

Wenn die FortiGate im transparent Modus ist muss noch folgendes beachtet werden:
Wird auf einem Interface der MTU-Wert angepasst, muss auf allen Interface der MTU-Wert auf der FortiGate angepasst werden!


Auch interessant:

Wie kann ich auf der FortiGate ein Interface deaktivieren/aktivieren?

Es empfiehlt sich, jene Interfaces, welche auf der FortiGate nicht verwendet werden, administrativ herunter zu fahren und diese zu deaktivieren.

Dies kann via WebGui oder über die CLI vorgenommen werden. Am besten schreibt man einen Kommentar, wann und von wem das Interface deaktiviert wurde um die Transparenz zu erhöhen.

Im WebGui werden Interfaces, welche deaktiviert wurden grau dargestellt.

Config webgui.png Konfiguration über das WebGui:

Über das Menu Network --> Interfaces --> [Interface auswählen] in die Interface Konfiguration navigieren.

Fortinet-2722.jpg

Ganz nach unten scrollen, dann kann man im Menupunkt Miscellaneos unter Status die Aktion anwählen:

  • Enabled --> Interface aktivieren
  • Disabled --> Interface deaktivieren

Im "Comments"-Feld kann ein Kommentar eingefügt werden.

Fortinet-2723.jpg

In der Gesamtübersicht der Interfaces erkennt man die deaktivierten Interfaces anhand dessen dass diese hellgrau geschrieben sind:

Fortinet-2724.jpg
Config cli.png Konfiguration über die CLI:
config system interface
     edit [INTERFACE_NAME]
          set status [up|down]
          set description "[BESCHREIBUNG]"
     next
end

Beispiel:

config system interface
     edit internal7
          set status [up|down]
          set description "Administrativ down 26.05.2020 - mru"
     next
end

Den Interface Status kann ich folgendermassen überprüfen:

config system interface
edit internal7
                                                                                                        
(internal7) # get | grep status
cli-conn-status     : 0
status              : down <-- Interface Status 

Was sind die Bedingungen, damit ich eine Link Aggregation konfigurieren kann?

FortiOS 5x.svg FortiOS 6x.svg FortiOS 70.svg

Ein Interface ist nur unter folgenden Bedingungen für eine Link Aggregation verfügbar:

  • Es handelt sich um ein physisches Interface, nicht um eine VLAN-Interface
  • Das Interface ist nicht bereits Teil eines aggregierten Interface
  • Das Interfaces befindet sich in der gleichen VDOM wie das aggregierte Interfaces
  • Das Interface hat keine definierte IP-Adresse und ist nicht für DHCP oder PPPoE konfiguriert
  • Auf dem Interface ist kein DHCP- oder Relay-Server konfiguriert
  • Das Interface hat keine VLAN-SubInterfaces
  • Das Interface referenziert auf keine Firewall- oder Multicast-Regel, und auf keine VIP- oder IP-Pool Objekte
  • Es handelt sich nicht um ein HA-Heartbeat-Interface
Achtung.png

Wichtig ist, das eine Link Aggregation nur Interfaces benutzen kann, welche am gleichen NP angeschlossen sind oder durch eine ISF (Interne Switch Fabric) verbunden sind. Wie die Interfaces auf einer FortiGate verteilt sind, kann den Schematics entnommen werden.

Für die Schematics bitte uns kontaktieren, wir dürfen diese nur an eingetragene Fortinet Partnern weiterleiten.

Beispiele:
In diesem Fall können die Interfaces aggregiert werden:

Fortinet-2811.jpg

In diesem Fall können die beiden 10GB Interfaces nicht aggregiert werden, da diese jeweils an einem separaten NP angeschlossen sind:

Fortinet-2812.jpg

Sniffer Mode / CTAP

Administrator

Wie richte ich auf der FortiGate ein SSH Login mittels privatem Schlüssel ein?

FortiOS 5x.svg FortiOS 6x.svg FortiOS 70.svg

Damit ich mich als Administrator auf der FortiGate nicht immer mit dem Passwort authentifizieren muss, ist es möglich mich mittels einem privaten Schlüssel zu authentifizieren.

Dafür müssen zwei Schlüssel generiert werden. Zum Einen ein privater, und zum Andern ein öffentlicher Schlüssel. Ein gutes Tool um so ein Schlüsselpaar zu generieren ist der Putty Key Generator. Dieser ist unter folgendem Link abrufbar: https://www.puttygen.com/

Wenn der Puttygenerator gestartet wurde, kann das Paar ganz einfach generiert werden:

Config webgui.png Konfiguration im PuTTy Key Generator:
  1. Type auf RSA setzen.
  2. Bit Anzahl im Feld Number of bits in a generated key: angeben.
  3. Um den Key zu generieren den Button Generate anwählen
Fortinet-Fortinet-2701.jpg
  1. mit dem Maus-Cursor willkürlich und zufällig durch das Fenster bewegen, bis der grüne Balken gefüllt ist.
Fortinet-Fortinet-2696.jpg
  1. im Feld Key passphrase sollte man den privaten Schlüssel durch ein Passwort schützen.
  2. Den öffentlichen und privaten Schlüssel lokal abspeichern (Save public key und save privat key)
Fortinet-Fortinet-2697.jpg

Nun muss der Public Key auf die FortiGate impotiert werden.

Config cli.png Konfiguration über die CLI:
# config system admin
# edit [Administrator]
# set ssh-public-key1 "ssh-rsa [PublicKey Term]"
# end

nach SSH-RSA muss der öffentliche Schlüssel in einer Linie hereinkopiert werden.
Dabei ist darauf zu achten dass folgendes nicht mit kopiert wird:

---- BEGIN SSH2 PUBLIC KEY ----
Comment: "rsa-key-20200327"
---- END SSH2 PUBLIC KEY ----

Achtet darauf, dass der Public Key in einer Zeile, welche mit Anführungs-Zeichen beginnt und mit dem Schlusszeichen endet:

"ssh-rsa PublicKey in einer Linie"

Beispiel:

# config system admin
# edit admin
# set ssh-public-key1 "ssh-rsa AAAAB3NzaC....E2MSyQ=="
# end

Nun muss noch der SSH Client mit dem privaten Key konfiguriert werden. Wir empfehlen hierzu das Tool "PuTTy" (https://www.putty.org/) zu verwenden.

Config webgui.png Konfiguration im PuTTy:
  1. unter dem Menu "Session" den Hostname und den Port (Default 22) angeben
  2. Connection type wird SSH angewählt.
Fortinet-Fortinet-2698.jpg
  1. Über das Menu Connection -> SSH -> Auth muss bei Private key file for authentication: der Standort des privaten Keys angegeben werden.
Fortinet-Fortinet-2699.jpg

Ergebniss:
Wenn man sich jetzt über das Putty mit der FortiGate verbindet, muss man den Username angeben. Danach wird man automatisch ohne Passworteingabe auf der FortiGate authentifiziert.

Fortinet-Fortinet-2700.jpg

Config cli.png Konfiguration für Linux oder Mac OS X:

Schlüsselpaar generieren:
Folgendermassen kann man in der Konsole ein Schlüsselpaar generieren:

ssh-keygen -t rsa -b 4096

Unter Linux oder Mac OS X kann man sich folgendermassen auf die FortiGate über SSH verbinden:

ssh -i .ssh/key_rsa username@host

.ssh/key_rsa' bezieht sich auf den Pfad in welchem der private Schlüssel gespeichert wurde.

Beispiel:

ssh -i .ssh/key_rsa admin@10.60.60.2 

Wie kann ich für den Administrator "admin" das Passwort zurücksetzen wenn ich dieses vergessen habe?

Dieser Artikel ist nur bis zum FortiOS 7.2.3 relevant

Um ein Passwort des standard Administrators "admin" neu zu setzen wenn dies nicht mehr bekannt ist, gelten folgende Voraussetzungen:

  • Seriennummer des Devices muss bekannt sein (Rückseite des Gerätes) zBsp FGT60E4613015338
  • Das FortiGate Device muss neu gestartet werden (Strom aus/ein)
  • Der Zugriff muss lokal über den Konsolen-Port erfolgen (RS-232)
Config cli.png Konfiguration über die CLI:

Um das Passwort für den standard Administrator "admin" zurück zu setzen muss ein Zugriff via einen seriellen Console-Port (RS-232) sicher gestellt werden:

px500
8 bits 
no parity 
1 stop bit 
9600 baud
Flow Control = none 

Nach dem man mit der FortiGate über den Konsolen-Port verbunden ist, muss die FortiGate neu gestartet werden. Dies muss über einen Hardware-Reboot (Strom ausschalten, Strom einschalten) geschehen. Wenn auf der CLI die Loging Aufforderung kommt muss man sich relativ schnell mit dem User ‘’’maintainer’’’ und dem Passwort bcpb[Serie Nummer der FortiGate] identifizieren. Es ist darauf zu achten, dass die Serienummer in GROSSBUCHSTABEN geschrieben wird.

Tipp: bcpb[SERIENUMMER] in ein Textfile schreiben und kopieren, damit das Passwort mittels copy/ paste eigegeben werden kann.

User     = 	maintainer
Password = 	bcpbFGT60E4613015338
Welcome!

Nun kann das Passwort des standard Administrators "admin" neu konfiguriert werden:

# config system admin
# edit admin
# set password [neues Passwort]
# end

Dieser Vorgang wird nach 2 Minuten deaktiviert. Dies bedeutet dass nach einem "power on" innerhalb 2 Minuten eingeloggt werden muss da das Login anhand des Users "maintainer" nach 2 Minuten deaktiviert wird. Dieser Vorgang wird auf jedem Fortinet Device benutzt um das Passwort des standard Administrators "admin" wiederherzustellen. Es gibt keine andere Möglichkeit dieses Passwort via Remote Zugriff, zBsp SSH, wiederherzustellen! Diese Funktion für den User "maintainer" resp. dessen Login kann unter der globalen Konfiguration im FortiOS deaktiviert werden. Wird dies durchgeführt gibt es keine Möglichkeit mehr das Passwort des standard Administrators zurück zu setzen:

Es ist möglich den Maintainer Zugriff für das Gerät zu deaktivieren:

Config cli.png Konfiguration über die CLI:
# config system global
# set admin-maintainer [enable | disable]
# end
Achtung.png

Wenn der admin-maintainer deaktiviert wird, gibt es keine Möglichkeit mehr, dass Passwort zu resetten. Auch der technische Support von Fortinet hat keine Möglichkeit mehr, dass Passwort zurückzusetzen!


Tipp.png

Achtung ab FortiOS 7.2.4 gibt es diesen User nicht mehr. Das bedeutet, wenn das Admin Passwort verloren geht, muss die FortiGate neu gestaggt werden!
Mehr Informationen in den Release Notes: https://docs.fortinet.com/document/fortigate/7.2.4/fortios-release-notes/230510/changes-in-default-behavior Notiz 829544

Wie kann ich die Dauer des Admin-Lockouts verkürzen?

Falls ein Administrator das Passwort mehrfach falsch eingibt, erhält er im WebGUI-Anmeldefenster die Meldung Too many login failures. Please try again in a few minutes..., gerät somit in ein Admin-Lockout, und muss ggf. mehrere Minuten (je nach Einstellung) warten, bis er sich wieder einloggen darf.

Der Admin-Lockout kann umgangen bzw. verkürzt werden mittels wenigen CLI-Einstellungen:

Config cli.png Konfiguration über die CLI:
Beispiel: Z.Z. dauert der Admin-Lockout 300s gemäss folgender (Vor-)Konfiguration:
   
   FGT# config system global
   FGT(global) set admin-lockout-duration 300 -> aktuelle Admin-Lockout-Dauer

Somit muss der Administrator 300s bzw. 5min warten, bis er einen neuen Login-Versuch tätigen darf. Falls der Administrator dringend auf die FortiGate zugreifen muss, kann der Admin-Lockout provisorisch verkürzt werden - z.B. auf 20s:
   
   FGT# config system global
   FGT(global) set admin-lockout-duration 20 -> neue Admin-Lockout-Dauer

Bis zum neuen Login-Versuch muss der Administrator nur noch 20s warten. Es wird empfohlen, die Admin-Lockout-Dauer anschliessend wieder auf den vorherigen Wert zu erhöhen.
Hinweis.svg

Admin-Lockout-Dauer ist orientiert sich an der IP-Addresse des Hosts/Clients, von welchem der Administrator auf die FortiGate zugreift. Der Admin-Lockout kann folglich umgangen werden, indem sich der Administrator von einer anderen IP-Adresse ausgehend mit der FortiGate verbindet.

19.08.2022 - chris

Wie kann ich einen Login Disclaimer auf der FortiGate konfigurieren?

FortiOS 6x.svg FortiOS 70.svg

Der Loging Disclaimer ist standartmässig auf der FortiGate nicht aktiv. Möchte ich, dass beim einloggen auf die FortiGate eine Warnmeldung erscheint, muss ich dies über die CLI konfigurieren.
Es gibt zwei Varianten:

1. Eine Warnmeldung bevor das Loging-Prompt erscheint (WebGui oder CLI):

Config cli.png Konfiguration über die CLI:
config system global
set pre-login-banner [enable | disable] --> enable für einschalten.
end

Bevor ich jetzt auf das Anmeldefenster komme wird die vordefinierte Warnmeldung angezeigt:

Fortinet-2503.jpg

Der User muss akzeptieren, dass er auf das Anmeldefenster kommt.

2. Eine Warnmeldung nachdem ich mich auf die FortiGate eingeloggt habe:

Config cli.png Konfiguration über die CLI:
config system global
set post-login-banner [enable | disable] --> enable für einschalten.
end

Nach dem Einloggen wird dem User eine Warnmeldung angezeigt, bei welcher der User bestätigen muss.

Fortinet-2504.jpg

Die Templates können auch nach eigenen Wünschen angepasst werden:

Config webgui.png Konfiguration über das WebGui:
  1. System -> Replacement Messages
  2. Extendet View anwählen
  3. die beiden Templates sind unter dem Titel "Administrator" abgelegt.
    1. Post-login Disclaimer Message : Meldung nach dem einloggen auf die FortiGate
    2. Pre-login Disclaimer Message : Meldung vor dem Logging-Fenster
Fortinet-2505.jpg
  1. Das gewünschte Template klicken um es zu editieren.
  2. In der linken Hälfte sieht man das Ergebnis, auf der rechten Seite kann der Text formatiert werden.
  3. Mit dem "Restore Default" Button kann wieder das default Template hergestellt werden.
  4. Mit "Save" kann die Änderung bestätigt werden.
Fortinet-2506.jpg 

User / Gruppe

Wie konfiguriere ich eine Usergruppe?

FortiOS 60.svg FortiOS 62.svg

Config webgui.png Konfiguration über das WebGui:
  1. User & Device -> User Groups Createnew.jpg
  2. Für eine lokale Gruppe auf der FortiGate den Type "Firewall" auswählen
  3. Gruppenname definieren
  4. Members auf das + und die gewünschten User hinzufügen
  5. mit OK die Gruppe anlegen
Fortinet-2532.jpg
  1. In die gewünschte Policy gehen
  2. Die Usergruppe muss in der Policy bei den Source unter User ausgewählt werden
  3. Der Rest der Policy wie gewohnt konfigurieren.
Fortinet-2533.jpg
Config cli.png Konfiguration über die CLI:

Die User können mit folgendem Syntax der Gruppe "USER" "NEXT-USER" .... "END-USER" hinzugefügt werden.

config user group
    edit "gr-Wartung"
        set member "user1" "user2"
    next
end

Bei einer Firewall Policy wird die Usergruppe mittels folgendem Befehl set Groups <GRUPPEN_NAME> hinzugefügt

config firewall policy
    edit <POLICY_ID>
        set name "O_Wartung->Internet"
        set srcintf "internal"
        set dstintf "wan1"
        set srcaddr "net-192.168.1.0-24"
        set dstaddr "net-0.0.0.0-00"
        set action accept
        set schedule "always"
        set service "HTTP" "HTTPS"
        set logtraffic all
        set groups "gr-Wartung"
        set nat enable
    next
end

Im Monitor können authentifizierte User angeschaut werden:

Config webgui.png Konfiguration über das WebGui:

Über den Menupunkt Monitor -> Firewall User Monitor können die momentan eingeloggten User eingesehen werden:

Fortinet-2534.jpg

Um einen User zu deauthorizieren, muss der entsprechende User mittels Rechtsklick angewählt werden und dann der Button Deauthenticate selektiert werden.

Fortinet-2535.jpg

Wie eröffne ich einen User für die Zweifaktor Authentifizierung über SMS?

FortiOS 60.svg FortiOS 62.svg FortiOS 64.svg

Damit es eine optimale Sicherheit bei der User-Authentifizierung gibt, ist die Möglichkeit einen Token anzubinden eine sehr gute Lösung. Dabei gibt der User sein Passwort ein und bekommt noch einen zweiten Faktor zugesendet. Es gibt dabei die Variante, welche dem User eine Textnachricht auf sein Mobile Gerät sendet. Der User muss diesen Zusatz mit eingeben um eine erfolgreiche Authentifizierung zu erlangen. Auf der FortiGate wird die SMS Authentifizierung beim User konfiguriert. Wir haben die Möglichkeit den kostenpflichtigen FortiGuard SMS Dienst von Fortinet zu nutzen.

FortiGate:FAQ#Wie_kann_ich_den_Lizenzkey_f.C3.BCr_den_FortiGuard_SMS_Service_auf_der_FortiGate_einlesen.3F

Config webgui.png Konfiguration über das WebGui:
  1. User & Device -> User Definition Createnew.jpg
  2. Local User auswählen um den User auf der FortiGate zu erfassen
  3. Next
Fortinet-2525.jpg

  1. Username definieren
  2. Passwort für den User definieren
  3. Next
Fortinet-2526.jpg

  1. optional kann eine Email-Adresse angegeben werden
  2. SMS Schalthebel aktivieren
  3. "Contry Dial Code" auf das gewünschte Land setzen
  4. Phone Number wird die Mobile Telefonnummer ohne Null voraus angegeben. Die Mobile Nummer muss im folgenden Format konfiguriert werden: [Ländercode][Mobilenummer ohne Null voraus] -> z.B. 079 123 45 67 wird so hinterlegt : 41791234567
  5. Next

Hinweis: Der Parameter set two-factor sms muss über die CLI konfiguriert werden.

Fortinet-2527.jpg

  1. Wenn eine Usergruppe vorhanden ist, kann diese über den Schalter "User Group" ausgewählt werden, so wird der User direkt dieser Gruppe hinzugefügt
  2. Submit um den User fertig einzurichten
Fortinet-2528.jpg

Jetzt muss der User bei der entsprechenden Regel in die Source eingefügt werden.

  1. Policy Source auf User gehen und den User oder die Gruppe auswählen
  2. Die Policy wie gewohnt einrichten (Destination Services NAT usw...)
Fortinet-2529.jpg
Config cli.png Konfiguration über die CLI:

Den User konfigurieren:

config user local
    edit "user1"
        set type Password
        set two-factor sms
        set sms-phone "41791234567"
        set password "password"
    next
end
Achtung.png

Der set two-factor sms Parameter ist wichtig, damit dem User mitgeteilt wird, dass die SMS Zweifaktor-Authentifizierung aktiviert wird. Leider ist diese Option im WebGui beim User erst ersichtlich, wenn sie auf der CLI einmal konfiguriert wurde.


Bei der Policy muss der User in der Source angegeben werden, damit die Authentifizierung gezogen wird. In dieser Regel sind "ANY Services" konfiguriert. Für einen produktiven und sicheren Betrieb empfiehlt sich nur die Services freizuschalten, welche auch benötigt werden. Weiter empfiehlt es sich das entsprechende UTM Features zu aktivieren um sich optimal abzusichern.

config firewall policy
    edit <POLICY-ID>
        set name "O_UserAuthent->Internet"
        set srcintf "internal"
        set dstintf "wan1"
        set srcaddr "net-192.168.1.0-24"
        set dstaddr "net-0.0.0.0-00"
        set action accept
        set schedule "always"
        set service "ALL"
        set logtraffic all
        set users "user1"
        set nat enable
    next
end
Config webgui.png Resultat:

Wenn wir jetzt eine Anfrage über den Webbrowser in das Internet vornehmen wird ein Loging Fenster im Browser erscheinen:

Fortinet-2530.jpg

Nachdem sich der user1 mit seinem Passwort authentifiziert hat, kommt noch die SMS abfrage. Der User hat jetzt 60 Sekunden Zeit den SMS-Code einzutippen. Nach dieser Zeit ist der ausgelieferte Code erneut ungültig.

Fortinet-2531.jpg

HowTo Dokument : Datei:HowTo FortiOS 2FA.pdf

Wie kann ich auf der FortiGate die Userauthentifizierung Troubleshooten?

Im GUI findet man unter Firewall Policy nebst Namen, Source, Destination, Service etc. auch die Anzahl Bytes, welche die Firewall Policy passieren. Bytes (bzw. deren Anstieg) dienen als wichtiger Parameter bei der Analyse von Authentifizierungsproblemen. Beispielsweise, wenn ein User keine Aufforderung zur Authentifizierung erhält, obwohl die Firewall den Traffic analysiert und somit die Anzahl Bytes ansteigt.

CLI bietet mehrere Befehle, um zusätzliche Informationen zu fehlgeschlagenen Authentifizierungsversuchen sowie den entsprechenden Usern zu gewinnen:

Config cli.png Konfiguration über die CLI:

Anzeigen der authentifizierten User und deren IP Addressen:

# diagnose firewall auth list

Bereinigen sämtlicher autorisierter User:

# diagnose firewall auth clear

(Hinweis: Hilfreich, wenn mehrere User nach einem System- oder Gruppenwechsel neu authentifiziert werden müssen)

Troubleshooting bei aktiver Authentifizierung:

# diagnose debug application fnbamd -1

(Hinweis: Immer zusammen mit # diagnose debug enable)

Testen des prehared key zwischen FortiGate und RADIUS server:

# diagnose test authserver radius-direct <ip> <port> <secret>

Testen der LDAP Authentifizierung für bestimmte User:

# diagnose test authserver ldap <server_name> <username> <password>

Firewall Regeln

Was ist eine Local-In Policy?

FortiOS 56.svg FortiOS 6x.svg FortiOS 70.svg

Policies steuern den Traffic durch die FortiGate. Die FortiGate stellt auch die Möglichkeit, den internen Traffic (Management-Traffic) zu kontrollieren. Jedes Interface enthält eine Konfiguration für den erlaubten Zugriff, um den Managementzugriff für bestimmte Protokolle zu ermöglichen. Lokale Firewall Regeln werden automatisch eingerichtet, um den Zugriff für alle Benutzer zu ermöglichen. Lokale Firewall-Regeln gehen noch einen Schritt weiter, indem sie den Benutzerzugriff aktivieren oder einschränken.
Man kann lokale Firewall-Regeln für den administrativen Zugriff, das Routing, die zentrale Verwaltung durch den FortiManager, oder weitere Zwecke benutzen:

  • SNMP
  • Syslog
  • Alert Email
  • FortiManager Remote IP
  • FortiGuard Services
  • FortiAnalyzer Logtransfer
  • NTP
  • DNS
  • AutorisierungS Anfragen wie RADIUS
  • FSSO
Config webgui.png Konfiguration über das WebGui:

Local-In-Firewall Regeln können nur in der CLI erstellt oder bearbeitet werden. Die vorhandenen Local-In-Policies werden im WebGui angezeigt. Damit man die automatisch angelegten LocalIn Firewallregeln sieht muss man das Feature freischalten:

  1. Menu System -> Feature Visibiltiy -> Local In Policy aktivieren.
  2. Danach kann man unter Policy & Objects das Menu Local In Policy finden.
Fortinet-2662.jpg
Konfiguration über die CLI:
# config system settings
# set gui-local-in-policy enable
# end

Um das ganze zu veranschaulichen ein kleines Beispiel:

Config webgui.png Konfiguration über das WebGui:

Wir konfigurieren auf dem Interface (internal) die Services PING(icmp 8), HTTPS (tcp443), SSH(tcp22) und FMG-Access(tcp541).

Fortinet-2663.jpg

Sobald wir diese Management Methoden konfiguriert haben und die Interface Konfiguration verlassen, sehen wir, dass in den LocalIn auf dem Interface internal die entsprechenden Ports geöffnet sind:

Fortinet-2664.jpg

Der HTTPS wird als TCP4443 (Admin Port) im Tap Authentication angezeigt und ist auf diesem Screenshot nicht ersichtlich!

Wichtig.svg

Die manuell konfigurierten Local-In Firewall Regeln werden im WebGui nicht angezeigt!

Wie kann ich eine manuelle Local-In Policy konfigurieren?

FortiOS 56.svg FortiOS 6x.svg FortiOS 70.svg

Manuell angelegte Local In Policy sind von der Hyrarchie her prioritär der automatisch angelegten Local In Policies. Es ist jedoch nicht möglich, die automatischen Local In Policies zu manipulieren. Durch eine manuelle Local In Policy kann sie aber übersteuert werden.
Manuelle Local In Policies können nur über die CLI konfiguriert werden. Dies funktioniert wie folgt:

Config cli.png Konfiguration über die CLI:
 
# config firewall [local-in-policy | local-in-policy6] 
# edit [Policy ID definieren]
# set intf [Source Interface]
# set srcaddr [Source IP Adresse]
# set dstaddr [Destinations IP Adresse]
# set action [accept | deny]
# set service [Service Name]
# set schedule [Gültigkeit der Policy]
# set comments "[Fakultativer Kommentar]"
# end

Falls ich das HA-Management Interface als dediziertes Management Interface benutzen will, muss ich dies in der entsprechenden Local-In Policy mit dem Befehl set ha-mgmt-intf-only enable konfigurieren.

Es ist darauf zu achten, dass die Objekte welche benutzt werden, im Vorfeld konfiguriert worden sind (Beispiel Source und Destinations Netze / Host)
In diesem Beispiel soll der SMB Traffic vom Interface internal7 mit dem Source Netz 10.10.250.0/24 auf sämtliche Netze blockiert werden:

Config cli.png Konfiguration über die CLI:
 
# config firewall local-in-policy 
# edit 1
# set intf internal7
# set srcaddr net-10.10.250.0-24
# set dstaddr all
# set action deny
# set service SMB
# set schedule alsways
# set comments "Block SMB from internal 7"
# end

Um die Local In Policy zu deaktivieren, oder wieder zu aktivieren muss dies in der Policy selber konfiguriert werden:
Die Local-In Policy aktiviert man mit: set status enable
Die Local-In Policy deaktiviert man mit:set status disable

Config cli.png Konfiguration über die CLI:
 
# config firewall local-in-Policy
# edit [Policy_ID]
# set status [enable | disable] -> aktivieren oder deaktivieren
# end
Wichtig.svg

Die manuell konfigurierten Local-In Firewall Regeln werden im WebGui nicht angezeigt!


edit 5.09.2023 - 4Tinu

Wie erstelle ich ein Adressenobjekt auf der FortiGate?

FortiOS 64.svg FortiOS 70.svg FortiOS 72.svg FortiOS 74.svg

Damit in den Firewallregeln einzelne IP Adresse oder IP Netze als Source oder Destination benutzt werden können, müssen wir zuerst auf der FortiGate diese Objekte anlegen. Dabei sollte geachtet werden, dass man erkennt, was das Objekt beinhaltet und was es für eine Funktion hat. Eine nicht optimale Namensgebung wäre zum Beispiel : Host1, Host2 Host3 usw... Am besten hält man sich an eine Namenskonvension, damit alle Administratoren auf der FortiGate den gleichen Syntax verwenden.

In meinem Beispiel sehen die Objekte so aus:

[net-netzFunktion-vlan-IPAdresse-Netzmaske] --> net-slan-vl50-10.172.30.0-24 

Es gibt die Möglichkeit die Objekte farblich zu unterscheiden. So hat man die Gelegenheit, verschiedene Netzarten oder Zonen in welchen die Netze sind farblich zu unterscheiden.
Folgende Farben stehen zu verfügung

FarbCode: CLI Code Farbe
#B4B4B4 1
#236093 2
#239330 3
#932323 4
#FF8B8B 5
#FF0000 6
#CC0000 7
#CC5F00 8
#FF8000 9
#FFCF32 10
#CCAE00 11
#AB822F 12
#66CC00 13
#74AD74 14
#009933 15
#006600 16
#0097CC 17
#00AAFF 18
#0041CC 19
#4200CC 20
#8200CC 21
#C500CC 22
#FF00FF 23
#CC0071 24
#660000 25
#999999 26
#666666 27
#FFB162 28
#AB9770 29
#7A94CC 30
#C982CC 31
#484B3A 32

Config webgui.png Konfiguration über das WebGui:

Neues Adressobjekt erstellen:

Fortinet-3318.jpg
  1. Navigiere über das Menu Policy & Objects
  2. wähle Create New und dann Address aus. Es öffnet sich folgende Maske um das Adressobjekt zu definieren:
Fortinet-3319.jpg
  1. ObjektName gemäss Konvension definieren
  2. FarbCode auswählen Fortinet-3317.jpg
  3. Objekt kann an ein spezfifisches Interface gebunden werden. Wenn geplannt ist, ein FortiManager für die Verwaltung der FortiGate einzusetzen, empfehlen wir diese Option auf ANY zu belassen.
  4. Um ein IPv4 Netzwerk oder ein IP Host zu definieren muss die Option Subnet ausgewählt werden
  5. Hier wird die IP Adresse definiert inklusive Netzmaske. Wenn ein einzelner Host genomen wird, muss die Maske /32 oder 255.255.255.255 konfiguriert werden
  6. Wenn diese Option aktiviert ist, kann in der statischen Routing Konfiguration dieses Netzwerk Objekt benutzt werden.
  7. Kommentare schaffen Klarheit und erleichtern für neue Administratoren die Arbeit
  8. Mit OK wird das Adresseobjekt erstellt

Um ein Adressobjekt über die CLI zu konfigurieren, muss folgender Syntax verwendet werden:

Config cli.png Konfiguration über die CLI:
 
config firewall address
    edit "net-slan-vl50-10.172.30.0-24"        <-- Adressen Name (Objekt Name) 
        set type ipmask                        <-- Objekt Typ (ipmask für Subnetze oder Hosts)
        set comment "ServiceLan vlan 50"       <-- Kommentarfeld
        set associated-interface ''            <-- Objekt auf ein Interface binden lassen (ACHTUNG FortiManager)
        set color 18                           <-- FarbCode hinterlegen (siehe Tabelle oben)
        set allow-routing disable              <-- Option um das Adressobjekt in der Static Routing Konfiguration benutzen zu können
        set fabric-object disable              <-- Objekt wird mit der Securityfabric synchronisiert
        set subnet 10.172.30.0 255.255.255.0   <-- IP Adresse und Netzmaske definieren
    next
end

add 11.07.2023 - 4Tinu

Wie kann ich geographisch gebundene Adressobjekte erstellen?

FortiOS 64.svg FortiOS 70.svg FortiOS 72.svg FortiOS 74.svg


Es ist möglich, dass man geographisch zugeordnete IP Netze als Adressobjekt auf der FortiGate erstellen kann. Dabei kommen die Informationen der Adressen von der FortiGuard. Diese aktuallisieren ca. Monatlich diese Datenbank. Damit so ein Adressenobjekt als Source oder Destination benutzt werden kann, muss ein Geo-Adressenobjekt erstellt werden:


Config webgui.png Konfiguration über das WebGui:
  1. Über das MenuPolcy & Objects -> Addresses -> Create New -> Address ein neues Adressenobjekt erstellen.
  2. Beim Type muss Geography ausgewählt werden.
Fortinet-3116.jpg
  1. Nun kann unter Country/Region über die Lupe gesucht werden (einfach beginnen das Land in Englisch einzutippen)
  2. das gewünschte Land/Region auswählen. In unserem Fall ist es Russland
  3. Mit OK wird das Adressobjekt erstellt:
Fortinet-3117.jpg

In der Gesamtübersicht findet man alle GeoIP Objekte unter dem Abschnitt Geography'

Fortinet-3118.jpg

Diese Objekte können jetzt in einer Firewall Regel als Source oder Destination verwendet werden.

Config cli.png Konfiguration über die CLI:

Genereller Syntax:

config firewall address
    edit "[OBJEKTNAME]"                 <-- Objektname
        set type geography              <-- Adresstype geography verwenden
        set comment "[KOMMENTAR]"       <-- Kommentar für das Adressobjekt
        set country "[LANDESABKÜRZUNG]" <-- Mit ? kommt die Liste der Regionen                          
    next
end

Das Adressobjekt für Russland wird in der CLI folgendermassen konfiguriert:

 config firewall address
     edit "net_geo_russland"
         set type geography
         set comment "Geo IP Russland"
         set color 6
         set country ''"RU"''
     next
 end

Liste der Länder:

ZZ    Reserved
O1    Other Country
AD    Andorra
AE    United Arab Emirates
AF    Afghanistan
AG    Antigua and Barbuda
AI    Anguilla
AL    Albania
AM    Armenia
AN    Netherlands Antilles
AO    Angola
AQ    Antarctica
AR    Argentina
AS    American Samoa
AT    Austria
AU    Australia
AW    Aruba
AX    Aland Islands
AZ    Azerbaijan
BA    Bosnia and Herzegovina
BB    Barbados
BD    Bangladesh
BE    Belgium
BF    Burkina Faso
BG    Bulgaria
BH    Bahrain
BI    Burundi
BJ    Benin
BL    Saint Bartelemey
BM    Bermuda
BN    Brunei Darussalam
BO    Bolivia
BQ    Bonaire, Saint Eustatius and Saba
BR    Brazil
BS    Bahamas
BT    Bhutan
BV    Bouvet Island
BW    Botswana
BY    Belarus
BZ    Belize
CA    Canada
CC    Cocos (Keeling) Islands
CD    Congo, The Democratic Republic of the
CF    Central African Republic
CG    Congo
CH    Switzerland
CI    Cote d'Ivoire
CK    Cook Islands
CL    Chile
CM    Cameroon
CN    China
CO    Colombia
CR    Costa Rica
CU    Cuba
CV    Cape Verde
CW    Curacao
CX    Christmas Island
CY    Cyprus
CZ    Czech Republic
DE    Germany
DJ    Djibouti
DK    Denmark
DM    Dominica
DO    Dominican Republic
DZ    Algeria
EC    Ecuador
EE    Estonia
EG    Egypt
EH    Western Sahara
ER    Eritrea
ES    Spain
ET    Ethiopia
FI    Finland
FJ    Fiji
FK    Falkland Islands (Malvinas)
FM    Micronesia, Federated States of
FO    Faroe Islands
FR    France
GA    Gabon
GB    United Kingdom
GD    Grenada
GE    Georgia
GF    French Guiana
GG    Guernsey
GH    Ghana
GI    Gibraltar
GL    Greenland
GM    Gambia
GN    Guinea
GP    Guadeloupe
GQ    Equatorial Guinea
GR    Greece
GS    South Georgia and the South Sandwich Islands
GT    Guatemala
GU    Guam
GW    Guinea-Bissau
GY    Guyana
HK    Hong Kong
HM    Heard Island and McDonald Islands
HN    Honduras
HR    Croatia
HT    Haiti
HU    Hungary
ID    Indonesia
IE    Ireland
IL    Israel
IM    Isle of Man
IN    India
IO    British Indian Ocean Territory
IQ    Iraq
IR    Iran, Islamic Republic of
IS    Iceland
IT    Italy
JE    Jersey
JM    Jamaica
JO    Jordan
JP    Japan
KE    Kenya
KG    Kyrgyzstan
KH    Cambodia
KI    Kiribati
KM    Comoros
KN    Saint Kitts and Nevis
KP    Korea, Democratic People's Republic of
KR    Korea, Republic of
KW    Kuwait
KY    Cayman Islands
KZ    Kazakhstan
LA    Lao People's Democratic Republic
LB    Lebanon
LC    Saint Lucia
LI    Liechtenstein
LK    Sri Lanka
LR    Liberia
LS    Lesotho
LT    Lithuania
LU    Luxembourg
LV    Latvia
LY    Libyan Arab Jamahiriya
MA    Morocco
MC    Monaco
MD    Moldova, Republic of
ME    Montenegro
MF    Saint Martin
MG    Madagascar
MH    Marshall Islands
MK    Macedonia
ML    Mali
MM    Myanmar
MN    Mongolia
MO    Macao
MP    Northern Mariana Islands
MQ    Martinique
MR    Mauritania
MS    Montserrat
MT    Malta
MU    Mauritius
MV    Maldives
MW    Malawi
MX    Mexico
MY    Malaysia
MZ    Mozambique
NA    Namibia
NC    New Caledonia
NE    Niger
NF    Norfolk Island
NG    Nigeria
NI    Nicaragua
NL    Netherlands
NO    Norway
NP    Nepal
NR    Nauru
NU    Niue
NZ    New Zealand
OM    Oman
PA    Panama
PE    Peru
PF    French Polynesia
PG    Papua New Guinea
PH    Philippines
PK    Pakistan
PL    Poland
PM    Saint Pierre and Miquelon
PN    Pitcairn
PR    Puerto Rico
PS    Palestinian Territory
PT    Portugal
PW    Palau
PY    Paraguay
QA    Qatar
RE    Reunion
RO    Romania
RS    Serbia
RU    Russian Federation
RW    Rwanda
SA    Saudi Arabia
SB    Solomon Islands
SC    Seychelles
SD    Sudan
SE    Sweden
SG    Singapore
SH    Saint Helena
SI    Slovenia
SJ    Svalbard and Jan Mayen
SK    Slovakia
SL    Sierra Leone
SM    San Marino
SN    Senegal
SO    Somalia
SR    Suriname
SS    South Sudan
ST    Sao Tome and Principe
SV    El Salvador
SX    Sint Maarten
SY    Syrian Arab Republic
SZ    Swaziland
TC    Turks and Caicos Islands
TD    Chad
TF    French Southern Territories
TG    Togo
TH    Thailand
TJ    Tajikistan
TK    Tokelau
TL    Timor-Leste
TM    Turkmenistan
TN    Tunisia
TO    Tonga
TR    Turkey
TT    Trinidad and Tobago
TV    Tuvalu
TW    Taiwan
TZ    Tanzania, United Republic of
UA    Ukraine
UG    Uganda
UM    United States Minor Outlying Islands
US    United States
UY    Uruguay
UZ    Uzbekistan
VA    Holy See (Vatican City State)
VC    Saint Vincent and the Grenadines
VE    Venezuela
VG    Virgin Islands, British
VI    Virgin Islands, U.S.
VN    Vietnam
VU    Vanuatu
WF    Wallis and Futuna
WS    Samoa
XK    Kosovo
YE    Yemen
YT    Mayotte
ZA    South Africa
ZM    Zambia
ZW    Zimbabwe

edit 5.09.2023 - 4Tinu

Wie kann ich die Geo-IP Datenbank aktualisieren?

FortiOS 64.svg FortiOS 70.svg

Damit die im Kapitel 39.9 beschriebenen Geo-IP Adress-Objekte (sowie die entsprechenden FW-Policies) effektiv sind, muss die dazugehörige Datenbank (FortiGate Geo-IP Database) zeitgemäss sein. Diese wird monatlich durch FortiGuard aktualisiert. Es gibt zusätzlich die Option, die Geo-IP Datenbank manuell via. CLI zu aktualisieren.


Schritt 1: Aktuelle Version der Geo-IP Datenbank überprüfen

Config cli.png Konfiguration über die CLI:
   # diag autoupdate versions | grep -A6 Geo

Beispiel-Output: 

IP Geography DB
---------
Version: 3.00113
Contract Expiry Date: n/a
Last Updated using scheduled update on Wed Aug 3 20:09:12 2022
Last Update Attempt: Tue Aug 15 14:32:02 2022
Result: No Updates

Note: As at Aug 15, 2022 the latest Geo-IP DB is 3.00113

Schritt 2 (Falls aktuelle DB veraltet ist): Manuelles Update durchführen

Config cli.png Konfiguration über die CLI:
   # execute update-geo-ip

Somit ist sichergestellt, dass die Geo-IP Datenbank sowie die erstellten Geo-IP Adress-Objekte up-to-date sind, und in den entsprechenden FW-Policies z.B. als Source verwendet werden können.


18.08.2022 - chris

Was sind ISDB Objekte?

FortiOS 64.svg FortiOS 70.svg

Die ISDB (Internet Service Datenbank) ist eine Datenbank. Diese Datenbank enthält eine Liste von den gebräuchlichsten Internetdiensten. Dabei sind die IP-Adressen, IP-Protokolle und Portnummern enthalten, die diese Dienste nutzen. Die FortiGate lädt in regelmässigen Abständen die neueste Version dieser Datenbank von FortiGuard auf die FortiGate herunter.

Config webgui.png Konfiguration über das WebGui:

Unter dem Menu System->FortiGuard->Licence Information-> Firmware&General Updates findet man die Internet Service Database Definitions:

Fortinet-3094.jpg

Diese ISDB Objekte können in Firewall Regeln als Source oder Destinationen ausgewählt werden. Dies ist sehr praktisch, da zum Beispiel für die Office365 Zugriffe ansonsten über 660000 Adressobjekte manuell erstellt werden müssten.

Config webgui.png Konfiguration über das WebGui:

Mit dem Mauszeiger über das ISDB Objekt fahren, damit das Menu erscheint, in welchem man Informationen über dieses ISDB Objekt enthält, wie Anzahl IP-Adressen, IP-Netze usw.

Fortinet-3095.jpg

Wenn auf die Detail Ansicht geklickt wird, kann man die ganze Liste mit den IP-Adressen und Services einsehen:

Fortinet-3096.jpg

Die ISDB Objekte können in einer Firewall Regel als Source oder als Destination benutzt werden. Dabei ist zu beachten, dass man entweder ISDB Objekte oder klassische IP-Objekte benutzen kann. Kombiniert können diese nicht werden.

In diesem Beispiel wird als Destination das ISDB Objekt für Office365 benutzt. Dabei muss beachtet werden, dass man auf ‘’Internet Service’’ klickt, um die Liste der ISDB Dienste zu erhalten.

Config webgui.png Konfiguration über das WebGui:

Um den gewünschten Dienst schneller zu finden kann bei der Lupe auch gesucht werden (z.B Office)

Die verfügbaren Services werden farblich markiert und sortiert.

Fortinet-3097.jpg

Nun kann der gewünschte ISDB Service selektiert werden und die Firewall Regeln ansonsten wie gewohnt konfiguriert werden.

Hinweis.svg

Bei Destination die noch konfigurieren Adresse Objekte wie zum Beispiel all per x aus der Liste entfernen. Es kommt eine Fehlermeldung, dass entweder Adressobjekte oder ISDB Dienste benutzet werden dürfen.

Fortinet-3098.jpg

Somit können für gewisse Services spezielle Firewall Regeln mit den entsprechenden Internetdiensten erstellt werden. Ganz praktisch ist dies bei SD-WAN Regeln. So ist es möglich, dass gewisse Dienste wie Google nur über das Interface wan1 geroutet werden und andere Dienste über mehrere Interfaces.

Session

Wie kann ich auf der CLI eine bestimmte Session anschauen?

FortiOS 56.svg FortiOS 6x.svg FortiOS 70.svg

Mit dem Befehl diagnose sys session list wird die momentane Session Liste angezeigt. Wenn ich jetzt aber eine bestimmte Session zum Beispiel von einer bestimmten Source zu einer bestimmten Destination anschauen will muss ich einen Filter setzen.

Mit dem Befehl diagnose sys session filter clear werden alle momentan aktiven Filter gelöscht.

Mit diagnose sys session filter ? kann eine Liste angezeigt werden, welche Optionen alle zu Verfügung stehen:

Config cli.png Konfiguration über die CLI:
diagnose sys session filter
vd                Index of virtual domain. -1 matches all.
vd-name           Name of virtual domain. -1 or "any" matches all.
sintf             Source interface.
dintf             Destination interface.
src               Source IP address.
nsrc              NAT'd source ip address
dst               Destination IP address.
proto             Protocol number.
sport             Source port.
nport             NAT'd source port
dport             Destination port.
policy            Policy ID.
expire            expire
duration          duration
proto-state       Protocol state.
session-state1    Session state1.
session-state2    Session state2.
ext-src           Add a source address to the extended match list.
ext-dst           Add a destination address to the extended match list.
ext-src-negate    Add a source address to the negated extended match list.
ext-dst-negate    Add a destination address to the negated extended match list.
clear             Clear session filter.
negate            Inverse filter.

Wenn wir zum Beispiel vom Client 10.60.60.100 auf 8.8.8.8 alle Session angezeigt haben will, muss man mit der Optionen src und dst die Filter setzen:

Config cli.png Konfiguration über die CLI:
diagnose sys session filter clear
diagnose sys session filter src 10.60.60.100
diagnose sys session filter dst 8.8.8.8

diagnose sys session list

session info: proto=1 proto_state=00 duration=4 expire=58 timeout=0 flags=00000000 socktype=0 sockport=0 av_idx=0 use=4
origin-shaper=
reply-shaper=
per_ip_shaper=
class_id=0 ha_id=0 policy_dir=0 tunnel=/ vlan_cos=0/255
state=log may_dirty nds npu f00 log-start
statistic(bytes/packets/allow_err): org=240/4/1 reply=240/4/1 tuples=3
tx speed(Bps/kbps): 55/0 rx speed(Bps/kbps): 55/0
orgin->sink: org pre->post, reply pre->post dev=22->5/5->22 gwy=192.168.50.2/10.60.60.100
hook=post dir=org act=snat 10.60.60.100:1->8.8.8.8:8(192.168.50.250:60417)
hook=pre dir=reply act=dnat 8.8.8.8:60417->192.168.50.250:0(10.60.60.100:1)
hook=post dir=reply act=noop 8.8.8.8:1->10.60.60.100:0(0.0.0.0:0)
src_mac=1c:1b:0d:6a:27:80
misc=0 policy_id=1 auth_info=0 chk_client_info=0 vd=0
serial=005fac81 tos=ff/ff app_list=0 app=0 url_cat=0
sdwan_mbr_seq=1 sdwan_service_id=0
rpdb_link_id=80000000 rpdb_svc_id=0 ngfwid=n/a
npu_state=0x001008
npu info: flag=0x00/0x00, offload=0/0, ips_offload=0/0, epid=0/0, ipid=0/0, vlan=0x0000/0x0000
vlifid=0/0, vtag_in=0x0000/0x0000 in_npu=0/0, out_npu=0/0, fwd_en=0/0, qid=0/0
no_ofld_reason:  not-established
total session 1

Wie kann ich eine bestimmte Session löschen?

FortiOS 56.svg FortiOS 6x.svg FortiOS 70.svg

Grundsätzlich kann man die Sessions mit dem CLI Befehl diagnose sys session clear löschen.

Wichtig.svg

Wenn dieser Befehl ausgeführt wird, werden sämtliche Sessions gelöscht, welche den konfigurierten Filter Bedingungen entsprechen. Heisst, wenn kein Filter konfiguriert/aktiv ist, werden sämtliche momentan aktiven Sessions gelöscht !!

Kurz vor Feierabend der Klassiker :-)

Wie man einen Filter konfiguriert wird im folgenden Artikel beschrieben : Wie kann ich auf der CLI eine bestimmte Session anschauen?

Beispiel:
Alle Session welche auf die Adresse 8.8.8.8 gehen, sollen gelöscht werden:

Config cli.png Konfiguration über die CLI:

1.) Filter löschen:

diagnose sys session filter clear

2.) Filter mit Destination 8.8.8.8 konfigurieren:

diagnose sys session filter dst 8.8.8.8

3.) Session Liste anzeigen:

diagnose sys session list

session info: proto=17 proto_state=01 duration=38 expire=52 timeout=0 flags=00000000 socktype=0 sockport=0 av_idx=0 use=3
origin-shaper=
reply-shaper=
per_ip_shaper=
class_id=0 ha_id=0 policy_dir=0 tunnel=/ helper=dns-udp vlan_cos=255/255
state=local nds
statistic(bytes/packets/allow_err): org=555/8/1 reply=1902/8/1 tuples=2
tx speed(Bps/kbps): 14/0 rx speed(Bps/kbps): 49/0
orgin->sink: org out->post, reply pre->in dev=0->5/5->18 gwy=0.0.0.0/192.168.50.250
hook=out dir=org act=noop 192.168.50.250:3384->8.8.8.8:53(0.0.0.0:0)
hook=in dir=reply act=noop 8.8.8.8:53->192.168.50.250:3384(0.0.0.0:0)
misc=0 policy_id=0 auth_info=0 chk_client_info=0 vd=0
serial=005fb37a tos=ff/ff app_list=0 app=0 url_cat=0
sdwan_mbr_seq=1 sdwan_service_id=0
rpdb_link_id=00000000 rpdb_svc_id=0 ngfwid=n/a
npu_state=00000000
no_ofld_reason:  local

session info: proto=17 proto_state=01 duration=334 expire=13 timeout=0 flags=00000000 socktype=0 sockport=0 av_idx=0 use=3
origin-shaper=
reply-shaper=
per_ip_shaper=
class_id=0 ha_id=0 policy_dir=0 tunnel=/ helper=dns-udp vlan_cos=255/255
state=local nds
statistic(bytes/packets/allow_err): org=4644/68/1 reply=16039/68/1 tuples=2
tx speed(Bps/kbps): 13/0 rx speed(Bps/kbps): 47/0
orgin->sink: org out->post, reply pre->in dev=0->5/5->18 gwy=0.0.0.0/192.168.50.250
hook=out dir=org act=noop 192.168.50.250:2522->8.8.8.8:53(0.0.0.0:0)
hook=in dir=reply act=noop 8.8.8.8:53->192.168.50.250:2522(0.0.0.0:0)
misc=0 policy_id=0 auth_info=0 chk_client_info=0 vd=0
serial=005fb1c5 tos=ff/ff app_list=0 app=0 url_cat=0
sdwan_mbr_seq=1 sdwan_service_id=0
rpdb_link_id=00000000 rpdb_svc_id=0 ngfwid=n/a
npu_state=00000000
no_ofld_reason:  local

session info: proto=1 proto_state=00 duration=12 expire=50 timeout=0 flags=00000000 socktype=0 sockport=0 av_idx=0 use=4
origin-shaper=
reply-shaper=
per_ip_shaper=
class_id=0 ha_id=0 policy_dir=0 tunnel=/ vlan_cos=0/255
state=log may_dirty nds npu f00 log-start
statistic(bytes/packets/allow_err): org=240/4/1 reply=240/4/1 tuples=3
tx speed(Bps/kbps): 19/0 rx speed(Bps/kbps): 19/0
orgin->sink: org pre->post, reply pre->post dev=22->5/5->22 gwy=192.168.50.2/10.60.60.100
hook=post dir=org act=snat 10.60.60.100:1->8.8.8.8:8(192.168.50.250:19134)
hook=pre dir=reply act=dnat 8.8.8.8:19134->192.168.50.250:0(10.60.60.100:1)
hook=post dir=reply act=noop 8.8.8.8:1->10.60.60.100:0(0.0.0.0:0)
src_mac=1c:1b:0d:6a:27:80
misc=0 policy_id=1 auth_info=0 chk_client_info=0 vd=0
serial=005fb3b7 tos=ff/ff app_list=0 app=0 url_cat=0
sdwan_mbr_seq=1 sdwan_service_id=0
rpdb_link_id=80000000 rpdb_svc_id=0 ngfwid=n/a
npu_state=0x001008
npu info: flag=0x00/0x00, offload=0/0, ips_offload=0/0, epid=0/0, ipid=0/0, vlan=0x0000/0x0000
vlifid=0/0, vtag_in=0x0000/0x0000 in_npu=0/0, out_npu=0/0, fwd_en=0/0, qid=0/0
no_ofld_reason:  not-established

session info: proto=1 proto_state=00 duration=21 expire=41 timeout=0 flags=00000000 socktype=0 sockport=0 av_idx=0 use=4
origin-shaper=
reply-shaper=
per_ip_shaper=
class_id=0 ha_id=0 policy_dir=0 tunnel=/ vlan_cos=0/255
state=log may_dirty nds npu f00 log-start
statistic(bytes/packets/allow_err): org=240/4/1 reply=240/4/1 tuples=3
tx speed(Bps/kbps): 11/0 rx speed(Bps/kbps): 11/0
orgin->sink: org pre->post, reply pre->post dev=22->5/5->22 gwy=192.168.50.2/10.60.60.103
hook=post dir=org act=snat 10.60.60.103:1->8.8.8.8:8(192.168.50.250:60417)
hook=pre dir=reply act=dnat 8.8.8.8:60417->192.168.50.250:0(10.60.60.103:1)
hook=post dir=reply act=noop 8.8.8.8:1->10.60.60.103:0(0.0.0.0:0)
src_mac=e8:6a:64:28:9d:36
misc=0 policy_id=1 auth_info=0 chk_client_info=0 vd=0
serial=005fb399 tos=ff/ff app_list=0 app=0 url_cat=0
sdwan_mbr_seq=1 sdwan_service_id=0
rpdb_link_id=80000000 rpdb_svc_id=0 ngfwid=n/a
npu_state=0x001008
npu info: flag=0x00/0x00, offload=0/0, ips_offload=0/0, epid=0/0, ipid=0/0, vlan=0x0000/0x0000
vlifid=0/0, vtag_in=0x0000/0x0000 in_npu=0/0, out_npu=0/0, fwd_en=0/0, qid=0/0
no_ofld_reason:  not-established
total session 4

4.) Filter basierte Sessions löschen:

diagnose sys session clear

5.) Zur Kontrolle Session Liste anschauen:

diagnose sys session list

Was für Informationen werden in der Session Liste angezeigt?

FortiOS 56.svg FortiOS 6x.svg FortiOS 70.svg Mit dem Befehl diagnose sys session list werden auf der FortiGate alle Session, inklusive den dazugehörigen Informationen angezeigt.

Im "output" ist jede einzelne aktive "Session" mit deren Details aufgeführt. Als Beispiel nachfolgender Output einer Session:

Im Output wird jede aktive Session mit den dazugehörigen Details angezeigt.

Beispiel:

session info: proto=6 proto_state=02 duration=11 expire=21 timeout=3600 flags=00000000 sockflag=00000000 sockport=0 av_idx=0 use=3
origin-shaper=
reply-shaper=
per_ip_shaper=
ha_id=0 policy_dir=0 tunnel=/
state=local nds 
statistic(bytes/packets/allow_err): org=120/2/0 reply=176/2/1 tuples=2
orgin->sink: org out->post, reply pre->in dev=0->7/7->0 gwy=0.0.0.0/0.0.0.0
hook=out dir=org act=noop 198.18.0.1:21164->198.18.0.90:514(0.0.0.0:0)
hook=in dir=reply act=noop 198.18.0.90:514->198.18.0.1:21164(0.0.0.0:0)
pos/(before,after) 0/(0,0), 0/(0,0)
misc=0 policy_id=0 auth_info=0 chk_client_info=0 vd=0
serial=002606e7 tos=ff/ff ips_view=0 app_list=0 app=0
dd_type=0 dd_mode=0
npu_state=00000000

Die Bedeutung der vielen Positionen wird in der folgenden Tabelle erklärt:

Parameter

Beschreibung

proto=6

Gibt an um welches Protokoll es sich handelt, zBsp 6 = TCP. Weitere Informationen zu den Protokoll-Nummern siehe auch nachfolgender Artikel:

Allgemein:Assigned-Internet-Protocol-Numbers-RFC

proto_state=02

Die erste Stelle des "proto_state" gibt an ob diese Session Clientseitig eine "proxy_based" Inspection ist. Wenn es sich um keine "proxy_based" Inspection handelt wird eine "0" gesetzt. Unterschied Proxy und Flow Inspektion

Die zweite Stelle gibt Server Seitig den "state" an. (in unserem Beispiel "2")
Gültigen "states" sind:

Fortinet-1418.jpg

Fortinet-1419.jpg

Proto_state Feld für TCP Weil eine FortiGate eine "stateful firewall" ist überwacht das FortiOS ebenfalls die "reply session". Aus diesem Grund verfügt der "proto_state=OR" dh. Orginal "direction" und Reply "direction":

Fortinet-2153.jpg

Proto_state Feld für SCTP Ab FortiOS 4.2 unterstützt ein FortiGate Device resp. FortiOS ebenfalls "stateful firewalling" für SCTP:

Fortinet-2154.jpg

Proto_state Feld für UDP Obwohl UDP ein "sessionless" Protokoll darstellt überwacht ein FortiOS für UDP 2 Stati:

State Value UDP Reply not seen 0 UDP Reply seen 1

Proto_state Feld für ICMP (proto 1) Für ICMP existiert kein Status und ein FortiOS zeigt für ICMP immer "proto_state=00"

expire=21

Diese Position gibt an wie lange die Session noch gültig ist bis diese gelöscht wird, resp. abgelaufen ist (TTL = time to live).

origin-shaper=
reply-shaper=
per_ip_shaper=

Gibt an ob ein Traffic Shaper benutzt wird. Wenn ein Traffic Shaper benutzt wird werden Informationen zur Priorität und Bandbreite ausgegeben. Beispiel:

origin-shaper=OutShapper prio=2 guarantee 12800Bps max 128000Bps traffic 92Bps
reply-shaper=InShaper prio=4 guarantee 2560Bps max 25600Bps traffic 125Bps
per_ip_shaper=PerIPShaper

state=may dirty none app ntf

Der "state" indiziert die "session flags". Dazu nachfolgende Liste der meistgebrauchten "session flags":

Session Flag

Beschreibung

log Session is being logged
local Session is to/from local stack (orgin or terminated from FortiGate)
ext Session is created by a firewall session helper
ndr Session will be checked by IPS signature
nds Session will be checked by IPS anomaly
br Session is being bridged (TP mode)
npu Session can be offloaded to NPU
wccp Session is handled by WCCP (Version 4.0)
npd Session cannot be offloaded to NPU
redir Session is being processed by an application layer proxy
authed Session was successfully authenticated
auth Session required (or required) authentication

Grundsätzlich wird jedes "erste" Packet über die Firewall Policy kontrolliert. Wenn dieses Packet über die Firewall Policy die "Erlaubnis" erhält wird eine "session" erstellt, welche als "may_dirty" (flag)bezeichnet wird. Wenn eine Änderung in der Firewall Policy durchgeführt wird, so werden "alle" existierenden "sessions" von "may_dirty" auf "dirty" gesetzt. Dadurch werden sämtliche Packete ab diesem Zeitpunkt nicht mehr über den NPU gesendet sondern zum CPU. Der CPU kontrolliert abermals das Packet in der Firewall Policy und wenn dieses zugelassen wird, werden diese "sessions" auf "may_dirty" gesetzt. Wenn dieses Packet in der Firewall Policy nicht erlaubt wird werden diese Packete verworfen und mit einem Flag "block" versehen. Danach verbleibt die "session" im Memory bis diese den TTL resp. "expire" erreicht. So kann die FortiGate über die "flags" "dirty" und/oder "may_dirty" erkennen/evaluieren ob nach einer Modifikation der Firewall Policy diese weiterhin erlaubt werden (may_dirty) resp. die entsprechende "session" geblockt werden (block).

policy_id=0

Gibt an welche Firewall Policy-ID benutzt wurde. Die Firewall Policy-ID 0 indiziert eine "Local-In Policy".

statistic

Steht für den Packet Counter welcher auch über die Firewall Policy der FortiGate ersichtlich ist.
Beispiel:

statistic (bytes/packets/err): org=3408/38/0 reply=3888/31/0 tuples=2

hook=out dir=org
hook=in dir=reply

Gibt an wie die Packete für "out" und "in" verarbeiet werden dh., wenn zBsp NAT (Network Address Translation) benutzt wird, so werden die Positionen "act=snat" sowie "act=dnat" aufgeführt. Aus den nachfolgenden Informationen kann eruiert werden wie NAT durchgeführt wurde. Nachfolgend ein Beispiel mit NAT:

hook=post dir=org act=snat 100.1.10:50194 -> 216.58.216.110:80(10.200.1.1:50194)
hook=pre dir=reply act=dnat 216.58.216.110:80 -> 10.200.1.1:50194(10.0.1.10:50194)

npu_state=00000000

Zeigt ob eine Session über "hardware acceleration" beschleunigt wurde. Wenn dies der Fall ist resp. möglich wäre, wird "npu info:" aufgeführt mit den entsprechenden "counters" für die "hardware acceleration" aus denen man entnehmen kann ob die Session über die Hardware-Beschleunigung abgearbeitet wurde.

Beispiel:

npu info: flag=0x00/0x00, offload=0/0, ips_offload=0/0, epid=0/0, ipid=0/0, vlan=0/0

no_ofld_reason

Zeigt den Grund wieso eine Session nicht über "hardware acceleration" beschleunigt wird.

Beispiel:

no_ofld_reason: redir-to-av redir-to-ips non-npu-intf

user=
group=
authed

Wenn eine Session für eine Verbindung im Zusammenhang mit Authentifizierung erstellt wird, so wird der "user=" erstellt und in der Gruppenzugehörigkeit "group=" das "authed" Flag gesetzt

Referenz: http://kb.fortinet.com/kb/documentLink.do?externalID=FD30042

Was bedeutet das Flag dirty in der Session Liste?

FortiOS 56.svg FortiOS 6x.svg FortiOS 70.svg

Wenn die FortiGate das erste Paket für eine neue Session (Beispielsweise ein SYN-Paket) empfängt, bewertet das Gerät, ob der Datentraffic auf der Grundlage der Firewalregeln zugelassen oder nicht zugelassen werden soll. Solange es keine Änderungen an den Firewalregeln und andere Bedingungen gibt, wird diese Bewertung nur für das erste Paket der Session durchgeführt.

Wenn der Verkehr durch eine Firewallregel zugelassen wird, erstellt die FortiGate eine Session und kennzeichnet diese als may_dirty. Wird nachher eine Firewalregeln oder eine Bedingung geändert welche eine Zustandsänderung auslöst, werden alle bestehenden Sessionen mit dem may_dirty-Flag als dirty gekennzeichnet.

Dies signalisiert der FortiGate, dass das nächste Paket der Session neu bewertet werden muss. Wenn die Session immer noch erlaubt/gültig ist und der zu erlaubenden Firewallregel entspricht, wird das Dirty-Flag entfernt und das Flag may_dirty beibehalten.

Wenn die Session blockiert wird, wird sie als blockiert gekennzeichnet und verbleibt in der Sessionstabelle, bis diese Session abläuft. Jedes Paket, das einer Session mit dem Block-Flag entspricht, wird gelöscht.

Nachfolgend sind die Bedingungen aufgeführt, die dazu führen, daß eine Session als 'dirty' markiert wird, wenn:

  1. Jegliche Änderungen an einer Firewallregel.
  2. Änderungen am Routing.
  3. Sämtliche netzwerkbezogenen Konfigurationsänderungen.

Wie kann ich die Session Timer auf der FortiGate anpassen um System Ressourcen einzusparen?

FortiOS 56.svg FortiOS 6x.svg FortiOS 70.svg

Jeder Traffic, welcher durch die FortiGate fliesst wird einer Firewall Session zugeordnet. Diese Session wird auf der FortiGate erstellt und gepflegt. Je weniger Sessions die FortiGate verwalten muss, desto weniger CPU Ressourcen werden für die Behandlung der Sessions benötigt. Es gibt verschiedene Möglichkeiten die Anzahl an gleichzeitigen Sessions zu reduzieren:

Wenn der Trafficflow gestoppt wird, bleibt die dazugehörige Session in der FortiGate bis ein bestimmter Timer abläuft. Dieses Verhalten gilt für TCP und UDP Sessions (es sind verschiedene Timer daran beteiligt). Die Reduzierung des Timers würde helfen, die Session früher wieder loszuwerden. TCP gebundene Session im half-open, half-close, oder in etablierte Sessions können also früher wieder freigegeben werden.

Dies kann man global wie folgt konfigurieren:

Config cli.png Konfiguration über die CLI:
config system global 
set tcp-halfclose-timer 10 [default 120s] 
set tcp-halfopen-timer 10 [default 10s] 
set tcp-timewait-timer 0 [default 1s] 
set udp-idle-timer 60 [default 180s] 
end 

config system session-ttl 
set default 300 [default 3600] 
end

Es gibt Protokolle welche eher viele Session generieren, da sie auf kurzen Transaktionen basieren. Zum Beispiel DNS ist ein solches Protokoll. In diesem Fall wird empfohlen den Timer für das Protokoll auf einen geeigneten, aber kurzen Wert zu ändern.

Config cli.png Konfiguration über die CLI:
config port 
edit 0 
set protocol 17 
set timeout 10 
set end-port 53 
set start-port 53 
end 
end 

Inspection Modes

Was genau bedeuten die beiden Inspektionsmodi auf der FortiGate? (Proxy vs. Flow)

FortiOS 56.svg FortiOS 62.svg FortiOS 60.svg FortiOS 64.svg

Jede Fortigate Firewall hat zwei mögliche Betriebsmodi, mit welchen der Datenverkehr inspiziert werden kann:

Flow-Based Proxy-Based
Beschreibung

Prüft den Datenverkehr on-the-flow. Hier wird hauptsächlich Flow-Based-Pattern-Matching verwendet, um Sicherheitsbedrohungen innerhalb des Datenflusses zu identifizieren.

Es besteht eine Session

Puffert den Datenverkehr und überprüft diesen anhand der Informationen aus den vollständigen Paketen. Die Entscheidung über das weitere Vorgehen mit einem Datenstrom wird somit immer anhand der vollständigen Datenpakete vorgenommen. In diesem Betriebsmodus schreibt die Firewall die Paketheader vor dem weiterleiten neu.

Es gibt zwei Session:

  • Session vom Client zur FortiGate
  • Session von der FortiGate zum Server
Schema

Fortinet-2507.jpg

Fortinet-2508.jpg

Vor/Nachteile

+ Der Datenverkehr wird ohne Verzögerung ausgeliefert
+ Zeitsensitive Applikationen funktionieren in diesem Modus besser / stabiler

- Es stehen nur gewisse Security-Profile-Typen zur Verfügung
- Die zur Verfügung stehenden Funktionalitäten innerhalb des Security Profiles sind eingeschränkt
- Der "Level of Security" ist etwas tiefer

+ Entscheidungen im Proxy-Mode fallen detaillierter aus
+ Es stehen mehr Profil-Typen zur Verfügung
+ Es sind weniger False-Positives zu verzeichnen

- Der Performancebedarf fällt höher aus
- Für die Clients können Latenzen oder TimeOuts entstehen

Eine bewusste Konfikguration zwischen Flow- und Proxy-Modus ist hilfreich, wenn sichergestellt werden soll, dass ausschliesslich der Flow-Inspektionsmodus verwendet werden soll. Die konkreten Funktionsunterschiede zwischen dem Proxy- und Flowbased Inspectionmode können der Fortinet-Hilfe entnommen werden:

Wie kann der Inspection Mode einer FortiGate bis FortiOS 6.0 geändert werden?

FortiOS 56.svg FortiOS 60.svg
Ab FortiOS 6.0 wird der Inspection Mode pro Firewall oder auf einer mit VDOMs konfigurierten Firewall pro VDOM global angepasst.

Im GUI ist diese Konfiguration unter System > Settings > Inspection Mode zu finden.

Fortigate-2238.png

In der CLI kann dieser Konfigurationspunkt wie folgt angepasst werden:

	fg-lab # config system settings
	fg-lab (settings) # show
	config system settings
		set inspection-mode flow
		...

Das Überschreiben dieser globalen Einstellung von Flow nach Proxy führt dazu, dass in jedem Security Profile auf der gesamten Appliance/VDOM der Inspection Mode ebenfalls auf die hier ausgeführte Einstellung umgestellt wird. Das überschreiben dieser Option von Proxy nach Flow führt jedoch nicht dazu, dass diese Einstellung in jedem Security Profil überschrieben wird.

Wie kann der Inspection Mode einer FortiGate ab FortiOS 6.2 geändert werden?

FortiOS 62.svg FortiOS 64.svg
Im Gegensatz zu den Versionen 5.4 - 6.0 wird der Inspektionsmodus nicht mehr als globaler Parameter definiert, sondern über die Policy gesteuert. Die FortiGate wird in der Version 6.2 immer im Flow-Modus sein. Soll mit der proxybasierten Inspektion gearbeitet werden, so muss diese in der jeweiligen Policy konfiguriert werden.

Proxymodus

Config webgui.png Konfiguration über das WebGui:

In die entsprechende Policy gehen und dann den Inspektions-Modus auf Proxy einstellen.
Folgende UTM-Features sind im Proxy-Modus unterstützt:

  • AntiVirus
  • Web Filter
  • DNS Filter
  • Application Control
  • IPS
  • Email Filter
  • DLP Sensor
  • ICAP
  • WAF - Web Applikation Firewall
Fortinet-2524.jpg
Config cli.png Konfiguration über die CLI:
config firewall policy
edit [Policy-ID] --> Policy ID eingeben zBsp edit 2
set inspection-mode proxy
next
end

Flow Modus

Config webgui.png Konfiguration über das WebGui:

Defaultmässig ist in der Policy der Flow Inspektionsmodus aktiviert. Falls man von Proxy auf Flow zurückstellen will kann dies in der entsprechenden Policy vorgenommen werden.
Folgend UTM-Features sind im Flow-Modus unterstützt:

  • AntiVirus
  • Web Filter
  • DNS Filter
  • Application Control
  • IPS
Fortinet-2523.jpg
Config cli.png Konfiguration über die CLI:
config firewall policy
edit [Policy-ID] --> Policy ID eingeben zBsp edit 2
set inspection-mode flow
next
end

Flow Modus - NGFW

Was hingegen noch immer global eingestellt wird ist der NGFW Modus. Standartmässig ist dieser auf Profile-based eingestellt. Dies bedeutet, dass UTM Profile erstellt werden und diese auf den Policies angewendet werden. Der Policy-based Modus bedeutet, dass Applikation und Webfilter direkt in der Policy definiert werden. Dies erfordert dass ein einzelnes SSL/SSH Inspektionsprofil auf allen Policies angewendet wird. Antivirus ist immer Profil basierend, unabhängig welcher NGFW Modus konfiguriert ist.

Config webgui.png Konfiguration über das WebGui:

Im Menu "Settings" kann der NGFW Modus definiert werden.

Fortinet-2522.jpg
Config cli.png Konfiguration über die CLI:
config system settings
set ngfw-mode [profile-based | policy-based]
end


Wie wird auf einer FortiGate ein Datenpaket abgearbeitet (Life of a packet) ?

Dieser Abschnitt beschreibt die Schritte, die ein Paket durchläuft, ab Eintritt auf die FortiGate, bis dies die FortiGate wieder verlässt. Dieses Szenario zeigt alle Schritte, die ein Paket durchläuft, wenn ein FortiGate keine Netzwerkprozessoren (wie zBsp den NP6) enthält.

      Fortinet-3019.jpg 
       
Hinweis.svg

Den Hinweis "ingress" sowie "engress" ist folgendermassen zu verstehen: "ingress" umschreibt den Vorgang was mit einem Packet durchgeführt wird wenn es über ein Interface dem FortiOS übermittelt wird (TCP/IP Stack). "Engress" umschreibt was mit einem Packet durchgeführt wird wenn ein Packet durch das FortiOS über ein Interface versendet wird!

Nach dem ersten Paket überspringen die nachfolgenden Pakete in einer ausgelagerten Routing-Sitzung die UTM/NGFW und Kernel-Prozessoren und werden einfach durch den NP6-Prozessor auf die Egress-Schnittstelle weitergeleitet. Auch Sicherheitsmaßnahmen wie DoS-Richtlinien, ACL etc. werden durch den NP6-Prozessor beschleunigt.

       Fortinet-3020.jpg 
       

Die vorhergehenden Übersichten zeigen innerhalb "UTM/NGFW" keine Details betreffend "inspection" Mode, resp. wie ein Packet im "proxy-mode" oder im "flow-mode" abgearbeitet wird. Dabei ist zu berücksichtigen, dass nicht jedes UTM Feature zB "Web Application Firewall" im "flow-mode" benutzt werden kann sondern nur im "proxy-mode". Weitere Informationen welches Feature von welchem Inspection Mode unterstützt zeigt nachfolgende Aufstellung:

       Fortinet-3021.jpg         

Nachfolgend eine Uebersicht was innerhalb der "UTM/NGFW" Funktion betreffend dieser zwei zur Verfügung stehenden "inspection" Mode durchgeführt wird:

       Fortinet-3022.jpg 
       Fortinet-3023.jpg

NAT

Wie funktioniert das Destinations NAT auf einer FortiGate?

FortiOS 60.svg FortiOS 62.svg

VIPs sind DNAT-Objekte. Bei jeder Session, welche mit einem VIP übereinstimmt wird die Destination IP Adresse übersetzt (genattet). Üblicherweise wird eine öffentliche IP Adresse auf eine private IP Adresse zu einem Serverdienst übersetzt. Ein VIP-Objekt wird in der Policy im Destinationsobjekt Feld ausgewählt.

Standardmässig ist der VIP auf statisches NAT konfiguriert. Dies bedeutet, dass für ein- und ausgehende Verbindungen ein one-to-one Mapping gilt. Wenn also eine Policy für ausgehenden Traffic konfiguriert wird, und das VIP-Objekt dann auf dem ausgehenden Interface ausgewählt wird, so wird die IP Adresse genattet. Dieses verhalten kann aber durch die IP-Pool Konfiguration übersteuert werden.

VIPs sollten auf dem externen Facing (Ingress) Interface routfähig sein. Das FortiOS reagiert auf ARP-Anfragen von VIP und IP-Pool Objekten. Dies bedeutet, wenn beim VIP-Objekt das Interface ANY konfiguriert wird, wird entsprechend auf jedem Interface für das VIP-Objekt ein ARP Eintrag angelegt. Dies wiederum kann unter gewissen umständen zu asynchronen Routings führen.

Beispiel Fortinet-2540.jpg

Der User initiert einen Request auf die IP Adresse 198.18.1.2. Auf der FortiGate ist ein VIP-Objekt konfiguriert, welches die Anfragen, welche auf die Adresse 198.18.1.2 kommen auf die IP Adresse 172.16.1.100 nattet. Der Request wird also von der FortiGate auf den Server in der DMZ (172.16.1.100) weitergeleitet. Über die Policies kann noch geregelt werden, welchen Services der Zugriff auf den Zielserver gewährt werden soll (172.16.1.100). Ich empfehle jeweils nur die benötigten Services im VIP-Objekt zu konfigurieren. Der Grund ist, dass gemäss Flow Diagramm zuerst das Destinations-NAT vollzogen wird und erst dann die Firewall Policies abgehandelt werden. Dies bedeutet, wenn ich alle Services im VIP-Objekt konfiguriere, diese potentiell auf das Zielsystem bereits durchgeschalten sind. Wenn man sich bei den Policies "verkonfiguriert" generiert man sozusagen einen "Bypass".

Flow Diagramm:

Fortinet-2541.jpg

Quelle : https://help.fortinet.com/fos50hlp/54/Content/FortiOS/fortigate-life-of-packet-54/lop-packet-flow-ingress-egress.htm

Wie richte ich ein Destinations NAT mit einem VIP Objekt ein?

FortiOS 60.svg FortiOS 62.svg FortiOS 64.svg

Config webgui.png Konfiguration über das WebGui:

Über das Menu Policy & Objects -> Virtual IPs -> Createnew.jpg kann ein neues VIP Objekt erstellt werden

Fortinet-2536.jpg

Wir konfigurieren ein VIP Objekt welches den smtp Port auf die IP Adresse 172.16.1.100 in der DMZ weiterleitet. Dabei wird der Client die IP Adresse 198.18.0.2 ansprechen und wird dann über das VIP Objekt auf 172.16.1.100 genattet.

  1. beim Namen einen aussagekräftigen Namen wählen - dieser wird dann im Policyset eingesehen werden.
  2. Beim Kommentar empfehle ich die Orginal und die genatete Adresse, inklusive den anzusprechenden Port zu erwähnen. So kann bei allfälligen Störungssuchen im Objekt gleich erkannt werden, was es genau beinhaltet.
  3. Das Interface muss zwingend auf den Term gewählt werden, auf welchem die orginale IP Adresse terminiert. In unserem Fall terminiert die IP Adresse 198.18.0.2 auf dem Interface wan1. Wenn das Interface auf ANY konfiguriert wird, wird auf jedem Interface für die IP Adresse 198.18.0.2 ein ARP Eintrag erstellt. Bei SD-WAN, PolicyRouting oder VPN Konfigurationen kann dies zu asynchronem Routing führen.
  4. im External IP address/range Feld wird die orginale IP Adresse eingetragen (in unserem Fall 198.18.0.2)
  5. im Mapped IP address/range Feld wird die zu erreichende IP Adresse eingetragen (in unserem Fall 172.16.1.100)
  6. Damit explizit nur der Port TCP 25 genattet wird, muss die Option Port Forwarding aktiviert werden. Jetzt kann das Protokoll angegeben werden. Wir wollen den Port 25 weiterleiten. Daher kann beim "External service port" der Wert 25 eingetragen werden. Wir wollten den Port auf 25 lassen daher wird beim "Map to port" auch 25 eingetragen. Wenn ich ein PAT einrichten will muss ich den entsprechenden Port eintragen.
  7. Mit OK wird das VIP Objekt erstellt und kann in der Policy von nun an verwendet werden.
Fortinet-2537.jpg

Um eine neue Regel zu erstellen geht man über Policy & Objects -> IPv4 Policy -> Createnew.jpg

  1. Der Name muss einmalig sein. Der Name wird im Log, und auch auf dem FortiAnalyzer angezeigt. Dies kann bei der Störungs-Eingrenzung sehr hilfreich sein. Daher wird empfohlen jeweils einen aussagekräftigen Namen zu wählen.
  2. Beim Incoming Interface muss das Interface gewählt werden, auf welchem die orginal IP Adresse terminiert. In unserem Fall terminiert 198.18.0.2 auf dem wan1 Interface.
  3. Beim Outgoing Interface wird das Interface ausgewählt hinter welchem die genatete Adresse sich befinden. Bei uns liegt die 172.16.1.100 hinter dem dmz Interface.
  4. Bei Source kann das Objekt ALL oder das angelegte 0.0.0.0-0 Objekt ausgewählt werden. Es kann natürlich auch bei den Source Einschränkungen geben, dann einfach die entsprechenden IP Objekte erfassen und diese als Source auswählen.
  5. Bei der Destination wird jetzt das angelegte VIP Objekt ausgewählt. In unserem Fall wäre das dnat-198.18.0.2-tcp25
  6. Die NAT Option deaktivieren. Wenn diese aktiviert bleibt, wird die Source IP Adresse des DMZ Interfaces genommen also ein Snat durchgeführt.
  7. Die UTM Features können bei Bedarf aktiviert werden.
  8. Damit der ganze Traffic geloggt wird, empfehle ich die Option "Log Allowed Traffic" auf "All Sessions" konfigurieren.
Fortinet-2538.jpg
Fortinet-2539.jpg
Config cli.png Konfiguration über die CLI:

Konfigurieren des VIP Objektes:

# config firewall vip
# edit "dnat-198.18.0.2-tcp25"
# set comment "Destinations Nat 198.18.0.2-172.16.1.100 TCP25"
# set extip 198.18.0.2
# set extintf "wan1"
# set portforward enable
# set color 21
# set mappedip "172.16.1.100" 
# set extport 25
# set mappedport 25
# next
# end

Konfigurieren des IP Adress-Objekt für 0.0.0.0/0:

# config firewall address
# edit net-all-0.0.0.0-0
# set comment "alle Netze 0.0.0.0"
# set color 0
# next
# end

Konfigurieren der Policy über die CLI:

# config firewall policy
# edit 1
# set name "I_internet->MailSrv-tcp25"
# set srcintf "wan1" 
# set dstintf "dmz" 
# set srcaddr "net-all-0.0.0.0-0" 
# set dstaddr "dnat-198.18.0.2-tcp25" 
# set action accept
# set schedule "always"
# set service "SMTP" 
# set logtraffic all
# end

Wieso blockiert die FortiGate eingehenden Traffic vom WAN ins LAN trotz Deny Regel nicht?

FortiOS 56.svg FortiOS 6x.svg FortiOS 70.svg FortiOS 72.svg

Wenn wir Firewallregeln konfigurieren welche vom WAN ins LAN sämtlichen Traffic blockieren soll, kann es sein, dass dieser Traffic trotz der Regel nicht blockiert wird. Dies ist dann der Fall, wenn noch VIP Objekte konfiguriert sind. VIP Objekte und Adressobjekte sind auf der FortiGate in verschiedenen Datenbanken. Das heisst ein z.B all Adressobjekt enthält die VIP Adress Objekte nicht. Da auf der FortiGate die Destinations NAT Tabelle vor der Firewall Regel verarbeitet wird, wird so gesehen das all Adress Objekt übersteuert und der Traffic wird doch ins LAN geleitet.

Im folgenden Beispiel sehen wir uns das ein wenig genauer an
Folgendes Regelset besteht:

Fortinet-3079.jpg

Regel ID 10 : soll Request vom WAN und dem Source Range 85.7.164.1-85.7.164.254 alle Request auf das DMZ Interface blockieren. Regel ID 9: soll vom WAN den Zugriff auf den webserver über https erlauben. In dieser Regel ist dnat-webserver ein VIP Objekt.

Die Objekte sind folgendermassen konfiguriert:

Adressobjekt block-range  : IP Range 85.7.164.1-85.7.164.254
VIP Objekt dnat-Webserver : Orginal IP 146.4.10.20 Nat auf 198.18.200.45 mit Port tcp443
TestClient Public IP      : 85.7.164.133 

Im Beispiel sehen wir, dass die Regel 10 vor der Regel 9 angeordnet ist. Im Prinzip müsste mein Request von 85.7.164.133 auf https://146.4.10.20 blockiert werden.

Wenn wir den Flow anschauen, sehen wir folgendes:

Config cli.png Konfiguration über die CLI:

Befehle für die Diagnose:

diagnose debug flow filter clear
diagnose debug flow filter dadd 146.4.10.20
diagnose debug flow filter port 443
diagnose debug flow trace 20 start
diagnose debug enable

Resultat:

id=20085 trace_id=2 func=print_pkt_detail line=5746 msg="vd-root:0 received a packet(proto=6, 85.7.164.133:60976->146.4.10.20:443) from port1. flag [S], seq 1547429943, ack 0, win 64240"
id=20085 trace_id=2 func=init_ip_session_common line=5918 msg="allocate a new session-00425076"
id=20085 trace_id=2 func=get_new_addr line=1229 msg="find DNAT: IP-198.18.200.45, port-443"
id=20085 trace_id=2 func=fw_pre_route_handler line=181 msg="VIP-198.18.200.45:443, outdev-port1"
id=20085 trace_id=2 func=__ip_session_run_tuple line=3492 msg="DNAT 146.4.10.20:443->198.18.200.45:443"
id=20085 trace_id=2 func=vf_ip_route_input_common line=2615 msg="find a route: flag=00000000 gw-198.18.200.45 via port4"
id=20085 trace_id=2 func=fw_forward_handler line=853 msg="Allowed by Policy-9:" 

Es gibt zwei Möglichkeiten dieses Problem zu lösen:
Möglichkeit 1 - match-vip enable
In der Deny Policy (Policy ID10 in unserem Beispiel) muss der Parameter match-vip enable konfiguriert werden. Der Parameter match-vip enable bewirkt, dass Adressobjekte mit VIP Adressen übereinstimmen können.

Config cli.png Konfiguration über die CLI:
config firewall policy
edit 10 
set match-vip enable
end

Wir können auch dirket von der Policy aus in die CLI zugreifen. Dafür Rechtsklick auf die Policy und den Parameter Edit in CLI auswählen

Config webgui.png Konfiguration über das WebGui:
Fortinet-3080.jpg

Nachdem wir den Parameter aktiviert haben können wir den Request auf https://146.4.10.20 vom Client 85.7.164.133 noch einmal initiieren.

Tadaaa der Request wird geblockt:

Config cli.png Konfiguration über die CLI:

Befehle für die Diagnose:

diagnose debug flow filter clear
diagnose debug flow filter dadd 146.4.10.20
diagnose debug flow filter port 443
diagnose debug flow trace 20 start
diagnose debug enable

Resultat:

id=20085 trace_id=3 func=print_pkt_detail line=5746 msg="vd-root:0 received a packet(proto=6, 85.7.164.133:52562->146.4.10.20:443) from port1. flag [S], seq 2759331916, ack 0, win 64240"
id=20085 trace_id=3 func=init_ip_session_common line=5918 msg="allocate a new session-004251a5"
id=20085 trace_id=3 func=get_new_addr line=1229 msg="find DNAT: IP-198.18.200.45, port-443"
id=20085 trace_id=3 func=fw_pre_route_handler line=181 msg="VIP-198.18.200.45:443, outdev-port1"
id=20085 trace_id=3 func=__ip_session_run_tuple line=3492 msg="DNAT 146.4.10.20:443->198.18.200.45:443"
id=20085 trace_id=3 func=vf_ip_route_input_common line=2615 msg="find a route: flag=00000000 gw-198.18.200.45 via port4"
id=20085 trace_id=3 func=fw_forward_handler line=687 msg="Denied by forward policy check (policy 10)"
Hinweis.svg

Ab dem FortiOS 6.4.3 kann die Option match-vip enable nur noch in DENY Firewallregeln verwendet werden. Siehe auch in den Releasenotes:

Tipp.png

Ab dem FortiOS Version 7.2.4 wird bei einer Firewallregel welche die Aktion Deny hat, die Option
match-vip enabled defaultmässig aktiviert.
Siehe Releasenotes 7.2.4:

Variante 2 - VIP Objekt als Destination in der Deny Regel konfigurieren
In dieser Variante, wird als Destination das VIP Objekt angegeben. Es ist darauf zu achten, dass beim VIP Objekt nur die Ports blockiert werden, welche im VIP Objekt konfiguriert sind. Falls im VIP Objekt keine Ports spezifisch definiert wurden, werden alle Ports berücksichtigt.

Config webgui.png Konfiguration über das WebGui:
Fortinet-3081.jpg
Config cli.png Konfiguration über die CLI:

Befehle für die Diagnose:

diagnose debug flow filter clear
diagnose debug flow filter dadd 146.4.10.20
diagnose debug flow filter port 443
diagnose debug flow trace 20 start
diagnose debug enable

Resultat:

id=20085 trace_id=35 func=print_pkt_detail line=5746 msg="vd-root:0 received a packet(proto=6, 85.7.164.133:55214->146.4.10.20:443) from port1. flag [S], seq 3805850253, ack 0, win 64240"
id=20085 trace_id=35 func=init_ip_session_common line=5918 msg="allocate a new session-00428b34"
id=20085 trace_id=35 func=get_new_addr line=1229 msg="find DNAT: IP-198.18.200.45, port-443"
id=20085 trace_id=35 func=fw_pre_route_handler line=181 msg="VIP-198.18.200.45:443, outdev-port1"
id=20085 trace_id=35 func=__ip_session_run_tuple line=3492 msg="DNAT 146.4.10.20:443->198.18.200.45:443"
id=20085 trace_id=35 func=vf_ip_route_input_common line=2615 msg="find a route: flag=00000000 gw-198.18.200.45 via port4"
id=20085 trace_id=35 func=fw_forward_handler line=687 msg="Denied by forward policy check (policy 10)"  

Wir sehen, auch hier wird der Request in der Policy ID 10 blockiert.
Somit haben wir zwei Möglichkeiten aufgezeigt, wie man Traffic vom WAN ins LAN blockieren kann, obwohl auch VIP Objekte konfiguriert sind. Welche Methode gewählt wird, ist einerlei.


edit 13.03.2023 - 4Tinu

Wie wird ein DNAT konfiguriert, wenn die Central NAT Table verwendet wird ?

FortiOS 60.svg

Wenn die Central NAT Table eingesetzt wird, so werden sämtliche NAT Funktionalitäten aus der Firewall Policy verbannt. Somit können in der Firewall Policy auch nicht mehr die üblichen VIP Objekte verwendet werden. Im Falle der aktiven Central NAT Table, wird das NAT über folgende zwei Menüpunkte gesteuert:

  • Im Fall von DNAT: Policy & Objects > DNAT & Virtual IPs
  • Im Fall von SNAT: Policy & Objects > Central SNAT

Für ein funktionierendes DNAT, kann unter DNAT & Virtual IPs ein gewöhnliches Objekt, analog zu einem VIP Objekt konfiguriert werden. In untenstehendem Beispiel möchten wir gerne den Port 80 TCP vom Internet an einen internen Webserver weiterrouten.

Fortinet-2239.png

Dieses NAT wird sofort nach seiner Erstellung aktiv. Da auf der Firewall jedoch noch eine Firewallregel fehlt, welche den Traffic hierfür erlauben würde, funktioniert mit lediglich einem NAT noch nichts. Im zweiten Schritt erstellen wir nun die Firewall Regel. Da hier kein VIP Objekt mehr angewählt werden kann, wird als Destination Host die interne IP gewählt. Die DNAT-Konfiguration vom vorherigen Schritt sorgt in diesem Fall für die Transformation der IP - unabhängig von der Firewallregel.

Fortinet-2240.png

Wieso soll ich ein VIP Objekt auf ein Interface konfigurieren?

Auf der FortiGate Firewall können Adressobjekte und virtuelle IPs (VIPs) mit einem Interface eingerichtet werden. Für Adressobjekte hat dies keine technische Relevanz - die Adressobjekte erscheinen einfach nur dann in der Policy, wenn das entsprechende Interface ausgewählt ist. Bei virtuellen IPs hat diese Einstellung jedoch eine Relevanz dafür, wie Verbindungen genattet werden. Das kann problematisch sein.

In allgemeinen Situationen hat man nur eine ISP-Verbindung, auf der ein Ziel NAT (DNAT) für eingehende Verbindungen eingerichtet werden soll. Das ist kein Problem, man kann das untrust Interface im virtuellen IP-Objekt auswählen. Wenn man zwei ISP-Verbindungen hat, zBsp eine gute (ISP1) und eine günstigere (ISP2), MÜSSEN die Interfaces im virtuellen IP-Objekt ausgewählt werden, wenn man auf eine fix IP-Adresse von ISP1 verweisst. Andernfalls wird diese auf allen ausgehenden Verbindungen verwendet, die dann mit dem ISP2 nicht funktionieren würden.

Fall 1:
Fortinet-2609.jpg

Fall 2:
Das folgende Beispiel zeigt ein virtuelles IP-Objekt mit einer statischen IP-Adresse von 80.154.108.233 und einem falsch konfigurierten Interface von "Any". Bei ausgehenden Verbindungen zu ISP1 gibt es keine Probleme (Label 1 auf dem Screenshot). Aber nachdem eine Policyroute eingerichtet wurde, um den http-Verkehr an ISP2 weiterzuleiten, wird die gleiche Source-NAT-IP verwendet, die offensichtlich nicht funktioniert hat (Label 2). Nachdem das Interface im virtuellen IP-Objekt auf "wan1" gesetzt wurde, werden ausgehende Verbindungen zu ISP2 korrekt an das ausgehende Interface genattet, während ausgehende Verbindungen zu ISP1 weiterhin an die virtuelle IP-Adresse genattet werden (Label 3).

Fortinet-2610.jpg

Wie kann ich die ARP Antwort auf einer virtuellen IP (VIP) deaktivieren?

Im Normallfall werden auf einer FortiGate erstellte VIP-Objekte auf ARP Anfragen antworten, damit angeschlossene Layer 2 Geräte die MAC-Adresse des Interface mit der virtuellen IP mitgeteilt werden.

Config cli.png Konfiguration über die CLI:
config firewall vip
edit [VIP-OBJEKT-NAME]
set arp-reply disable
end

Beispiel:

config firewall vip
edit dst-nat_198.18.250.2-10.10.20.2-http
set arp-reply disable
end


Wo kann ich sehen, wie oft Central SNAT und DNAT (VIP) aktiv waren?

FortiOS 70.svg

In CLI lässt sich mittels sogenannter Hit Counter analysieren bzw. zählen, wie oft es eine Übereinstimmung zwischen dem analysierten Traffic und den konfigurierten Central SNAT und DNAT (VIP) gab.

Config cli.png Konfiguration über die CLI:
 Central SNAT Counter:
 # diagnose firewall iprope show 10000d <id> 
 
 DNAT (VIP) Counter:
 # diagnose firewall iprope show 100000 <id>

 Counter bereinigen:
 # diagnose firewall iprope clear 10000d <id>
 # diagnose firewall iprope clear 100000 <id>

Beispiel:

# diagnose firewall iprope show 10000d 2 
idx=2 hit count:7 (2 5 0 0 0 0 0 0) first:2021-04-13 10:13:43 last:2021-04-14 10:17:32
Das Beispiel zeigt, dass es für ID 2 insgesamt 7 Treffer gab, seit der letzten Bereinigung des Counters. Es gab dementsprechend 7 Übereinstimmungen zwischen analysiertem Traffic und konfiguriertem Central SNAT. Die erste Ziffer innerhalb der Klammer bezieht sich auf den Hit Count des aktuellen Tages, die restlichen 7 Ziffern auf den Hit Count der letzten sieben Tage.
Tipp.png

Bei IPv6 sind die Befehle fast identisch: "iprope" einfach mit "iprope6" ergänzen.

Cluster Mode

Active Directory / LDAP

Virtual Servers

Wie kann ich herausfinden, welche Cipher Suiten die FortiGate unterstützt?

FortiOS 60.svg FortiOS 62.svg FortiOS 64.svg

Folgendermassen kann herausgefunden werden, welche Cipher die FortiGate unterstützt:

Config cli.png Konfiguration über die CLI:
# config firewall vip
# edit <vip-name>
# set type server-load-balance
# set server-type https
# set ssl-algorithm custom
# config ssl-cipher-suites
# edit 1
# set cipher ?

Es erscheint eine Liste: (hier gekürzt, ganze Liste in der Tabelle unten)

# TLS-ECDHE-RSA-WITH-CHACHA20-POLY1305-SHA256    Cipher suite TLS-ECDHE-RSA-WITH-CHACHA20-POLY1305-SHA256. 
  .
  .
  .
# TLS-RSA-WITH-DES-CBC-SHA                       Cipher suite TLS-RSA-WITH-DES-CBC-SHA.
Config cli.png Ciper Suite:
FortiOS 6.4
FortiOS 6.2
FortiOS 6.0

Load Balancing

SSL-VPN

Wie konfiguriere ich ein SSL-VPN im Tunnelmodus?

FortiOS 56.svg FortiOS 60.svg FortiOS 62.svg FortiOS 64.svg

Um ein SSL-VPN von grundauf aufzubauen muss man folgende vier Punkte konfigurieren:

  1. Einrichten Benutzerkonten und Gruppen für die Remote SSL-VPN Benutzer
  2. SSL-VPN Portale konfigurieren
  3. SSL-VPN Einstellungen konfigurieren
  4. Firewall Regeln konfigurieren

Am besten konfiguriert man vorab alle Adressen Objekte, User und Gruppen Objekte. So kann man danach in einem Zug durchkonfigurieren.

1 Punkt: Benutzerkonten und Gruppen konfigurieren

Config webgui.png Konfiguration über das WebGui:

In unserem Beispiel werden wir die User lokal auf der FortiGate konfigurieren. Man hat aber auch die Möglichkeit über LDAP, Radius die User anzubinden.

  1. Über das Menu User & Authentication -> User Definition kommt man in das Menu um die User anzulugen
  2. Für einen Lokalen User anzulegen wird beim User Type Local User ausgewählt
Fortinet-2824.jpg
  1. Username definieren
  2. Passwort definieren.
  3. Optional kann auch ein FortiToken hinzugefügt werden für die 2Factor Authentifizierung
Fortinet-2825.jpg

Wenn alle User angelegt sind, kann eine UserGruppe definiert werden:

In unserem Beispiel werden wir die Gruppe gr-ssl-access-serverlan nennen und den Benutzer user1 hinzufügen

Fortinet-2826.jpg

Nun definieren wir Netzwerkobjekte welche wir danach für den Aufbau des SSL-VPN brauchen:

Serverlan (Netz welches durch das VPN erreicht werden soll:

Ein Objekt wird über das Menu Policy & Objects -> Addresses --> Createnew.jpg eröffnet:

Fortinet-2827.jpg

Das Adresseobjekt für den IP Pool. Der IP Pool definiert die IP Adresse welche dem Client von der FortiGate zugewiesen bekommt. Hier wird das Adressenobjekt als Type IP Range benutzt:

Fortinet-2828.jpg

2. Punkt : SSL VPN Portale konfigurieren

Config webgui.png Konfiguration über das WebGui:

Wir wollen ein SSL-VPN im Tunnel Modus konfigurieren. Das heisst, wir brauchen für die Verbindung einen VPN Client welchem von der Fortigate her eine IP Adresse zu einem virtuellen Netzwerkatapter zugewiesen wird. Es gibt bereits drei vordefinierte Portale. In unserem Beispiel werden wir aber ein eigenes anlegen und auf unsere Bedürfnisse konfigurieren. Wir konfigurieren einen Split tunnel (es werden nur die IP Adressen in den Tunnel geroutet welche wir explizit definieren. Was genau ein Split Tunnel ist wird in diesem Wiki Artikel genauer erläutert: Was ist ein Split Tunnel?

Um das Portal zu konfigurieren über das Menu VPN --> SSL-VPN Portals --> Createnew.jpg

  1. Portal Name definieren (Im Feld Name)
  2. Tunnel Modus anwählen. Den Schalter Enable Web Mode deaktivieren
  3. Die Option Enable Split Tunneling aktivieren.
  4. Im Feld Routing Address werden die IP Adressen eingetragen, welche durch den VPN Tunnel man erreichen will.
  5. Source IP Pools Dieses Feld definiert, welche IP Adressen dem VPN User an den Virtuellen Adapter zugewiesen werden soll.
  6. in den Tunnel Mode Client Options können noch Client spezifische Einstellungen vorgenommen werden (Passwort speichern , automatische Verbindung usw.)
Fortinet-2829.jpg

Sobald dieses Portal konfiguriert wurde, brauchen wir noch ein Portal um alle Anfragen abzufangen, welche nicht definiert werden. (Ein sogenanntes Dummy Portal) In diesem Portal werden sämtliche funktionen ausgeschalten:

  1. Name der Name des Portals definieren (dummy-portal)
  2. Tunnel Mode und Webmode deaktivieren, auch alle anderen Optionen wird empfohlen zu deaktivieren
  3. Mit OK bestätigen, schon ist das dummy Portal definiert
Fortinet-2830.jpg

Wir sehen jetzt eine Übersicht mit den neu angelegten Portalen , welche Moden ein und ausgeschalten sind

Fortinet-2831.jpg

3. Punkt: SSL-VPN Settings

Config webgui.png Konfiguration über das WebGui:
  1. Menu VPN-->SSL-VPN Settings anwählen
  2. Im Listen on Interface(s) werden die Interfaces definiert, auf welches das SSL-VPN Portal angesprechen werden soll
  3. Das Listen on Port Feld definiert, auf welchen Port das Portal horcht. Wichtig, es muss ein unic Port auf der anzusprechenden IP Adresse sein. Es ist darauf zu achten, dass nicht der selbe Port wie der ADMIN Port benutzt wird. Auch sollte man darauf achten, das dieser Port nicht in einem VIP (Destinations Nat) objekt benutzt wird.
  4. Im hellblauen Feld sieht man eine "Vorschau" wie man das Portal über die IP Adresse erreichen kann:
  5. Im Feld Restrict Access können Netze definiert werden, von wo her der Zugriff erlaubt ist. Ich Empfehle hier allow access from any host zu wählen. Wenn man einschränen will, kann man z.B GEO IP Benutzen und nur Schweizer IP Adressen zulassen.
  6. Idle Logout definiert bei inaktivität wie lange es geht bis der Tunnel abgebaut wird (Wert in Sekunden)
  7. Server Certificate Wenn vorhanden kann hier ein Zertifkat definiert werden
Fortinet-2832.jpg
  1. Im Feld Address Range werden die IP Adressen und IP Netze definiert, welche über das VPN erreicht werden sollen
  2. Um einen selber angelegten IP Pool zu verwenden muss die Option Specify custom IP ranges angewählt werden, danach kann das gewünschte Objekt/Objekte ausgewählt werden.
  3. Es kann bei DNS Server angegeben werden, ob der Client DNS Server benutzt werden soll oder ob man einen Spezifischen DNS Server für den Client benutzen will.
Fortinet-2833.jpg

Nun werden die Portale den entsprechenden Usergruppen zugewiesen:

  1. im Abschnitt Authentication/Portal Mapping auf Createnew.jpg ein neues Mapping erstellen
Fortinet-2834.jpg
  1. die User oder Gruppen auswählen
  2. wir haben kein Realm in diesem Szenario definiert, daher können wir das Default realm benutzen.
  3. Beim Portal können wir jetzt unser definiertes Portal auswählen
Fortinet-2835.jpg

Nun hat es noch eine vordefinierte aktion, welche alle anderen User und Gruppen betreffen, welche oberhalp nicht definiert wurden. Für diesen Fall haben wir das dummy-Portal angelegt.

  1. auf Not Set klicken
  2. edit anwählen
Fortinet-2836.jpg
  1. Bei Portal das dumm-portal auswählen
  2. Mit OK bestätigen
Fortinet-2837.jpg

Nun muss man ganz nach oben scrollen und in das hellgelbe Feld klicken. So kann man direkt eine Firewall Policy erstellen:

Fortinet-2838.jpg

Schritt 4: Firewall Regeln konfigurieren:

Config webgui.png Konfiguration über das WebGui:
  1. Beim Incoming Interface wird das ssl-vpn Tunnel Interface ausgewählt. Dieses Interface wird von der FortiGate automatisch angelegt :SSL-VPN tunnel Interface (ssl.VDOMNAME)
  2. Beim Outgoing Interface wird das Interface selektiert, hinter welchem mein zu erreichendes IP Netzwerk liegt
  3. Das 'Source Feld bekommt das IP Pool Objekt und die Gruppe welche für das SSL-VPN benutzt wird.
  4. Destination hier wird das Ziel Netz angegeben.
  5. Unter Service können die zu erlaubenden Protokole definiert werden
  6. Wichtig ist, dass der NAT Schalter deaktiviert wird. Ansonsten wird das Rückrouting zum EndClient nicht mehr funktionieren (wir benutzen dann die Source IP Adresse des ausgehenden Interfaces)
  7. Es können noch die Security Profiles nach seinem Konzept definiert werden
  8. Bei der Option Log Allowed Traffic empfehlen wir auf All Sessions zu stellen (dann sehen wir im Log auch alles)
  9. darauf achten, dass die Firewall Regel auch aktiviert wird. Enable this policy einschalten.
Fortinet-2840.jpg
Fortinet-2841.jpg

VPN Regeln sollten immer möglichst weit oben im Policy Set angefügt werden. Die Reihenfolge der Policies kann am besten in der By Sequence Ansicht angeschaut werden.

Fortinet-2842.jpg

VPN Client Konfigurieren

Config webgui.png Konfiguration FortiClient:

Beim FortiClient eine neue Verbindung erstellen:

  1. VPN auf SSL-VPN stellen (wir haben eine SSL-VPN Verbindung auf der FortiGate konfiguriert)
  2. Verbindungsname und Beschreibung nach gutdünken konfigurieren
  3. Beim Remote Gateway wird die Domäne oder die IP Adresse der FortiGate angegeben auf welcher das SSL-VPN Portal erreichbar ist
  4. Port anpassen falls man den SSL-VPN Listen Port angepasst hat, muss hier der entsprechende Wert konfiguriert werden
  5. Falls ein Benutzer Zertifkat für die Authentifizierung konfiguriert wurde, kann das im Feld Benutzerzertifikat ausgewählt werden.
  6. Authentifizierung hier kann definiert werden, ob die Loging Daten gespeichert werden soll. (Kann auf der FortiGate aber unterbunden werden)
  7. auf Sichern und schon ist das VPN auf dem Client konfiguriert.
Fortinet-2843.jpg

Nun kann man die Verbindung testen indem man eine neue Session aufbaut:

Fortinet-2844.jpg

Wenn das default Zertifikat von der FortiGate benutzt wird, wird angezeigt, dass dieses Zertifikat nicht als vertrauneswürdig eingestuft wird. Diese Meldung kann man mit Ja bestätigen.

Fortinet-2845.jpg

Wenn Username und Passwort richtig sind, wird sich der Client am VPN anmelden. Wir bekommen folgende Meldung

Fortinet-2850.jpg

Auf dem Client selber sehen wir, wie lange der User verbunden ist, und wieviele Daten er in dieser Session überträgt. Weiter sehen wir auch, die IP Adresse welche er von der FortiGate zugwiesen bekommen hat.

Fortinet-2846.jpg

Wir können auf dem Client über das Eingabe Fenster von Windows CMD eingeben. Es öffnet sich das schwarze Eingabe Fenster.
In In diesem Eingabefenster kann man den Befehl ipconfig eingeben. Nun werden alle Netzwerkkarten und Addapter aufgelsitet und welche IP Adresse darauf konfiguriert oder zugewiesen wurden angezeigt. Unser Adapter vom Fortinet VPN heisst Fortinet SSL VPN Virtual Ethernet Adapter nach diesem müssen wir suchen. Wir sehen , dass wir da die IP Adresse 10.10.85.1 zugewiesen bekommen haben.

Fortinet-2848.jpg

Da wir einen Split Tunnel konfiguriert haben, sehen wir auch, dass nur unser Netz 10.10.80.0/24 (Gelb) in den Tunnel geroutet wird.
Die Default Route 0.0.0.0/0 (Magenta) zeigt weiterhin auf den lokalen Gateway 10.60.60.2

Die Routingtabelle kann man mit dem Befehl route print anzeigen lassen. Für diese Aktion muss man das CMD Programm aber als Administrator ausführen!

Fortinet-2851.jpg

Auf der FortiGate können wir das ganze im Eventlog anschauen gehen:

Config webgui.png Konfiguration über das WebGui:

Zum Eventlog gelangt man folgenermassen: Log & Report --> Events --> entsprechende Kategorie auswählen

Fortinet-2852.jpg

Für das User Eventlog:
Log & Report --> Events --> User Events (Blau)

Fortinet-2853.jpg

Für das VPN Eventlog
Log & Report --> Events --> VPN Events (Magenta)

Fortinet-2854.jpg

Um eine Detalierte Ansicht zu bekommen auf das entsprechende Event klicken:
Hier sehen wir den User, die IP Adresse welcher der Client zugewiesen bekommen hat usw.

Fortinet-2855.jpg

Konfiguration über die CLI:

Config cli.png Konfiguration über die CLI:

User konfigurieren:

config user local
    edit "user1"
        set type password
        set passwd [PASSWORT]
    next
end

Usergruppe konfigurieren:

config user group
    edit "gr-ssl-access-serverlan"
        set member "user1"
    next
end

Adressobjekte konfigurieren:

config firewall address
    edit "net-srvlan-10.10.80.0-24"
        set comment "Server Lan"
        set color 2
        set subnet 10.10.80.0 255.255.255.0
    next
    edit "ip-pool-sslvpn-10.10.85.1-254"
        set type iprange
        set comment "IP-Pool sslvpn Source Client"
        set color 18
        set start-ip 10.10.85.1
        set end-ip 10.10.85.254
    next
end

SSL-VPN Portale konfigurieren:

config vpn ssl web portal
    edit "access-serverlan-tunnel"
        set tunnel-mode enable
        set forticlient-download disable
        set auto-connect enable
        set keep-alive enable
        set save-password enable
        set ip-pools "ip-pool-sslvpn-10.10.85.1-254"
        set split-tunneling-routing-address "net-srvlan-10.10.80.0-24"
    next
    edit "dummy-portal"
        set forticlient-download disable
    next
end

SSL-VPN Settings konfigurieren:

config vpn ssl settings
    set servercert "self-sign"
    set tunnel-ip-pools "ip-pool-sslvpn-10.10.85.1-254"
    set port 443
    set source-interface "port1"
    set source-address "all"
    set source-address6 "all"
    set default-portal "dummy-portal"
    config authentication-rule
        edit 1
            set groups "gr-ssl-access-serverlan"
            set portal "access-serverlan-tunnel"
        next
    end
end

Firewall Regel konfigurieren:

config firewall policy
    edit [POLICY_ID]
        set name "I_SSL-VPN->Serverlan-serverdienste"
        set srcintf "ssl.root"
        set dstintf "port3"
        set srcaddr "ip-pool-sslvpn-10.10.85.1-254"
        set dstaddr "net-srvlan-10.10.80.0-24"
        set action accept
        set schedule "always"
        set service "HTTPS" "PING" "RDP"
        set logtraffic all
        set groups "gr-ssl-access-serverlan"
    next
end

Was versteht man beim SSL-VPN unter einem Split-Tunnel?

Tipp.png

Über die Option Split-Tunneling kann auf dem Client gesteuert werden, wie der Traffic ausserhalb des lokalen Netzwerkes gesteuert wird. Einfach gesagt, wohin geht der Internet-Traffic und der Traffic der Remote-Seite, welche ich erreichen will.

Wenn die Split-Tunnel Option nicht aktiviert ist, bedeutet dies, dass sämtlicher Traffic, welcher nicht im lokalen Netzwerk ist, über den VPN-Tunnel zur FortiGate geht. Dies gewährleistet, dass wenn man mit dem Office verbunden ist, sämtlicher Traffic analysiert und entsprechend verarbeitet werden kann. Der Firewall-Regel können UTM Features hinzugefügt werden, um eine höhere Sicherheit des gesamten Traffics zu gewährleisten. Damit auf dem Client das Internet funktioniert, muss zwingend auf der FortiGate eine Policy für das Internet erstellt werden. Schematisch sieht das so aus:

Split-Tunnel deaktiviert:
Fortinet-2677.jpg

Wenn die Split-Tunnel Option eingeschalten ist, wird nur jener Traffic in den VPN-Tunnel gesendet, welcher geroutet wird. So wird der Internet Traffic über die Leitung des Clients direkt abgehandelt und die Netze, welche auf der Remote-Seite sind, werden über den VPN-Tunnel erreicht. Schematisch sieht dies so aus:

Split-Tunnel aktiviert:
Fortinet-2678.jpg

Wie kann ich beim SSL-VPN ein Bookmarker konfigurieren, welcher ein Verzeichnis mit dem Username enthält?

Es kann sein, dass ich einen Bookmaker im SSL-VPN zur Verfügung stellen möchte, welcher zum Beispiel auf ein persönliches Laufwerk des Users referenziert. Dies ist möglich, sofern das Verzeichnis gleich heisst wie der Username. Damit dies funktioniert muss ich eine Variable benutzen. Folgendermassen kann ich ein SMB/CIFS Laufwerk erreichen, welches einen Folder besitzt der auf den Username referenziert:

Bookmaker : <IP-Destination>/<verzeichnis>

Config webgui.png Konfiguration über das WebGui:
Fortinet-2671.jpg
Config cli.png Konfiguration über die CLI:
# config vpn ssl web portal
# edit "full-access"
# config bookmark-group
# edit "gui-bookmarks"
# config bookmarks
# edit "%username% mit VPN SSO"
# set apptype smb
# set folder "192.168.1.2/data/users/%username%"
# set sso auto
# end
# end
# end
Achtung.png

Es ist darauf zu achten, dass die Variable %username% in Kleinbuchstaben geschrieben wird. Weiter ist es wichtig, dass für die Trennung der Verzeichnisse Slash / und nicht Backslash \ verwendet werden.

Ergebnis:

Fortinet-2672.jpg

Vielen Dank an Andi von Fortinet Schweiz für das testen

Wie kann ich beim SSL-VPN ein Bookmarker konfigurieren, dass dieser ein Zielsystem im Internet erreicht?

Wenn ich beim SSL-VPN Webportal Bookmarker konfiguriere, habe ich dich Möglichkeit, ein System in meinem Netz verfügbar zu machen. Jetzt möchte ich ein System über das Portal im Internet erreichen. Wie muss ich da vorgehen?

Damit ich das System im Internet erreiche, brauche ich eine neue Firewall Regel:

Fortinet-1987.jpg

Wie muss SSL-VPN Bookmark konfiguriert werden, wenn der Zielserver nur über einen IPSec-Tunnel verfügbar ist?

Vorbemerkungen:
Ziel dieser Anleitung ist, eine Intranet Webseite, welche nur über einen IPSec Tunnel erreichbar sein soll, via ein Bookmark auf einem SSL-VPN Portal auf der Fortigate abzubilden.

Ausgangslage:

Zielarchitektur Verwendete Geräte

Fortinet-2232.png

  • Fortigate 60E Beta3

Annahmen:
Die folgende Anleitung basiert auf folgenden Voraussetzungen:

  • Die Fortigate Firewall ist vollständig konfiguriert, hat Zugriff aufs Internet, LAN -> WAN Kommunikation ist bereits etabliert.
  • Der IPSec Tunnel zwischen der Fortigate und dem Drittprodukt, hinter welchem sich der zu publizierende Webserver (in diesem Fall 172.16.1.10) befindet, wurde bereits erfolgreich etabliert, so dass eine Kommunikation zwischen den lokalen Clients (192.168.10.0/24) und den Remote Clients (172.16.1.0/24) möglich ist.

1. Erstellung SSL VPN Portal
Um das SSL VPN Portal zu erstellen, gehe auf der Weboberfläche unter VPN -> SSL-VPN Portals und erstelle mit Create New ein neues SSL VPN Portal:

Fortinet-2233.png

  1. Definiere hier einen Namen für das Portal
  2. Deaktiviere den Schieberegeler
  3. Aktiviere den Schieberegler bei "Enable Web Mode"
  4. Erstelle unter "Predefined Bookmarks" ein Bookmark vom Typ HTTP/HTTPS mit einem aussagekräftigen Namen. Als Location wähle die URL der Applikation, mit welcher das Bookmark aufgerufen werden können soll.

Mit einem Klick auf Ok wird dieses Portal abgespeichert.

2. Konfiguration der SSL VPN Einstellungen
Im nächsten Schritt wird definiert auf welchem Interface und auf welchem Port das User Portal überhaupt erreichbar sein sollen. Wir definieren welche Gruppen und Benutzer auf das Portal Zugriff haben sollen, und wir verknüpfen das in Schritt 1 erstellte Portal mit dem Default Portal. Wähle dazu den Menüpunkt VPN -> SSL-VPN Settings:

Fortinet-2234.png

  1. Listen on Interface: Hier wählen wir das WAN Innterface
  2. Listen on Port: Hier muss ein freier Port gewählt werden, welcher auf diesem Interface noch nicht anderweitig durch ein VIP Objekt, NAT oder einen sonstigen lokalen Service in Verwendung ist.
  3. Wenn das Portal überall vom Internet zugänglich sein soll, wähle hier Allow access from any host
  4. Definiere unter Authentication / Portal Mapping dass das soeben erstellte Portal unter dem Default Realm zugänglich sein soll. Hier können ausserdem Einschränkungen gemacht werden, für welche Benutzer/Gruppen dieses Portal zur Verfügung stehen soll.

Mit einem Apply werden die gewählten Einstellungen gespeichert.

Somit haben wir die nötigen Einstellungen für das SSL VPN Portal vorgenommen.


3. Erstellung des IP Pools
Damit nun das SSL VPN Portal in der Lage ist, mit diesem Webserver zu kommunizieren benötigt es eine Firewall Regel, welche dies der Firewall erlaubt. Für diese Firewallregel benötigen wir einen IP Pool, damit die Source IP des Requests der Firewall dementsprechend angepasst wird. Diesen IP-Pool erstellen wir unter Policies & Objects -> IP Pools -> Create new

Fortinet-2236.png

  1. Type: Overload
  2. External IP Range: Hier wählen wir eine IP welche gemäss IPSec-Phase-2-Konfiguration sich im Bereich der lokalen, zugelassenen Addressen befindet.

Mittels Apply wird abgespeichert.

4. Firewall Regel
Zum Schluss wird noch die Firewall Regel erstellt, welche benötigt wird, damit eine Kommunikation zwischen dem Portal und dem Webserver erlaubt wird: Policy & Objects -> IPv4 Policy -> Create new

Fortinet-2235.png

  1. Incoming Interface: Wähle hier das entsprechende SSL VPN Tunnel Interface
  2. Outgoing Interface: Wähle hier das Interface des IPSec Tunnels
  3. Source: Wähle hier mindestens ein Netzwerk + ein Benutzerobjekt welches erlaubt werden soll
  4. Destination: Wähle hier all, oder schränke den IP-Bereich auf den zu erreichenden Webserver ein
  5. NAT: Schalte hier das NAT ein
  6. IP Pool Configuration: Wähle hier Use Dynamic IP Pool und wähle hier das IP-Pool Objekt, welches im vorherigen Schritt erstellt wurde.
  7. Aktiviere den Regler bei Enable this Policy

Mittels OK wird die Firewall Regel gespeichert.

Ergebnis
Ein Berechtigter Benutzer ist nun in der Lage über die externe IP der Firewall auf das Userportal zuzugreifen. Auf diesem User Portal hat er ein Bookmark, welches wiederum auf einen Webserver zeigt, der nur via IPSec zugänglich ist. Mit einem Klick auf das Bookmark kann der User nun auf diesen Webserver zugreifen:

Fortinet-2237.png

Wieso wird beim SSL-VPN im Webmodus viel Memory und CPU Leistung verbraucht?

FortiOS 60.svg FortiOS 62.svg FortiOS 64.svg

Wir schauen uns an wieso im SSL-VPN Webmodus viele CPU Zyklen oder eine hohe Memory-Auslastung anfällt:

Bei der Verwendung von SSL-VPN im Web-Modus wird erwartet, dass viele CPU- und Speicherressourcen zugeteilt werden. Der SSL-VPN-Webmodus wurde als kurzfristige Ausweichlösung für den Fall konzipiert, dass der SSL-VPN-Tunnelmodus nicht verwendet werden kann.

Eine hohe Ressourcenzuweisung erfolgt aufgrund des "guacd"-Prozesses, welcher die konfigurierten Protokolle (zum Beispiel RDP oder HTTPS) in einen HTML5-Stream parsen muss, um sie dem Client zu präsentieren. Dieser Prozess der Konvertierung anderer Protokolle in Bilder ist sehr ressourcenintensiv in Bezug auf CPU und Memory.

Die Leistung des guacd-Prozesses kann man mit verschiedenen Befehlen beobachten:

  • diagnose sys top
  • diagnose sys top-summary

Mit diesen Befehlen, welche eine Auflistung aktiver Prozesse zeigen, erkennt man, dass die guacd-Prozesse sehr viel CPU oder Memory verbrauchen.

Schauen wir uns dass in einem Beispiel an:

Config cli.png Konfiguration über die CLI:

Beispiel basiert auf einer FortiGate-300E FortiOS v6.2.3, build1066,191218 (GA)

Wenn wir den folgenden Output anschauen, können wir sehen, dass der gesammte Speicherverbrauch zum Zeitpunkt der Datenerfassung bei etwa 85% liegt:

Memory: 8172056k total, 7010740k used (85.8%), 950196k free (11.6%), 211120k freeable (2.6%) 

Der Speicher an dieser Stelle ist hauptsächlich für den aktiven Prozess reserviert (5,4 von 8 GB).

# diagnose hardware sysinfo Memory

MemTotal:        8172056 kB
MemFree:          951164 kB
Buffers:            2204 kB
Cached:           594892 kB
SwapCached:            0 kB
Active:          5561348 kB

MemTotal: 8172056 kB 7980 MB 
MemFree: 949948 kB 927 MB 
Cached: 594636 kB 580 MB 
Active: 5564144 kB 5433 MB <--- guacd Prozess und andere Userland Prozesse wie UTM Features 
Inactive: 273572 kB 267 MB 
Shmem: 337036 kB 329 MB 
Slab: 423044 kB 413 MB 

Wenn wir uns die aktiven Prozesse ansehen, wird der meiste Speicher durch die Menge der laufenden guacd-Prozesse verbraucht.

# diagnose sys top
Run Time:  23 days, 21 hours and 51 minutes
28U, 0N, 20S, 36I, 0WA, 0HI, 16SI, 0ST; 7980T, 881F
         sslvpnd    23061      R      93.0     5.3
           guacd    30982      R      47.0     0.9
           guacd    30909      R      45.0     1.1
         sslvpnd    23060      R      28.0     5.3
         sslvpnd    23062      R      21.0     5.3
       ipsengine    16797      S <     5.0     2.1
       ipsengine    16795      S <     4.0     2.2
       ipsengine    16796      S <     3.0     2.1
           guacd    30006      S       1.0     1.1
           guacd    30139      S       1.0     1.1
         miglogd      245      S       1.0     0.5
           guacd    30884      S       1.0     0.4
          httpsd    30908      S       1.0     0.3
           authd      255      S       1.0     0.2
       ipshelper    16794      S <     0.0     3.0
           guacd    30315      S       0.0     1.1
           guacd    30127      S       0.0     1.1
           guacd    30115      S       0.0     1.1
         updated      204      S       0.0     1.1
           guacd    30023      S       0.0     1.1
           guacd    30724      S       0.0     1.1
           guacd    30078      S       0.0     1.1
           guacd    30298      S       0.0     1.1
           guacd    30260      S       0.0     1.1
           guacd    30672      S       0.0     1.1
           guacd    30218      S       0.0     1.1
           guacd    30179      S       0.0     1.1
           guacd    30039      S       0.0     1.1
           guacd    30568      S       0.0     1.1
           guacd    30177      S       0.0     1.1
           guacd    30351      S       0.0     1.1
           guacd    30380      S       0.0     1.1
           guacd    30355      S       0.0     1.1
           guacd    30331      S       0.0     1.1
           guacd    30128      S       0.0     1.0
           guacd    30259      S       0.0     1.0
           guacd    30300      S       0.0     1.0
           guacd    30229      S       0.0     1.0
           guacd    30040      S       0.0     1.0
           guacd    30936      S       0.0     1.0
           guacd    30545      S       0.0     1.0
           guacd    30053      S       0.0     1.0
           guacd    30444      S       0.0     1.0
           guacd    30592      S       0.0     1.0
           guacd    30940      S       0.0     1.0
... 


Jeder Prozess weist standardmässig etwa 30 - 90 MB zu und unter Last bis gar zu 150 MB oder mehr. Wenn der Prozess unter Last steht wird grob geschätzt jedem Benutzer im SSL-VPN Webmodus etwa 100 MB Speicher zugewiesen. Diese Nutzung hängt vom Datentraffic, den zu verarbeiteten Protokolltypen, der Bildschirmauflösung des Clients und so weiter ab.

Wenn man sich diese guacd-Prozesse genauer ansieht, stellt man fest, dass jeder einzelne Prozess etwa 30 - 120 MB zur Verfügung stellt. Die obere Ausgabe zeigt, dass jeder Prozess ca. 1 % zuweist, so dass dies etwa 80 MB beträgt.

Die Anzahl von maximalen SSL-VPN Benutzer kann abhängig von der gesamten Memory Kapazität von der Fortigate variieren. Mann kann in etwa folgendes berechnen: Wenn jeder Kunde nur minimale Ressourcen von 50MB verwenden würde, und das System würde keinen weiteren Speicher zuweisen, dann gibt es immer noch eine Begrenzung der Gesammtzahl der SSL-VPN-Clients auf der FortiGate mit insgesamt 8000 MB Memory.

Achtung.png

Wichtig zu wissen:
Es handelst sich hier nicht um ein Speicherleck, sondern dieses Verhalten wird so erwartet. Die guacd-Prozesse benötigen lediglich Ressourcen, um den Datentraffic zu parsen und in HTML5 zu konvertieren. Daher sollte der Web-Modus wirklich nur als Workaround benutzt werden und wann immer möglich mit dem Tunnel Modus gearbeitet werden.

Der SSL-VPN-Webmodus wurde als Ausweichlösung für den Fall konzipiert, wenn man den Tunnelmodus nicht verwenden kann (z.Bsp Zugang von einem öffentlichen WiFi oder Hotels usw.)

Aufgrund der erforderlichen Ressourcen sollte er nicht in grossem Umfang eingesetzt werden, sondern eher dazu dienen, Clients kurzfristig schnell zum laufen zu bringen. Auf lange Sicht sollten diese SSL-Clients so konfiguriert werden, dass sie den SSL-VPN-Tunnelmodus verwenden. Man kann den WebModus zum Beispiel dafür benutzen, dass der FortiClient über den SSL-VPN-Webmodus heruntergeladen wird:

Lösungen zur Vermeidung einer hohen CPU- oder Memoryauslastung:

  • Tunnel Modus verwenden
  • Im Webmodus Anzahl User so weit wie möglich begrenzen!

Aufgrund der erforderlichen Ressourcen wird diese Funktion nicht in grossem Umfang oder langfristig genutzt. Langfristig sind diese SSL-Clients so konfiguriert, dass sie den SSL-VPN-Tunnelmodus verwenden. Beispielsweise können Remote-Benutzer den FortiClient über den SSL-VPN-Webmodus herunterladen und sich dann über den SSL-VPN-Tunnelmodus verbinden.

Tipp.png

Hinweis:
Es ist geplant, diese Designeinschränkung in zukünftigen FortiOS Versionen zu verbessern. (Stand 25.3.2020)
Referenz: https://kb.fortinet.com/kb/documentLink.do?externalID=FD48014

Wie überprüfe ich Hosts bei SSL-Verbindungen?

FortiOS 60.svg FortiOS 62.svg FortiOS 64.svg

Config webgui.png Konfiguration über das WebGui:
  1. VPN -> SSL-VPN Portals -> auf <portal> doppelklicken
Fortinet-3067.jpg

Mit der Option Restrict to Specific OS Versions können SSL-Verbindungen, die von spezifischen OS-Versionen ausgehen, zugelassen bzw. abgelehnt werden.

Config cli.png Konfiguration über die CLI:
config vpn ssl web portal
   edit <portal_name>
     set host-check [none|av|fw|av-fw|custom] *
     set host-check-interval <Sekunden>
end

* Erklärungen
none:   kein Host-Check
av:     Antivirus-Software-Check
fw:     Firewall-Software-Check
av-fw:  Antivirus- und Firewall-Software-Check
custom: Custom-Software-Check

Wie erhöhe ich die Sicherheit der SSL-VPN-Verbindung durch Zwei-Faktor-Authentifizierung mit Zertifikaten?

FortiOS 60.svg FortiOS 62.svg FortiOS 64.svg

Methode 1: Client-Zertifikat

Bei der Authentifizierung wird Remote-Client seitens FortiGate nach seinen (eigenen) Zertifikaten gefragt. Voraussetzung ist, dass Client-Browser ein lokales Zertifikat verwendet, und FortiGate gleichzeitig das entsprechende CA-Zertifikat besitzt.

Config cli.png Konfiguration über die CLI:
   # config vpn ssl settings
       set reqclientcert enable
     end


Methode 2: FortiGate CA-Zertifikat

Im Client-Browser das CA-Zertifikat von FortiGate installieren und verwenden (Standard-Zertifikat: Fortinet_CA_SSL).

Config cli.png Konfiguration über die CLI:
   # config vpn ssl settings
       set servercert <certificate>
     end

Wie erhöhe ich die Sicherheit der SSL-VPN-Verbindung durch IP- und MAC-Adressen Restriktionen?

FortiOS 60.svg FortiOS 62.svg FortiOS 64.svg

Die Sicherheit der SSL-VPN-Verbindung kann zusätzlich durch Erlauben bzw. Ausschliessen ausgewählter Host-Adressen (IP und/oder MAC) erhöht werden.

Methode 1: IP-Adressen von Hosts

Im GUI und CLI kann der Zugang spezifischer IP-Adressen erlaubt werden.

Config webgui.png Konfiguration über das WebGui:
  1. VPN -> SSL-VPN Settings
Fortinet-3065.jpg

Anschliessend im Feld Hosts den entsprechenden Host auswählen.

Config cli.png Konfiguration über die CLI:
# config vpn ssl setting
    set source-address <46.22.16.164>
  end

Umgekehrt kann (nur) im CLI der Zugang spezifischer IP-Adressen ausgeschlossen werden. Beispielsweise können Hosts anhand ihrer geographischer IP-Adressen ausgeschlossen werden.

Config cli.png Konfiguration über die CLI:
   # config vpn ssl settings
       set source-address-negate [enable|disable]
     end

Methode 2: MAC-Adressen von Hosts

Bei dieser Methode wird der Zugang eines Hosts basierend auf dessen MAC-Adresse gewährt bzw. abgelehnt.

Config cli.png Konfiguration über die CLI:
   # config vpn ssl settings
       edit <portal-name>
         set mac-addr-check [enable|disable]
         set mac-addr-action [allow|deny]
       end

Wo finde ich SSL-VPN Logs?

FortiOS 64.svg

Config webgui.png Konfiguration über das WebGui:
  1. Log & Report -> Events
Fortinet-3066.jpg

VPN Events:

- Zeigt neue Verbindunsanfragen: z.B. ssl-new-con
- Zeigt ob SSL-VPN-Tunnel erfolgreich war oder nicht: z.B. tunnel-up, tunnel down


User Events:

- Zeigt Authentifizierungen von SSL-VPN-Usern: z.B. auth-logon, auth-logout

Wie verhindere ich Logout von SSL-VPN-Usern?

FortiOS 60.svg FortiOS 62.svg FortiOS 64.svg

Mittels CLI, ermöglicht FortiGate das Konfigurieren von Timern, die verhindern, dass SSL-VPN-User ungewollt ausgeloggt werden, falls die Verbindung beispielsweise eine hohe Latenz hat. Das Logout erfolgt standardmässig nach 10 bzw. 30 Sekunden, und kann durch den Timer auf 60 bzw. 180 Minuten maximiert werden.

Config cli.png Konfiguration über die CLI:
   # config vpn ssl settings
       set login-timeout <10-180>     -> Standardeinstellung: 10 Sekunden
       set dtls-hello-timeout <10-60> -> Standardeinstellung: 30 Sekunden
     end

Der Timer kann ausserdem bei unvollständigen HTTP-Anfragen verwendet werden, und somit möglicherweise DoS-Angriffe (z.B. Slowloris) verhindern, die sich dahinter verstecken.

Config cli.png Konfiguration über die CLI:
   # config vpn ssl settings
       set http-request-header-timeout <1-60>
       set http-request-body-timeout <1-60>
     end

Wie kann ich die Anzahl möglicher SSL-VPN-Loginversuche einschränken?

FortiOS 6x.svg FortiOS 70.svg Die entsprechende Meldung: Too many bad login attempts. Please try again in a few minutes.

Gemäss Default, haben SSL-VPN-User 2x Versuche, um sich erfolgreich einzuloggen, ansonsten werden sie (ebenfalls default) für 60 Sekunden gesperrt.

Beide Default-Einstellungen können sehr einfach im CLI geändert werden:

Config cli.png Konfiguration über die CLI:
   # config vpn ssl settings
       set login-attempt-limit [Wert; Anzahl Versuche] -> 0-10 möglich (0 = kein Limit)
       set login block-time [Wert; Sekunden] -> 0-86400 möglich
     end

Wie kann ich SSL-VPN-Verbindungen, die aus bestimmten Ländern initiiert werden, einschränken?

FortiOS 64.svg FortiOS 70.svg

Wenn man den Zugriff auf das SSL-VPN Portal nur von gewissen Länder (Schweiz, Deutschland ..) zulassen will, kann dies mit GeoIP Objekten konfiguriert werden. Folgende Anleitung erklärt wie man den Zugriff auf Public IP Adressen aus der Schweiz beschränken kann:

Config cli.png Konfiguration über die CLI:

Schritt 1: Firewall Address konfigurieren

   # config firewall address
       edit "restriction_switzerland" -> Name der "Firewall Address"
           set type geography
           set country "CH" -> erlaubt Verbindungen aus "CH"
       next
     end

Schritt 2: Firewall Address Group konfigurieren

   # config firewall addrgroup
       edit "Geo_restriction_ssl_vpn"
           set member "restriction_switzerland"
       next
     end

Schritt 3: Bei SSL-VPN Settings u.a. Firewall Address Group als Source konfigurieren:

   # config ssl vpn settings
       set soure-address "Geo_restriction_ssl_vpn"
     end

Im GUI

Config webgui.png Konfiguration über das WebGui:

Schritt 1:
Policy & Objects > Addresses > Create New : Address aus Drop-Down-Liste wählen

Fortinet-5007.png

Schritt 2:
New Address > Name : Bel. Namen (z.B. Country_accept) wählen > Type : Geography (!) aus Drop-Down-Liste wählen

Fortinet-5008.png

Schritt 3:
SSL VPN Settings > Restrict Access : Limit Access to specific hosts wählen > Hosts : Erstellten Host (e.g. Country_accept) aus Drop-Down-Liste wählen

Fortinet-5009.png]]

Wie kann ich nicht-gewünschte Login-Versuche (potenzielle Brute-Force-Attacken) auf das SSL-VPN-Portal verhindern?

FortiOS 64.svg FortiOS 70.svg

Bei einer Brute-Force Attacke handelt es sich um eine enorm grosse Anzahl an (automatisierten) Versuchen, den Usernamen und das Passwort nach Trial-Error-Prinzip zu "knacken", um auf eine geschützte Web-Ressource zu gelangen, wie z.B. das Fortinet SSL-VPN-Portal und die darin verwalteten, internen Ressourcen/Services. Trotz Massnahmen wie z.B. Einschränkung der Zugriffe auf bestimmte Länder (GeoIP-Objekte), können Angreifer das SSL-VPN-Portal-Anmeldefenster weiterhin abrufen, und somit zahlreiche Login-Prompts "provozieren".

Beispiel eines gescheiterten Login-Versuchs im SSL-VPN-Portal-Anmeldefenster:

 Fortinet-323202.png

Die verdächtig hohe Anzahl gescheiterter Login-Prompts ist anschliessend in den VPN-Event-Logs mit der Action ssl-login-fail aufgelistet.


Lösung:

Schritt 1: Firewall-Adresse konfigurieren mit spezifischer IP-Adresse, Subnetz, Location

Config cli.png Konfiguration über die CLI:
   # config firewall address
       edit "Restricted_Acccess" -> Bespiel-Name 
           set ip "112.65.94.208" -> Beispiel einer "verdächtigen" IP-Addresse
       next
     end

Schritt 2: Local-In-Policy konfigurieren inkl. der Firewall-Adresse (aus Schritt 1)

Info.svg

Local-In-Policy kann nur via CLI konfiguriert werden
Local-In-Policy die manuell angelegt werden, sind im WebGui nicht ersichtlich.

Config cli.png Konfiguration über die CLI:
   # config firewall local-in-policy
       edit 1
           set intf "port1"
           set srcaddr "Restricted_Access" -> Firewall-Adresse (aus Schritt 1)
           set dstaddr "all"
           set service "ALL"
           set schedule "always"
       next
     end


Anschliessend führen Verbindungs- und Login-Versuche, die z.B. von IP "112.65.94.208" ausgehen, nicht mehr zum SSL-VPN-Portal-Anmeldefenster -> somit wird kein Login-Prompt generiert, und folglich auch auch kein VPN-Event-Log (ssl-login-fail). Das Risiko einer Brute-Force Attacke reduziert sich dementsprechend. Stattdessen resultieren Verbindungs- und Login-Versuch in einem gewöhnlichen Verbindungsfehler:

Fortinet-323201.png

17.08.2022 - chris

Wie kann man zwischen der Admin-Anmeldeseite und der SSL-VPN-Webseite wechseln, wenn für beide derselbe Port verwendet wird?

Manchmal möchte man denselben Port, zum Beispiel 443, für die WebGUI Anmeldung und für das SSL-VPN Anmelde Portal für einen User Benutzen. In diesem Fall werden die Benutzer standardmässig mit einer SSL-VPN-Webseite anstelle einer WebGui Anmeldeseite zum autenhtifzieren aufgefordert.

Folgene Konfiguration in der CLI kann diesen Umstand beheben:

Config cli.png Konfiguration über die CLI:
config vpn ssl setting
   set port-precedence [disable|enable]
end

Die Option port-precedence muss auf disable konfiguriert werden.

IPSec VPN

Wie konfiguriere ich eine Site-to-Site IPSec VPN Verbindung von Grund auf?

FortiOS 64.svg FortiOS 70.svg

Ausgangslage
Von der Labor1 zur Labor2 Umgebung soll eine IPSEC VPN Verbindung konfiguriert werden, damit man aus dem UserLan 10.10.80.0/24 auf die DMZ System in der Labor2 Umgebung zugreifen kann. In unserem Beispiel haben wir einen Windows 10 Client mit der IP Adresse 10.10.80.20 und dieser möchte Zugriff auf das Webportal des FortiMail mit der IP Adresse 198.18.200.45 haben. In der Firewall Regeln definieren wir ein einfaches Setup. Die Seite Labor1 kann zur Seite Labor2 mit allen Servicen zugreiffen. Das selbe wird auch in ungekehrter Reihenfolge ermöglicht.

Labor1 und Labor2 sind mit je einer FortiGate VM02 abgesichert. Im Labor1 wird das FortiOS 6.4.6 und im Labor2 das FortiOS 7.0.1 verwendet.

Seite Labor 1 Seite Labor 2

Netzplan

Fortinet-2559.jpg
FortiOS 6.4.6 7.0.1
Lokal Netzwerk 10.10.80.0/24 198.18.200.0/24
Public IP 146.4.73.77 146.4.73.78

Authentication

Pre-shared Key definieren

Phase 1 Proposal

Algorithmus: AES256-SHA256 DH-Group 15

Phase 2 Proposal

Algorithmus: AES256-SHA256 / PFS-DH-Group 15

Schritt 1 - IPSec Tunnel konfigurieren
In diesem Beispiel sieht man die Screenshots nebeneinander. Labor1 ist links (weiss/grün) und Labor2 rechts (dunkel/orange) angeordnet.

Config webgui.png Konfiguration über das WebGui:

Um einen VPN Tunnel zu konfigurieren, geht man über das Menu VPN --> IPsec Tunnels --> Create New --> IPsec Tunnel

  1. Name des Tunnels eingeben. Dieser Name wird auch für das angelegte VPN Interface benutzt. Achtung! Der Name kann nachträglich nicht mehr editiert werden.
  2. Um den VPN Wizard zu beenden bei Template Type den Punkt Custom auswählen.
  3. mit Next zum nächsten Schritt
Fortinet-2545.jpg

Network:

  1. Wenn die gegenseite eine Statische IP Adresse zugewiesen hat, den Typ Remote Gateway auf Static Address setzen
  2. IP Adresse über welche die Gegenstelle ereicht wird.
  3. Das Interface definieren, auf welchen der VPN Tunnel terminiert. (Meistens ein Wan Interface)
  4. NAT Traversal Optionen definieren --> Mehr Infos darüber NAT-T
  5. DPD Optionen konfigurieren --> Mehr Infos darüber DPD
Fortinet-2546.jpg

Authentication

  1. Wahlweise kann mit einem Preshared Key oder Zertifikaten gearbeitet werden. Bei Zertifikaten ist zu beachten, dass diese gültig sind und das Datum nicht abgelaufen ist. In unserem Beispiel benutzen wir die Methode Pre-Shared Key.
  2. Pre-Shared Key definieren und mit der Remote Seite abgleichen. Es muss auf beiden Seiten exakt der gleiche komplexe Schlüssel verwendet werden.
  3. IKE Methode wählen. Die FortiGate unterstützt die Methode IKEv1 und IKEv2. Für unser Beispiel wählen wir IKEv2
Fortinet-2547.jpg

kleiner Tipp: Nicht den Preshard Key aus diesem Beispiel nehmen, bitte selber einen Einmaligen Preshared Key definieren!

Phase 1 Proposal

  1. Encryption wählen. Wir wählen AES256
  2. Authentication wählen. Wir benutzen AES256
  3. Für die temporäre Verschlüsselung mittels der effektiven Key ausgetauscht werden soll, benutzen wir die Diffie-Hellmann Group Methode. Für unser Beispiel wählen wir die DH-Group 15.
  4. Die Key Lifetime, welche in Sekunden angegeben ist, belassen wir so. Wenn VPN mit Drittanbietern hergestellt werden, darauf achten den Wert auf beiden Geräten gleich zu konfigurieren.
  5. Konfiguration in der Phase1 speichern
Fortinet-2548.jpg

Phase 2 konfigurieren Es können mehrere Selektoren pro Phase 1 definiert werden. Wichtig ist, dass auf beiden VPN-Gateway die Selektoren identisch sind. Definiere einen Namen pro Selektor und konfiguriere das Lokale- und das Remote-Subnetz welches dann die Encryption Domäne bildet. In unserem Beispiel wählen wir Local Address 192.168.2.0/24 und Remote Address 172.16.16.0/24

  1. Neuen Phase2 Selektor konfigurieren
  2. Name für den Selektor definieren#
  3. Lokales Netzwerk oder Host(s) definieren
  4. Remotes Netzwerk oder Host(s) definieren
  5. über Advanced kann man die Encryption definieren
  6. Authentication definieren
  7. Enable Replay Detection einschalten. IPsec-Tunnel können für Replay-Angriffe anfällig sein. Die Replay Detection ermöglicht es der FortiGate alle IPsec-Pakete zu überprüfen, um festzustellen, ob sie bereits empfangen wurden. Wenn encrypted paket deaktiviert ist, werden die Pakete von der FortiGate verworfen
  8. Perfect Forward Secrecy einschalten. Standardmässig werden die Phase 2-Schlüssel von dem in Phase 1 erstellten Sessionkey abgeleitet. Perfect Forward Secrecy (PFS) erzwingt einen neuen Diffie-Hellman-Austausch, wenn der Tunnel beginnt und wenn die Key-Life der Phase 2 abläuft, wobei jedes Mal ein neuer Schlüssel generiert wird. Dieser Austausch stellt sicher, dass die in Phase 2 erstellten Schlüsseln unabhängig von den Schlüsseln der Phase 1 oder anderen Schlüsseln sind, die in Phase 2 automatisch erzeugt werden.
  9. Defie-Hellman Group definieren
  10. Auto-negation und Autokey Keep Alive Optionen definieren.
  11. Key Lifetime definieren. Dabei achten das wen man Dritthersteller für das VPN auf der Gegenseite hat, diese Werte auf einer Seite angepasst werden müssen.
  12. Phase2 Selektor abschliessen
  13. VPN Tunnel Konfiguration abschliessen und speichern
Fortinet-2549.jpg

Schritt 2 - Routen konfigurieren

Config webgui.png Konfiguration über das WebGui:

Damit die FortiGate die Remote Netze für den VPN Tunnel kennt, muss eine Route auf das Tunnel Interface eingerichtet werden. Die Route kann folgendermassen konfiguriert werden: Menu Network -> Static Routes -> Createnew.jpg

  1. Bei Destination Option 'Subnet selektieren
  2. Das Remote-Netz konfigurieren (Netz das wir über das VPN erreichen möchten)
  3. Das Netz Routen wir auf das VPN Interface (dieses Interface wird automatisch angelegt, sobald der IPSec Tunnel konfiguriert wird und heisst wie der VPN Tunnel).
  4. Administrative Distanz kann auf 10 blassen werden
  5. Kommentare schaffen Klarheit
  6. mit OK wird die statische Route eingerichtet
Fortinet-2551.jpg

Jetzt muss noch die Blackhole Route eingerichtet werden. Was eine Blackhole Route ist, kann hier entnommen werden:

  1. Remote Netz eintragen
  2. Interface Blackhole auswählen
  3. die Distanz muss höher sein, als die der regulären Route. Wir empfehlen den Wert 254
  4. Kommentare schaffen Klarheit
  5. mit OK wird die Route eingerichtet
Fortinet-2542.jpg

Nun sollten beide Routen in der Übersicht zu sehen sein:

Fortinet-2552.jpg
Fortinet-2552-2.jpg

Schritt 3 - Policy einrichten

Config webgui.png Konfiguration über das WebGui:

Damit der Traffic durch den VPN-Tunnel fliesst, muss mindestens in eine Richtung eine Firewall Regel konfiguriert werden. Dabei wird das Tunnel Interface und das Interface für den lokalen Traffic untereinander freigeschalten:

Menu Policy & Objects -> IPv4 Policy -> Createnew.jpg
In diesem Beispiel wird die Policy vom Lokalen Netz zum Remote Netz konfiguriert:

  1. Policy Name definieren (wird im Traffic Log angezeigt)
  2. Source Interface (Interface des Lokalen Netzes)
  3. Destinations Interface (VPN Interface)
  4. Lokales Netzwerk Objekt auswählen (oder Lokale Hosts)
  5. VPN Netzwerk Objekt auswählen (oder Remote Hosts)
  6. Services definieren
  7. NAT-Option deaktivieren (Source Nat)
  8. UTP Feature bei Bedarf aktivieren
  9. mit OK wird die Regel erstellt
Fortinet-2553.jpg

Damit der Traffic von beiden Seiten her funktioniert, muss noch eine zweite Policy eingerichtet werden. Diese kann analog der ersten Policy eingerichtet werden. Einfach das Source- und Destination-Interfaces und Adressobjekte tauschen. Alternativ kann auch die neu eingerichtete Policy mittels Rechtsklick angewählt werden und im Dropdown Menu Clone Reverse gewählt werden.

Fortinet-2554.jpg

In der Policy muss jetzt dennoch was kleines konfiguriert werden:

  • Feld für den Policy Namen definieren
  • Die Policy muss aktiviert werden
  • mit OK wird die Reverse Policy eingerichtet
Fortinet-2555.jpg

Es wird empfohlen die Policies für Site-to-Site VPN im Regelwerk oben anzuordnen.

Fortinet-2556.jpg

VPN Monitor:

Fortinet-2557.jpg

Mit dem MouseCursor kann über den Tunnel gefahren werden und es werden mehr Informationen über den Tunnel angezeigt:

Fortinet-2558.jpg Fortinet-3073.jpg

Zugriff von 10.10.80.20 auf 198.18.200.45 testen:
Ich habe mich dafür über RDP auf den Windows 10 Client über das Management Netz (198.18.0.118) eingelogt. Der Defaultgateway des Clients ist auf 10.10.80.250 (FortiGate Labor 1) konfiguriert.
Auf dem Client 10.10.80.20 (Windows 10 Client) führen wir einen Ping auf den FortiMail mit der Adresse 198.18.200.45 durch und sollten Antwort bekommen:

Fortinet-3074.jpg

Nun versuchen wir das Webmail Portal zu erreichen: https://198.18.200.45

Fortinet-3075.jpg

In den ForwardLogs der beiden FortiGates sehen wir unsere Requests im Log:

Config webgui.png Konfiguration über das WebGui:

Seite Labor 1

Fortinet-3076.jpg

Seite Labor 2

Fortinet-3077.jpg

In der CLI kann man den Tunnel folgendermassen konfigurieren:

Folgende Variabeln mit der Funktion "suchen + ersetzen" den richtigen Werten zuweisen:

Es muss der gesamten Ausdruck einschließlich der eckigen Klammern ersetzt werden.
+--------------------------+--------------------+---------------------------------------------------------------------------------+
| Variabeln                |  Example value     |   Description                                                                   |
+--------------------------+--------------------+---------------------------------------------------------------------------------+
| [VPN_NAME]               |   to_lab-2         |     VPN Name (mit diesem Namen wird automatisch ein VPN Interface erstellt)     |         
| [OUTGOING_INTERFACE]     |   port1            |     Interface auf welchem der VPN Tunnel terminiert (meistens ein WAN Interface)|
| [IP-ADDRESS-VPN-GATEWAY] |   146.4.73.78      |     Public IP Adresse des Remote VPN Gateway                                    | 
| [PRESHARED-KEY]          |   mnoieOIj66&%eunn |     Preshard Key definieren                                                     |
| [REMOTE_NET_IP]          |   198.18.200.0     |    IP Netzwerk der Remote Seite, welches erreicht werden soll                   |
| [REMOTE_SUBNET_MASK]     |   255.255.255.0    |    Netzmaske des Remote Netzwerkes                                              |
| [LOCAL_NET_IP]           |   10.10.80.0       |    Lokales Netzwerk                                                             |
| [LOCAL_SUBNET_MASK]      |   255.255.255.0    |    Netzmaske des Lokalen Netzwerkes                                             |
| [LOCAL_INTERFACE]        |   port3            |    Interface der FortiGate hinter welchem das Lokale Netzwerk ist. (LAN)        |  
+--------------------------+--------------------+---------------------------------------------------------------------------------+
Achtung Interface Namen, Portnummern und Adressobjekte sind Case sensitiv
# Wenn alle Variablen mit search replace angepasst wurden, kann dieser Teil über die CLI in die FortiGate eingelesen werden:

# Konfiguration VPN Phase 1
config vpn ipsec phase1-interface
edit "[VPN_NAME]"
set interface "[OUTGOING_INTERFACE]"
set ike-version 2
set peertype any
set net-device disable
set proposal aes256-sha256
set comments "VPN Tunnel [VPN_NAME]"
set dhgrp 15
set nattraversal disable
set remote-gw [IP-ADDRESS-VPN-GATEWAY]
set psksecret "[PRESHARED-KEY]"
next
end

# Konfiguration VPN Phase 2
config vpn ipsec phase2-interface
edit "[VPN_NAME]-[REMOTE_NET_IP]"
set phase1name "[VPN_NAME]"
set proposal aes256-sha256
set dhgrp 15
set src-subnet [LOCAL_NET_IP] [LOCAL_SUBNET_MASK] 
set dst-subnet [REMOTE_NET_IP] [REMOTE_SUBNET_MASK]
next
end

# Konfiguration statische Routen
config router static
edit 0
set dst [REMOTE_NET_IP] [REMOTE_SUBNET_MASK]
set device [VPN_NAME]
set comment "Remote Network for [VPN_NAME]"
next
edit 0
set dst [REMOTE_NET_IP] [REMOTE_SUBNET_MASK]
set distance 254
set comment "Blackhole [VPN_NAME]"
set blackhole enable
next
end

# Konfiguration Firewallregeln in beide Richtungen - Service ALL
config firewall address
edit "net_lan-[LOCAL_NET_IP]"
set color 3
set subnet [LOCAL_NET_IP] [LOCAL_SUBNET_MASK] 
next
edit "net_remote-[REMOTE_NET_IP]"
set color 10
set subnet [REMOTE_NET_IP] [REMOTE_SUBNET_MASK]
next
end

config firewall policy
edit 0
set name "Outgoing_localLAN_to_VPN-[VPN_NAME]"
set srcintf "[LOCAL_INTERFACE]"
set dstintf "[VPN_NAME]"
set srcaddr "net_lan-[LOCAL_NET_IP]"
set dstaddr "net_remote-[REMOTE_NET_IP]"
set action accept
set schedule "always"
set service "ALL"
set logtraffic all
set comments ""
next
edit 0
set name "Incoming_VPN-[VPN_NAME]_to_localLAN"
set srcintf "[VPN_NAME]"
set dstintf "[LOCAL_INTERFACE]"
set srcaddr "net_remote-[REMOTE_NET_IP]"
set dstaddr "net_lan-[LOCAL_NET_IP]"
set action accept
set schedule "always"
set service "ALL"
set logtraffic all
next
end

Das Template kann hier heruntergeladen werden:


edit 07.12.2022 - 4Tinu

IPSEC Phase 1 - Was versteht man unter Deat peer detection?

Manchmal kann es infolge von Routing- oder anderen Netzwerk-Problemen zu einem Ausfall der Kommunikationsverbindung zwischen einer FortiGate- und einem VPN-Peer oder VPN-Client kommen.

Pakete können verloren gehen, wenn die Verbindung allein durch eine Zeit-Überschreitung unterbrochen wird.

Die FortiGate hat einen Mechanismus Namens Dead Peer Detection (DPD), der auch als Gateway-Erkennung oder Ping-Server bezeichnet wird.

Diese Funktion ist ist verantwortlich, dass in eine solche Situation verhindert wird und IKE-Verhandlungen automatisch wieder aufgenommen werden, bevor die Verbindung unterbrochen wird: Die aktiven Phase-1-Sicherheitsverbindungen werden abgefangen und neu verhandelt (neu verschlüsselt), bevor der Phase-1-Verschlüsselungsschlüssel abläuft.

DPD Parameter:

  • Disable: Deaktivieren: Dead Peer-Erkennung deaktivieren.
  • On-idle: Dead-Peer-Erkennung auslösen, wenn IPsec inaktiv ist.
  • On-demand: Löst Dead Peer Detection aus, wenn IPsec-Verkehr gesendet, aber keine Antwort vom Peer empfangen wird.
    • DPD-RETRYINTERVAL: Zeitspanne des Intervalls in Sekunden, nach dem eine Neuverbindung mittels DPD versucht wird.
    • DPD-RETRYCOUNT: Länge des Intervalls in Sekunden wie oft DPD erneut versucht wird.

Mit den Standardeinstellungen wird der DPD alle 20 Sekunden dreimal versucht. Insgesamt wird der Tunnel nach einer Minute ohne DPD-Rückmeldung abgebrochen.

Fortinet-2813.jpg

Wenn auf einem Einwahlserver eine Vielzahl von VPN-Verbindungen im Leerlauf sind, könnte sich der erhöhte DPD-Austausch negativ auf die Leistung / Auslastung des IKE-Prozesses auswirken.
Aus diesem Grund steht in der CLI eine Option zur Verfügung, DPD passiv in einem Modus namens "on-demand" zu versenden.

  • Wenn kein Datenverkehr stattfindet, und der letzte DPD-ACK empfangen wurde, versendet das IKE keine weiteren DPDs in regelmässigen Abständen.
  • IKE sendet nur dann DPDs aus, wenn es ausgehende Pakete zu versenden gibt, aber seitdem keine eingehenden Pakete empfangen wurden.

IPSEC Phase 1 - Was bedeutet die Option NAT-Traversal?

Tipp.png

Wir wissen das Network Address Translation (NAT) eine Möglichkeit ist, private IP-Adressen in öffentlich zugängliche Internetadressen umzuwandeln und umgekehrt. Wenn ein IP-Paket ein NAT-Gerät passiert (zb. Router, Firewall..), wird die Source oder Destination Adresse im IP-Header geändert. Die FortiGate unterstützen folgende NAT Versionen:

  • Version 1 (Einkapselung auf Port 500 mit Nicht-IKE-Markierung)
  • Version 3 (Enkapsulation auf Port 4500 mit Nicht-ESP-Markierung)
  • kompatible Versionen

NAT kann bei IPsec-Paketen im ESP-Tunnelmodus nicht durchgeführt werden, da die Pakete keine Portnummer enthalten. Folglich können die Pakete nicht demultiplexiert werden. Um dies zu umgehen, bietet die FortiGate eine Möglichkeit, die IPsec-Paket-Header vor NAT-Modifikationen zu schützen. Das NAT Traversal oder kurz NAT-T: Wenn die Option Nat-traversal aktiviert ist, werden ausgehende verschlüsselte Pakete in einen UDP-IP-Header eingekapselt, welcher eine Portnummer enthält. Diese zusätzliche Verkapselung ermöglicht es NAT-Geräten, die Portnummer zu ändern, ohne das IPsec-Paket direkt zu modifizieren. Um die zusätzliche Verkapselung von IPsec-Paketen zu ermöglichen, muss die Option Nat-traversal immer dann aktiviert werden, wenn ein NAT-Gerät zwischen zwei FortiGate VPN-Peers oder einer FortiGate und einem Remote VPN Client wie der FortiClient besteht. Auf der Empfangsseite entfernt die FortiGate oder der FortiClient die zusätzliche Verkapselungsschicht, bevor das Paket entschlüsselt wird. Das ESP-Protokoll hat in der Regel Probleme beim Überqueren von Geräten, die NAT betreiben. Einer der Gründe dafür ist, dass ESP hat keine Portnummern, wie TCP und UDP, um den Verkehr von einem Tunnel zum anderen zu unterscheiden. Um dieses Problem zu lösen, wurde NAT Transversal (NAT-T) zu den IPsec-Spezifikationen hinzugefügt. Wenn NAT-T auf beiden Seiten aktiviert ist, können die Peers jedes NAT-Gerät entlang des Pfades erkennen. Wenn auf dem Pfad ein NAT gefunden wird, geschieht auf beiden Peers folgendes:

  • Die IKE-Verhandlung schaltet auf die Verwendung des UDP-Ports 4500 um.
  • ESP-Pakete werden in UDP-Port 4500 eingekapselt.

Wenn also zwei FortiGate-Geräte vorhanden sind, welche sich zum Beispiel hinter einem ISP-Modem mit NAT befinden, muss man wahrscheinlich die Option NAT-T aktivieren. Wenn die Einstellung "NAT Traversal" auf "Forced" (Erzwungen) gesetzt ist, wird immer UDP-Port 4500 verwendet, auch wenn kein NAT Gerät entlang des Pfades vorhanden ist. Wenn NAT-T aktiviert ist, zeigt die Option Keepalive Frequency das Intervall (in Sekunden) an, in dem die FortiGate Keepalive-Tests sendet. Sie benötigen NAT-T, wenn sich ein oder mehrere Router entlang des Pfads befinden, die NAT durchführen. Der Zweck der Keepalive-Probes ist es, die IPsec-Verbindung über diese Router entlang des Pfades aktiv zu halten

Fortinet-3078.jpg

Wenn nattraversal auf forced gesetzt ist, wird die folgende Ausgabe angezeigt.

# get vpn ipsec tunnel details | grep nat
    nat traversal mode: silent


IPSEC Phase 2 - Was bedeutet die Option Auto-Negotiate?

Tipp.png

Ausgangslage:
Ein IPSec-VPN erzeugt eine verschlüsselte Sicherheitsassoziation (SA) zwischen zwei Peers. Dies geschieht in zwei Phasen. Standardmässig wird die SA der Phase 2 erst dann ausgehandelt, wenn ein Peer versucht Daten zu senden.

Funktion:
Wenn die auto-negotiate Funktion aktiviert ist, wird die Verhandlung der SA der Phase 2 automatisch eingeleitet. Dabei wird dieser Vorgang alle fünf Sekunden wiederholt, bis die SA eingerichtet ist. Die Auto-Negotiate-Funktion erkennt, ob der Tunnel jemals abreisst und versucht die SA wieder herzustellen. Die Keepalive-Funktion ist jedoch eine bessere Möglichkeit den VPN aufrechtzuerhalten.

Wann soll ich die Auto-Negotiate Funktion verwenden?
Man kann die auto-negotiate Funktion aktivieren, wenn auf einer Seite des VPN ein Einwahl-Peer ist. In dieser Konfiguration kann nur der Einwahl-Peer den Tunnel aufbauen, da der andere Peer die Gateway-Adresse der Einwahl-Peer nicht kennen kann. Die Aktivierung von Auto-Negotiate beim Einwahl-Peer stellt sicher, dass der VPN-Tunnel für Benutzer hinter dem anderen Peer zur Einleitung von Datentraffic verfügbar ist.

So konfiguriere ich die Auto-Negotiate Funktion:

Konfiguration über CLI:
# config vpn ipsec phase2
# edit [PHASE2_NAME]
# set auto-negotiate enable
# end

IPSEC Phase 2 - Was bedeutet die Option Keepalive?

Tipp.png

Ausgangslage:
Die Sicherheitsassoziation (SA) der Phase 2 hat eine fixe Dauer. Wenn im VPN Traffic stattfindet, während die SA kurz vor dem Ablauf steht, wird eine neue SA ausgehandelt. So wechselt das VPN ohne Unterbruch zu einer neuen SA. Wenn es kein Traffic gibt, läuft die SA aus, und der VPN-Tunnel wird unterbrochen.

Funktion:
Die Keepalive-Option stellt sicher, dass eine neue SA ausgehandelt wird, auch wenn kein Datentraffic vorhanden ist, so dass der VPN-Tunnel aufrecht erhalten bleibt.

So konfiguriere ich die Keepalive Option in der Phase 2:

Konfiguration über CLI:
# config vpn ipsec phase2
# edit [PHASE2_NAME]
# set keepalive enable
# end

Kann ich sowohl Auto-Negotiate als auch Keepalive verwenden?
Ja. Auto-Negotiate und Keepalive funktionieren sehr gut zusammen. Auto-Negotiate startet das VPN und Keepalive sorgt dafür dass der VPN-Tunnel aufrecht erhalten bleibt.

Wie kann eine L2TP over IPSec Verbindung erstellt werden?

In den meisten Fällen ist eine Client2Site Verbindung mit anderen Technologien, wie beispielsweise dem FortiClient oder dem Cisco VPN Client, aus Performance- und Sicherheitsgründen zu bevorzugen. Bei einer C2S Verbindung via SSL oder IPSec besteht ausserdem die Möglichkeit, Split Tunneling zu konfigurieren. Bei einem L2TP VPN muss immer der gesamte Datenverkehr über den Tunnel gelenkt werden. Der Aufbau einer C2S Verbindung mit einer Fortigate ist jedoch dann sinnvoll, wenn es sich bei den Clientbetriebssystemen um ein Windows Betriebssystem handelt, auf welchem zwingend keine Software von Drittherstellern installiert werden darf. Eine L2TP IPSec Verbindung kann unter Windows nämlich mit den Ressourcen hergestellt werden.

Unter FortiOS 6.0 kann ein L2TP over IPSec Client2Site Tunnel nur teilweise im GUI konfiguriert werden. Da gewisse Konfigurationsschritte in der CLI vorgenommen werden müssen, basiert die folgende Anleitung vollumfänglich auf CLI-Befehlen.

L2TP over IPSec basiert immer auf einer Benutzerauthentifizierung. Aus diesem Grund benötigen wir einen lokalen oder einen Remotebenutzer, welchem wir die entsprechenden Rechte zuweisen können.

	config user local
		edit "mytestuser"
			set type password
			set email-to "mytestuser@test.com"
			set passwd meinpasswort
		next

Dieser Benutzer wiederum wird einer Gruppe zugewiesen, welche später für den L2TP Zugriff berechtigt wird.

	config user group
		edit "l2tpgroup"
			set member "mytestuser"
		next
	end

Nun benötigt es einige L2TP-spezifische Einstellungen (nicht im GUI konfigurierbar). Mit SIP und EIP definieren wir den IP-Range der IP Adressen, welche für die L2TP Clients zur Verfügung stehen sollen. Ausserdem definieren wir hier die Benutzergruppe, welcher Zugriff via L2TP gewährt werden soll.

	config vpn l2tp
		set sip 10.20.100.1
		set eip 10.20.100.254
		set status enable
		set usrgrp "l2tpgroup"
	end

Da wir später in der Firewallpolicy mit diesen Source IP Adressen eine Firewallregel erstellen müssen, kreieren wir als nächstes gerade ein entsprechendes Adressobjekt.

	config firewall address
		edit "net_vpn_10.20.100.0/24"
			set subnet 10.20.100.0 255.255.255.0
		next
	end

Nun kann die Phase1 des IPSec Tunnels erstellt werden. Wichtig ist hier, dass diese vom Typ "dynamic" ist, als Peertype jede IP Adresse zulässt und die Proposals mit denen aus dem Beispiel übereinstimmen.

	config vpn ipsec phase1
		edit "l2tp-p1"
			set type dynamic
			set interface "wan1"
			set peertype any
			set proposal 3des-sha1 aes256-md5
			set dhgrp 2
			set psksecret meinepsk
			set dpd-retryinterval 60
		next
	end

Auf dieser Phase1 kann anschliessend die Konfiguration für Phase2 aufgebaut werden. Als Quickmode Selector kann 0.0.0.0/0 gewählt werden (in der CLI per Default so). Auch hier muss darauf geachtet werden, dass PFS deaktiviert wird, und dass als Encapsulation Mode der "Tunnel Mode" gewählt wird.

	config vpn ipsec phase2
		edit "l2tp-p2"
			set phase1name "l2tp-p1"
			set proposal 3des-sha1 aes192-sha1 aes256-md5
			set pfs disable
			set encapsulation transport-mode
			set keylifeseconds 86400
		next
	end

Bei einem L2TP over IPSec Tunnel handelt es sich um einen policybasierten IPSec Tunnel. Diese Art von Tunnel bedarf etwas spezielle Firewallregel je für ein- und ausgehenden Traffic. Die ausgehende Firewallregel hat wie unten veranschaulicht auszusehen. Wichtig hierbei ist, dass die Action auf "ipsec" gestellt wird, und anschliessend das entsprechende IPSEC Tunnel Interface gewählt wird.

	config firewall policy
		edit 3
			set name "2l2tp"
			set srcintf "lan1"
			set dstintf "wan1"
			set srcaddr "net_int_192.168.2.0/24"
			set dstaddr "net_vpn_10.20.100.0/24"
			set action ipsec
			set schedule "always"
			set service "ALL"
			set inbound enable
			set vpntunnel "l2tp-p1"
		next
		edit 6
			set name "l2tpincoming"
			set srcintf "wan1"
			set dstintf "lan1"
			set srcaddr "net_vpn_10.20.100.0/24"
			set dstaddr "net_int_192.168.2.0/24"
			set action accept
			set schedule "always"
			set service "ALL"
		next
	end

Somit wurde auf Seiten der Fortigate die Konfiguration für das L2TP over IPSec VPN fertiggestellt.

Ein Windows-10 Client wird wie folgt konfiguriert, damit er eine Verbindung via L2TP aufbauen kann:

Fortinet-2248.png

Fortinet-2249.png

Wie konfiguriere ich ein SSL-VPN Portal, welches über ein Site-to-Site VPN ein ServerLAN auf der Remote Seite erreichen soll?

Problemstellung:

Es besteht eine Site to Site VPN Verbindung zwischen der Site 1 zur Site 2. Wir haben auf der Site 2 einen Server mit der IP Adresse 172.16.16.20. Nun soll es möglich sein, über eine SSL-VPN Verbindung auf der Site 1 auch auf den Server 172.16.16.20 zuzugreiffen. Das heisst, wir müssen auf der Site 1 ein SSL-VPN konfigurieren und danach dafür sorgen, dass der Traffic weiter, durch den bestehenden S2S Tunnel auf den Server 172.16.16.20 geroutet wird. Das unten dokumentierte Szenario basiert auf dem Umstand, dass auf der Site 1 und Site 2 jeweils eine Fortigate Firewall im Einsatz ist. Ein Teil der untenstehenden Anleitung kann jedoch auch dann übernommen werden, wenn auf Site 2 eine Firewall eines Drittherstellers zum Einsatz kommt, oder wenn sich Site 2 in einer Public Cloud wie Azure oder AWS befindet. Die generischen, herstellerneutralen Schritte, um ein solches Szenario zu konfigurieren sind immer wie folgt:

  1. Firewall Site 2: Ändern sie die IPs des SSL-VPN-Pool auf einen IP-Range, damit der IP-Pool der Site 2 nicht mit dem Pool von Site 1 kollidiert.
  2. Firewall Site 1: Konfigurieren Sie in der SSL VPN Client2Site Konfiguration die Split Networks so, dass das entsprechende Netz von Site 2 (172.16.16.0/24) über den SSL VPN Tunnel geroutet wird.
  3. Firewall Site 1 und Site 2: Konfigurieren Sie die IPSec Einstellung des entsprechenden Tunnels so, dass sich das SSL-VPN-Client2Site Netz von Site 1 (10.10.10.1/24)) auf beiden Seiten entweder in der Local oder in den Remote Networks befindet. Somit werden diese IPs über den IPSec Tunnel überhaupt erst zugelassen.
  4. Firewall Site 2: Erstellen Sie eine statische Route damit das SSL VPN C2S Netz von Site 1 via IPSec Tunnel an Site 1 übermittelt wird.
  5. Firewall Site 1 + 2: Passen Sie die entsprechenden Firewallregeln an, damit eine Kommunikation möglich ist.


Lösungsansatz:

Die untenstehende Anleitung basiert auf folgedem Netzwerkschema:

Netzwerkplan:

Violett: Bestehende Konfiguration
Rot: Wird neu konfiguriert

Fortinet-1940.jpg  

Konfiguration über das WebGui: Die Konfiguration basiert auf dem FortiOS 6.0.2:

Konfiguration auf der Seite 1

Als Erstes die User anlegen. Diese können als lokale User eingerichtet werden (in unserem Beispiel machen wir dies so). Es ist auch möglich Radius oder LDAP User zu konfigurieren.

Fortinet-1941.jpg  
# config user local
# edit "user1"                    -> Username definieren
# set type password
# set passwd "user1"              -> Passwort definieren 
# end

Die User einer Usergruppe zuweisen. Diese Usergruppe wird beim SSL-VPN Portal dann genutzt.

Fortinet-1942.jpg  
# config user group
# edit "gr-user-ssl-vpn"
# set member "user1"
# end

Für die Konfiguration des SSL-VPN Portals brauchen wir noch einen IP Pool. Dieser IP Pool wird den Clients zugewiesen. Es muss darauf geachtet werden, dass der definierte IP-Pool auf der Remote Seite (Site 2) nicht benutzt wird. Der Pool fängt mit der IP Adresse 10.10.10.2 an.

Fortinet-1943.jpg  
# config firewall address
# edit "ippool-ssl-vpn-10.10.10.2-10.10.10.254"
# set type iprange
# set color 18
# set start-ip 10.10.10.2
# set end-ip 10.10.10.254
# end

Es muss ein Dummy SSL-VPN Portal eingerichtet werden, um das Handling abdecken zu können wenn kein gültiger User kommt. Wir stellen ein Portal her in welchem es möglich ist nur den FortiClient herunterzuladen.

Menu SSL-VPN Portals -> Create New -> konfigurieren wie im Screenshot abgebildet. (Tunnel Mode: off, Enable Web Mode: off, Enable FortiClient Download: on)

Fortinet-1944.jpg  
# config vpn ssl web portal
# edit "dummy-portal"
# end
# end

Jetzt wird das eigentliche SSL-VPN Portal konfiguriert. HIerzu wird der Tunnel-Mode gewählt. Das bedeutet, dass nur mit dem FortiClient die Verbindung aufgebaut werden kann.

SSL-VPN-Portals -> tunnel-access editieren oder ein neues Portal definieren (Create New).

  1. Tunnel Mode auf "on" stellen.
  2. Enable Split Tunneling einschalten. Damit wird nur der Traffic über den VPN Tunnel geroutet, welcher auf der Remote Seite anzutreffen ist. Wenn Split Tunneling nicht eingeschaltet wird, wird sämtlicher Traffic (0.0.0.0/0) durch den Tunnel geroutet. Bei Routing Adressen wird das IP Netzwerk angegeben, welches erreicht werden muss. Wir müssen jetzt das Server LAN Netz von Site 1, sowie den IP-Range der DMZ von der Site 2 (172.16.16.0/24) auswählen.
  3. Source IP Pool definiert des IP Adress Ranges welcher dem VPN-Client zugewiesen wird
  4. Den Web Mode schalten wir auf off, den brauchen wir für dieses Setup nicht
  5. Mit OK geht es weiter
Fortinet-1945.jpg  
# config firewall address
# edit "net-vpn-172.16.16.0-24"
# set color 10
# set allow-routing enable
# set subnet 172.16.16.0 255.255.255.0
# end

SSL VPN Settings konfigurieren

# config vpn ssl settings
# set tunnel-ip-pools "ippool-ssl-vpn-10.10.10.2-10.10.10.254"
# set port 443
# set source-interface "wan1"
# set source-address "all"
# set default-portal "dummy-portal"
# config authentication-rule
# edit 1
# set groups "gr-user-ssl-vpn"
# set portal "tunnel-access"
# next
# end
# end

SSL-VPN Settings

  1. Listen on Interface: hier wird eingestellt auf welchem Interface das SSL-VPN Portal terminiert. Meist ist dies das WAN1 oder WAN2 Interface.
  2. Listen on Port: Hier wird der Port angegeben über welchen das Portal erreichbar ist. Es ist darauf zu achten, wenn der Administrationsport der Firewall auf 443 eingestellt ist, hier ein alternativ Port gewählt wird. Die bessere Lösung wäre den Administrationsport für HTTPS auf einen anderen Wert zu setzen.
  3. Tunnel Mode Client Settings: Adress Range wird auf Specify custom IP ranges gesetz. Der IP Range ist das Adressobjekt welches wir vorab eingerichtet haben (10.10.10.2-10.10.10.254). Bei Bedarf kann noch ein DNS Server konfiguriert werden, ansonsten wird der Default DNS Server des Clients benutzt.
  4. Allow Endpoint Registration: Diesen Schalter, stellen wir auf off. Wenn er eingeschaltet wird, registriert sich der Client auf der FortiGate. Ab 10 registrierte Geräte wird eine Lizenz benötigt.
  5. die Portalzuweisungen vornehmen (siehe unten)
Fortinet-1946.jpg  

  1. Authentication/Portal Mapping: Hier können wir die Portale den Gruppen zuweisen. Create New wird ein neues Mapping eingerichtet. Wir brauchen für die Gruppe gr-user-ssl-vpn das Portal tunnel-access. Alle anderen User/Gruppen gehen in das dummy-portal.
    1. Die Gruppe gr-user-ssl-vpn weisen wir dem tunnel-access Portal zu
    2. All Other User/Groupes werden dem dummy-portal zugewiesen
  2. mitels apply wird das SSL-VPN Setting abgeschlossen
Fortinet-1947.jpg  

Im Site to Site IPSEC Tunnel muss noch eine zweite Encryption Domäne hinzugefügt werden. Wir wollen das Netz 10.10.10.0/24 auch durch den Tunnel routen:

  1. VPN -> IPsec Tunnels -> den entsprechenden VPN Tunnel editieren und einen weiteren Phase 2 Selector hinzufügen.
  2. Locale Address: Den Adressenpool des SSL-VPN Portal (10.10.10.0/24)
  3. Remote Address: Das Netzwerk von der Server-DMZ (172.16.16.0/24)
  4. bei Bedarf unter Advanced noch die Encryption- und Athentication-Parameter anpassen
  5. mittels OK bestätigen und den neuen Selector anzufügen
Fortinet-1952.jpg  

Adressen Objekt definieren für Splittunnel:

# config vpn ipsec phase2-interface
# edit "Site1_to_Site2"                                             -> Name des Tunnels
# edit "site1-sslvpn-site2"                                         -> Name des Selektors definieren
# set phase1name "Site1_to_Site2"
# set proposal aes256-sha256 aes128gcm aes256gcm chacha20poly1305   -> Gewünschte Verschlüsslungsalgorithmen konfigurieren 
# set dhgrp 14
# set src-subnet 10.10.10.0 255.255.255.0                           -> Source Netzwerk: SSL-VPN IP-Pool 
# set dst-subnet 172.16.16.0 255.255.255.0                          -> Destinations Netzwerk (DMZ ServerLan)
# end

Konfiguration der Policy für den Zugriff vom Client auf das SSL-VPN weiter zur Remote Seite des IPSEC Tunnels:

Policy & Objects -> IPv4Policy -> Create New

  1. Incoming Interface: Interface des SSL-VPN Portals
  2. Outgoing Interface: Interface des IPSEC Site to Site Tunnels
  3. Source: IP-Pool Adressenrange vom SSL-VPN Portal (10.10.10.2/24) und die SSL-VPN Gruppe (gr-user-ssl-vpn)
  4. Destination: IP Adressrange des DMZ ServerLan (172.16.16.0/24)
  5. Services: die benötigten Ports freischalten (in userem Beispiel ist ANY gewählt)
  6. NAT: deaktiviert lassen
  7. Security Profiles: die gewünschten UTM-Features anwählen
  8. Logging Options: Log Allowed Traffic aktivieren und All Sessions anwählen
  9. Enable this policy: Darauf achten, dass der Schalter aktiv ist
  10. mit OK wird die Policy erstellt und kann dann in der Übersicht nach oben geschoben werden
Fortinet-1949.jpg  

Die Zerfikatsmeldung kann ignoriert werden.

Fortinet-1950.jpg  

Übersicht des Policysets (es ist darauf zu achten, dass die VPN Regeln oberhalb der regulären Regeln sind):

Fortinet-1951.jpg  


Konfiguration auf der Seite 2

Im bestehenden IPSEC Tunnel zur Site 1 muss noch ein zweiter Phase 2 Selektor für das SSL-VPN Netz erstellt werden.

IPsec Tunnels -> den entsprechenden Tunnel editieren

  1. einen neuen Phase 2 Selector eröffnen (locales Netz 172.16.16.0/24, Remote Netz 10.10.10.0/24)
  2. Mit OK den zweiten Selector bestätigen
Fortinet-1953.jpg  
# config vpn ipsec phase2-interface
# edit "site2-site1-sslvpn"                                         -> Name des Tunnels
# set phase1name "site2-site1"                                      -> Name des Selektors definieren
# set proposal aes256-sha256 aes128gcm aes256gcm chacha20poly1305   -> Gewünschte Verschlüsslungsalgorithmen konfigurieren 
# set dhgrp 14                                   
# set src-subnet 172.16.16.0 255.255.255.0                          -> Source Netzwerk (DMZ ServerLan)
# set dst-subnet 10.10.10.0 255.255.255.0                           -> SSL-VPN IP-Pool 
# next
# end

Jetzt muss das SSL-VPN Netz noch zurück in den Tunnel geroutet werden.

Network -> Static Routes -> Create New

  1. Das Netz des SSL-VPNs IP-Pool eintragen. (in unserem Fall 10.10.10.0/24)
  2. Interface: Das Site to Site VPN Interface auswählen
  3. Kommentare schaffen Klarheit!
  4. Mit OK wird die Route konfiguriert:
Fortinet-1954.jpg  
# config router static
# edit [intiger]
# set dst 10.10.10.0 255.255.255.0 -> SSL-VPN IP-Pool Netz eintragen
# set device "site2-site1"         -> IPSEC Interface vom Tunnel Site 1 <-> Site 2 eintragen
# set comment "sslvpn site1"
# end

Die Blackhole-Route nicht vergessen einzurichten:

Network -> Static Routes -> Create New

  1. Das Netz des SSL-VPN IP-Pool eintragen. (in unserem Fall 10.10.10.0/24)
  2. Interface: Das Interface Blackhole auswählen
  3. Die administrative Distance hier muss höher sein, als die administrative Distance der regulären Route. Wir empfehlen den Wert 254 zu konfigurieren.
  4. Kommentare schaffen Klarheit!
  5. Mit OK wird die Route konfiguriert
Fortinet-1955.jpg  
# config router static
# edit [intiger]
# set dst 10.10.10.0 255.255.255.0 -> SSL-VPN IP-Pool Netz eintragen
# set distance 254                 -> Distanz muss hier höher sein, als in der regulären Route!
# set comment "Blackhole Route"
# set blackhole enable
# end

Wenn die Routen konfiguriert sind, können diese kontrolliert werden. Bitte noch einmal prüfen ob die Distance der Blackhole Route höher als die reguläre Route ist:

Fortinet-1956.jpg  

Jetzt kann der zweite Selektor des IPSEC Tunnels hochgefahren werden.

Monitor -> IPsec Monitor -> auf dem entsprechenden Tunnel in der Phase 2 des Selectors mit Rechtsklick auf Bring Up klicken

Fortinet-1957.jpg  

Wenn alles grün ist, ist der Tunnel up and running

Fortinet-1958.jpg  

Damit der Traffic an den Server weitergeleitet wird, muss noch eine Policy eingerichtet werden:

Policy & Objects -> IPv4 Policy -> Create New

  1. Incoming Interface: Das IPSEC Interface auswählen
  2. Outgoing Interface: Das Interface hinter welchem das Netz 172.16.16.0/24 angebunden ist
  3. Source: Das IP-Pool Netz des SSL-VPN (10.10.10.0/24)
  4. Destination: Das Netz welches erreicht werden soll (172.16.16.0/24)
  5. Services: in diesem Beispiel ist "all" angeben. Um eine optimale Sicherheit zu gewährleisten, macht es Sinn hier Einschränkungen mit den benötigten Ports vorzunehmen
  6. NAT: deaktiviert lassen
  7. Security Profile können nach Bedarf konfiguriert werden
  8. Logging Options: Log Allowed Traffic einschalten und All Sessions anwählen
  9. Enable this Policy: einschalten
  10. Mit OK wird die Policy zu unterst im Regelset angefügt. Die Regel sollte zu den anderen VPN Regeln nach oben geschoben werden
Fortinet-1959.jpg  

Adressobjekte:

# config firewall address
# edit "net-172.16.16.0-24"
# set color 2
# set subnet 172.16.16.0 255.255.255.0
# next
# edit "vpn-remote-10.10.10.0-24"
# set color 10
# set subnet 10.10.10.0 255.255.255.0
# end

Policy konfigurieren:

# config firewall policy                  
# edit [intiger]                          
# set name "I_sslVPN-Site1_Site2"         
# set srcintf "site2-site1"               -> Source Interface ist das IPSEC-VPN Interface
# set dstintf "internal1"                 -> Destinations Interface ist das DMZ ServerLan Interface
# set srcaddr "vpn-remote-10.10.10.0-24"  -> Source IP: SSL-VPN IP-Pool 
# set dstaddr "net-172.16.16.0-24"        -> Destination IP: Netzwerk des DMZ ServerLan
# set action accept
# set status enable
# set schedule "always"
# set service "ALL"
# set logtraffic all
# end

Die VPN Regeln zusammen bündeln:

Fortinet-1960.jpg  
Konfiguration vom FortiClient

Eine neue Verbindung im FortiClient einrichten:

Reiter SSL-VPN anwählen

  1. Verbindungsname eingeben
  2. Beschreibung für eigene Übersicht bei Bedarf eingeben
  3. Bei Remote Gateway die Public IP Adresse der Site 1 (212.1.1.1) eingeben
  4. Standartmässig ist der Port auf 443 konfiguriert, falls im SSL-VPN Portal ein anderer Port definiert wurde ist dieser hier entsprechend anzupassen
  5. Mit anwenden wird der Zugang konfiguriert

Fortinet-1961.jpg


Zum Verbinden den entsprechenden Tunnel anwählen und die Benutzer Daten (Username und Passwort) eingeben. Mit verbinden baut man den Tunnel auf.

Fortinet-1962.jpg  

Wenn die Anmeldung erfolgreich durchgeführt werden konnte, wird der Tunnel aufgebaut. Wir sehen die IP Adresse, welche von der Site 1 dem Client zugewiesen wurde (10.10.10.2)

Fortinet-1963.jpg


Auf der Site 2 können wir jetzt sehen, dass der Traffic von der IP Adresse 10.10.10.1 auf 172.16.16.20 mit der Policy ID 3 gematcht hat. Wir sehen die Adresse 10.10.10.2 welche aus dem SSL-VPN IP-Pool zugewiesen wurde

Fortinet-1964.jpg  

Welche Faktoren sind bei einer VPN Geschwindigkeitsmessung relevant?

Wenn zwischen zwei Standorten ein IPSec Tunnel erstellt wird, so ist der Datendurchsatz zwischen den zwei Standorten von unterschiedlichen Faktoren abhängig. Häufig anzutreffen ist inzwischen der Umstand, dass an beiden Standorten eine synchrone Gigabit Internetverbindung vorhanden ist, und dass nun die Erwartungshaltung besteht, dass zwischen diesen beiden Standorten eine VPN-Verbindung mit annähernd Gigabit Geschwindigkeit möglich sein wird. In diesem Szenario spielt es jedoch auch eine grosse Rolle, ob der Provider (oder die mehreren Provider) dieses Gigabit auch durch seinen Backbone gewährleistet, was meistens nicht der Fall ist.

Der folgende Artikel hilft, den maximal technisch möglichen Durchsatz zwischen zwei Standorten zu ermitteln.

Fortinet-1971.jpg

Folgende Faktoren sind relevant um zu bestimmen, welcher Durchsatz maximal überhaupt möglich ist:

Seite A Seite B

1. Firewall
1.1. Modell der Firewall (Fortigate 100E, Sophos XG 115 Rev.3 etc.)
1.2. Maximal zu erwartender Durchsatz gemäss Datenblatt *
1.3. Gewählte MTU auf dem WAN-Interface

2. ISP
2.1. Name des ISP
2.2. Garantierter Upload des ISP
2.3. Garantierter Download des ISP

1. Firewall
1.1. Modell der Firewall (Fortigate 100E, Sophos XG 115 Rev.3 etc.)
1.2. Maximal zu erwartender Durchsatz gemäss Datenblatt (*)
1.3. Gewählte MTU auf dem WAN-Interface

2. ISP
2.1. Name des ISP
2.2. Garantierter Upload des ISP
2.3. Garantierter Download des ISP

3. Parameter zwischen den Standorten
3.1. Gemessener Durchsatz zwischen der Seite A und Seite B ohne IPSec Tunnel.(#)
3.2. Hops zwischen Firewall Seite A und Firewall Seite B (zu messen mit einem Traceroute zwischen den Firewalls)
3.3. Ping-Zeiten zwischen den beiden Standorten

* Die Durchsätze können den Datenblättern entnommen werden:
1. Datenblatt Fortinet Verwende den Wert IPsec VPN Throughput
2. Datenblatt Sophos Verwende den Durchsatz VPN AES Realworld (Mbps) multiple tunnels/cores

# Gemessener Durchsatz zwischen den zwei Standorten
Eine gültige Messung zwischen den Standorten hilft festzustellen welcher Durchsatz der Provider durch seinen Backbone gewährleistet. Dieser Durchsatzwert kann natürlich je nach Tageszeit und allgemeiner Netzbelastung erheblich variieren. Eine Messung zu dessen Erhebung kann wie folgt vorgenommen werden:
1. Laden Sie auf https://speed.hetzner.de/ eines der zur verfügungstehenden Testfiles herunter.
2. Kopieren Sie dieses Testfile auf einen Webserver an einem der beiden Standorte
3. Publizieren Sie diesen Webserver via DNAT über die Firewall ins Internet (Anleitung hierzu: Sophos, Fortinet)
4. Laden Sie die Datei vom gegenüberliegenden Standort über das Internet (und nicht über den IPSec Tunnel) herunter, und messen sie den erreichten Durchsatz.

Maximal zu erwartender Durchsatz insgesamt:

  • Der maximale, technisch mögliche Durchsatz durch einen VPN Tunnel ergibt sich aus dem kleinsten Wert der oben erhobenen Durchsatzwerte in den Punkten 1.2, 2.2, 2.3 und 3.1.
  • Die erhobenen Messwerte in den Punkten 3.2 und 3.3 haben keinen direkten Einfluss auf den maximal möglichen Durchsatz, sind jedoch relevant wenn es um Messgrössen wie Delay oder Jitter geht.

Wie kann ich eine gültige VPN Performancemessung erstellen?

Nachdem im Artikel Welche Faktoren sind bei einer VPN Geschwindigkeitsmessung relevant der maximal erreichbare technische Durchsatz ermittelt wurde, möchte man nun dazu übergehen zu messen, ob dieser Durchsatz in der Praxis auch erreicht werden kann. Dabei gibt es ein paar Richtlinien zu beachten. Das altbekannte Sprichwort Wer misst, misst Mist! ist in diesem Fall leider oftmals allgegenwärtig.

Tools, welche beispielsweise via SMB eine Datei auf einen Fileshare kopieren, und dann den erreichten Durchsatz messen, messen nicht unbedingt den VPN Durchsatz, sondern unter Umständen viel eher:

  1. Die Festplattengeschwindigkeit des Zielsystems
  2. Die Geschwindigkeit des SMB Protokolls
  3. Die Geschwindigkeit der onRead Antivirenüberprüfung des Zielsystems
  4. Die Geschwindigkeit des DNS-Resolvers

Um solche Messfehler zu vermeiden, müssen folgende Richtlinien bei einer Messung unbedingt beachtet werden:

  • Eine Messung findet zwischen zwei Messsystemen statt, auf welchen zum Zeitpunkt der Messung kein anderer Traffic und keine anderen Tasks verarbeitet wird.
  • Der gesammte VPN Tunnel wird zum Zeitpunkt der Messung nicht von irgendwelchen anderen Systemen in Anspruch genommen.
  • Die beiden Internetleitungen werden zum Zeitpunkt der Messung nicht von irgendwelchen anderen Systemen belegt.
  • Die beiden Messsysteme befinden sich auf beiden Seiten direkt hinter der Firewall.
  • Als Messtool wird IPerf3 eingesetzt. Das Tool kann von der Iperf Projektseite inklusive Bedienungsanleitung heruntergeladen werden.
Datei: Beschreibung:

Datei:Iperf-howto.pdf

IPerf Anleitung

Datei:Tools-iperf.zip IPerf Tool

Messaufbau

Fortinet-1972.jpg
Fortinet-1973.jpg

Wie konfiguriere ich ein VPN zwischen einer FortiGate und einer Sophos UTM Firewall?

Ausgangslage:

In diesem Artikel wird beschrieben, wie ein Site-to-Site VPN zwischen einer FortiGate und einer Sophos UTM Firewall konfiguriert werden kann. Dieses Setup wurde unter folgenden Bedingungen aufgebaut und durchgetestet:

Seite FortiGate Seite Sophos UTM

Netzplan

Fortinet-2775.jpg
Hardware FortiGate 300D Sophos UTM/SG
Software 6.4.2 build1723 V9.703-3
Lokal Netzwerk 198.18.0.0/24 192.168.111.0/24
Public IP 146.XX.XX.66 194.XX.XX.111

Authentication

Pre-shared Key definieren

IKE Version

Version 1 (UTM unterstützt IKE Version 2 nicht)

Phase 1 Proposal

Alogrithms: AES256-SHA256 DH-Group 5

Phase 1 Key Lifetime

86400 Sekunden

Phase 2 Proposal

Alogrithms: AES256-SHA512 / PFS-DH-Group 5

Phase 2 Key Lifetime

43200 Sekunden

Konfiguration FortiGate 300D:

Config webgui.png Konfiguration über das WebGUI:

Konfigurieren des VPN-Tunnels:

Netzwerkeinstellungen:

  1. VPN-Tunnel Name definieren (mit diesem Namen wird beim WAN Interface das Tunnelinterface gebildet)
  2. Bei Remote Gateway den Typ auf Static IP Address stellen
  3. Im Feld IP Address wird die Public IP Adresse der Sophos UTM Firewall eingetragen (194.XX.XX.111)
  4. Bei Interface wird das ausgehende Interface (meistens WAN) angegeben. Auf diesem Interface wird das Tunnelinterface dann als Subinterface gebildet
  5. NAT Traversal je nach Situation aktivieren oder nicht aktivieren
Fortinet-2758.jpg

Authentication konfigurieren:

  1. Method Auf Pr-shared Key einstellen.
  2. Im Feld Pre-shared Key einen komplexen, nicht nachvollziehbaren Key konfigurieren (dieser Key wird auf der SOPHOS-UTM dann auch benötigt)
  3. Wir müssen die IKE Version 1 auswählen, da die Sophos UTM Modelle den Standard IKE Version 2 nicht unterstützten.
Fortinet-2751.jpg

Phase 1 Parameter konfigurieren:

  1. Encryption auf AES256 und Authentication auf SHA256 konfigurieren
  2. Alle anderen Encryption und authentication Parameter entfernen
  3. Die Diffie-Hellmann Group wird auf 5 eingestellt
  4. Der Parameter Key Lifetime (seconds) auf 86400 (1440 Minuten) stellen (dies muss unbedingt auf der Gegenseite gleich definiert werden)
Fortinet-2752.jpg

Phase 2 Selektoren konfigurieren:

Auf der Sophos wird der Term 0.0.0.0/0 nicht unterstützt.
In unserem Beispiel wird Local 198.18.0.0/24 und Remote Netz 192.168.111.0/24 konfiguriert.

  1. Name in diesem Feld kann ein Name für den Selektor definiert werden (Überblick bewahren)
  2. Local Address Das Netz welches bei der Fortigate erreicht werden soll. Typ auf Subnet stellen und Adresse: 198.18.0.0/24 konfigurieren
  3. Remote Address Das Netz welches wir hinter der Sophos UTM Firewall erreichen wollen. Typ auf Subnet stellen und Adresse 192.168.111.0/24 konfigurieren
  4. Unter dem Menüpunkt Advanced können die Phase 2 Proposal konfiguriert werden
  5. Encryption auf AES256 und Authentication auf SHA256 stellen. Alle anderen Encryption und Authentications Parameter entfernen (auf das X klicken)
  6. Perfect Forward Secrecy (PFS) aktivieren
  7. Die Difie-Hellman Group auf 14 einstellen
  8. Key Lifetime auf Second stellen und dann 43200 Sekunden einstellen (dies muss unbedingt auf der Gegenseite gleich definiert werden)
Fortinet-2753.jpg

Konfigurieren der Routen:
Auf der FortiGate müssen die Netze der Remote Seite in den IPSec-Tunnel geroutet werden. Dabei zeigt die Route auf das Tunnelinterface (gw-sophos). Damit bei einem Unterbruch des Tunnels, der Traffic nicht über die default Route ins Internet geroutet wird, sollte eine Blackhole Route konfiguriert werden. Mehr Details dazu in folgendem Artikel: Was ist eine Blackhole Route?

Die Routen werden wie folgt konfiguriert: Menu: Network -> static Routes -> Createnew.jpg

Fortinet-2755.jpg

Konfigurieren der Policies:
Es braucht mindestens eine Policy auf der FortiGate. Damit der Traffic bidirektional durch den Tunnel geht, empfiehlt es sich eine Regel in jede Richtung zu konfigurieren. Dabei ist die Kommunikation zwischen dem VPN-Tunnel Interface (gw-sophos) und dem internen Interface (Port1).

Menu : Policy & Objects -> IPv4 Policy -> Createnew.jpg

Fortinet-2756.jpg
Fortinet-2757.jpg 
Config cli.png Konfiguration über die CLI:

VPN Phase 1 konfigurieren:

config vpn ipsec phase1-interface
    edit "[VPN_NAME]"
        set interface "[WAN-INTERFACE]"
        set peertype any
        set net-device disable
        set proposal aes256-sha256
        set comments "VPN zu Sophos UTM"
        set dhgrp 5
        set nattraversal disable
        set remote-gw [PUBLIC_IP_SOPHOS-UTM]
        set psksecret [PRESHARED-KEY]
    next
end

VPN Phase 2 konfigurieren:

config vpn ipsec phase2-interface
    edit "p2_[VPN_NAME]"
        set phase1name "[VPN_NAME]"
        set proposal aes256-sha256
        set dhgrp 5
        set keepalive enable
        set src-subnet [MEIN_LOKALES_NETZWERK NETZMASKE]
        set dst-subnet [REMOTE NETZWERK NETZMASKE]
    next
end

Routen konfigurieren:

config router static
    edit 2
        set dst [REMOTE NETZWERK NETZMASKE]
        set device "[VPN_NAME]"
        set comment "Route Remote Netz ALSO DE - UTM Sophos "
    next
    edit 3
        set dst [REMOTE NETZWERK NETZMASKE]
        set comment "Blackhole [REMOTE NETZWERK NETZMASKE]"
        set distance 254
        set blackhole enable
    next   
end 

Adress Objekte für Policies konfigurieren:

config firewall address
    edit "[NAME_ADRESSOBJEKT_REMOTE_NETZWERK]"
        set color 10
        set subnet [NETZWERK_ADRESSE] [SUBNETZMASKE]
    next
    edit "[NAME_ADRESSOBJEKT_INTERNES_NETZWERK]"
        set color 10
        set subnet [NETZWERK_ADRESSE] [SUBNETZMASKE]
    next
end

Policy konfigurieren:

config firewall policy
    edit 1
        set name "O_vpn-sophosUTM"
        set srcintf "[INTERNES_INTERFACE]"
        set dstintf "[VPN_NAME]"
        set srcaddr "[NAME_ADRESSOBJEKT_INTERNES_NETZWERK]"
        set dstaddr "[NAME_ADRESSOBJEKT_REMOTE_NETZWERK]"
        set action accept
        set schedule "always"
        set service "ALL"
        set logtraffic all
    next
    edit 2
        set name "I__vpn-sophosUTM"
        set srcintf "[VPN_NAME]"
        set dstintf "[INTERNES_INTERFACE]"
        set srcaddr "[NAME_ADRESSOBJEKT_REMOTE_NETZWERK]"
        set dstaddr "[NAME_ADRESSOBJEKT_INTERNES_NETZWERK]"
        set action accept
        set schedule "always"
        set service "ALL"
        set logtraffic all
    next
end

Konfiguration auf der Sophos UTM:

Config webgui.png Konfiguration über das WebGUI:

Auf der Sophos UTM Firewall wird ein VPN wie folgt aufgebaut:

  1. Connections: Hier wird der lokale Teil konfiguriert. Das lokale Netzwerk, das Interface welches als Listener definiert wird (meistens ein WAN Interface)
  2. Remote Gateway: In diesem Abschnitt werden die Remote VPN Gateway Parameter konfiguriert. In unserem Fall ist dies die pulblic IP-Adresse der FortiGate und das Remote Netzwerk welches wir hinter der FortiGate erreichen wollen.
  3. Policy: werden die Verschlüsselungs-Parameter konfiguriert.

Neuen Tunnel erstellen:

  1. Unter dem Menü Site-to-Site VPN auf IPsec gehen
  2. Um den neuen Tunnel zu erstellen New IPsec Connection... anwählen
Fortinet-2806.jpg

Remote Gateway:

  1. Name im Feld Name?? definieren
  2. Gateway type -> wie der Tunnel aufgebaut werden soll (Sophos UTM als Initator oder als Responder) konfigurieren. Wir haben beide Varianten ausprobiert. Es funktioniert sogar ohne dass auf der FortiGate etwas verändert werden muss.
  3. Authentcation type haben wir mit einem Preshared Key konfiguriert. Dieser muss natürlich auf der FortiGate deckungsgleich eingegeben werden.
  4. VPN ID type soll auf IP address gelassen werden (die FortiGate interpretiert die IP Adresse der Sophos UTM als ID)
  5. Im Feld Remote networks werden die Netze auf der Gegenseite definiert, welche aus dem Sophos Netzwerk erreicht werden sollen. ACHTUNG: die Sophos unterstützt 0.0.0.0/0 nicht (was auch gut so ist). Mittels dem Icon Sophos-utm-newObject.jpg kann ein neues Remote Netzwerk erstellt werden.
  6. Alles abspeichern und dann kann das erstellte Remote Gateway Profil unter Connections ausgewählt werden.
Fortinet-2759.jpg

Policy:

  1. Unter Sophos-utm-newObject.jpg new IPsec Policy kann eine neue VPN Policy konfiguriert werden
  2. Name In diesem Feld wird tatsächlich der Name der Policy angegeben (Policy hat auf der Sophos eine andere Bedeutung als dies auf der FortiGate der Fall ist)
  3. Die entsprechenden Phase 1 und Phase 2 Parameter deckungsgleich analog jener der FortiGate definieren. Achtung: die FortiGate und die Sophos UTM haben nicht dieselben default Life Time in den entsprechenden Phasen. Diese sind undbedingt aufeinander abzustimmen.
  4. Mit dem Button Save wird die neue Policy mit den definierten Name erstellt und kann dann im Menü 'Connections ausgewählt werden.
Fortinet-2760.jpg

Connections:

  1. Im Menü Connections jetzt die angelegten Profile auswählen:
    1. Remote Gateway das vorher konfigurierte Profil aus Remote Gateway anwählen
    2. unter Policy die VPN Policy auswählen, welche vorher definiert wurde
  2. Local interface Hier wird definiert auf welchem Interface der VPN-Tunnel auf der Sophos terminiert (in unserem Fall External)
  3. Lokale Netzwerke auswählen welche für das VPN vorgesehen sind
  4. die Option Automatic firewall rules aktivieren, damit die Sophos beim speichern automatisch die Firewall-Regeln gemäss VPN-Definition im Regelwerk erstellt wird
  5. Mit Save den IPSec-Tunnel erstellen und dann testen
Fortinet-2763.jpg

Erfolgskontrolle:

Config webgui.png VPN-Monitore:

VPN Monitor - FortiGate:

Fortinet-2750.jpg 

VPN Monitor - Sophos UTM:

 Fortinet-2762.jpg

Anleitung als PDF:

Wie konfiguriere ich ein VPN zwischen einer FortiGate und einer Sophos XG Firewall?

Artikel noch im Aufbau , bitte um Geduld

Ausgangslage:

Seite FortiGate Seite Sophos XG

Netzplan

Fortinet-2776.jpg
Hardware FortiGate 300D Sophos XG 210
Software 6.4.2 build1723 V18.0.1 MR1
Lokal Netzwerk 198.18.0.0/24 192.168.12.0/24
Public IP 146.XX.XX.66 194.XX.XX.111

Authentication

Pre-shared Key definieren

IKE Version

Version 2

Phase 1 Proposal

Algorithmus: AES256-SHA256 DH-Group 5

Phase 1 Key Lifetime

86400 Sekunden

Phase 2 Proposal

Algorithmus: AES256-SHA512 / PFS-DH-Group 5

Phase 2 Key Lifetime

43200 Sekunden

Konfiguration FortiGate

Config webgui.png Konfiguration über das WebGui:

Konfigurieren des VPN Tunnels:

Netzwerkeinstellungen:

  1. VPN Tunnel Name definieren. (Mit diesem Namen wird beim WAN Interface das Tunnelinterface gebildet.)
  2. Bei Remote Gateway den Typ auf Static IP Address stellen.
  3. Im Feld IP Address wird die Public IP Adresse der Sophos XG Firewall eingetragen (194.XX.XX.112)
  4. Bei Interface wird das ausgehende Interface (meistens WAN) angegeben. Auf diesem Interface wird das Tunnelinterface dann als Subinterface gebildet.
  5. NAT Traversal je nach Situation aktivieren oder nicht aktivieren.
Fortinet-2764.jpg

Authentication konfigurieren:

  1. Method Auf Pr-shared Key einstellen.
  2. Im Feld Pre-shared Key einen komplexen, nicht nachvollziehbaren Key konfigurieren (dieser Key wird auf der Sophos XG dann auch benötigt)
  3. Wir benutzen die IKE Version 2
Fortinet-2765.jpg

Fortinet-2765.jpg

Phase 1 Parameter konfigurieren:

  1. Encryption auf AES256 und Authentication auf SHA256 konfigurieren.
  2. Alle anderen Encryption und Authentications Parameter entfernen.
  3. Die Diffie-Hellmann Group wird auf 5 eingestellt.
  4. Der Parameter Key Lifetime (seconds) auf 86400 (1440 Minuten) stellen. (Dies muss unbedingt mit der Gegenseite gleich definiert werden)
Fortinet-2766.jpg

Fortinet-2766.jpg

Phase 2 Selektoren konfigurieren:

Auf der Sophos wird der Term 0.0.0.0/0 nicht unterstützt.
In unserem Beispiel wird Local 198.18.0.0/24 und Remote Netz 192.168.12.0/24 konfiguriert.

  1. Name in diesem Feld kann ein Name für den Selektor definiert werden (Übersicht wahren)
  2. Local Address Das Netz welches bei der Fortigate erreicht werden soll. Typ auf Subnet stellen und Adresse: 198.18.0.0/24 konfigurieren.
  3. Remote Address Das Netz welches wir hinter der Sophos XG Firewall erreichen wollen. Typ auf Subnet stellen und Adresse 192.168.12.0/24 konfigurieren.
  4. Unter dem Menupunkt Advanced können die Phase 2 Proposal konfiguriert werden.
  5. Encryption auf AES256 und Authentication auf SHA256 stellen. Alle anderen Encryption und Authentications Parameter entfernen. (Auf das X klicken)
  6. Perfect Forward Secrecy (PFS) aktivieren
  7. Die Difie-Hellman Group auf 14 einstellen.
  8. Key Lifetime auf Second stellen und dann 43200 Sekunden einstellen (Dies muss unbedingt mit der Gegenseite gleich definiert werden)
Fortinet-2766.jpg

Konfigurieren der Routen:
Auf der FortiGate müssen die Netze der Remote Seite in den IPSec Tunnel geroutet werden. Dabei zeigt die Route auf das Tunnelinterface (gw-sophos). Damit bei einem Unterbruch des Tunnels, der Traffic nicht über die Default Route ins Internet geroutet wird, sollte eine Blackhole Route konfiguriert werden. Mehr Details dazu im Artikel : Was ist eine Blackhole Route?

Die Routen werden folgendermassen konfiguriert: Menu: Network -> Static Routes -> Createnew.jpg

Fortinet-2767.jpg

Konfigurieren der Policies:
Es braucht mindestens eine Policy auf der FortiGate. Damit der Traffic bi-direktional durch den Tunnel geht, empfiehlt es sich eine Regel in jede Richtung zu konfigurieren. Dabei ist die Kommunikation zwischen dem vpn Tunnel Interface (gw-sophos) und dem internen Interface (port1).

Menu : Policy & Objects -> IPv4 Policy -> Createnew.jpg

Fortinet-2768.jpg
Fortinet-2769.jpg 
Config cli.png Konfiguration über die CLI:

VPN Phase 1 konfigurieren:

config vpn ipsec phase1-interface
    edit "[VPN_NAME]"
        set interface "[WAN-INTERFACE]"
        set peertype any
        set net-device disable
        set proposal aes256-sha256
        set comments "VPN zu Sophos XG"
        set dhgrp 5
        set nattraversal disable
        set remote-gw [PUBLIC_IP_SOPHOS-XG]
        set psksecret [PRESHARED-KEY]
    next
end

VPN Phase 2 konfigurieren:

config vpn ipsec phase2-interface
    edit "p2_[VPN_NAME]"
        set phase1name "[VPN_NAME]"
        set proposal aes256-sha256
        set dhgrp 5
        set keepalive enable
        set src-subnet [MEIN_LOKALES_NETZWERK NETZMASKE]
        set dst-subnet [REMOTE NETZWERK NETZMASKE]
    next
end

Routen konfigurieren:

config router static
    edit 2
        set dst [REMOTE NETZWERK NETZMASKE]
        set device "[VPN_NAME]"
        set comment "Route Remote Netz ALSO DE - XG Sophos "
    next
    edit 3
        set dst [REMOTE NETZWERK NETZMASKE]
        set comment "Blackhole [REMOTE NETZWERK NETZMASKE]"
        set distance 254
        set blackhole enable
    next   
end 

Adress Objekte für Policies konfigurieren:

config firewall address
    edit "[NAME_ADRESSOBJEKT_REMOTE_NETZWERK]"
        set color 10
        set subnet [NETZWERK_ADRESSE] [SUBNETZMASKE]
    next
    edit "[NAME_ADRESSOBJEKT_INTERNES_NETZWERK]"
        set color 10
        set subnet [NETZWERK_ADRESSE] [SUBNETZMASKE]
    next
end

Policy konfigurieren:

config firewall policy
    edit 1
        set name "O_vpn-sophosXG-DE"
        set srcintf "[INTERNES_INTERFACE]"
        set dstintf "[VPN_NAME]"
        set srcaddr "[NAME_ADRESSOBJEKT_INTERNES_NETZWERK]"
        set dstaddr "[NAME_ADRESSOBJEKT_REMOTE_NETZWERK]"
        set action accept
        set schedule "always"
        set service "ALL"
        set logtraffic all
    next
    edit 2
        set name "I__vpn-sophosXG-DE"
        set srcintf "[VPN_NAME]"
        set dstintf "[INTERNES_INTERFACE]"
        set srcaddr "[NAME_ADRESSOBJEKT_REMOTE_NETZWERK]"
        set dstaddr "[NAME_ADRESSOBJEKT_INTERNES_NETZWERK]"
        set action accept
        set schedule "always"
        set service "ALL"
        set logtraffic all
    next
end

Konfiguration Sophos XG

Config webgui.png Konfiguration über das WebGui:

Ein neuer VPN wird im Menu Configure-> VPN -> IPsec connections erstellt.

Authentication konfigurieren:

Fortinet-2772.jpg

Netzwerkeinstellungen:

  1. in den Gateway settings werden die Netzwerkparameter konfiguriert.

Local gateway: (Netzwerk Optionen Sophos XG Firewall)

  1. Local gateway das ausgehende Interface (WAN) auswählen. In unserem Beispiel ist dies der Port2 mit der IP Adresse 194.XX.XX.112
  2. Local subnet Hier wird das Netzwerk definiert, welches mit der Remoteseite kommunizieren soll. In unserem Beispiel das Netz 192.168.12.0/24

Remote gateway (Netzwerk Optionen der FortiGate- Remoteseite)

  1. Gateway address wird die Public IP Adresse der FortiGate eingetragen. In unserem Fall 146.XX.XX.66
  2. Remote subnet beduetet, welches Netz/Netze auf hinter der FortiGate angesprochen werden sollen. Unser Beispiel: 198.18.0.0/24
Fortinet-2773.jpg

Phase 1 Parameter konfigurieren:

  1. im Menu IPsec policies werden die Phase1 und Phase2 Parameter definiert:
  2. Im Feld Name den Policy Namen der P1/P2 Parameter definieren.
  3. Key echchange benutzen wir die IKEv2 Version (IKE Version 2)
  4. Phase 1 die Key life Parameter mit der FortiGate abgleichen : 86400sec
  5. DH Group haben wir auf 5 (DH1536) gesetzt
  6. Encryption und Authentication Algorithmen wie auf der FortiGate definieren (AES256-SHA256)
  7. weiter zur Phase2 scrollen
Fortinet-2774.jpg

Phase 2 Selektoren konfigurieren:

  1. PS group (DH group) definieren 5 (DH1536). Dabei darauf achten, dass im Feld Key life der selbe Wert eingetrgen wird, wie auf der FortiGate (43200sec)
  2. Encryption und Authentication Parameter wie auf der FortiGate konfigurieren(AES256 - SHA256)
  3. DPD aktivieren
  4. mit Save bestätigen.
Fortinet-2771.jpg

Wie konfiguriere ich ein VPN zwischen einer FortiGate und einer Checkpoint Firewall?

Ausgangslage:

Seite FortiGate Seite Checkpoint

Netzplan

Fortinet-2777.jpg
Hardware FortiGate 60F Checkpoint 1550
Software 6.4.2 build1723 R80.20.05 (992001134)
Lokal Netzwerk 10.10.161.0/24 10.10.151/24
Public IP 198.18.0.161 198.18.0.151

Authentication

Pre-shared Key definieren

IKE Version

Version 2

Phase 1 Proposal

Alogrithms: AES256-SHA256 DH-Group 15

Phase 1 Key Lifetime

86400 Sekunden

Phase 2 Proposal

Alogrithms: AES256-SHA512 / PFS-DH-Group 15

Phase 2 Key Lifetime

3600 Sekunden

Konfiguration FortiGate 60F:

Config webgui.png Konfiguration über das WebGUI:

Konfigurieren des VPN-Tunnels:

Netzwerkeinstellungen:

  1. Name des VPN-Tunnels definieren (es wird ein Tunnel-Interface mit diesem Namen gebildet)
  2. Bei Remote Gateway den Typ auf Static IP Address stellen
  3. Im Feld IP Address wird die public IP-Adresse der Checkpoint eingetragen (198.18.0.151)
  4. Bei Interface wird das ausgehende Interface (meistens WAN) angegeben. Auf diesem Interface wird das Tunnel-Interface dann als Subinterface gebildet
  5. NAT Traversal ist zu definieren, falls noch ein NAT Device zwischen der FortiGate und der Checkpoint vorhanden ist.
Fortinet-2634.jpg

Authentication konfigurieren:

  1. Method Auf Pr-shared Key einstellen
  2. Im Feld Pre-shared Key einen komplexen, nicht nachvollziehbaren Key konfigurieren (dieser Key wird auf der Checkpoint dann auch benötigt)
  3. In unserem Beispiel werden wir mit IKE Version 2 arbeiten. Dementsprechend den Parameter auf 2 einstellen
Fortinet-2635.jpg

Phase 1 Parameter konfigurieren:

  1. Encryption auf AES256 und Authentication auf SHA256 konfigurieren
  2. Alle anderen Encryption- und Authentications-Parameter entfernen
  3. Die Diffie-Hellmann Group wird auf 14 eingestellt
  4. Der Parameter Key Lifetime (seconds) auf 86400 (1440 Minuten) stellen
Fortinet-2636.jpg

Phase 2 Selektoren konfigurieren:

In diesem Beispiel zeigen wir, wie man den Selektor für 10.10.161.0/24 zu 10.10.151.0/24 konfiguriert:

  1. Name in diesem Feld kann ein Name für den Selektor definiert werden
  2. Local Address Das Netz welches bei der Fortigate erreicht werden soll. Typ auf Subnet stellen und Adresse: 10.10.161.0/24 konfigurieren
  3. Remote Address Das Netz welches wir hinter der Checkpoint erreichen wollen. Typ auf Subnet stellen und Adresse 10.10.151.0/24 konfigurieren
  4. Unter dem Menüpunkt Advanced können die Phase 2 Proposal konfiguriert werden
  5. Encryption auf AES256 und Authentication auf SHA256 stellen. Alle anderen Encryption- und Authentications-Parameter entfernen
  6. Perfect Forward Secrecy (PFS) aktivieren
  7. Die Difie-Hellman Group auf 14 stellen
  8. Key Lifetime auf Second stellen und dann 3600 Sekunden einstellen (dies ist nicht der default Wert auf der FortiGate)
Fortinet-2637.jpg

Konfigurieren der Routen:
Auf der FortiGate muss das Netz der Remote Seite(10.10.151.0/24) in den IPSec-Tunnel geroutet werden. Dabei zeigt die Route auf das Tunnel-Interface (vpn_to_CP_151). Damit bei einem Unterbruch des Tunnels der Traffic nicht über die default Route ins Internet geroutet wird, sollte eine Blackhole Route konfiguriert werden. Mehr Details dazu im Artikel : Was ist eine Blackhole Route?

Die Routen werden wie folgt konfiguriert: Menu: Network -> Static Routes -> Createnew.jpg

Fortinet-2651.jpg

Blackhole Route mit Distanz 254:

Fortinet-2807.jpg

Konfigurieren der Policies:
Es braucht mindestens eine Policy auf der FortiGate. Damit der Traffic bidirektional durch den Tunnel geht, empfiehlt es sich eine Regel in jede Richtung zu konfigurieren. Dabei ist die Kommunikation zwischen dem VPN-Tunnel Interface (vpn_cp-forti) und dem internen Interface (internal2).

Menu : Policy & Objects -> IPv4 Policy -> Createnew.jpg

Fortinet-2652.jpg

Die ganze Policy noch bei bedarf gegengleich konfigurieren (Source Interface / Netz und Destinations Interface / Netz) Dabei kann die Clone Reverse Funktion benutzt werden.

Fortinet-2808.jpg

Komplettes Regelsetup:

Fortinet-2638.jpg
Config cli.png Konfiguration via CLI:

VPN Phase 1 konfigurieren:

config vpn ipsec phase1-interface
edit "vpn_to_CP_151"
        set interface "wan1"
        set ike-version 2
        set peertype any
        set net-device disable
        set proposal aes256-sha256
        set dhgrp 14
        set remote-gw 198.18.0.151
        set psksecret "Hier_einen_komplexen_Key_eingeben"
    next
end

VPN Phase 2 konfigurieren:

config vpn ipsec phase2-interface
    edit "p2-vpn_to_lab-0062-10.10.162.0-24"
        set phase1name "vpn_to_lab-0062"
        set proposal aes256-sha256
        set dhgrp 14
        set auto-negotiate enable
        set src-subnet 10.10.161.0 255.255.255.0
        set dst-subnet 10.10.162.0 255.255.255.0
    next
end

Routen konfigurieren:

config router static
    edit 2
        set dst 10.10.151.0 255.255.255.0
        set device "vpn_to_CP_151"
    next
    edit 3
        set dst 10.10.151.0 255.255.255.0
        set distance 254
        set comment "blackhole Route - CP Remote Netz"
        set blackhole enable
    next
end

Adress Objekte für Policies konfigurieren:

config firewall address
    edit "net_remoteVPN-10.10.151.0-24"
        set comment "Remote Netz -VPN Checkpoint"
        set color 10
        set subnet 10.10.151.0 255.255.255.0
    next
    edit "net_ul-10.10.161.0-24"
        set color 3
        set subnet 10.10.161.0 255.255.255.0
    next

end

Policy konfigurieren:

config firewall policy
    edit 5
        set name "I_vpn_CP_151->10.0.161.0-24"
        set srcintf "vpn_to_CP_151"
        set dstintf "internal2"
        set srcaddr "net_remoteVPN-10.10.151.0-24"
        set dstaddr "net_ul-10.10.161.0-24"
        set action accept
        set schedule "always"
        set service "ALL"
        set logtraffic all
    next
    edit 6
        set name "O_vpn_10.10.161.0-24->CP_151"
        set srcintf "internal2"
        set dstintf "vpn_to_CP_151"
        set srcaddr "net_ul-10.10.161.0-24"
        set dstaddr "net_remoteVPN-10.10.151.0-24"
        set action accept
        set schedule "always"
        set service "ALL"
        set logtraffic all
    next
end

Konfiguration Checkpoint 1550

Config webgui.png Konfiguration über das WebGUI:

Konfigurieren des VPN-Tunnels:
Um auf der Checkpoint einen VPN-Tunnel zu konfigurieren kann auf folgendes Menü angewählt werden:

VPN -> VPN Sites -> Cp new.jpg

Fortinet-2646.jpg

Netzwerk-Parameter:

  1. Auf das TAB Remote Site gehen
  2. Site name: Hier wird der Name des VPN-Tunnels definiert
  3. Bei Conection type auf Host Name or IP address setzen
  4. IP address anwählen und im Feld die public IP-Adresse der FortiGate eingeben (198.18.0.153)
  5. Behind static NAT ist die NAT Traversal-Einstellung
Fortinet-2640.jpg


Authentication konfigurieren:

  1. Pre-shared secret anwählen (entspricht der Option Pre-shared KEY auf der Fortigate)
  2. im Feld Password den selben Key eingeben, welcher bereits auf der FortiGate definiert wurde
  3. mittels confirm den Key nochmals eingeben
Fortinet-2641.jpg

Remote Site Encryption Domain konfigurieren
Die Remote Site Encryption Domain entspricht dem lokalen Netz auf der FortiGate bei den Selektoren.
Zuerst muss das Netz oder der Host definiert werden. Dafür auf den Cp new.jpg klicken.
Es öffnet sich folgendes Fenster:

Fortinet-2642.jpg
  1. den Type auf Network stellen
  2. Network address Die Netzadresse angeben (ohne Subnetzmaske), was in unserem Fall das Netzwerk auf der FortiGate 10.10.161.0 ist
  3. Subnetmask Die Subnetzmaske des Netzes angeben: 255.255.255.0
  4. Object name Hier wird der Name definiert, wie das Objekt dann angewählt werden kann
  5. mit Cp apply.jpg das Objekt erstellen

Mit Cp select.jpg kann das Adress-Objekt zu der Encryption Domain hinzugefügt werden.

Fortinet-2643.jpg

Encryption für Phase 1 und Phase 2 konfigurieren:

  1. das TAB Encryption anwählen
  2. Encryption settings auf custom stellen
  3. IKE (Phase 1)
    1. Encryption auf AES-256 konfigurieren, alle anderen Parameter deaktivieren
    2. Authentication auf SHA256 konfigurieren - alle anderen Parameter ebenfalls deaktivieren
    3. Diffie-Hellmann group support setzen wir auf Group 14 (2048 bit)
    4. Renegotiate every: wird auf 1440 Minuten gesetzt (auf der FortiGate ist 86400 Sekunden eingestellt, was 1440 Minuten entspricht)
  4. IPSec (Phase2)
    1. Encryption auf AES-256 konfigurieren, alle anderen Parameter deaktivieren
    2. Authentication auf SHA256 konfigurieren, alle anderen Parameter ebenfalls deaktivieren
    3. Enable Perfect Forward Secrecy (PFS) aktivieren
    4. Diffie-Hellmann group support setzen wir auf Group 14 (2048 bit)
    5. Renegotiate every: wird auf 3600 Sekunden gesetzt (auf der FortiGate haben wir diesen Parameter auf 3600s konfiguriert)
Fortinet-2644.jpg

Advanced Optionen konfigurieren:

  1. TAB Advanced anwählen
  2. Bei den Settings die Option Remote Gateway is a Check Point Security Gateway deaktivieren
  3. unter Encryption method den Parameter auf IKEv2 stellen.
Fortinet-2645.jpg

Konfigurieren eines Netzwerk Objektes:

  1. User & Objects anwählen
  2. Network Objects auswählen
Fortinet-2648.jpg

Im Editor-Fenster folgendes konfigurieren:

  1. Type auf Network einstellen
  2. Network address: Die Netzwerk-Adresse ohne Netzmaske eintragen
  3. Subnet mask: Die Subnetzmaske des Netzes eintragen
  4. Object name: Name des Adress-Objektes eintragen
  5. mit dem Button Cp apply.jpg wird das Objekt erstellt
Fortinet-2647.jpg

Konfigurieren der Policy:
Nun gilt es noch die Firewall Regeln zu konfigurieren:

  1. Menu Access Policy anwählen
  2. Policy auswählen
  3. unter dem Menu Incoming, Internal and VPN traffic mit Cp new.jpg wird eine neue VPN-Regel erstellt
Fortinet-2656.jpg
  1. Source und Destination, wie auch die Services anwählen.
  2. Das Feld Match only for encrypted traffic auswählen, so wird sichergestellt, dass diese Regel für den verschlüsselten Traffic gilt.
  3. mit Cp apply.jpg wird die Regel erstellt und aktiv
Fortinet-2654.jpg
  1. das Selbe in grün noch für die Gegenrichtung falls dies vom Setup erforderlich ist
Fortinet-2653.jpg
Fortinet-2655.jpg

Erfolgskontrolle

FortiGate Monitor:

 Fortinet-2639.jpg

Checkpoint Monitor:

Fortinet-2658.jpg

Traffic generieren und im Debug auf den beiden Geräten prüfen:
Ping von der FortiGate aus generiert:

  1. mit dem Befehl execute ping-option source 10.10.161.2 können wir der FortiGate angeben, mit welcher Adresse diese den Ping ausführen soll
  2. mit dem Befehl execute ping 10.10.151.2 können wir die IP Adresse auf der Checkpoint vom LAN Interface anpingen
Fortinet-2657.jpg

Im Flow sieht das so aus:

# diag debug flow filter clear
# diag debug flow filter sadd 10.10.161.2
# diag debug flow filter dadd 10.10.151.2
# diag debug flow trace start 9000
# diag debug enable

# id=20085 trace_id=6 func=print_pkt_detail line=5639 msg="vd-root:0 received a packet(proto=1, 10.10.161.2:3584->10.10.151.2:2048) from local. type=8, code=0, id=3584, seq=0."
id=20085 trace_id=6 func=init_ip_session_common line=5810 msg="allocate a new session-00087e78"
id=20085 trace_id=6 func=ipd_post_route_handler line=439 msg="out vpn_to_CP_151 vwl_zone_id 0, state2 0x0, quality 0.
"
id=20085 trace_id=6 func=ipsecdev_hard_start_xmit line=789 msg="enter IPsec interface-vpn_to_CP_151"
id=20085 trace_id=6 func=_ipsecdev_hard_start_xmit line=666 msg="IPsec tunnel-vpn_to_CP_151"
id=20085 trace_id=6 func=esp_output4 line=907 msg="IPsec encrypt/auth"
id=20085 trace_id=6 func=ipsec_output_finish line=622 msg="send to 198.18.0.151 via intf-wan1"
id=20085 trace_id=7 func=print_pkt_detail line=5639 msg="vd-root:0 received a packet(proto=1, 10.10.161.2:3584->10.10.151.2:2048) from local. type=8, code=0, id=3584, seq=1."
id=20085 trace_id=7 func=resolve_ip_tuple_fast line=5720 msg="Find an existing session, id-00087e78, original direction"
id=20085 trace_id=7 func=ipd_post_route_handler line=439 msg="out vpn_to_CP_151 vwl_zone_id 0, state2 0x0, quality 0.

# diag debug reset
# diag debug disable

fw monitor auf der Checkpoint:

fwalem-lab-0151> expert  in den Expert Modus wechseln
Enter expert password:

You are in expert mode now.
FW Monitor:
[Expert@fwalem-lab-0151]# fw monitor -e 'accept host(10.10.161.2);'
 fw: getting filter (from command line)
 fw: compiling
monitorfilter:
Compiled OK.
 fw: loading
 fw: monitoring (control-C to stop)
[vs_0][fw_2] WAN:id[84]: 10.10.161.2 -> 10.10.151.2 (ICMP) len=84 id=53344
ICMP: type=8 code=0 echo request id=3840 seq=1
[vs_0][fw_2] WAN:ID[84]: 10.10.161.2 -> 10.10.151.2 (ICMP) len=84 id=53344
ICMP: type=8 code=0 echo request id=3840 seq=1
[vs_0][fw_2] WAN:o[84]: 10.10.151.2 -> 10.10.161.2 (ICMP) len=84 id=7498
ICMP: type=0 code=0 echo reply id=3840 seq=1
[vs_0][fw_2] WAN:O[84]: 10.10.151.2 -> 10.10.161.2 (ICMP) len=84 id=7498
ICMP: type=0 code=0 echo reply id=3840 seq=1
[vs_0][fw_2] WAN:O[84]: 10.10.151.2 -> 10.10.161.2 (ICMP) len=84 id=7498
ICMP: type=0 code=0 echo reply id=3840 seq=1
[vs_0][fw_2] WAN:id[84]: 10.10.161.2 -> 10.10.151.2 (ICMP) len=84 id=53345
ICMP: type=8 code=0 echo request id=3840 seq=2
[vs_0][fw_2] WAN:ID[84]: 10.10.161.2 -> 10.10.151.2 (ICMP) len=84 id=53345
ICMP: type=8 code=0 echo request id=3840 seq=2
[vs_0][fw_2] WAN:o[84]: 10.10.151.2 -> 10.10.161.2 (ICMP) len=84 id=7720
ICMP: type=0 code=0 echo reply id=3840 seq=2
[vs_0][fw_2] WAN:O[84]: 10.10.151.2 -> 10.10.161.2 (ICMP) len=84 id=7720
ICMP: type=0 code=0 echo reply id=3840 seq=2
[vs_0][fw_2] WAN:O[84]: 10.10.151.2 -> 10.10.161.2 (ICMP) len=84 id=7720
……
Mit ctrl+c kann der Output abgebrochen werden

Guide als PDF Herunterladen:

Wie kann ich auf einem VPN Interface die MTU Werte anpassen?

FortiOS 64.svg

Im Normalfall wird der MTU Wert von einem Tunnel Interface von der FortiGate aus automatisch berechnet. Falls man jetzt aber Probleme hat gewisse Datenmengen durch den Tunnel zu bringen, kann es erforderlich sein diese manuell zu setzen.

MTU auf VPN Interface ab FortiOS 6.4.0 konfigurieren:

Config cli.png Konfiguration über die CLI:
# config system interface
# edit [TUNNEL_INTERFACE]
# set mtu-override [enable|disable]
# set mtu [MTU_WERT]
# end
# end

Beispiel:

# config system interface
# edit remote-vpn1
# set mtu-ovveride enable
# set mtu 1372
# end
# end
Tipp.png

Vor der Version FortiOS 6.4.0 kann die MTU nicht auf dem VPN Interface konfiguriert werden.

edit 04.09.2020

Welche OID sollte ich für die Überwachung eines IPSEC Tunnels verwenden?

Um einen VPN Tunnel zu überwachen empfiehlt Fortinet folgende OID zu verwenden:

 
 1.3.6.1.4.1.12356.101.12.2.2.1.20
 
 
 FORTINET-FORTIGATE-MIB:fortinet.fnFortiGateMib.fgVpn.fgVpnTables.fgVpnTunTable.fgVpnTunEntry.fgVpnTunEntStatus 1.3.6.1.4.1.12356.101.12.2.2.1.20
 

add 07.03.2023 - 4Tinu

FortiClient

Wie kann ich ohne den EMS Server ein vordefiniertes Softwarepaket für den VPN Client erstellen?

Seit FortiOS 5.4 gibt es von Fortinet das FortiClient Configuration Tool. Mit diesem Tool können benutzerdefinierte Softwarepakete erstellt werden. So kann beispielsweise eine komplette Konfiguration im XML Format mitgegeben, einzelne Komponenten der Installation entfernt werden oder den Installer als paketierfähiges *.MSI Paket in den Varianten 32 oder 64Bit heruntergeladen werden. Ausserdem ist es möglich, den FortiClient einem Rebranding zu unterziehen (Austausch der Logos und Grafiken).

Die aktuellste Version des FortiClient Configuration Tool kann jeweils über das Fortinet Developer Portal heruntergeladen werden. Das Configuration Tool ist als Standalone Software lauffähig, existiert für Windows und Mac und muss auf Windows nicht installiert werden.

Weitere Informationen:

Wieviele Remote VPN User kann ich auf der FortiGate nutzen?

FortiOS 60.svg

Die Anzahl der Remote VPN Verbindungen, welche pro FortiGate Gerät unterstützt wird, kann im Datenblatt des jeweiligen Modells entnommen werden.

Hier ein Beispiel der FortiGate 60E.

  • Für die maximale Anzahl IPsec User muss der Punkt Client-to-Gateway IPsec VPN Tunnels beachtet werden.
  • Für SSL-VPN User gibt es einen empfohlenen Wert für den Tunnel-Modus im Punkt: Concurrent SSL-VPN Users (Recommended Maximum Tunnel Mode)
Fortinet-2670.jpg

Die Datenblätter findet man in unserem Wiki: Fortinet:ProduktInfo#FortiGate

Was für Remote VPN User natürlich auch massgebend ist, ist die Internetleitung der FortiGate auf welche die User sich verbinden. Wenn sich 200 User auf einer 2MB Leitung einloggen, wird die gesammt Performance auf die 200 User aufgeteilt. Nicht vergessen darf man natürlich auch den restlichen Traffic welcher über die FortiGate weiterhin verarbeitet wird.


Im FortiOS 6.0 sieht man im Widget eine Limitation wieviele User sich auf der FortiGate über den FortiClient anmelden können. Standartmässig sind hier zehn User verfügbar (0/10). Dies bedeutet, dass der FortiClient sich auf der FortiGate über die Telemetrie registriert. Will man den FortiClient nur als VPN-Client (IPSEC oder SSL-VPN) nutzen, ist es nicht notwendig, dass sich der Client über die Telemetrie auf der FortiGate registriert. Wenn man den VPN Remote Wizard benutzt, muss darauf geachtet werden, dass die Option Allow Endpoint Registration deaktiviert wird. (Default mässig ist diese aktiviert)

Config webgui.png Konfiguration über das WebGui:

Wizard wird gestartet über VPN->IPsec Wizard Template type Remote Access
Im Schritt drei Policy & Routing die Option Allow Endpoint Registration deaktivieren:

Fortinet-2669.jpg

Was wenn ich vergessen haben die Option zu deaktivieren? Dies kann nicht mehr im Wizard deaktiviert werden. Dafür muss ich auf das Interface gehen und mir dort die Telemetrie Option deaktivieren.

Weitere Informationen finde ich im folgenden Wiki Artikel: Wie kann ich einen Registrierten User von der FortiGate wieder deregistrieren?

Wie kann ich die Registration eines Users rückgängig machen?

FortiOS 60.svg

Wenn man die Endpoint Registration über den VPN Wizard nicht deaktiviert hat, wird jeder VPN Remote User auf der FortiGate registriert. Wenn man dies nicht will, kann man die User wieder von der FortiGate deregistrieren:

Um zu sehen welche User registriert sind kann folgender Befehl eingegeben werden:

Config cli.png Konfiguration über die CLI:
# diag endpoint registration list

FortiClient #1 (0):
	 UID                      = B209297BF1F44F88BC7CD8CBF62AD2F9
	 vdom                     = root
	 status                   = registered
	 compliance               = yes
	 registering time         = Fri Mar 20 13:12:50 2020
	 registration expiry time = Fri Mar 27 13:12:50 2020
	 source IP                = 10.60.60.140
	 source MAC               = b8:31:xx:xx:xx:f0
	 user                     = anonym
	 host OS                  = Microsoft Windows 10 Professional Edition, 64-bit (build 18362)
	 restored registration    = no
	 remote registration      = no
	 registration FGT         = FGT30Exxxxxxx
FortiClient #2 (1):
	 UID                      = A71EC83EA0354B51858C69B6882C0BFD
	 vdom                     = root
	 status                   = registered
	 compliance               = yes
	 registering time         = Fri Mar 20 13:17:36 2020
	 registration expiry time = Fri Mar 27 13:17:36 2020
	 source IP                = 10.60.60.134
	 source MAC               = 58:82:xx:xx:xx:19
	 user                     = anonym
	 host OS                  = Microsoft Windows 10 Professional Edition, 64-bit (build 18362)
	 restored registration    = no
	 remote registration      = no
	 registration FGT         = FGT30Exxxxxxx

Um einen bestimmten User von der FortiGate aus zu deregistrieren kann das mit dem folgenden Befehl erreicht werden:

Config cli.png Konfiguration über die CLI:
# diag endpoint registration deregister <FortiClient UID>

Zum Beispiel:

# diag endpoint registration deregister B209297BF1F44F88BC7CD8CBF62AD2F9

Um alle User in einem zu deregistrieren:

# diag endpoint registration deregister all


Um die ganze Endpoint Registration zu lösen muss die Telemetrie auf dem entsprechenden VPN Interface deaktiviert werden:

Config cli.png Konfiguration über die CLI:
# config system interface
# edit <tunnel.interface>
# set fortiheartbeat disable
# end

Wie konfiguriere ich einen Remoteaccess von einem FortiExtender 4G zu einer FortiGate?

FortiOS 60.svg FortiOS 62.svg
Der FortiExtender kann nicht nur für ein zweites Standbein zum Internet verwendet werden, sondern auch als eigenständiges Gerät welches ermöglicht, dass FortiGate mit einem IPSEC-Tunnel über 4G zu erreichen.
Lokal angeschlossene Geräte hinter dem FortiExtender können dann auf interne Ressourcen hinter einer FortiGate zugreifen.

Prinzip Schema:
Fortinet-2679.jpg

Der FortiExtender muss lokal oder über die FortiExtender-Cloud administriert werden. Er kann nicht direkt über die FortiGate konfiguriert werden.

Auf dem LAN Interfaces des FortiExtenders empfiehlt es sich ein DHCP Server zu konfigurieren:

Config cli.png Konfiguration über die CLI:

Konfiguration DHCP Server auf dem LAN Interface im FortiExtender:'

# config system dhcpserver
# edit 1
# set status enable
# set lease-time 86400
# set dns-service specify
# set dns-server1 [DNS-Server1_IP]
# set dns-server2 [DNS-Server2_IP]
# set-ntp-service specify
# set ntp-server1 [ntp-server1_IP]
# set default-gateway [IP_Default Gateway] -> 192.168.46.1
# set netmask [Subnetzmaske] -> 255.255.255.0
# set interface [Interface_dhcpServer] -> lan
# set start-ip [IP-Range-Start] -> 192.168.46.10
# set end-ip [IP-Range Pool Ende] -> 192.168.46.100
# set mtu 1500 [MTU Werte anpassen – default 1500]
# end

Konfigurieren des IPSEC Tunnels auf dem FortiExtender:

Config webgui.png Konfiguration über das WebGui:
  1. Im Feld Name wird der Tunnel-Name definiert.
  2. Remote Gateway kann auf static IP Address gestellt, und die Public IP-Adresse der FortiGate angegeben werden. Bei Interface wird das 4G Interface (in unserem Fall ist das lte1) angewählt
  3. Pre-Shared-Key definieren
  4. IKE Version auf 1 lassen
  5. Als Mode wählen wir aggresive
Fortinet-2680.jpg 

Konfigurieren der Phase 1:

  1. Bei der Phase 1 Proposal die entsprechenden Algorithmen auswählen
  2. Die Diffie-Hellman Groups definieren
  3. Key Lifetime (in Sekunden) auf 86400 konfigurieren
  4. Eine Local ID setzen. In unserem Beispiel KRIZ-SE. So kann gesteuert werden, wer sich auf die FortiGate verbinden darf.
Achtung.png

Es ist darauf zu achten, dass diese Parameter exakt identisch auf der FortiGate konfiguriert werden müssen!

Fortinet-2681.jpg

Konfigurieren der Phase 2:
Nun muss die Phase 2 konfiguriert werden:

  1. Im Name Feld kann die Phase2 benannt werden.
  2. Im Feld Local Subnet* wird das lokale Netzwerk (LAN) konfiguriert. In unserem Fall ist dies 192.168.46.0/24
  3. Remote Subnet* wird das Netzwerk hinter der FortiGate konfiguriert (das Netz welches wir durch das VPN erreichen wollen). In unserem Fall nehmen wir 0.0.0.0/0 damit wir auch den Internet-Traffic von der FortiGate aus steuern können. Ein FortiExtender ist kein Ersatz für eine FortiGate. Das heisst, man kann keine UTM Features usw. konfigurieren.
  4. Bei den Proposal wird der Verschlüsselungs-Algorithmus konfiguriert.
  5. Perfekt Forward Secrecy (PFS) wird aktiviert.
  6. Die Diffie-Hellman Groups setzen wir auf 14.
  7. Die Key Lifetime wird auf 43200 Sekunden konfiguriert. Achtung - auf der FortiGate müssen wir diesen Wert dann anpassen!

Es ist darauf zu achten, dass alle Phase2-Parameter auf der FortiGate genau gleich konfiguriert werden.

Fortinet-2684.jpg

Policy Route konfigurieren:
Damit der Traffic auch in den VPN-Tunnel geht, muss noch eine Policy Route konfiguriert werden. Da wir in unserem Fall das Netz 0.0.0.0/0 als Remote Netz konfiguriert haben, ist diese Route wie eine Standard Route zu betrachten. Sie wird einfach auf das VPN Interface geroutet (target.Home).

  1. Name: In diesem Feld kann der Route einen Namen gegeben werden
  2. Source: von welchem Netz aus die Route gilt (unser LAN beim Extender -> 192.168.46.0/24)
  3. Bei der Destination wird das Netz konfiguriert welches durch den Tunnel erreicht werden soll (in unserem Fall 0.0.0.0/0)
  4. Für Service wählen wir ALL. Es wäre möglich hier einzelne Services wie HTTP, HTTPS zu konfigurieren. Dann werden nur diese Protokolle in den Tunnel geroutet.
  5. Beim Feld Target wird das Tunnel Interface angegeben (target.Home).

Diese Route ist nichts Anderes als eine Standardroute, die auf den IPSEC-Tunnel (target.Home) zeigt.

Fortinet-2682.jpg

Policy konfigurieren:
Bevor jetzt der Traffic durch den Tunnel geht, braucht es mindestens eine Policy welche erlaubt den Traffic durch den Tunnel zu senden. Dabei wird das lokale Netzwerk auf die Destination (Netze hinter der FortiGate) freigeschaltet. In unserem Beispiel haben wir 0.0.0.0, was dem Objekt all entspricht.

  1. Name Der Rule muss ein Name vergeben werden.
  2. Source Interface Das Interface hinter welchem unser lokales Netz ist, auswählen (in unserem Beispiel lan)
  3. Destination Interface wird das VPN Interface angewählt (Home)
  4. Source Addresses wird das lokale LAN Objekt angewählt (in unserem Beispiel local-se, welches die Adresse 192.168.46.0/24 konfiguriert hat)
  5. Destination Addresses werden die Netze welche auf der Remote-Seite angesprochen werden sollen, konfiguriert. Das Objekt all entspricht 0.0.0.0/0
  6. Die NAT Option kann ausgeschalten sein (wir machen kein Source NAT auf dem Extender durch den Tunnel)
Fortinet-2683.jpg 

Wenn man von den Netzen hinter der FortiGate auf das lokale Netz vom Extender zugreiffen will, muss noch eine Bi-Direktionale Policy konfiguriert werden.


Konfigurieren des Tunnels auf der FortiGate:
Auf der FortiGate wird ein Site-to-Site VPN konfiguriert. Wir benutzen aber als Remote Gateway einen Dial-up User und erkennen mittels der ID die Remote-Seite.

Config webgui.png Konfiguration über das WebGui:
  1. Über das Menu VPN -> IPsec Wizard einen neuen VPN-Tunnel erstellen.
  2. Im Namen wird der VPN-Tunnel benannt. Es wird auf dem WAN Interface ein VPN-Tunnel Interface mit diesem Namen erstellt. Achtung, der Name kann nachher nicht mehr geändert werden.
  3. Beim Template Typ Custom auswählen.
Fortinet-2685.jpg

Netzwerk Einstellungen konfigurieren:

  1. Die Option Remote Gateway wird auf Dial-up User gestellt.
  2. Beim Interface muss das ausgehende Interface angegeben werden (meistens wan1 oder wan2). Bei diesem Interface wird dann automatisch das VPN-Tunnelinterface erstellt.
  3. Deatd Peer Detection auf On Idle konfigurieren.
Fortinet-2686.jpg

Authentifikation konfigurieren:

  1. Die Option Method setzen wir auf Pre-shared Key
  2. Beim Pre-shared Key Feld wird der genau gleiche Key eingegeben wie auf dem FortiExtender!
  3. Mode muss auf aggresive gestellt werden.
  4. Die Peer Option wird auf Specific peer ID eingestellt.
  5. Die Peer ID ist die lokale ID vom FortiExtender. In unserem Fall KRIZ-SE
Fortinet-2687.jpg

Phase 1 Parameter konfigurieren:
Es ist wichtig, dass hier die selben Parameter wie auf dem FortiExtender in der Phase 1 konfiguriert werden!

  1. Für die Phase 1 Proposal haben wir folgende Werte konfiguriert: Encryption AES256, Athentication SHA256
  2. Diffie-Hellman Group hat den Wert 14
  3. Die Key Lifetime (in Sekunden) muss wie auf dem Extender auf 86400 konfiguriert werden.
  4. Die XAUTH Option braucht es in diesem Fall nicht und wird ausgeschalten (Disabled)
Fortinet-2688.jpg

Phase 2 Parameter konfigurieren:
In der Phase 2 wird ein Selektor für das Remote und lokale Netzwerk konfiguriert. Da wir möchten, dass von der Remote-Seite her über unsere FortiGate ins Internet verbunden wird, ist unser lokales Netz als 0.0.0.0/0 konfiguriert. Die Remote-Adresse entspricht dem Netzwerk hinter dem FortiExtender, das wäre in unserem Beispiel 192.168.46.0/24. 

  1. Beim Feld Local Address den Typ Subnet auswählen und das Netz 0.0.0.0/0 konfigurieren.
  2. Im Feld Rempte Address auch den Typ Subnet auswählen und das Netzwerk 192.168.46.0/24 konfigurieren.
  3. Über Advanced kommt man in die 'Phase 2 Proposal welche wir jetzt auch noch optimieren:
  4. Encryption wird auf AES256 und Authentication auf SHA256 konfiguriert. Alle anderen Werte entfernen wir.
  5. Wir aktivieren die Option Enable Replay Detection
  6. Die Option Enable Perfect Forward Secrecy (PFS) wird auch eingeschalten.
  7. Nun kann der Defie-Hellman Group Wert auf 14 eingestellt werden.
  8. Die Key Lifetime auf Seconds mit dem Wert 43200 konfigurieren.
Fortinet-2689.jpg

Konfiguration der Routen:
Damit die Remote-Seite 192.168.46.0/24 in den VPN-Tunnel geht, muss noch eine Route auf das Tunnel-Interface konfiguriert werden. Dazu empfiehlt es sich auch gleich noch eine Blackhole Route zu konfigurieren:

  1. Über das Menu Network -> Static Routes -> Createnew.jpg kann eine neue Route erstellt werden.
  2. Bei Destination wird das Remote-Netz angegeben (in unserem Fall 192.168.46.0/24)
  3. Bei Interface kommt das Tunnel-Interface (in unserm Fall VPN_extender')
Fortinet-2693.jpg

Die Blackhole-Route wird wie folgt konfiguriert:

  1. Destination die IP-Adresse der Remoteseite (192.168.46.0/24)
  2. Beim Interface wird Blackhole angewählt
  3. Wichtig, die Administrative Distance muss grösser sein als jene der regulären Route, wir empfehlen 254
Fortinet-2694.jpg

Wer mehr über Blackhole-Route wissen möchte, kann dies im folgenden Artikel nachlesen:


Konfigurieren der Firewall Regeln
Nun müssen noch zwei Firewall Regeln konfiguriert werden:

Die erste Regel steuert die Kommunikation vom Remote Netzwerk (192.168.46.0/24) auf die lokalen Ressourcen in unserem Netz. Unser Netz hat in diesem Beispiel den Wert 10.60.60.0/24. In dieser Regel wird die NAT Option deaktiviert (wir wollen kein Source NAT durchführen).

Fortinet-2690.jpg

Danach braucht es noch eine zweite Regel für den Internet Zugang: Source ist das Remote Netzwerk (192.168.46.0/24), die Destination ist das Internet Interface (meistens wan1) und das Adressobjekt all. Danach können die gewünschten Services angewählt werden. Hier müssen wir die NAT Option aktivieren. Es empfiehlt sich auch UTM-Features zu konfigurieren, um einen optimalen Schutz zu gewährleisten.

Fortinet-2691.jpg

Regelwerk auf der FortiGate:

Fortinet-2692.jpg

Wenn man ein Netzwerk hinter dem FortiExtender erreichen will, muss eine entsprechende Policy in die Gegenrichtung konfiguriert werden.

Falls man einen lokalen DNS erreichen will, muss man dafür auch noch eine Regel konfigurieren!

Config cli.png Konfiguration über die CLI:

Konfiguration in der CLI mit folgenden Annahmen:

Netzwerk Lan FortiGate  : 10.60.60.0/24
Netzwerk Lan Extender   : 192.168.46.0/24
Local ID Extender       : KRIZ-SE

Konfiguration VPN-Tunnel:

config vpn ipsec phase1-interface
    edit "VPN_extender"
        set type dynamic
        set interface "wan1"
        set mode aggressive
        set peertype one
        set net-device disable
        set proposal aes256-sha256
        set dpd on-idle
        set comments "VPN-Verbindung zu Außenstelle mit FortiExtender"
        set dhgrp 14
        set peerid "KRIZ-SE"
        set psksecret [Pre-Shared-Key eingeben]
        set dpd-retryinterval 60
    next
end
config vpn ipsec phase2-interface
    edit "Phase2-VPN-to_Extender"
        set phase1name "VPN_extender"
        set proposal aes256-sha256
        set dhgrp 14
        set keylifeseconds 43200
        set src-subnet 0.0.0.0 0.0.0.0
        set dst-subnet 192.168.46.0 255.255.255.0
    next
end

Konfiguration Routen:

config router static
    edit 1
        set dst 192.168.46.0 255.255.255.0
        set device "VPN_extender"
        set comment "Remote Netz VPN Extender"
    next
    edit 2
        set dst 192.168.46.0 255.255.255.0
        set distance 254
        set comment "Blackhole Route - VPN Extender"
        set blackhole enable
    next
end

Konfiguration Adressen Objekte:

config firewall address
    edit "net-remote-vpn-192.168.46.0-24"
        set comment "Remote VPN Netz - Extender"
        set color 10
        set subnet 192.168.46.0 255.255.255.0
    next
    edit "net-internal-10.60.60.0-24"
        set comment "internal Network Ruesch"
        set color 3
        set subnet 10.60.60.0 255.255.255.0
    next
end

Konfiguration Firewall Regeln:

config firewall policy
    edit 1
        set name "I_VPN-extender->LAN"
        set srcintf "VPN_extender"
        set dstintf "internal"
        set srcaddr "net-remote-vpn-192.168.46.0-24"
        set dstaddr "net-internal-10.60.60.0-24"
        set action accept
        set schedule "always"
        set service "ALL"
        set logtraffic all
    next
    edit 2
        set name "I_VPN-extender->INTERNET"
        set srcintf "VPN_extender"
        set dstintf "wan1"
        set srcaddr "net-remote-vpn-192.168.46.0-24"
        set dstaddr "all"
        set action accept
        set schedule "always"
        set service "ALL"
        set utm-status enable
        set ssl-ssh-profile "certificate-inspection"
        set av-profile "default"
        set webfilter-profile "default"
        set logtraffic all
        set nat enable
    next
end

vielen Dank an Robert Kříž von Fortinet Schweiz

High Availability

Wie wird ein HA-Failover Cluster erstellt?

Dieser Artikel beschreibt, wie ein HA Failover Cluster mit Fortigate Firewalls unter FortiOS 6.01 erstellt werden kann. Ziel ist untenstehendes Szenario:

Fortinet-2251.png

Vorbedingungen:
Eine HA Konfiguration setzt einige Vorbedingungen für beide Geräte voraus. Ein HA-Cluster kann nur erstellt werden wenn folgende Eigenschaften bei beiden Maschinen identisch sind:

  • Gerätetyp (z.b: 2x Fortigate 200D)
  • Revision
  • Firmware
  • FortiGuard Lizenzen
  • Operating Mode (Transparent oder NAT)
  • Festplattenkapazität

Wenn eines der beiden Geräte einen tieferen Lizenzstatus hat (weniger Funktionen lizenziert, oder kürzere Laufzeit) dann wird der gesamte Cluster automatisch auf diesen tieferen Lizenzstatus heruntergesetzt.


1. Konfiguration des Hostnamen auf dem Master

Fortinet-2252.png

Bitte konfiguriere den Devicenamen auf dem Gerät, welches später die Rolle des Masters übernehmen soll. Diese Einstellung ist zu finden unter System -> Settings -> Hostname

2. Aktivieren der HA Funktion auf dem Master

Fortinet-2254.png

Anschliessend kann die HA-Funktion auf dem Master unter System -> HA aktiviert werden.

  • Als Mode wird Active-Passive gewählt.
  • Die Device-Priorität bestimmt anschliessend darüber, welches der beiden Geräte als Master selektiert wird. Das Gerät mit der höheren Priorität wird vom Cluster zum Master auserwählt.
  • Unter Group Name muss für den Cluster einen Gruppennamen und ein Passwort gewählt werden. Dieser Gruppenname muss innerhalb der eigenen Umgebung einmalig sein, respektive über die Heartbeat Interfaces darf keine andere Gruppe mit einem identischen Namen existieren.
  • Session Pickup bestimmt, ob in einem Failover Fall bereits etablierte Sessions von der Slave Firewall akzeptiert werden, oder ob im Failoverfall jede Session neu aufgebaut werden muss.
  • Unter Monitor Interfaces werden die Interfaces selektiert, anhand jener ein Failover erfolgt, wenn eines dieser Interfaces auf dem Master nicht mehr verfügbar ist. Ergo sollten hier nur die Interfaces gewählt werden, welche garantiert immer UP sind.
  • Unter Heartbeat Interfaces muss mindestens ein Interface gewählt werden, über welches der Cluster die Statusinformationen austauscht. Empfohlen werden hier aus Redundanzgründen zwei dedizierte Interfaces. Es können hier theoretisch Interfaces verwendet werden, welche auch sonst verwendet werden. Es wird jedoch empfohlen für den Heartbeat zwei dedizierte, voneinander unabhängige Interfaces zu verwenden. Werden dedizierte Interfaces verwendet, so müssen diese nicht vorgängig mit einer IP vorkonfiguriert werden.
  • Unter Heartbeat Interface Priority kann definert werden, welchem der beiden Interface der Vorzug gewählt werden soll. Wird zum Beispiel ein produktives und ein dediziertes Interface für den Heartbeat verwendet, so empfiehlt es sich, das dedizierte Interface mit einer höheren Priorität zu versehen.

3. Aktivieren der HA Funktion auf dem Slave

Fortinet-2253.png

Nun kann die HA-Funktion auf dem Slave ebenfalls System -> HA aktiviert werden.

  • Als Mode wird ebenfalls Active-Passive gewählt.
  • Die Device Priorität soll tiefer gewählt werden, als jene des Master.
  • Unter Group Name und Password wird die selbe Gruppe und das selbe Passwort wie auf dem Master hinterlegt.
  • Konfiguriere Session Pickup analog Master.
  • Konfiguriere Monitor Interfaces analog Master.
  • Konfiguriere Heartbeat Interfaces analog Master.
  • Bestätige und schliesse ab.

Sobald sich die beiden Clustermember nun über ein Heartbeat Interfaces sehen, beginnen sie den Cluster zu bilden. Der Slave wird neu gestartet und allenfalls mit der Konfiguration des Masters überschrieben. Nach einem Reboot sollte unter System -> HA eine Übersicht über den Clusterstatus zu sehen sein:

Fortinet-2255.png

Auch auf der Konsole kann der Status angeschaut werden:

Config cli.png Konfiguration über die CLI:
fgt200-master # get system ha status
HA Health Status: OK
Model: FortiGate-200D
Mode: HA A-P
Group: 0
Debug: 0
Cluster Uptime: 0 days 00:07:01
Cluster state change time: 2018-07-17 16:34:31
Master selected using:
<2018/07/17 16:34:31> FG200D3916811639 is selected as the master because it has the largest value of override priority.
<2018/07/17 16:28:53> FG200D3916811639 is selected as the master because it's the only member in the cluster.
ses_pickup: enable, ses_pickup_delay=disable
override: enable
Configuration Status:
FG200D3916811639(updated 1 seconds ago): in-sync
FG200D3916811425(updated 1 seconds ago): in-sync
System Usage stats:
FG200D3916811639(updated 1 seconds ago):
	sessions=22, average-cpu-user/nice/system/idle=0%/0%/0%/100%, memory=13%
FG200D3916811425(updated 1 seconds ago):
	sessions=19, average-cpu-user/nice/system/idle=0%/0%/0%/100%, memory=12%
HBDEV stats:
FG200D3916811639(updated 1 seconds ago):
	port15: physical/1000auto, up, rx-bytes/packets/dropped/errors=1551614/2217/0/0, tx=1647198/2222/0/0
	port16: physical/1000auto, up, rx-bytes/packets/dropped/errors=1524874/2093/0/0, tx=1536540/2054/0/0
FG200D3916811425(updated 1 seconds ago):
	port15: physical/1000auto, up, rx-bytes/packets/dropped/errors=1649104/2225/0/0, tx=1561984/2232/0/0
	port16: physical/1000auto, up, rx-bytes/packets/dropped/errors=1537302/2055/0/0, tx=1532880/2104/0/0
MONDEV stats:
FG200D3916811639(updated 1 seconds ago):
	port1: physical/1000auto, up, rx-bytes/packets/dropped/errors=266700/1415/0/0, tx=1429610/1381/0/0
	wan1: physical/1000auto, up, rx-bytes/packets/dropped/errors=108967/614/0/0, tx=50166/420/0/0
FG200D3916811425(updated 1 seconds ago):
	port1: physical/1000auto, up, rx-bytes/packets/dropped/errors=356552/1565/0/0, tx=1684592/1618/0/0
	wan1: physical/1000auto, up, rx-bytes/packets/dropped/errors=122941/623/0/0, tx=37058/345/0/0
Master: fgt200-master   , FG200D3916811639, cluster index = 0
Slave : fgt200-slave    , FG200D3916811425, cluster index = 1
number of vcluster: 1
vcluster 1: work 169.254.0.1
Master: FG200D3916811639, operating cluster index = 0
Slave : FG200D3916811425, operating cluster index = 1

Achtung hierbei:

Status: OK

heisst nicht zwingend, dass der Cluster wirklich OK ist. Eine genauere Analyse des Outputs ist erforderlich. So kann der Clustermember auch Status: OK haben, wenn nur ein Clustermember online ist. Dies würde beispielsweise mit folgendem Output vermerkt:

Master selected using:
<2018/07/17 16:12:40> FG200D3916811639 is selected as the master because it's the only member in the cluster.


Anpassen des Failover Verhaltens
Wird obenstehendes Szenario realisiert, so wird nach der Bildung des Clusters der Member mit der Priorität=128 zum Master erkoren. Fällt der Master aus, übernimmt der Slave. Nachdem der ursprüngliche Master wieder verfügbar wird, wird jedoch der Master-Status nicht wieder an die Unit mit der Prio 128 zurückgegeben. Dieses Verhalten kann jedoch forciert werden, indem in der ha-Konfig im CLI override eingeschaltet wird:

Config cli.png Konfiguration über die CLI:
fg20-master# config system ha
fg20-master (ha) # set override enable
fg20-master (ha) # end

Führen des HA-Links über eine öffentliche Infrastruktur
Der HA-Traffic wird standardmässig nicht verschlüsselt. Muss der HA-Traffic über eine öffentliche Infrastruktur geführt werden, so empfiehlt es sich, die Authentifizierung sowie die Verschlüsselung dieses Traffics einzuschalten. Dies muss auf dem Master sowie auch auf dem Slave konfiguriert werden.

Config cli.png Konfiguration über die CLI:
fg20-master# config system ha
fg20-master (ha) # set authentication enable
fg20-master (ha) # set encryption enable
fg20-master (ha) # end
Config cli.png Konfiguration über die CLI:
fg20-slave # config system ha
fg20-slave (ha) # set authentication enable
fg20-slave (ha) # set encryption enable
fg20-slave (ha) # end

Anschliessend empiehlt es sich, beide Clustermember neu zustarten, damit die HA Verbindung neu ausgehandelt wird.

Handling der Management Interfaces
Bei grösseren Umgebungen existiert gemäss Best-Practices oftmals ein Management Netzwerk. Es empfiehlt sich, beide Cluster Nodes mit einem Management Port in diesem Management Netzwerk zu platzieren. Somit kann im Notfall auch via dieses Netzwerk auf beide Cluster Nodes zugegriffen werden. Damit dies funktioniert, muss zuerst auf dem Master in der HA Konfiguration definiert werden, welches Interface als Management Interface gewählt wird. Hierbei kann nicht das auf gewissen Appliances zur Verfügung stehende MGMT Interface gewählt werden. Diesem Management Interface kann ausserdem ein dedizierter, anderer DefaultGateway mitgegeben werden:

Config cli.png Konfiguration über die CLI:
fgt200-master (ha) # show
config system ha
    set ha-mgmt-status enable
    config ha-mgmt-interfaces
        edit 1
            set interface "port14"
            set gateway 192.168.11.1
        next
    end
end

Anschliessend kann der gewählte Port auf beiden Units unterschiedlich konfiguriert werden.
Auf dem Master:

Config cli.png Konfiguration über die CLI:
config system interface
    edit "port14"
        set ip 192.168.11.10 255.255.255.0
        set allowaccess https ssh snmp fgfm ftm
    next
end

Auf dem Slave:

Config cli.png Konfiguration über die CLI:
config system interface
    edit "port14"
        set ip 192.168.11.11 255.255.255.0
        set allowaccess https ssh snmp fgfm ftm
    next
end

mehr Infos: https://help.fortinet.com/fos60hlp/60/Content/FortiOS/fortigate-high-availability/virtual_clusteringConfig.htm

Wie kann ich im Cluster von der aktiven auf die passive Fortigate zugreifen?

FortiOS 60.svg FortiOS 62.svg FortiOS 64.svg FortiOS 70.svg

Falls man den Clustermembers keine dedizierte Management IP Adresse vergibt, kann man immer nur den aktiven Member per IP Adresse managen. Es gibt die Möglichkeit über die CLI den passiven Member anzusprechen. Dafür muss man die Device ID des passiven Members ermitteln. Dies funktioniert folgendermassen:

Config cli.png Konfiguration über die CLI:
fw-primary # execute ha manage ?

fw-primary # <id>       please input peer box index.
fw-primary # <0>        Susidary unit FGT60Exxxxxxxxxxd

In diesem Fall ist dies die ID des passiven Devices 0

Nun kann man sich mit dem selben Befehl auf den passiven Member verbinden:

Config cli.png Konfiguration über die CLI:

FortiOS 64.svg FortiOS 70.svg Ab FortiOS 6.4:


fw-primary # execute ha manage [HA Device Index] [Admin Account Name]
fw-primary # execute ha manage 0 admin

Warning: Permanently added '169.254.0.2' (ED25519) to the list of known hosts.
admin@169.254.0.2's password:
Welcome!
fw-secondary $

Es wird der Hostname des Sekundären Device angezeigt, gefolgt von einem Dollar ($) Zeichen.

FortiOS 60.svg FortiOS 62.svg Im FortiOS 6.2 und 6.0:


fw-primary # execute ha manage [HA Device Index]
fw-primary # execute ha manage 0

fw-secondary login: admin
Password: ********
Welcome!

fw-secondary $

Es wird der Hostname des Sekundären Device angezeigt, gefolgt von einem Dollar ($) Zeichen.


Nach erfolgreichem Login gibt es u.A. die Option, die Passive FortiGate des HA Clusters zu rebooten:

fw-secondary $ # execute reboot

This operation will reboot the system !
Do you want to continue? (y/n)y -> "y" (yes) wählen

System is rebooting...


Um das Secundären Device wieder zu verlassen kann der Befehl exit benutzt werden:

Config cli.png Konfiguration über die CLI:
fw-secundary $ exit

fw-primary # 


Was kann ich tun wenn mein Cluster die Meldung HA out of sync 'vpn.certificate.local' object ausgibt?

Im Objekt vpn.certificate.local sind alle lokalen Zertifikate enthalten, welche auf der FortiGate vorhanden sind. Wenn ein HA-Cluster aufgrund des Objekts 'vpn.certificate.local' aus der Synchronisation geraten ist, muss geprüft werden, ob die Verschlüsselung der privaten Daten unter den globalen Einstellungen aktiviert ist oder nicht.

Config cli.png Konfiguration über die CLI:
# config system global
# show full-configuration | grep private

Beispiel:

# config system global
# (global) # show full | grep private
# set private-data-encryption enable  <-- aktiviert  
fw-primary (global) # config system global
fw-primary (global) # show full-configuration | grep private
    set private-data-encryption enable

fw-primary (global) # diagnose sys ha checksum show root vpn.certificate.local
Fortinet_CA_SSL: 642240f84903cefd4c3d44c80418ce41
Fortinet_CA_SSLProxy: 663fc831b4bca68f7cb4d7c7098a1cc7
Fortinet_CA_Untrusted: 642240f84903cefd4c3d44c80418ce41
Fortinet_SSL: d255ee4f0f5357c4c0325d4a2dc6930a
Fortinet_SSLProxy: 579a3ec006ec25b16ddadad71c54e39b
Fortinet_SSL_DSA1024: d255ee4f0f5357c4c0325d4a2dc6930a
Fortinet_SSL_DSA2048: d255ee4f0f5357c4c0325d4a2dc6930a
Fortinet_SSL_ECDSA256: d255ee4f0f5357c4c0325d4a2dc6930a
Fortinet_SSL_ECDSA384: d255ee4f0f5357c4c0325d4a2dc6930a
Fortinet_SSL_ECDSA521: 0eed600d1ed384972cba1048e8c74b4c
Fortinet_SSL_ED448: 0eed600d1ed384972cba1048e8c74b4c
Fortinet_SSL_ED25519: 0eed600d1ed384972cba1048e8c74b4c
Fortinet_SSL_RSA1024: d255ee4f0f5357c4c0325d4a2dc6930a
Fortinet_SSL_RSA2048: d255ee4f0f5357c4c0325d4a2dc6930a
Fortinet_SSL_RSA4096: 0eed600d1ed384972cba1048e8c74b4c

Um auf das Sekundäre Device zu verbinden gibt es hier einen FAQ Beitrag im Wiki: FortiGate:FAQ#Wie_kann_ich_im_Cluster_von_der_aktiven_auf_die_passive_Fortigate_zugreifen.3F

fw-primary (global) # exe ha manage ?
<id>    please input peer box index.
<1>     Subsidary unit FGT3HD3XXXXXXX0

fw-primary (global) # exe ha manage 1 admin
Warning: Permanently added '169.254.0.2' (ED25519) to the list of known hosts.
admin@169.254.0.2's password:
fw-secundary #
fw-secundary # config global
fw-secundary (global) # diagnose sys ha checksum show root vpn.certificate.local
Fortinet_CA_SSL: 642240f84903cefd4c3d44c80418ce41
Fortinet_CA_SSLProxy: 663fc831b4bca68f7cb4d7c7098a1cc7
Fortinet_CA_Untrusted: 642240f84903cefd4c3d44c80418ce41
Fortinet_SSL: d255ee4f0f5357c4c0325d4a2dc6930a
Fortinet_SSLProxy: 579a3ec006ec25b16ddadad71c54e39b
Fortinet_SSL_DSA1024: d255ee4f0f5357c4c0325d4a2dc6930a
Fortinet_SSL_DSA2048: d255ee4f0f5357c4c0325d4a2dc6930a
Fortinet_SSL_ECDSA256: d255ee4f0f5357c4c0325d4a2dc6930a
Fortinet_SSL_ECDSA384: d255ee4f0f5357c4c0325d4a2dc6930a
Fortinet_SSL_ECDSA521: 0eed600d1ed384972cba1048e8c74b4c
Fortinet_SSL_ED448: 0eed600d1ed384972cba1048e8c74b4c
Fortinet_SSL_ED25519: 0eed600d1ed384972cba1048e8c74b4c
Fortinet_SSL_RSA1024: d255ee4f0f5357c4c0325d4a2dc6930a
Fortinet_SSL_RSA2048: d255ee4f0f5357c4c0325d4a2dc6930a
Fortinet_SSL_RSA4096: 0eed600d1ed384972cba1048e8c74b4c

Wenn die private Datenverschlüsselung aktiviert ist und die Prüfsummen der Zertifikate unterschiedlich sind,sind folgende Schritte auszuführen:

  1. Private-Daten-Verschlüsselung deaktivieren set private-data-encryption disable
  2. Cluster Synchronisieren execute ha sync start
  3. Checksummen enreut überprüfen diagnose sys ha checksum cluster (auf beiden Devices> Wenn die Prüfsummen gleich sind, weiter mit Schritt 4
  4. private-data-Verschlüsselung einschalten set private-data-encryption enable
  5. Cluster erneut synchronisieren execute ha sync start
  6. Checksummen noch einmal überprüfen diagnose sys ha checksum cluster
Tipp.png

Ab Firmware-Version 6.2.5 sollte das Objekt 'vpn.certificate.local' synchronisiert sein und die oben beschriebenen Schritte nicht mehr erforderlich sein.

Was bedeutet die Meldung "slave and master have different hdisk status" in der CLI?

Beim Konfigurieren eines FortiGate HA-Clusters kann auf der Konsole auf dem passiven/Sekundären Gerät die folgende Meldung angezeigt werden:
slave and master have different hdisk status. Cannot work with HA master. Shutdown the box! The system is halted."

Mögliche Ursachen für diese Fehlermeldungen sind:

Möglichkeit 1 - Keine Disk im Device
Bei einem der FortiGate Devices handelt es sich um ein Modell bei welchem keine Harddisk vorhanden ist. Dies kann über die CLI folgendermassen überprüft werden:

Config cli.png Konfiguration über die CLI:
# get system status
Version: FortiGate-300D v6.4.1,build1637,200604 (GA)
Virus-DB: 78.00196(2020-06-15 22:20)
Extended DB: 78.00196(2020-06-15 22:20)
Extreme DB: 1.00000(2018-04-09 18:07)
IPS-DB: 15.00864(2020-06-15 02:16)
IPS-ETDB: 6.00741(2015-12-01 02:30)
APP-DB: 15.00864(2020-06-15 02:16)
INDUSTRIAL-DB: 6.00741(2015-12-01 02:30)
Serial-Number: FGT3HDxxxxxxxxx
IPS Malicious URL Database: 2.00675(2020-06-15 05:04)
BIOS version: 05000002
System Part-Number: P14814-04
Log hard disk: Not available <--- Information über die Disk
Hostname: alsochlu-sg0e1
Operation Mode: NAT
Current virtual domain: root
Max number of virtual domains: 10
Virtual domains status: 5 in NAT mode, 1 in TP mode
Virtual domain configuration: multiple
FIPS-CC mode: disable
Current HA mode: a-p, master
Cluster uptime: 914 days, 2 hours, 50 minutes, 7 seconds
Cluster state change time: 2020-06-10 13:38:01
Branch point: 1637
Release Version Information: GA
FortiOS x86-64: Yes

Wenn keine Disk vorhanden ist, wird man folgenden Output sehen:
"Log hard disk: Not available"

Wenn eine Disk vorhanden ist:
"Log hard disk: Available"


Möglichkeit 2 - Beide FortiGate haben eine Disk aber eine der Disk ist nicht formatiert:
Eine weitere möglichkeit ist, dass eine der Disk auf der FortiGate nicht formatiert ist und daher auch nicht genutzt werden kann.

Config cli.png Konfiguration über die CLI:

Falls vorhanden erst die Logdaten sichern, falls vorhanden:

# execute log backup [IP-ADRESSE_ZIEL]

Dann die Harddisk formatieren:

# execute formatlogdisk

Formatting this storage will erase all data on it, including
  logs, quarantine files;
  WanOpt caches;
and require the unit to reboot.
Do you want to continue? (y/n)

Möglichkeit 3 - Eine Disk ist defekt
Eines der FortiGate-Geräte hat einen Festplattenfehler. Es muss ein HQIP-Test durchgeführt werden. Wie man einen HQIP Test durchführt kann demfolgenden Artikel entnommen werden:

Danach mit dem Resultat ein Support RMA Case über https://support.fortinet.com eröffnen um das defekte Gerät austauschen zu lassen.

Wieso ist meine Lizenz im Cluster trotz Laufzeit schon expired?

FortiOS 56.svg FortiOS 6x.svg FortiOS 70.svg FortiOS 72.svg

Alle Mitglieder des HA-Clusters müssen über gültige Support-Verträge und gültige Lizenzen für FortiGuard-Dienste verfügen. Es ist nicht ausreichend, wenn nur die Master-FortiGate abgedeckt ist.

Bedingungen:
Support-Vertrag:

Alle FortiGates müssen über einen gültigen Support-Vertrag verfügen, um ein Support-Ticket für ein bestimmtes Gerät eröffnen zu können.

FortiGuard-Dienste:

Mann muss alle FortiGates in einem Cluster für alle erforderlichen FortiGuard-Dienste registrieren und lizenzieren. Dies hat den Grund, dass alle FortiGates im Cluster mit dem Fortinet Distribution Network (FDN) kommunizieren. Ein weiterer Grund ist dass jede FortiGate im Cluster potenziell die primäre FortiGate werden könnte.

Aktiv-Passiv-Cluster:

Bei einem Aktiv-Passiv-Cluster verarbeitet nur die primäre FortiGate den Datenverkehr. Trotzdem kommunizieren alle FortiGates im Cluster mit dem FDN. Nur die primäre FortiGate sendet FortiGuard Web Filtering- und Antispam-Anfragen an das FDN. Alle FortiGates im Cluster erhalten FortiGuard Antivirus-, IPS- und Application Control-Updates vom FDN.

Aktiv - Aktiver Cluster:

Sowohl die primäre als auch die sekundäre FortiGate verarbeiten den Datenverkehr. Die Kommunikation zwischen den FortiGates im Cluster und dem FDN ist die gleiche wie bei einem aktiv-passiven Clustern. Es gibt aber folgender Ausnahmen:

  • Die sekundären FortiGates verarbeiten Datenverkehr, so dass sie auch FortiGuard Web Filtering- und E-Mail-Filter-Anfragen stellen können.
  • Die primäre FortiGate empfängt alle diese Anfragen von den sekundären FortiGates und leitet sie an den FDN weiter und leitet dann die Antworten des FDN zurück an die sekundären FortiGates.
  • Die URL-Caches von FortiGuard Web Filtering und Email Filtering werden auf der primären FortiGate verwaltet. Die Caches der primären FortiGate werden für die Anfragen der primären und sekundären FortiGates verwendet.

Folgendermassen kann man erkennen, dass im Cluster mindestens ein FortiGate Gerät nicht richtig Lizenziert ist:

Config cli.png Konfiguration über die CLI:

Update durchführen und den Output debugen:

diagnose debug application update -1
diagnose debug enable
execucte update-now

OUTPUT Fragmente:

# do_update[400]-Starting now UPDATE (final try)
upd_act_HA_contract_info[691]-ContractItem GT81ETK[SERIENUMMER_MEMBER-A]*FGT81ETK[SERIENUMMER_MEMBER-B]
upd_comm_connect_fds[441]-Trying FDS 96.45.33.85:443

upd_status_set_ha_expiry[1105]-Serial Number: FGT81ETK[SERIENUMMER_MEMBER-A] - contract processed
upd_status_set_ha_expiry[1086]-Extracting contract...(SerialNumber=FGT81ETK[SERIENUMMER_MEMBER-B]|Contract=SPAM-1-06-20201129:0:1:1:0*FURL-1-06-20201129:0:1:1:0*ZHVO-1-06-20201129:0:1:1:0*SPRT-1-10-20201129:0:1:1:0*NIDS-1-06-20201129:0:1:1:0*HDWR-1-04-20201129:0:1:1:0*FMWR-1-06-20201129:0:1:1:0*ENHN-1-10-20201129:0:1:1:0*AVDB-1-06-20201129:0:1:1:0*AVEN-1-06-20201129:0:1:1:0|PendingRegistration=1)

edit 04.01.2023 - 4Tinu

Cluster primary-Flag Deamon killen

Wir haben ein Upgrade des Clusters durchgeführt. Es war erfolgreich auf dem primären Gerät FGT1KDxxxxx01 Wir haben es erneut versucht, und das sekundäre Gerät FGT1KDxxxxx02 wurde ebenfalls aktualisiert. Mittlerweile läuft auf beiden Geräten FortiOS 7.0.5. Dennoch wird der Fehler weiterhin angezeigt: "FGT1KDxxxxx01 ist als primäres Gerät ausgewählt, da das Flag UPGRADE_PRIMARY auf dem Peer-Mitglied FGT1KDxxxxx02 nicht gesetzt ist.

Wir sind nicht in der Lage, ein Failover durchzuführen. Gibt es eine Möglichkeit, das genannte Flag zu setzen?


     FGT1KDxxxxx01 is selected as the primary because UPGRADE_PRIMARY flag is unset on peer member FGT1KDxxxxx02."
     FGT1KDxxxxx01


# get system ha status
HA Health Status: OK
Model: FortiGate-1000D
Mode: HA A-P
Group: 0
Debug: 0
Cluster Uptime: 1641 days 21:30:15
Cluster state change time: 2022-03-26 23:00:47
Primary selected using:
[DATUM] FGT1KDxxxxx01 is selected as the primary because UPGRADE_PRIMARY flag is unset on peer member FGT1KDxxxxx02.
[DATUM] FGT1KDxxxxx01 is selected as the primary because it's the only member in the cluster.
[DATUM] FGT1KDxxxxx01 is selected as the primary because UPGRADE_PRIMARY flag is unset on peer member FGT1KDxxxxx02.
[DATUM] FGT1KDxxxxx01 is selected as the primary because it's the only member in the cluster.
ses_pickup: enable, ses_pickup_delay=disable
override: disable
Configuration Status:
FGT1KDxxxxx01(updated 4 seconds ago): in-sync
FGT1KDxxxxx02(updated 4 seconds ago): in-sync
System Usage stats:
FGT1KDxxxxx01(updated 4 seconds ago):
sessions=41412, average-cpu-user/nice/system/idle=1%/0%/0%/92%, memory=49%
FGT1KDxxxxx02(updated 4 seconds ago):
sessions=38109, average-cpu-user/nice/system/idle=0%/0%/0%/100%, memory=36%
HBDEV stats:
FGT1KDxxxxx01(updated 4 seconds ago):
port31: physical/1000auto, up, rx-bytes/packets/dropped/errors=41506495294/40586207/0/0, tx=325206134529/270007937/0/0
port32: physical/1000auto, up, rx-bytes/packets/dropped/errors=2746263714/5095106/0/0, tx=2756862679/5095849/0/0
FGT1KDxxxxx02(updated 4 seconds ago):
port31: physical/1000auto, up, rx-bytes/packets/dropped/errors=105419841298/87630641/0/0, tx=12919524346/12876830/0/0
port32: physical/1000auto, up, rx-bytes/packets/dropped/errors=886460419/1638559/0/0, tx=883016765/1638250/0/0
MONDEV stats:
FGT1KDxxxxx01(updated 4 seconds ago):
port16: physical/1000auto, up, rx-bytes/packets/dropped/errors=386518791512/541360550/0/0, tx=12551232851/23566657/0/0
portB: physical/10000full, up, rx-bytes/packets/dropped/errors=26382259018141/31688794040/0/0, tx=62667012541029/54361822747/0/0
FGT1KDxxxxx02(updated 4 seconds ago):
port16: physical/1000auto, up, rx-bytes/packets/dropped/errors=135751949904/176262996/0/13, tx=0/0/0/0
portB: physical/10000full, up, rx-bytes/packets/dropped/errors=135752361662/176282538/0/0, tx=68/1/0/0
Primary : GV2FORTI02 , FGT1KDxxxxx01, HA cluster index = 0
Secondary : GV2FORTI01 , FGT1KDxxxxx02, HA cluster index = 1
number of vcluster: 1
vcluster 1: work 169.254.0.1
Primary: FGT1KDxxxxx01, HA operating index = 0
Secondary: FGT1KDxxxxx02, HA operating index = 1

Während des Upgrades blieb die Master-Einheit im Upgrade-Prozess stecken und hatalk machte eine Schleife zwischen dem Eintritt und dem Verlassen von ha_upgrade_timer.

I have checked the putty_session and I'm seeing that hatalk (in the master unit) thinks it's still in the upgrade process (looping between entering and leaving the upgrade process).

 <hatalk> entering hatalk_upgrade_timer_func: uprade_state=2(PRIMARY), daemon_bits=0x00000000
 <hatalk> leaving hatalk_upgrade_timer_func: uprade_state=2(PRIMARY), daemon_bits=0x00000000
 <hatalk> entering hatalk_upgrade_timer_func: uprade_state=2(PRIMARY), daemon_bits=0x00000000
 <hatalk> leaving hatalk_upgrade_timer_func: uprade_state=2(PRIMARY), daemon_bits=0x00000000

Das UPGRADE_PRIMARY-Flag kann nicht geändert werden. Man kann aber den Prozess welcher den Upgrade-Prozess abwickelt beenden.

Diese Prozedur soll in einem Wartungsfenster durchgeführt werden:

1.) Den hatalk daemon im master/primary beenden

Config cli.png Konfiguration über die CLI:
# diag sys top | grep hatalk   <-- finde die PID des Daemons. In diesem Fall ist 235.
                 hatalk         235        S <      0.1        0.1      4
# diag sys kill 11 235   <-- Den Deamon beenden mit dem Signal 11
# diag sys top | grep hatalk   <----check if the daemon has restared with a new PID
                 hatalk          2515      S <     0.2        0.1      4

Mehr Informationen wie ein Prozesss beendet wird findet man hier

2.) Das Debugen erneut ausführen:

Config cli.png Konfiguration über die CLI:
    # diagnose debug console timestamp enable
    # diagnose debug application hasync -1
    # diagnose debug application hatalk -1
    # diagnose debug enable

3.) Das ganze ein paar Minuten laufen lassen und dann die diagnose deaktivieren/ausschalten:

Config cli.png Konfiguration über die CLI:
    # diagnose debug disable

4.) Verschuchen den Failover mit reset-uptime erneut durchzuführen:

Config cli.png Konfiguration über die CLI:
    # get system ha status
    # diagnose sys ha reset-uptime
    # get system ha status

add 13.05.2022 - 4Tinu --Artikel noch in Bearbeitung

DoS

Wie kann ich die DoS Policy im FortiOS aktivieren?

Standardmässig sind die DoS Policy im FortiOS unter im Webgui nicht sichtbar. Diese müssen über die Feature-Einstellungen zuerst eingeschalten werden.

Um diese Sichtbar zu machen muss unter dem Menu System -> Feature Visibility der Schalter DoS Policy aktiviert werden.

Fortinet-2606.jpg

Über die CLI kann man dies folgendermassen einschalten:

Config cli.png Konfiguration über die CLI:
config system settings
   set gui-dos-policy enable
end

Wie konfiguriere ich eine DoS Regel auf der FortiGate?

Das Menu um eine DoS Policy zu konfigurieren findet man im Menu Policy & Objects -> IPv4 DoS Policy. Falls das Menu noch nicht vorhanden ist muss man es zuerst aktivieren:

      FortiGate:FAQ#Wie_kann_ich_die_DoS_Policy_im_FortiOS_aktivieren.3F

Fortinet-2607.jpg

Jetzt über das Menu CreateNew.jpg kann eine neue Policy erstellt werden.

Nun kann das eingehende Interface definiert werden, die Source Adressen und die Destination Adressen. Weiter können die Services definiert werden, auf welche die DoS Regel zählen soll.

Fortinet-2608.jpg

Für Eingehenden Traffic vom WAN Interface kann man sehr gut als Source ALL auswählen. Die Destination kann auch auf ALL gesetzt werden und die Services auch. Diese Regel wird dann als Implizit Regel konfiguriert, und alle Ausnahme Regeln vor dieser angelegten Implizit Regel.

DoS Regeln sichern in gewissem Sinne das Netzwerk gegen abnormale Verhaltensmuster im Netzwerktraffic ab. Die Vorgeschlagenen Werte von Fortinet sind Richtwerte aber nicht in Stein gemeisselt. Um sein Netzwerk richtig abzusichern empfiehlt es sich, zuerst die Regeln auf Monitoring zu setzen und zu tracken wie der Traffic im Netzwerk normal ist. So kann dann der Schwellwert entsprechend angepasst werden. Man nimmt den gewünschten Schwellwert und rechnet noch eine Toleranz dazu. Zu beachten ist, je kleiner die Toleranz um so sicherer das Netz. Es muss aber auch beachtet werden, wenn die Toleranz zu klein ist, können auch Fehlalarme generiert werden.

Wo immer Vorsicht geboten ist, bei Voip Applikationen. Hier können schnell höhe Werte entstehen. Daher Empfiehlt es sich für den SIP Port (üblicherweise UDP5060) eine Ausnahme Regel zu definieren.

Auch in dem DoS Regelwerk wird die Reihenfolge von oben nach unten durchlaufen. Sobald ein Kriterium übereinstimmt wird die Regel beachtet und der Rest des DoS Regelwerk ignoriert. Daher macht es Sinn sich ein paar Gedanken zu machen.

Die Regeln kann man mit ziehen per Maus einfach an die gewünschte Position schieben.

Config cli.png Konfiguration über die CLI:
config firewall DoS-policy
    edit 1
        set comments "DoS - implicit wan1"
        set interface "wan1"
        set srcaddr "all"
        set dstaddr "all"
        set service "ALL"
        config anomaly
            edit "tcp_syn_flood"
                set log enable
                set action block
                set threshold 2000
            next
            edit "tcp_port_scan"
                set log enable
                set action block
                set threshold 1000
            next
            edit "tcp_src_session"
                set log enable
                set action block
                set threshold 5000
            next
            edit "tcp_dst_session"
                set log enable
                set action block
                set threshold 5000
            next
            edit "udp_flood"
                set log enable
                set action block
                set threshold 2000
            next
            edit "udp_scan"
                set log enable
                set action block
                set threshold 2000
            next
            edit "udp_src_session"
                set log enable
                set action block
                set threshold 5000
            next
            edit "udp_dst_session"
                set log enable
                set action block
                set threshold 5000
            next
            edit "icmp_flood"
                set log enable
                set action block
                set threshold 250
            next
            edit "icmp_sweep"
                set log enable
                set action block
                set threshold 100
            next
            edit "icmp_src_session"
                set log enable
                set action block
                set threshold 300
            next
            edit "icmp_dst_session"
                set log enable
                set action block
                set threshold 1000
            next
            edit "ip_src_session"
                set status enable
                set log enable
                set action block
                set threshold 5000
            next
            edit "ip_dst_session"
                set status enable
                set log enable
                set action block
                set threshold 5000
            next
            edit "sctp_flood"
                set log enable
                set action block
                set threshold 2000
            next
            edit "sctp_scan"
                set log enable
                set action block
                set threshold 1000
            next
            edit "sctp_src_session"
                set log enable
                set action block
                set threshold 5000
            next
            edit "sctp_dst_session"
                set log enable
                set action block
                set threshold 5000
            next
        end
    next
end

Was bedeuten die unterschiedlichen DoS Anomalien?

In der folgenden Tabelle kann entnommen werden, was mit den verschiedenen Anomalien gemeint ist und welche Schwellwerte auf der FortiGate vordefiniert sind:

L3 Anomalie Beschreibung Vordefinierter Schwellwert

ip_src_session

Wenn die Anzahl der gleichzeitigen IP-Verbindungen von einer Quell-IP-Adresse den konfigurierten Schwellenwert überschreitet, wird die Aktion ausgeführt.

5000 gleichzeitige Sessions

ip_dst_session

Wenn die Anzahl der gleichzeitigen IP-Verbindungen zu einer Ziel-IP-Adresse den konfigurierten Schwellenwert überschreitet, wird die Aktion ausgeführt.

5000 gleichzeitige Sessions

L4 Anomalie Beschreibung Vordefinierter Schwellwert

tcp_syn_flood

Wenn die SYN-Paketrate neuer TCP-Verbindungen, einschliesslich der erneuten Übertragung, zu einer Ziel-IP-Adresse den konfigurierten Schwellenwert überschreitet, wird die Aktion ausgeführt.

2000 Pakete pro Sekunde

tcp_port_scan

Wenn die SYN-Paketrate neuer TCP-Verbindungen, einschliesslich der erneuten Übertragung, von einer Source-IP-Adresse den konfigurierten Schwellenwert überschreitet, wird die Aktion ausgeführt.

1000 Pakete pro Sekunde

tcp_src_session

Wenn die Anzahl der gleichzeitigen TCP-Verbindungen von einer Source-IP-Adresse den konfigurierten Schwellenwert überschreitet, wird die Aktion ausgeführt.

5000 gleichzeitige Sessions

tcp_dst_session

Wenn die Anzahl der gleichzeitigen TCP-Verbindungen zu einer Destination-IP-Adresse den konfigurierten Schwellenwert überschreitet, wird die Aktion ausgeführt.

5000 gleichzeitige Sessions

udp_flood

Wenn der UDP-Traffic zu einer Destination-IP-Adresse den konfigurierten Schwellenwert überschreitet, wird die Aktion ausgeführt.

2000 Pakete pro Sekunde

udp_scan

Wenn die Anzahl der UDP-Session, die von einer Source-IP-Adresse stammen den konfigurierten Schwellenwert überschreitet, wird die Aktion ausgeführt.

2000 Pakete pro Sekunde

udp_src_session

Wenn die Anzahl der gleichzeitigen UDP-Verbindungen von einer Source-IP-Adresse den konfigurierten Schwellenwert überschreitet, wird die Aktion ausgeführt.

5000 gleichzeitige Sessions

udp_dst_session

Wenn die Anzahl der gleichzeitigen UDP-Verbindungen zu einer Destination-IP-Adresse den konfigurierten Schwellenwert überschreitet, wird die Aktion ausgeführt.

5000 gleichzeitige Sessions

icmp_flood

Wenn die Anzahl der an eine Destination-IP-Adresse gesendeten ICMP-Pakete den konfigurierten Schwellenwert überschreitet, wird die Aktion ausgeführt.

250 Pakete pro Sekunde

icmp_sweep

Wenn die Anzahl der ICMP-Pakete, die von einer Source-IP-Adresse stammen, den konfigurierten Schwellenwert überschreitet, wird die Aktion ausgeführt.

100 Pakete pro Sekunde

icmp_src_session

Wenn die Anzahl der gleichzeitigen ICMP-Verbindungen von einer Source-IP-Adresse den konfigurierten Schwellenwert überschreitet, wird die Aktion ausgeführt.

300 gleichzeitige Sessions

icmp_dst_session

Wenn die Anzahl der gleichzeitigen ICMP-Verbindungen zu einer Destination-IP-Adresse den konfigurierten Schwellenwert überschreitet, wird die Aktion ausgeführt.

1000 gleichzeitige Sessions

sctp_flood

Wenn die Anzahl der an eine Ziel-IP-Adresse gesendeten SCTP-Pakete den konfigurierten Schwellenwert überschreitet, wird die Aktion ausgeführt.

2000 Pakete pro Sekunde

sctp_scan

Wenn die Anzahl der SCTP-Sitzungen, die von einer Source-IP-Adresse stammen, den konfigurierten Schwellenwert überschreitet, wird die Aktion ausgeführt.

1000 Pakete pro Sekunde

sctp_src_session

Wenn die Anzahl der gleichzeitigen SCTP-Verbindungen von einer Source-IP-Adresse den konfigurierten Schwellenwert überschreitet, wird die Aktion ausgeführt.

5000 gleichzeitige Sessions

sctp_dst_session

Wenn die Anzahl der gleichzeitigen SCTP-Verbindungen zu einer Destination-IP-Adresse den konfigurierten Schwellenwert überschreitet, wird die Aktion ausgeführt.

5000 gleichzeitige Sessions

Wie kann ich für eine DoS Policy weitere Informationen für eine Analyse auflisten?

In der CLI steht für eine DoS Policy folgendes Kommando zur Verfügung:

Config cli.png Konfiguration über die CLI:
       # diagnose ips anomaly [clear | config | filter | list | status]

Die verschiedenen Optionen für "ips anomaly" haben folgende Bedeutung:

Config cli.png Konfiguration über die CLI:
       • clear            löscht die anomaly meters
       • config           listet die DOS-sensoren auf
       • filter           listet den "anomaly" filter auf
       • list             listet die "anomaly" meters auf
       • status           listet den "anomaly" status auf

Somit kann zBsp mit folgendem Befehl die konfigurierten DoS Policies aufgelistet werden:

Config cli.png Konfiguration über die CLI:
       # diagnose ips anomaly config
       DoS sensors in kernel vd 0:
       DoS id 2 proxy 0
         0 tcp_syn_flood status 0 log 0 nac 0 action 0 threshold 2000
         1 tcp_port_scan status 0 log 0 nac 0 action 0 threshold 1000
         2 tcp_src_session status 1 log 1 nac 1 action 7 threshold 100
         3 tcp_dst_session status 0 log 0 nac 0 action 0 threshold 5000
         4 udp_flood status 0 log 0 nac 0 action 0 threshold 2000
         5 udp_scan status 0 log 0 nac 0 action 0 threshold 2000
         6 udp_src_session status 0 log 0 nac 0 action 0 threshold 5000
         7 udp_dst_session status 0 log 0 nac 0 action 0 threshold 5000
         8 icmp_flood status 0 log 0 nac 0 action 0 threshold 250
         9 icmp_sweep status 0 log 0 nac 0 action 0 threshold 100
         10 icmp_src_session status 0 log 0 nac 0 action 0 threshold 300
         11 icmp_dst_session status 0 log 0 nac 0 action 0 threshold 1000
         12 ip_src_session status 0 log 0 nac 0 action 0 threshold 5000
         13 ip_dst_session status 0 log 0 nac 0 action 0 threshold 5000
         14 sctp_flood status 0 log 0 nac 0 action 0 threshold 2000
         15 sctp_scan status 0 log 0 nac 0 action 0 threshold 1000
         16 sctp_src_session status 0 log 0 nac 0 action 0 threshold 5000
         17 sctp_dst_session status 0 log 0 nac 0 action 0 threshold 5000
       DoS id 1 proxy 0
         0 tcp_syn_flood status 1 log 1 nac 0 action 7 threshold 2000
         1 tcp_port_scan status 1 log 0 nac 0 action 0 threshold 1000
         2 tcp_src_session status 1 log 0 nac 0 action 0 threshold 5000
         3 tcp_dst_session status 1 log 0 nac 0 action 0 threshold 5000
         4 udp_flood status 1 log 1 nac 0 action 7 threshold 2000
         5 udp_scan status 1 log 0 nac 0 action 0 threshold 2000
         6 udp_src_session status 1 log 0 nac 0 action 0 threshold 5000
         7 udp_dst_session status 1 log 0 nac 0 action 0 threshold 5000
         8 icmp_flood status 1 log 1 nac 0 action 7 threshold 250
         9 icmp_sweep status 1 log 0 nac 0 action 0 threshold 100
         10 icmp_src_session status 1 log 0 nac 0 action 0 threshold 300
         11 icmp_dst_session status 1 log 0 nac 0 action 0 threshold 1000
         12 ip_src_session status 0 log 0 nac 0 action 0 threshold 5000
         13 ip_dst_session status 0 log 0 nac 0 action 0 threshold 5000
         14 sctp_flood status 0 log 0 nac 0 action 0 threshold 2000
         15 sctp_scan status 0 log 0 nac 0 action 0 threshold 1000
         16 sctp_src_session status 0 log 0 nac 0 action 0 threshold 5000
         17 sctp_dst_session status 0 log 0 nac 0 action 0 threshold 5000
       total # DoS sensors: 2.

Nachfolgender Befehl listet alle IPv4 Adressen auf für welche ein "match" der DoS Policy ausgeführt wurde. Diese Liste zeigt nicht zwingend IPv4 Adressen die eine Attacke durchgeführt haben. Die Position "exp" (expiration) zeigt den Wert in Sekunden nachdem ein entsprechender Eintrag entfernt wird sofern kein weiterer "match" betreffend der IPv4 Adresse für diesen DoS Policy Eintrag stattfindet. Die Position "pps" (packet per second) zeigt an wieviele Packete pro Sekunden für die IPv4 Adressen registriert wurde. Die Position "freq" (frequency) zeigt die Frequenz für eine spezifische IPv4 Adresse für die eine DoS anomaly erkannt wurde:

Config cli.png Konfiguration über die CLI:
       # diagnose ips anomaly list
       list nids meter:
       id=udp_flood          ip=198.41.0.4 dos_id=1 exp=988 pps=1 freq=6
       
       id=udp_dst_session    ip=198.41.0.4 dos_id=1 exp=5990 pps=0 freq=0
       
       id=udp_scan           ip=193.193.135.65 dos_id=1 exp=988 pps=2 freq=3
       
       id=udp_src_session    ip=193.193.135.65 dos_id=1 exp=5990 pps=0 freq=0
       
       id=udp_flood          ip=193.193.135.66 dos_id=1 exp=880 pps=3 freq=3
       
       id=udp_flood          ip=192.228.79.201 dos_id=1 exp=967 pps=0 freq=1
       
       id=udp_dst_session    ip=192.228.79.201 dos_id=1 exp=5969 pps=0 freq=0
       
       total # of nids meters: 7.

Wenn durch "list" eine grosse Liste von Informationen ausgegeben wird kann diese mittels folgendem Befehl gefilter werden:

Config cli.png Konfiguration über die CLI:
       # diagnose ips anomaly filter
       clear  Clear anomaly filter.
       id     Anomaly ID.
       ip     IP and subnet mask.
       pps    pps
       freq   frequency

Der Status des Filters kann mit folgendem Befehl aufgelistet werden:

Config cli.png Konfiguration über die CLI:
       # diagnose ips anomaly filter
       anomaly filter:
       id any
       ip 0.0.0.0 mask 0.0.0.0
       nps 0 - 0
       freq 0 - 0 

Somit kann zBsp ein anhand eine Policy ID (id) oder zBsp anhand eine IPv4 Adresse (ip) ein Filter gesetzt werden:

Config cli.png Konfiguration über die CLI:
       # diagnose ips anomaly filter id 1
       # diagnose ips anomaly filter
       anomaly filter:
       id 1
       ip 0.0.0.0 mask 0.0.0.0
       nps 0 - 0
       freq 0 - 0
       # diagnose ips anomaly filter ip 198.41.0.4 255.255.255.255
       # diagnose ips anomaly filter
       anomaly filter:
       id 1
       ip 198.41.0.4 mask 255.255.255.255
       nps 0 - 0
       freq 0 - 0   

Um den Filter zurück zu setzen führe ein "clear" aus:

Config cli.png Konfiguration über die CLI:
       # diagnose ips anomaly filter clear
       # diagnose ips anomaly filter
       anomaly filter:
       id 0
       ip 0.0.0.0 mask 0.0.0.0
       nps 0 - 0
       freq 0 - 0

Kann ich bestimmte IP Adressen sperren, wen in der DoS Policy eine anomaly triggert?

Über die CLI ist es möglich, dass die IP Adressen des "Angreifers" in eine Quarantäne gesetzt werden. Dabei haben wir die möglichkeit, zu definieren, wie lange eine IP Adresse in dieser Quarantäne verbleiben soll.

Sobald der Schwellenwert erreicht ist, wird die IP des Angreifers in die Quarantäneliste aufgenommen. Standardmässig wird die angegriffene IP nicht unter Quarantäne gestellt. Man kann über die CLI mit des folgenden Beispiels konfigurieren.

Die Einstellungen sind nicht auf der GUI verfügbar, sondern nur in der Befehlseingabeaufforderung.

Config cli.png Konfiguration über die CLI:

Syntax:

config firewall DoS-policy
     edit 1 
     config anomaly
     edit [ANOMALY_NAME]
          set quarantine [none | attacker]
          set quarantine-expiry [<###d##h##m>] minimun 1m  
          set guarantine-log [enable | disable]
     end
end

Beispiel:

config firewall DoS-policy
edit 1 
  config anomaly
      edit "udp_flood"
          set status enable
          set log enable
          set action block
          set quarantine attacker
          set quarantine-expiry 5m
          set quarantine-log enable
          set threshold 2000
      next
  end
end
Hinweis.svg

Zu beachten ist, dass dies für jeden Dos-Angriff (Anomalie) seperat konfiguriert werden muss.

Wie kann ich schauen wer in der Quarantaene Liste eingetragen ist?

Mit dem Befehl diagnose user quarantine list kann über die CLI eingesehen werden, welche User / IP Adressen momentan unter Quarantäne gesetzt sind:

Syntax:

# diagnose user quarantine ?
list      List user quarantine entries.
add       Add user quarantine entry.
delete    Delete user quarantine entry.
clear     Clear all user quarantine entries.
stat      stat
Parameter Beschreibung
list Listet die User auf, welche momentan in der Quarantäne sind

add

Manuell einen User in die Quarantäne liste aufnehmen
delete User aus der Quarantäne Liste entfehrnen
clear die ganze Quarantäne Liste löschen
stat Statistik der Quarantäne Liste
Config cli.png Konfiguration über die CLI:
#diagnose user quarantine list
src-ip-addr       created                  expires                  cause   
198.18.1.155      Wed Dez 01 15:40:33 2021 Wed Dez 01 15:50:33 2021 DOS  

Botnet

Was ist ein Botnet?

Herzlich willkommen zu einer aufregenden Reise in die Welt der Botnets! Heute möchte ich dir erklären, was ein Botnet ist und wie es funktioniert. Stell dir vor, du bist der heldenhafte Verteidiger in einem epischen Kampf gegen eine skrupellose Botnet-Armee.

Kapitel 1: Was zum Teufel ist ein Botnet?

Ein Botnet ist im Grunde genommen ein riesiges Netzwerk infizierter Computer, die von einem fiesen Bösewicht, dem Botnet-Operator, ferngesteuert werden. Diese infizierten Computer werden als Bots oder Zombies bezeichnet, und sie haben nichts mit den wackelnden Halloween-Dekorationen zu tun! Die bösen Bots werden heimlich in das Botnet eingeschleust, ohne dass ihre ahnungslosen Besitzer etwas davon mitbekommen.

Kapitel 2: Wie funktioniert diese Botnet-Armee?

Die Botnet-Armee ist keine gewöhnliche Armee - sie operiert im Schatten des Internets. Die Botnet-Operator nutzen geschickte Tricks, um die Kontrolle über die Bots zu erlangen. Manchmal schleichen sich die Bots über unsichere Internetverbindungen ein, nutzen Schwachstellen in Software aus oder verführen arglose Benutzer mit gefährlichen Links und Anhängen.

Kapitel 3: Der böse Plan des Botnet-Operators

Der Botnet-Operator ist der Strippenzieher im Hintergrund. Sobald er die Kontrolle über die Bots erlangt hat, kann er sie für seine finsteren Zwecke nutzen. Die Botnet-Armee steht ihm nun zur Verfügung, um eine Reihe von böswilligen Aktionen durchzuführen. Einige der beliebten Tätigkeiten sind:

  • Massenversand von Spam-E-Mails: Die Bots können tonnenweise unerwünschte E-Mails verschicken und damit die Postfächer der Menschen überfluten. Spamalicious!
  • Distributed-Denial-of-Service (DDoS)-Angriffe: Die Bots können sich zusammenschließen und gemeinsam riesige Datenmengen auf eine Webseite schießen. Dadurch wird die Webseite überlastet und für echte Benutzer unzugänglich. Es ist wie ein virtueller Stau!
  • Verbreitung von Schadsoftware: Die Bots können wie ein bösartiges Virus andere Computer infizieren und so das Botnet weiter vergrößern. Das ist wie ein Zombie, der andere mit seinem Zombie-Virus ansteckt!
  • Identitätsdiebstahl: Die Bots können sensible Informationen stehlen, wie zum Beispiel Passwörter oder Kreditkartennummern. Damit können sie Identitäten stehlen und Chaos verursachen.

Kapitel 4: Die Helden in der Firewall-Rüstung

Aber keine Sorge, lieber Firewalltechniker, du bist der Held dieser Geschichte! Deine Aufgabe ist es, die Botnet-Armee aufzuhalten und ihre bösartigen Aktivitäten zu bekämpfen. Deine Firewall ist die Rüstung, die dich vor den Angriffen der Bots schützt. Sie überwacht den eingehenden und ausgehenden Datenverkehr und erkennt verdächtige Aktivitäten. Du bist der Wächter des Internets!

Epilog: Der Sieg der Gerechtigkeit

Mit deinem Wissen und deiner Entschlossenheit wirst du die Botnet-Armee besiegen und das Internet sicherer machen. Doch der Kampf hört niemals auf, denn die Botnet-Operator ruhen nie. Es liegt an dir, immer einen Schritt voraus zu sein und neue Verteidigungsstrategien zu entwickeln.

Lieber Firewalltechniker, ich hoffe, diese unterhaltsame Einführung hat dir das Konzept eines Botnets nähergebracht und dich für den Kampf gegen diese bösartige Armee motiviert. Jetzt bist du bereit, die Welt zu beschützen!

Viel Erfolg und möge die Firewall mit dir sein!

In welcher Lizenz ist die Botnet Protection dabei?

Die Botnet Protection ist in der Advanced Malware Protection (AMP) Lizenz mit dabei.
Mehr Informationen über die Lizenzen findet man im folgenden Wiki Artikel: Welche FortiGuard Services gibt es für die FortiGate? mit Shift+Rechtsklick öffnet sich ein seperates Fenster


add 16.03.2023 - 4Tinu

Wie schalte ich den Botnet- und CC-Schutz auf der FortiGate ein? (bis FortiOS 6.0)

FortiOS 60.svg

Im FortiOS 6.0 kann das Feature auf dem ausgehenden Interface Richtung Internet aktiviert werden. Das Interface muss in der Rolle WAN oder undefined sein.

Config webgui.png Konfiguration über das WebGui:
Fortinet-1999.jpg

Wenn man auf botnet packages klickt kann man die Liste aufrufen, aus welcher ersichtlich ist, welche Botnetze und C&C Netze bekannt sind.

Fortinet-2500.jpg
Config cli.png Konfiguration über die CLI:
config system interface
    edit wan1
        set scan-botnet-connections block
    next
end

Wie schalte ich den Botnet und CC Schutz auf der FortiGate ein? (ab FortiOS 6.2)

FortiOS 62.svg FortiOS 64.svg FortiOS 70.svg FortiOS 72.svg

Im Gegensatz zum FortiOS 6.0 wird ab FortiOS 6.2 der Botnet- und C&C-Schutz über ein IPS Profil konfiguriert, welches in einer Firewall Regel aktiviert werden muss.

Hierfür muss eventuell bei den Features die Intrusion Prevention Option eingeschaltet werden:

Config webgui.png Konfiguration über das WebGui:

Unter dem Menupunkt System -> Feature Visibility muss das Feature IPS Feature aktiviert werden.

Fortinet-1996.jpg

Jetzt kann unter den Security Profilen ein neues IPS Profil angelegt werden.

Fortinet-1997.jpg

Das IPS Profil muss jetzt an eine Policy gebunden werden:
Policies können im Menupunk Policy & Objects -> IPv4 Policy -> Createnew.jpg neu erstellt werden:

Fortinet-1998.jpg
Config cli.png Konfiguration über die CLI:

IPS Feature einschalten:

config system settings
    set gui-ips enable
end

IPS Profil anlegen:

config ips sensor
    edit "Botnet-Sensor"
        set scan-botnet-connections block
    next
end

IPS Profil in einer Policy aktivieren:

config firewall policy
    edit 1
        set name "O_internal->Internet-all"
        set srcintf "internal"
        set dstintf "wan1"
        set srcaddr "net-192.168.1.0-24"
        set dstaddr "net-0.0.0.0-00"
        set action accept
        set schedule "always"
        set service "ALL"
        set utm-status enable
        set logtraffic all
        set ips-sensor "Botnet-Sensor"
        set nat enable
    next
end

Im Log sehen wir die geblockten Events am folgenden Ort:

Config webgui.png Konfiguration über das WebGui:

Im Menu über Log & Report -> Intrusion Prevention

Fortinet-2501.jpg

Wenn der Event angeklickt wird, können noch mehr Details entnommen werden:

Fortinet-2502.jpg

Antivirus

Wo finde ich auf der FortiGuard Support Seite mehr Informationen betreffend den Antivirus Database Inhalte?

FortiOS 60.svg FortiOS 62.svg FortiOS 64.svg
Auf der Website von FortiGuard ist ebenfalls die Option «Antivirus» ausgewiesen (https://www.fortiguard.com/updates/antivirus).

Dort wird fortlaufend auf die aktuelle Version (latest version) hingewiesen inkl. den zuletzt erkannten Viren.

Unter Services -> Anti-Virus sind weitere Informationen zum Produkt aufgelistet sind. Des Weiteren kann ein "Schnelltest" einer verdächtigen Datei vorgenommen werden.

Fortinet-3040.jpg

Erweiterte Produkte-Infos sind unter folgendem Link zu finden:

       https://www.fortinet.com/support/support-services/fortiguard-security-subscriptions/antivirus

Wie kann ich die AntiVirus Datenbank auf der FortiGate aktuell halten?

FortiOS 56.svg FortiOS 6x.svg FortiOS 70.svg

Die Antivirus Datenbank der FortiGate kann mit der Push Methode, der Schedule Methode oder auch mittels Kombination beider Methoden geupdated werden.

Die Schedule Methode (geplannte Methode) ermöglicht es, dass in regelmässigen Abständen ein Update der Datenbank vorgenommen wird. Man kann zwischen stündlich, täglich oder wöchentlich auswählen.

Mit der Push Option werden Push-Aktualisierungen akzeptiert. Das heisst, sobald eine neue Definition in der FortiGuard propagiert wird, bekommt die FortiGate ein Update gepusht. Die Push-Option stellt so sicher, dass die Antivirus Datenbank auf der FortiGate so aktuell wie möglich ist. Diese Option empfiehlt sich besonders in Hochsicherheitsumgebungen.

Config webgui.png Konfiguration über das WebGui:

Über das Menu System -> FortiGuard nach unten scrollen bis man den folgenden Menu-Abschnitt findet:

Fortinet-2730.jpg
  • Accept push updates -> Ein- oder ausschalten für die Push Updates der AV-Datenbank
  • Scheduled Updates -> Einstellen des Intervalls in welchem die AV-Datenbank von der FortiGuard her upgedatet werden soll. (alle [n] Stunden, täglich, wöchentlich)
Config cli.png Konfiguration über die CLI:
config system autoupdate push-update
set status [enable|disable]
end

Autoupdate konfigurieren Syntax:

config system autoupdate schedule
set status [Enable|disable]        --> aktivieren oder deaktivieren
set frequency [every|daily|weekly] --> Intervall für Update eingeben (alle n Stunden, täglich, wöchentlich)
set time [hh:mm]                   --> hh:[1-23] Stunden, mm: [0-59] Minuten. Für Zufall innerhalb 1 Stunde mm auf 60 einstellen.
end

Beispiel Autoupdate alle zwei Stunden konfigurieren:

config system autoupdate schedule
set status enable
set frequency every
set time 02:60
end

Ein Update der verschiedenen UTM Databases kann mittels folgendem Befehl auch manuell ausgeführt werden:

       # execute update-now

Des weiteren stehen folgende Befehle zur Verfügung um spezifische Databases auf den neusten Stand zu bringen:

       # execute update-av                  Update AV engine/definitions
       # execute update-geo-ip              Update IP Geography DB
       # execute update-ips                 Update IPS engine/definitions
       # execute update-list                Download update server list
       # execute update-netscan             Update netscan object
       # execute update-src-ivs             Update src-vis object

FortiOS 70.svg Ab FortiOS 7.0.0 gibt es die Option automatic

Der Default Wert für die automatische akktualisierung von FortiGuard Paketten ist im FortiOS 7.0 angepasst worden. Vor FortiOS 7.0 war die Häufigkeit des Update ein zufälliger Intervall innerhalb von zwei Stunden. Ab FortiOS 7.0 ist die Häufigkeit automatisch und der Akktualisierungsintervall wird auf der Grundlage des FortiGate Modells und eines Prozentsatzes der gültigen Subscriptoin berechnet.

Ein Rechnungsbeispiel mit einer FortiGate 501E welche 78% gültige Lizenzen hat ermittelt das FortiOS dass alle 10 Minuten ein Update durchgeführt wird.

Im Eventlog kann dies veranschaut werden. Dafür muss man die Event Logs mit der ID 0100041000 suchen und wird feststellen, dass dieses Event ca alle 10 Minuten auftaucht.

Fortinet-2883.jpg
*In diesem Screen sieht man eine VM02 und ca alle 15Minuten

Syntax:

config system autoupdate schedule
set status [Enable|disable]
set frequency [every|daily|weekly|automatic] <-- Neuer Parameter automatic
end

Tipp.png

Egal welche Methode gewählt wird, die Virenüberprüfung muss mindestens bei einer Firewall-Policy aktiviert sein. Ist dies nicht der Fall, wird die FortiGate keine Updates herunterladen.

Die Botnet-IPs und Botnet-Domänen Lizenz ist ab FortiOS 6.0.1 Teil der FortiGuard AntiVirus-Lizenz.

Wie kann ich auf der FortiGate die einzelnen Versionen der UTM Database überprüfen?

Auf einer FortiGate existieren etliche UTM Databases für die verschiedenen Funktionen wie IPS, Antivirus, GeoIP, Certification List usw. Diese werden laufend durch die Funktion "autoupdate" auf dem neusten Stand gehalten. Die aktuelle Konfiguration der Funktion "autoupdate" kann folgendermassen abgerufen werden:

       # get system auto-update status
       FDN availability:  unavailable at Tue Jan  5 18:13:39 2016
       
       Push update: disable
       Scheduled update: enable
               Update every:   6 hours at 0 minutes after the hour
       Virus definitions update: enable
       IPS definitions update: enable
       Push address override: disable
       Web proxy tunneling: disable

Nachdem die UTM Databases auf den neusten Stand gebracht wurden, können die verschiedenen detaillierten Informationen der Databases durch folgende Befehl abgerufen werden:

       # get system auto-update version
       
       AV Engine
       ---------
       Version: 5.00227
       Contract Expiry Date: n/a
       Last Updated using manual update on Tue Dec  8 10:57:00 2015
       Last Update Attempt: Tue Jan  5 12:33:50 2016
       Result: Updates Installed
       
       Virus Definitions
       ---------
       Version: 16.00560
       Contract Expiry Date: n/a
       Last Updated using manual update on Fri Oct 19 08:31:00 2012
       Last Update Attempt: Tue Jan  5 12:33:50 2016
       Result: Updates Installed
       
       Extended set
       ---------
       Version: 1.00000
       Contract Expiry Date: n/a
       Last Updated using manual update on Wed Oct 17 15:46:00 2012
       Last Update Attempt: Tue Jan  5 12:33:50 2016
       Result: Updates Installed
       
       Mobile Malware Definitions
       ---------
       Version: 0.00000
       Contract Expiry Date: n/a
       Last Updated using manual update on Mon Jan  1 00:00:00 2001
       Last Update Attempt: Tue Jan  5 12:33:50 2016
       Result: Updates Installed
       
       Attack Definitions
       ---------
       Version: 6.00741
       Contract Expiry Date: n/a
       Last Updated using manual update on Tue Dec  1 02:30:00 2015
       Last Update Attempt: Tue Jan  5 12:33:50 2016
       Result: Updates Installed
       
       Attack Extended Definitions
       ---------
       Version: 0.00000
       Contract Expiry Date: n/a
       Last Updated using manual update on Mon Jan  1 00:00:00 2001
       Last Update Attempt: Tue Jan  5 12:33:50 2016
       Result: Updates Installed
       
       IPS Malicious URL Database
       ---------
       Version: 1.00001
       Contract Expiry Date: n/a
       Last Updated using manual update on Thu Jan  1 01:01:00 2015
       Last Update Attempt: Tue Jan  5 12:33:50 2016
       Result: Updates Installed
       
       Flow-based Virus Definitions
       ---------
       Version: 1.00123
       Contract Expiry Date: n/a
       Last Updated using manual update on Tue Jul 21 14:19:00 2015
       Last Update Attempt: Tue Jan  5 12:33:50 2016
       Result: Updates Installed
       
       Botnet Definitions
       ---------
       Version: 1.00000
       Contract Expiry Date: n/a
       Last Updated using manual update on Mon May 28 22:51:00 2012
       Last Update Attempt: Tue Jan  5 12:33:50 2016
       Result: Updates Installed
       
       IPS Attack Engine
       ---------
       Version: 3.00156
       Contract Expiry Date: n/a
       Last Updated using manual update on Thu Dec 10 13:40:00 2015
       Last Update Attempt: Tue Jan  5 12:33:50 2016
       Result: Updates Installed
       
       Internet-service Database Apps
       ---------
       Version: 2.00662
       Contract Expiry Date: n/a
       Last Updated using manual update on Tue Nov 17 11:56:00 2015
       Last Update Attempt: Tue Jan  5 12:33:50 2016
       Result: Updates Installed
       
       Internet-service Database Maps
       ---------
       Version: 0.00000
       Contract Expiry Date: n/a
       Last Updated using manual update on Mon Jan  1 00:00:00 2001
       Last Update Attempt: Tue Jan  5 12:33:50 2016
       Result: Updates Installed
       
       Botnet Domain Database
       ---------
       Version: 0.00000
       Contract Expiry Date: n/a
       Last Updated using manual update on Mon Jan  1 00:00:00 2001
       Last Update Attempt: Tue Jan  5 12:33:50 2016
       Result: Updates Installed
       
       Vulnerability Compliance and Management
       ---------
       Version: 1.00297-L
       Contract Expiry Date: n/a
       Last Updated using manual update on Fri Dec  4 19:31:00 2015
       Last Update Attempt: n/a
       Result: Updates Installed
       
       Modem List
       ---------
       Version: 0.000
       
       Device and OS Identification
       ---------
       Version: 1.00040
       Contract Expiry Date: n/a
       Last Updated using manual update on Tue Jan  5 17:26:00 2016
       Last Update Attempt: Tue Jan  5 12:33:50 2016
       Result: Updates Installed
       
       IP Geography DB
       ---------
       Version: 1.044
       Contract Expiry Date: n/a
       Last Update Date: Wed Dec  2 22:57:32 2015
       
       
       Certificate Bundle
       ---------
       Version: 1.00001
       Last Update Date: Wed Nov  4 16:07:00 2015
       
       
       FDS Address
       ---------
       
       
       URL White list
       ---------
       Version: 0.00000
       Contract Expiry Date: n/a
       Last Updated using manual update on Mon Jan  1 00:00:00 2001
       Last Update Attempt: Tue Jan  5 12:33:50 2016
       Result: Updates Installed


Des Weiteren steht nachfolgendes Kommando zur Verfügung welches die einzelnen Antivirus Datenbanken, sowie dessen Inhalt / Einträge auflistet:

       # diagnose antivirus database-info


Welche AntiVirus Datenbanken gibt es auf der FortiGate?

FortiOS 56.svg FortiOS 60.svg FortiOS 62.svg FortiOS 64.svg
Es gibt mehrere FortiGuard-Antiviren-Datenbanken, die mit dem CLI-Befehl "config antivirus setting" konfiguriert werden können. Die Unterstützung für die einzelnen Datenbanktypen variiert je nach FortiGate-Modell.

Alle FortiGate-Geräte enthalten die normale Datenbank. Die normale Datenbank enthält Signaturen für Viren, die in den letzten Monaten erkannt wurden und durch das FortiGuard Global Security Research Team ermittelt wurden. Sie ist die kleinste Datenbank und führt daher die schnellsten Überprüfungen durch. Diese Datenbank erkennt jedoch nicht alle bekannten Viren.

Die meisten FortiGate-Modelle unterstützen die erweiterte Datenbank. Die erweiterte Datenbank erkennt auch Viren welche nicht mehr aktiv sind. Viele gängige Plattformen sind immer noch anfällig für diese Viren, oder diese könnten zu einem späteren Zeitpunkt ein Problem darstellen.

Die Extreme-Datenbank ist für den Einsatz in Hochsicherheitsumgebungen vorgesehen. Die Extremdatenbank erkennt alle bekannten Viren, auch solche, welche es auf ältere Betriebssysteme absehen, welche nicht mehr weit verbreitet sind.


FortiGuard Antivirus Datenbanken:

Normal - enthält häufige aktuelle Angriffe und ist für alle Modelle verfügbar. Alle FortiGate-Geräte enthalten die normale Datenbank. Die normale Datenbank enthält Signaturen für Viren, die in den letzten Monaten erkannt wurden und vom FortiGuard Global Security Research Team ermittelt wurden. Sie ist die kleinste Datenbank und führt daher die schnellsten Überprüfungen durch. Diese Datenbank erkennt jedoch nicht alle bekannten Viren.

Extended - umfasst normale und zusätzliche neuere aktuell nicht aktive Viren. Viele gängige Plattformen sind immer noch anfällig für solche Viren, welche später ein Problem darstellen könnten.

Extreme - umfasst "extended" und zusätzlich ruhende Viren. Sie ist für den Einsatz in Hochsicherheitsumgebungen vorgesehen. Die Extremdatenbank erkennt alle bekannten Viren, auch solche, die auf ältere Betriebssysteme abzielen welche nicht mehr weit verbreitet sind.


Ab FortiOS 64.svg: FortiGate verwendet die Erweiterte DB als Standard-AntiVirus-DB. Die Option "Normale DB" wird nicht mehr unterstützt.

Für FortiGate-Modelle welche die Extreme DB unterstützen, steht die Option zwischen "Extended DB" oder "Extreme DB" zur Auswahl.


Unter "Antiviren-Einstellungen konfigurieren" wurde der Parameter default-db entfernt. FortiGate-Modelle, die Extreme-Set-Datenbanken unterstützen, haben den neuen Parameter use-extreme-db. Standardmäßig ist use-extreme-db deaktiviert, so dass die FortiGate die normalen und Extended-Set-Datenbanken verwendet. Wenn use-extreme-db aktiviert ist, wird von der FortiGate die Extreme-Set-Datenbank verwendet

AntiVirus settings in the CLI.

- On low end models, use-extreme-db is hidden. 
This example shows the CLI captured on FortiGate-101E.

(settings) # show full-configuration
# config antivirus settings
    set grayware enable
    set override-timeout 0
end

- On higher end models, use-extreme-db is available. 
This example shows the CLI captured on FortiGate-600D.

(settings) # show full-configuration
# config antivirus settings
    set use-extreme-db enable
    set grayware enable
    set override-timeout 0
end

(settings)set use-extreme-db ?
enable                            <----- Enable extreme AVDB.
disable                           <----- Disable extreme AVDB.


Wie kann ich unter auf der FortiGate für die "autoupdate" Funktion der UTM Databases einen explizit Proxy konfigurieren?

Ein FortiOS resp. eine FortiGate benutzt um deren UTM Databases auf den neusten Stand zu bringen die "autoupdate" Funktion. Weitere Informationen zu dieser "autoupdate" Funktion siehe nachfolgender Artikel:

FortiGate-6.0-6.4: AQ#Wie_kann_ich_die_AntiVirus_Datenbank_auf_der_FortiGate_aktuell_halten.3F

Diese "autoupdate" Funktion benützt keine explizit Proxy Konfiguration, sondern ist transparent. Dies bedeutet: Soll die "autoupdate" Funktion über einen explizit Proxy durchgeführt werden, so muss dies über die CLI konfiguriert werden! Bei dieser explizit Proxy Konfiguration für "autoupdate" ist folgendes zu berücksichtigen: Username und Passwort welcher benutzt wird um sich beim explizit Proxy anzumelden ist hier optional. Das FortiOS benutzt den explizit Proxy um sich via HTTP CONNECT Methode gemäss RFC 2616 zu verbinden. Diese Methode wird benutzt um SSL Traffic zu "tunneln". Aus diesem Grund muss auf dem explizit Proxy kontrolliert werden ob dies erlaubt ist, da dieser Vorgang im normal Fall über den explizit Proxy verhindert wird. Es sollte ebenfalls kontrolliert werden welche Ports freigegeben auf dem explizit Proxy um das Internet zu erreichen. Unter normalen Umständen, sofern keine Einschränkungen auf dem explizit Proxy implementiert sind, wären dies die privilegierten Ports 1-1024. Die FortiOS "autoupdate" Funktion benutzt den TCP-Port 8890 was wiederum keinem privilegierter Port entspricht. Aus diesem Grund muss dieser nicht privilegierter Port auf dem explizit Proxy Funktion freigeschaltet werden damit das Fortinet Distribution Network (FDN) erreichbar ist.

      # config system autoupdate tunneling
      # set status [enable | disable]
      # set address [gebe die entsprechende IPv4 Adresse oder FQDN des explizit Proxy an]
      # set port [gebe den entsprechenden Proxy Port an zB "8080"]
      # set username [optional gebe für die Anmeldung an den explizit Proxy einen Usernamen an]
      # set password [gebe für die Anmeldung an den explizit Proxy sofern ein Username definiert wurde ein entsprechendes Passwort an]
      # end


Was ist die Option Virus Outbreak Prevention?

Die FortiGuard Virus Outbreak Prevention ist eine zusätzliche Schutzebene, welche das Netzwerk vor neu auftauchender Malware schützt. Schnelle Virenausbrüche können ein Netzwerk infizieren, bevor Signaturen entwickelt werden können, um diese zu stoppen. Die Outbreak Prevention Option stoppt diese Virenausbrüche, bis Signaturen in der FortiGuard verfügbar sind. Die FortiGate muss über eine FortiGuard Virus Outbreak Service (VOS) Lizenz verfügen, bevor sie die Anfrage in Echtzeit an FortiGuard sendet und so einen Zero-Day Virenangriff verhindert.

Die FortiGate nutzt für neue Bedrohungen eine hashbasierte Virenerkennung welche von den AV-Signaturen noch nicht erkannt werden. Wenn die Datei an den Scanunit-Deamon gesendet wird, wird die Datei im Puffer gehasht (optional werden Archivinhalte extrahiert) und eine Anforderung (oder mehrere, je nach Anzahl der Dateien in einem gescannten Archiv) an den URL-Filter-Deamon gesendet. Nach einem Abgleich mit seinem Anforderungscache auf bekannte Signaturen sendet der URL-Filter-Deamon eine Antivirus-Anforderung mit den verbleibenden Signaturen an die FortiGuard. Die FortiGuard gibt eine Bewertung zurück, anhand jener bestimmt wird, ob der Scanunit-Deamon die Datei als schädlich melden soll oder nicht. Aufträge bleiben im Scanunit-Deamon so lange ausgesetzt, bis der Requester eine Antwort erhält oder die Anfrage in ein Time-Out läuft.

Config webgui.png Konfiguration über das WebGui:
  1. Über das Menu Security Profiles -> AntiVirus auf das entsprechende Profil zugreifen oder ein Neues anlegen.
  2. Was passiert wenn ein Virus erkannt wird? [blocken oder nur monitoren]
  3. FortiOS 6.4 Feature set (Scan Modus Flow oder Proxy Based einstellen)
  4. Die Protokolle auswählen, für welche das AV-Profil scannen soll (in userem Fall HTTP)
  5. Firus Outbreak Prevention aktivieren in dem die Option Use FortiGuard Outbreak Prevention Database eingeschalten wird.
Fortinet-2731.jpg
Config cli.png Konfiguration über die CLI:

Syntax:

config antitvirus profile
edit [PROFIL_NAME]
config [Protokoll]
set options scan
set outbreak-prevention [disable|files|full-archive] 
 -> disable      = Outbreak Prevention wird in diesem Protokoll nicht angewendet 
 -> files        = Files werden gescannt 
 -> full-archive = Files und Archivierte Files (ohne Passwort) werden gescannt
end

Beispiel für ein AntiVirus Profil scannen auf HTTP mit Outbreak Prevention:

config antivirus profile
    edit "av_outbreak"
        config http
           set options scan
           set outbreak-prevention full-archive
        end
    next
end

Wir sehen das Outbreak Prevensions Verdikt der Datei also_test.com im scanunit deamon:

Config cli.png Konfiguration über die CLI:
# diagnose debug application scanunit -1
Debug messages will be on for 30 minutes.
# diagnose debug enable

# su 4739 job 1 open
su 4739 req vfid 1 id 1 ep 0 new request, size 313, policy id 1, policy type 0
su 4739 req vfid 1 id 1 ep 0 received; ack 1, data type: 0
su 4739 job 1 request info:
su 4739 job 1   client 10.20.0.20:39412 server 198.18.250.15:80
su 4739 job 1   object_name 'also_test.com'
su 4739 file-typing NOT WANTED options 0x0 file_filter no
su 4739 enable databases 0b (core mmdb extended)
su 4739 job 1 begin http scan
su 4739 scan file 'also_test.com' bytes 68
su 4739 job 1 outbreak-prevention scan, level 0, filename 'also_test.com'
su 4739 scan result 0
su 4739 job 1 end http scan
su 4739 job 1 inc pending tasks (1)
su 4739 not wanted for analytics: analytics submission is disabled (m 0 r 0)
su 4739 job 1 suspend
su 4739 outbreak-prevention recv error
su 4739 ftgd avquery id 0 status 1
su 4739 job 1 outbreak-prevention infected entryid=0
su 4739 report AVQUERY infection priority 1
su 4739 insert infection AVQUERY SUCCEEDED loc (nil) off 0 sz 0 at index 0 total infections 1 error 0
su 4739 job 1 dec pending tasks 0
su 4739 job 1 send result
su 4739 job 1 close
su 4739 outbreak-prevention recv error

# diagnose debug disable
# diagnose debug reset


Wie kann ich für die Antivirus Engine die maximale File-Grösse konfigurieren?

Die maximale File-Grösse für ein Scanning beträgt bei allen FortiGate-Modellen 10 Mb. Wenn dieser Wert erhöht werden möchte, so kann dies via CLI mit folgendem Befehl vorgenommen werden (in unserem Beispiel wird neu der Wert 20 für 20 Mb gesetzt):

FortiOS 60.svg Wichtig: Der Befehl ist für OS 6.2, wie auch für OS 6.4 unterschiedlich!!!

Config cli.png Konfiguration über die CLI:
config firewall profile-protocol-options
     edit <profile_name>
          config http
               set uncompressed-oversize-limit 20
          end
     end
end
Tipp.png

FortiOS 62.svg Wichtig: Der Befehl ist für OS 6.2, wie auch für OS 6.4 unterschiedlich!!!

Config cli.png Konfiguration über die CLI:
config firewall profile-protocol-options
     edit "protocol"
           config ssh
                set uncompressed-oversize-limit 20
          end
     end
end
Tipp.png

FortiOS 64.svg Wichtig: Der Befehl ist für OS 6.2, wie auch für OS 6.4 unterschiedlich!!!

Config cli.png Konfiguration über die CLI:
config firewall profile-protocol-options
     edit "protocol"
          config ssh
                set uncompressed-oversize-limit 20
          end
     end
end

Welche Datei-Formate werden auf der Antivirus Engine unterstützt?

                * 7z
                * arj
                * cab
                * lzh
                * rar
                * tar
                * zip
                * bzip
                * gzip
                * bzip2
                * xz
                * bat
                * msc
                * uue
                * mime
                * base64
                * binhex
                * bin FortiOS 62.svgFortiOS 64.svg
                * elf
                * exe
                * hta
                * html
                * jad
                * class
                * cod
                * javascript
                * msoffice
                * msofficex
                * fsg
                * upx
                * petite
                * aspack
                * prc FortiOS 62.svgFortiOS 64.svg
                * sis
                * hlp
                * activemime
                * jpeg
                * gif
                * tiff
                * png
                * bmp
                * ignored FortiOS 60.svg
                * unknown
                * mpeg
                * mov
                * mp3
                * wma
                * wav
                * pdf
                * avi
                * rm
                * torrent
                * hibun FortiOS 60.svg
                * msi
                * mach-o
                * dmg
                *.net
                * xar
                * chm
                * iso
                * crx

Welche Database und Features können für die Antivirus Engine aktiviert werden?

Für die Antivirus Engine stehen auf einem FortiOS folgende Databases und Funktionen zur Verfügung:

Normal Database            Beinhaltet die "Wild Virus" sowie die "üblichen Viren". Für eine normale Absicherung resp. Schutz gegen Virus sollte diese Datenbank benutzt werden!
       
       • Extended Database          Beinhaltet "Wild Virus" sowie eine umfangreiche Definition der "Zoo Virus". "Zoo Viruses" sind in den normalen Studien nicht mehr aufgeführt da sie sehr selten. Dies bedeutet: diese
Database sollte nur in "High Security" Umgebungen benutzt werden! 
       
       • Extrem Database            Beinhaltet "Wild Virus" sowie der "Zoo Virus". "Zoo-Viruses" sind in den normalen Studien nicht mehr aufgeführt da sie sehr selten. Der Unterschied zum "extended" Modus ist, dass in der "extrem" alle "Zoo Virus" enthalten sind. Diese Datenbank sollte nur in "High Security" Umgebungen benutzt werden!
       
       • Mobile Malware Database    Beinhaltet Mobile Malware für Android!
       
       • Grayware Funktion          Grayware beinhaltet die Definitionen für "Adware" oder auch Dialer genannt!
       
       • Heuristic                  Verhaltensbasierende analytische Antivirus Überprüfung!
       
       • Scan Mode (Flow- & Proxy-Mode) FortiOS 62.svg FortiOS 64.svg     Benützt Flow-Mode mit kompakter Antivirus Datenbank sowie erweiterte Technik für Antivirus Scan! Auf FortiOS 60.svg ist lediglich Flow-Mode verfügbar.
       
       • Block Executables (Email)  Im Antivirus Profile können Executables Files (.exe) für IMAP, POP3, SMTP und MAPI geblockt werden!  
Content Disarm and Reconstruction (CDR) Entfernt schadhafte Inhalte bevor diese dem User übermittelt werden.
Advance Threat Protection (ATP) FortiOS 62.svg FortiOS 64.svg Automatisierte Schadware (Virus, Trojaner etc.) Erkennung in Echtzeit – auch für die Public Cloud
Virus Outbreak Prevention FortiOS 64.svg Hash-Signaturen die von Malware Drittanbietern erweitert und von FortiGuard bereitgestellt wird. Bei Übereinstimmung von FortiGuard Datenquelle wird Datei bösartig eingestuft
File Signature CheckFortiOS 64.svg

Wie kann ich auf der FortiGate die Antivirus Funktion konfigurieren?

FortiOS 60.svg FortiOS 62.svg

  1. Als Erstes muss auf der FortiGate unter System -> Feature Visibility die Option AntiVirus aktiviert worden sein.

Fortinet-3037.jpg

  1. Das standardmässig (default) aktivierte AntiVirus-Profil kann unter Security -> Profiles AntiVirus bearbeitet werden.
  2. Nun kann vom Scan Mode auf Full, und Detect Viruses auf Block gesetzt werden.
  3. Bei APT Protection Options nun Use Virus Outbreak Prevention Database aktivieren um einem zusätzlichen Sicherheits-Layer zu implementieren und so frühzeitig Viren-Ausbrüche verhindern zu können.

Fortinet-3038.jpg

FortiOS 62.svg FortiOS 64.svg Ist Proxy-Based ausgewählt worden, so erscheint unter den AntiVirus Profilen ein rotes P welches auf den aktivieren Proxy-Modus hinweist.

Tipp.png

WICHTIG: Je nachdem welcher Modus (Proxy- oder Flow-based) gewählt wurde, werden im Dropdown-Menü nur die möglichen Features angezeigt, welche auch technisch möglich sind. Bei Proxy-based können auch die Features von Flow-based angewählt werden.

Wie kann ich verhindern, dass für HTTP "Streaming Content" die Antivirus Funktion benützt wird?

FortiOS 60.svg FortiOS 62.svg FortiOS 64.svg

Wenn über HTTP Streaming Content aufgerufen wird, so versucht die Antivirus Engine diesen Streaming Content zu scannen sofern ein Antivirus Profile für HTTP in einer entsprechenden Firewall Policy Rule konfiguriert wurde. Möchte man dies verhindern, so kann das Protocol Options Profile, das zusammen mit dem Antivirus Profile in der entsprechenden Firewall Policy Rule benutzt wird, durch folgende Konfiguration ein Antivirus Scan verhindert werden:

       # config firewall profile-protocol-options
       # edit [Name des entsprechenden Profiles]
       # config http
       # set streaming-content-bypass [enable | disable]
       # end
       # end

Diese Konfiguration gilt jedoch nur für HTTP und nicht für andere Protokolle resp. Services wie zBsp HTTPS. Eine andere Möglichkeit ein Scanning durch die Antivirus Engine zu verhindern ist den MIME Header heranzuziehen um einen Scan zu verhindern. Diese Funktion steht jedoch innerhalb der Antivirus-Funktion nicht zur Verfügung. Ein MIME Header kann stattdessen über die "content-header" Funktion des Webfilters konfiguriert werden. Um die Konfiguration durchzuführen muss als erster Schritt der MIME Header des Contents eruiert werden. Dies kann zBsp über WireShark durchgeführt werden. Nachfolgend die MIME Header Informationen aus WireShark betreffend YouTube:

       Hypertext Transfer Protocol
       HTTP/1.0 200 OK\r\n
       Request Version: HTTP/1.0
       Response Code: 200
       Server: DCLK-AdSvr\r\n
       Content-Type: video/x-ms-asf\r\n
       X-Google-Inred-Content-Type: video/x-ms-asf\r\n
       Content-Length: 410\r\n
       Content-Encoding: gzip\r\n
       Hypertext Transfer Protocol
       HTTP/1.1 200 OK\r\n
       Request Version: HTTP/1.1
       Response Code: 200
       Last-Modified: Mon, 14 Sep 2009 00:40:51 GMT\r\n
       Content-Type: video/x-flv\r\n
       Content-Length: 200994\r\n
       Connection: close\r\n
       Content-Disposition: attachment; filename="video.flv"\r\n
       Expires: Thu, 29 Oct 2009 09:06:24 GMT\r\n
       Cache-Control: public,max-age=3600\r\n
       Date: Thu, 29 Oct 2009 08:06:24 GMT\r\n
       Server: gvs 1.0\r\n

Die relevanten Informationen um einen "content-header" Konfiguration durchzuführen, sind die "Content-Type" Informationen. In unserem Beispiel sind das die folgenden Positionen:

       Content-Type: video/x-ms-asf\r\n
       Content-Type: video/x-flv\r\n

In der "content-header" Konfiguration muss anhand "RegEx" die benötigten Informationen betreffend dem MIME Header welcher konfiguriert werden soll, definiert werden. Möchte man alle Video-, wie auch Audio-MIME Header definieren, so muss folgendes definiert werden:

       video\\/.*
       audio\\/.*

Das Zeichen "/" stellt im RegEx ein Sonderzeichen dar. Dadurch kann nicht einfach "video/" definiert werden weil Sonderzeichen mit "\\" escaped werden müssen! Nun kann die "content-header" Konfiguration durchgeführt werden:

      # config webfilter content-header
      # edit [gebe einen Integer an – zBsp "1"]
      # set comment [setze einen Kommentar zBsp "Exclude Video Audio Antivirus"]
      # config entries
      # edit "video\\/.*" [Name des Modells]
      # set action [allow | block | exempt]
      # next
      # edit "audio\\/.*"
      # set action [allow | block | exempt]
      # next
      # end
      # set name [setze einen Namen für den "content-header" - zBsp "video-audio-exempt"]
      # next
      # end

Durch die Konfiguration "exempt" wird der definierte MIME Header resp. "content-header" vom Antivirus Scan ausgeschlossen. Nun kann dieser "content-header" innerhalb eines WebFilters konfiguriert werden:

      # config webfilter profile
      # edit [wähle den Namen des entsprechenden Webfilter Profiles]
      # config web
      # set content-header-list [gebe den entsprechenden Integer an für "content-header"]
      # end
      # next
      # end

Nun kann der entsprechende Webfilter zu der entsprechenden Firewall Policy Rule hinzugefügt werden!


Wie kann ich für eine FortiGate eine Antivirus-Quarantäne konfigurieren?

FortiOS 60.svg FortiOS 62.svg FortiOS 64.svg

Ausgehend davon, dass eine FortiGate über eine Disk verfügt, für welche das "disk" Logging aktiviert werden kann oder die Logs zu einem FortiAnalyzer übermittelt werden, kann eine Quarantäne für Antivirus konfiguriert werden. Die Quarantine-Funktion wird innerhalb des Antivirus-Profiles für die verschiedenen Services / Ports mit folgenden Befehlen aktiviert:

      # config antivirus profile
      # edit [Name des entsprechenden Antivirus Profiles]
      # config [http | ftp | imap | pop3 | smtp | mapi | nntp]
      # set options [avmonitor | quarantine | scan]
      # end
      # end

Um die Quarantäne zu aktivieren muss erst "quarantine" für die Option "options" aktiviert werden, wobei dies nur ermöglicht wird, wenn "disk" Logging für die FortiGate aktiviert wird und / oder ein Logging für den FortiAnalyzer. Danach kann die Quarantäne über folgende Befehle in der CLI konfiguriert werden:

       # config antivirus quarantine
       # set agelimit [maximale Zeitdauer in Stunden für Quarantäne Files wenn "destination" NULL ist; 0 - 479]
       # set maxfilesize [setze maximale Filegrösse welche für Quarantäne in MB 0 - 500 MB; 0 = Unlimited]
       # set quarantine-quota [Quota Space in MB 0 - 17599427]
       # set drop-infected [imap | smtp | pop3 | http | ftp | im | nntp | imaps | smtps | pop3s | https | ftps | mapi | cifs | mm1 | mm3 | mm4 | mm7]
       # set store-infected [imap | smtp | pop3 | http | ftp | im | nntp | imaps | smtps | pop3s | https | ftps | mapi | cifs | mm1 | mm3 | mm4 | mm7]
       # set drop-blocked [imap | smtp | pop3 | http | ftp | im | nntp | imaps | smtps | pop3s | https | ftps | mapi | cifs | mm1 | mm3 | mm4 | mm7]
       # set store-blocked [imap | smtp | pop3 | http | ftp | im | nntp | imaps | smtps | pop3s | https | ftps | mapi | cifs | mm1 | mm3 | mm4 | mm7]
       # set drop-heuristic [imap | smtp | pop3 | http | ftp | im | nntp | imaps | smtps | pop3s | https | ftps | mapi | cifs | mm1 | mm3 | mm4 | mm7]
       # set store-heuristic [imap | smtp | pop3 | http | ftp | im | nntp | imaps | smtps | pop3s | https | ftps | mapi | cifs | mm1 | mm3 | mm4 | mm7]
       # set lowspace [drop-new | ovrw-old]
       # set destination [NULL | disk | FortiAnalyzer]
       # end

Für die Konfiguration "destination" gilt: NULL deaktiviert die Quarantäne. Die Option "disk" steht nur dann zur Verfügung, wenn für die FortiGate das Logging "disk" aktiviert werden kann. FortiAnalyzer steht dann zur Verfügung wenn Logging über FortiAnalyzer konfiguriert wurde.

Wie kann ich auf einer FortiGate die Antivirus Funktion vorübergehend deaktivieren?

FortiOS 60.svg FortiOS 62.svg Wenn aus irgendwelchen Gründen die konfigurierte Antivirus Funktion deaktiviert werden soll, so kann dies anhand des folgenden CLI Befehls durchgeführt werden:

       # diagnose antivirus bypass [on | off]

Mittels diesem Befehl wird auf globaler Ebene ein Bypass für die Antivirus Funktion aktiviert, resp. deaktiviert ohne die Konfiguration der Antivirus Funktion zu verändern.

Wie beschleunige ich Antivirus Scanning mit NP Acceleration?

FortiGate-Modelle mit Nturbo (i.e. NP6, NP7, oder SoC4 Modelle) können UTM- und NGFW-Prozesse auf Netzwerk Prozessoren umlagern.

NTurbo ermöglicht es, dass Traffic vom Ingress Interface zur IPS Engine umgeleitet wird, und von der IPS Engine zum Egress Interface. Dadurch wird Antivirus Scanning beschleunigt, ohne Auswirkung auf Netzwerk-Sicherheit.

Diese Umlagerung funktioniert nur bei Flow-basiertem Antivirus Scanning. --> Informationen über den Flow Inspektions Modus: FortiGate:FAQ#Flow_Modus

Config cli.png Konfiguration über die CLI:
   # config ips global
       set np accel-mode {none | basic}
     end

Wie beschleunige ich Antivirus Scanning mit CP Acceleration?

FortiGate Modelle mit CP8 und CP9 Content Prozessoren können UTM- und NGFW-Prozesse auf Content Prozessoren umlagern.

Dabei werden (aus der IPS Engine und/oder IPS Datenbank) Datenbanken mit Flow-basierter Mustererkennung heruntergeladen. Weil Anfragen zu Flow-basierter Mustererkennung auf CP Hardware umgeleitet werden, wird Musterkennung beschleunigt und gleichzeitig CPU entlastet.

Falls SSL eingestellt, kann auch SSL Entschlüsselung auf Content Prozessoren umgelagert, und dadurch beschleunigt werden.

Diese Umlagerung funktioniert nur bei Flow-basiertem Antivirus Scanning. --> Informationen über den Flow Inspektions Modus: FortiGate:FAQ#Flow_Modus

Config cli.png Konfiguration über die CLI:
   # config ips global
       set cp-accel-mode {none | basic | advanced}
     end

WebFilter

Was muss als Grundlage für eine WebFilter-Konfiguration beachten werden?

Wenn ein WebFilter auf einer FortiGate konfiguriert werden soll, muss zu Beginn die korrekte Zeitzone konfiguriert werden. Wenn die Zeitzone nicht korrekt konfiguriert wird nutzt die WebFilter Funktion der FortiGuard die falsche Datenbank. Dies hat zur Folge, dass zBsp die US Datenbank anstelle der europäischen bezogen wird. Um die korrekte Zeitzone zu konfigurieren kann nachfolgender Artikel konsultiert werden:

 FortiGate:FAQ#Wie_kann_ich_einen_beliebigen_Zeitserver_auf_der_FortiGate_konfigurieren.3F 

Genau so gilt als Grundlage für eine einwandfreie Funktion des WebFilters die Konfiguration des DNS Server für das FortiOS um die entsprechenden FortiGuard Abfragen durchführen zu können. Wie dies konfiguriert wird kann folgendem Artikel entnommen werden:

 FortiGate:FAQ#Wie_konfiguriere_ich_auf_einer_FortiGate_die_System_DNS_Server.3F 

Die WebFilter Funktion eines FortiOS basiert auf einer Online-Abfrage bezogen auf die Kategorien der FortiGuard. Das bedeutet, es werden Informationen zu FortiGuard gesendet um die Kategorisierung zu überprüfen. Dabei werden vom FortiOS folgende Informationen für die Kategorisierung zu FortiGuard gesendet:

       * FortiGate Serien Nummer
       * FortiGate Source IP Adresse 
       * Website Komplette URL, inkl. Schema, Hostname und Pfad

Das Resultat der Abfrage für die Kategorisierung wird lokal auf dem FortiOS in den Cache geschrieben. Die zuständige Stelle, welche dieses Verhalten steuert ist:

       # config system fortiguard 
       # set webfilter-force-off [enable | disable]
       # set webfilter-cache-ttl [TTL für WebFilter Cache in Sekunden 300 - 86400; Standard 3600]
       # set webfilter-cache [enable | disable]
       # set webfilter-license {integer}    Zeitintervall zwischen den Lizenzprüfungen des FortiGuard Webfilters (zw. [0-0-4294967295)  FortiOS 62.svg FortiOS 64.svg
       # set webfilter-expiration {integer}    wann die Lizenz des FortiGuard Webfilter verfällt (zw. [0-4294967295])  FortiOS 62.svg FortiOS 64.svg
       # set webfilter-timeout [Timout in Sekunden für FortiGuard Abfrage 1 - 30; Standard 15]
       # set 
       # end

Sollte die WebFilter Abfrage zu FortiGuard aus irgendwelchen Gründen gestoppt werden, kann die Option "webfilter-force-off" auf "enable" gesetzt werden. Die Konfiguration "webfilter-cache" steht ebenfalls in Zusammenhang mit folgenden Konfigurationen (je nach OS noch mit zusätzlichen Möglichkeiten):

       # config webfilter fortiguard
       # set cache-mode [ db-ver | ttl; Standard ttl]
       # set cache-mem-percent [Prozent vom Memory 1 - 15; Standard 2]
       # set cache-prefix-match [enable | disable]
       # set ovrd-auth-port-http [Port für FortiGuard Web Filter HTTP override; Standard 8008]
       # set ovrd-auth-port-https [Port für FortiGuard Web Filter HTTPS override; Standard 8010]
       # set ovrd-auth-port-warning [Port für FortiGuard Web Filter Warning override; Standard 8020]
       # set ovrd-auth-port-https-flow {integer} FortiOS 62.svg FortiOS 64.svg
       # set ovrd-auth-https [enable | disable]
       # set warn-auth-https [enable | disable]
       # set close-ports [enable | disable]
       # set ovrd-auth-port {integer}  FortiOS 62.svg 
       # set request-packet-size-limit [Maximum Packet Size in bytes für FortiGuard 576 - 10 000; Standard 0 = 1100 bytes]
       # end

Der "cache-mode" ist per Standard auf "TTL" gesetzt, was wiederum dem Standard innerhalb der "system fortiguard" Konfiguration entspricht. Dabei gilt folgendes: Ein entsprechender Eintrag im WebFilter Cache wird gelöscht sobald der Wert "TTL" abgelaufen ist, welcher unter FortiGuard gesetzt wurde! Wird der "cache-mode" anstelle von ‘’TTL’’ auf "db-ver" gesetzt, so wird für den WebFilter Cache eine Datenbank im Memory angelegt welche der Grösse des Werts "cache-mem-percent" entspricht. Die WebFilter Cache Einträge verbleiben in der Datenbank, bis ein entsprechender Eintrag in der Datenbank durch FortiGuard geändert wird oder über FortiGuard verändert wird (force).


Wie kann ich für die WebFilter Funktion ein URL / Site bei Fortinet rekategoriesieren lassen?

Wenn in einer entsprechenden Firewall Policy ein WebFilter aktiviert ist, und ein Host / Client eine Internet-Seite / URL aufruft, wird diese Seite durch FortiGuard überprüft. Handelt es sich um eine nicht kategorisierte Seite, wird diese unter die FortiGate-Kategorien "Unrated". Wenn nun diese Seite / URL kategorisiert in FortiGuard neu oder rekategorisiert werden soll, falls diese falsch eingestuft wurde, wähle folgenden Link:

       https://www.fortiguard.com/webfilter?q=&version=8 

Gebe in der Mitte bei Search URL die entsprechende Seite / URL ein mit dessen FQDN (Full Qualified Domain Name). Nachdem die Eingabe bestätigt wurde, wird das entsprechende Resultat angezeigt sprich, in welcher Kategorie sich die Seite / URL befindet sowie die Statistik der Abfragen in FortiGuard für diese Seite / URL:

       Fortinet-3041.jpg 

Möchte man eine Anfrage für die Kategorisierung absetzen, resp. eine Re-Kategorisierung vornehmen lassen, so kann auf der linken Seite Submit a site for categorization angewählt werden.

       Fortinet-3042.jpg 

Anschliessend die endsprechenden Felder ausfüllen und mittels Captcha bestätigen:

       Fortinet-3043.jpg 

Jede Anfrage sollte innerhalb von 24 Stunden von Fortinet beantwortet werden. Als Bestätigung erhält man von Fortinet folgendes Email:

       -------------- email outpout --------------
       Fortinet-3044.jpg

Wie kann ein WebFilter Profil mit Black- / Whitelisting konfigurieren?

Wenn man einen WebFilter für HTTPS sowie für HTTP konfiguriert, gelten folgende Profile als Voraussetzung:

       • SSL Inspection Profile (HTTPS)
              - SSL Certificate Inspection (HTTPS basierend auf Zertifikat CN; Common Name)
              - Full SSL Inspection        (HTTPS uneingeschränkte Funktion der "deep inspection")
       • Proxy Options Profile (HTTP)FortiOS 60.svg // Protocol Option FortiOS 62.svg FortiOS 64.svg

Wenn Full SSL Inspection (deep inspection) durchgeführt werden soll, gilt als Voraussetzung, dass das entsprechende Fortinet_CA_SSLProxy Zertifikat bei jedem Host / Client als vertrauenswürdiges Stammzertifikat importiert wird. Nur so kann eine uneingeschränkte "deep inspection" durchgeführt werden / sichergestellt werden. Der verschlüsselte Traffic des Host / Clients wird dann aufgebrochen und eine uneingeschränkte Prüfung in allen Bereichen für diesen Traffic wird durchgeführt! Wird keine Full SSL Inspection durchgeführt, kann anhand der SSL Certificate Inspection für HTTPS eine Zertifikats-Prüfung durchgeführt werden. Dies bedeutet: Im "TLS Handshake" der HTTPS-Verbindung wird der Hostname des Server-Namens innerhalb der "Client Hello" Message herausgefiltert (CN = Common Name). Dies wiederum bedeutet: Wenn ein gültiger Hostname herausgefiltert werden kann, ist dies die Basis des Hostname-Abfrage für die FortiGuard WebFilter Kategorien. Wenn kein gültiger Hostname herausgefiltert werden kann, wird ein CN (Common Name) basierende Überprüfung durchgeführt. So wird der CN-Name des Zertifikats für die Abfrage der FortiGuard Webfilter Kategorie genutzt. Wenn die Option "block-invalid-hostname" innerhalb des WebFilters aktiviert ist, und der CN-Name des Zertifikates ein ungültiger Domain-Name ist, so wird die Seite geblockt und ein entsprechender Log-Eintrag wird erstellt. Somit müssen zu Beginn die entsprechenden Profile als Grundlage für die WebFilter-Funktion konfiguriert und entschieden werden, ob für das Proxy Options Profile eine SSL Certificate Inspection oder Full SSL Inspection für HTTPS konfiguriert werden möchte:

       Proxy Options Profile Konfiguration (HTTP)
       Security Profiles > Proxy Options > Create New
       FortiOS 60.svg        
       Fortinet-3045.jpg
       FortiOS 62.svg FortiOS 64.svg
       Fortinet-3046.jpg
       # config firewall profile-protocol-options FortiOS 60.svg
       # config firewall FortiOS 62.svg FortiOS 64.svg
       # edit [Name des entsprechenden Proxy Options Profile zBsp "local-default.intra"] FortiOS 60.svg
       # edit [policy ID] FortiOS 62.svg FortiOS 64.svg
       # Configure protocol options.
         set name {string}   [Name eingeben, max. Länge 35]
         set comment {string}  [optionaler Kommentar, max. Länge 255]
         set replacemsg-group {string}   [Name der Ersatz-Meldung] 
       # set comment [gebe einen Kommentar ein zB "Unencrypted default profile local-sg0e0" – max. Länge 255]
       # unset replacemsg-group
       # set oversize-log enable
       # set switching-protocols-log enable
       # # config http
       # set ports 80
       # set status enable 
       # set inspect-all disable 
       # set options clientcomfort 
       # set comfort-interval 10
       # set comfort-amount 1
       # set range-block disable 
       # unset post-lang
       # set fortinet-bar disable 
       # set streaming-content-bypass enable 
       # set switching-protocols bypass 
       # set oversize-limit 10
       # set uncompressed-oversize-limit 10
       # set uncompressed-nest-limit 12
       # set scan-bzip2 disable 
       # set block-page-status-code 200
       # set retry-count 0
       # end
       # config ftp
       # set ports 21
       # set status enable 
       # set inspect-all disable 
       # set options clientcomfort 
       # set comfort-interval 10
       # set comfort-amount 1
       # set oversize-limit 10
       # set uncompressed-oversize-limit 10
       # set uncompressed-nest-limit 12
       # set scan-bzip2 disable 
       # end
       # config imap
       # set ports 143
       # set status enable 
       # set inspect-all disable 
       # set options fragmail 
       # set oversize-limit 10
       # set uncompressed-oversize-limit 10
       # set uncompressed-nest-limit 12
       # set scan-bzip2 disable 
       # end
       # config mapi
       # set ports 135
       # set status enable
       # set options fragmail 
       # set oversize-limit 10
       # set uncompressed-oversize-limit 10
       # set uncompressed-nest-limit 12
       # set scan-bzip2 disable 
       # end
       # config pop3
       # set ports 110
       # set status enable
       # set inspect-all disable 
       # set options fragmail 
       # set oversize-limit 10
       # set uncompressed-oversize-limit 10
       # set uncompressed-nest-limit 12
       # set scan-bzip2 disable 
       # end
       # config smtp
       # set ports 25
       # set status enable
       # set inspect-all disable 
       # set options fragmail 
       # set oversize-limit 10
       # set uncompressed-oversize-limit 10
       # set uncompressed-nest-limit 12
       # set scan-bzip2 disable 
       # set server-busy disable 
       # end
       # config nntp
       # set ports 119
       # set status enable 
       # set inspect-all disable 
       # unset options
       # set oversize-limit 10
       # set uncompressed-oversize-limit 10
       # set uncompressed-nest-limit 12
       # set scan-bzip2 disable 
       # end
       # config dns
       # set ports 53
       # set status enable 
       # end
       # config mail-signature
       # set status disable 
       # unset signature
       # end
       # set rpc-over-http enable 
       # end
    SSL Inspection Profile Konfiguration (HTTPS SSL Certificate Inspection)
       Security Profiles > SSL Inspection > Create New
       FortiOS 60.svg
       Fortinet-3047.jpg
       FortiOS 62.svg FortiOS 64.svg
       Fortinet-3048.jpg
      # config firewall ssl-ssh-profile 
      # edit [wähle ein entsprechendes SSL Inspection Profile zBsp "local-default.intra"]
      # set comment [gebe einen Kommentar ein zBsp "Encrypted default profile local-sg0e0"]
      # config ssl
      # set inspect-all disable 
      # set allow-invalid-server-cert disable 
      # set untrusted-cert block 
      # end
      # config https
      # set ports 443
      # set status certificate-inspection 
      # set client-cert-request bypass 
      # set unsupported-ssl bypass 
      # set allow-invalid-server-cert disable 
      # set untrusted-cert block 
      # end
      # config ftps
      # set ports 990
      # set status disable 
      # set client-cert-request bypass 
      # set unsupported-ssl bypass 
      # set allow-invalid-server-cert disable
      # set untrusted-server-cert block 
      # end
      # config imaps
      # set ports 993
      # set status disable 
      # set client-cert-request inspect 
      # set unsupported-ssl bypass 
      # set allow-invalid-server-cert disable 
      # set untrusted-cert block 
      # end
      # config pop3s
      # set ports 995
      # set status disable  
      # set client-cert-request inspect 
      # set unsupported-ssl bypass 
      # set allow-invalid-server-cert disable 
      # set untrusted-cert block 
      # end
      # config smtps
      # set ports 465
      # set status disable 
      # set client-cert-request inspect 
      # set unsupported-ssl bypass 
      # set allow-invalid-server-cert disable 
      # set untrusted-cert block 
      # set whitelist disable
      # end 
      # config ssl-exempt
      # end
      # set server-cert-mode re-sign 
      # set caname Fortinet_CA_SSLProxy 
      # set untrusted-caname Fortinet_CA_Untrusted 
      # set certname Fortinet_CA_SSLProxy 
      # end
      # config ssl-server
      # end
      # set ssl-invalid-server-cert-log enable 
      # set use-ssl-server disable 
      # end
       SSL Inspection Profile Konfiguration (HTTPS Full SSL Inspection)
      Security Profiles > SSL/SSH Inspection > Create New
      FortiOS 60.svg
      Fortinet-3049.jpg
      FortiOS 62.svg FortiOS 64.svg
      Fortinet-3050.jpg
      # config firewall ssl-ssh-profile 
      # edit [wähle ein entsprechendes SSL Inspection Profile zBsp "local-default.intra"]
      # set comment [gebe einen Kommentar ein zBsp "Encrypted default profile local-sg0e0"]
      # config ssl
      # set inspect-all disable 
      # set allow-invalid-server-cert disable 
      # set untrusted-cert block 
      # end
      # config https
      # set ports 443
      # set status deep-inspection 
      # set client-cert-request bypass 
      # set unsupported-ssl bypass 
      # set allow-invalid-server-cert disable 
      # set untrusted-cert block 
      # end
      # config ftps
      # set ports 990
      # set status deep-inspection 
      # set client-cert-request bypass 
      # set unsupported-ssl bypass 
      # set allow-invalid-server-cert disable 
      # set untrusted-cert block 
      # end
      # config imaps
      # set ports 993
      # set status deep-inspection 
      # set client-cert-request inspect 
      # set unsupported-ssl bypass 
      # set allow-invalid-server-cert disable 
      # set untrusted-cert block 
      # end
      # config pop3s
      # set ports 995
      # set status deep-inspection 
      # set client-cert-request inspect 
      # set unsupported-ssl bypass 
      # set allow-invalid-server-cert disable 
      # set untrusted-cert block 
      # end
      # config smtps
      # set ports 465
      # set status deep-inspection 
      # set client-cert-request inspect 
      # set unsupported-ssl bypass 
      # set allow-invalid-server-cert disable 
      # set untrusted-cert block 
      # set whitelist disable
      # end 
      # config ssl-exempt
      # end
      # set server-cert-mode re-sign 
      # set caname Fortinet_CA_SSLProxy 
      # set untrusted-caname Fortinet_CA_Untrusted 
      # set certname Fortinet_CA_SSLProxy 
      # end
      # config ssl-server
      # end
      # set ssl-invalid-server-cert-log enable 
      # set rpc-over-https enable 
      # set use-ssl-server disable 
      # end

Wenn ein WebFilter konfiguriert wird, so ist es sinnvoll im Vorfeld bei dieser Konfiguration ein Blacklisting / Whitelisting zu konfigurieren. Diese Konfiguration erlaubt es, Webseiten direkt in diese lokalen Kategorieren für Blacklisting / Whitlisting zu verschieben resp. zu konfigurieren. Durch diese Konfiguration wird ein "override" der FortiGuard Kategorien durchgeführt. Per Standard existieren bereits zwei lokale Kategorieren (custome1/2) die herangezogen werden können um ein Blacklisting / Whitelisting zu konfigurieren. Dazu müssen diese zwei existenten lokalen Kategorien umbenannt oder neue hinzugefügt werden. Diese Konfiguration kann via CLI durchgeführt werden:

      # config webfiler ftgd-local-cat
      # get
      == [ custome1 ]
      desc: custome1
      == [ custome2 ]
      desc: custome2
      # rename custome1 to whitelist
      # rename custome2 to blacklist
      # get
      == [ whitelist ]
      desc: whitelist
      == [ blacklist ]
      desc: blacklist
      # end

Um eine neue, lokale Kategorie zu erstellen kann folgendes durchgeführt werden:

      # config webfiler ftgd-local-cat
      # edit warning
      # end
      # edit authentication
      # end
      # end

Danach sind die neu erstellten lokalen Kategorien über folgenden Menüpunkt im Mgmt. Web Interface ersichtlich:

      Security Profiles > Web Rating Overrides > Custom Categories
      Fortinet-3051.jpg
      Fortinet-3052.jpg

Eine Seite kann nachträglich folgendermassen einer lokalen Kategorie hinzugefügt werden:

      Fortinet-3053.jpg
      Fortinet-3054.jpg

Nun kann der WebFilter konfiguriert werden indem die lokalen Kategorieren definiert werden. Hierzu wird die Position "FortiGuard category based filter" aktiviere und innerhalb der "Local Categories" mittels rechtem Mausklick kann für jeden Eintrag die entsprechende Aktion, welche ausgeführt werden soll definiert werden (wie zBsp Block, Monitor usw.):

      Security Profiles > Web Filter > Create New
      Fortinet-3055.jpg

Danach werden für die FortiGuard die Kategorien mit der gleichen Vorgehensweise deren Aktionen konfiguriert. Um eine entsprechende Kategorie zu erlauben sollte die Aktion "Monitor" gewählt werden um für eine spätere Auswertung die entsprechenden Informationen aufzuzeichnen. Anschliessend kann innerhalb der einzelnen Kategorie weitere Aktionen gewählt werden. Um einen WebFilter für die FortiGuard Kategorien zu konfigurieren resp. eine saubere Grundlage zu bieten empfehlen wir folgenden Basis-Konfiguration:

       Potentially Liable             Alles auf Block
       Adult/Mature Content           Alles auf Block ausser Alcohol und Tabaco auf Monitor
       Bandwidth Consuming            Alles auf Monitor
       Security Risk                  Alles auf Block
       General Interest - Personal    Alles auf Monitor
       General Interest - Business    Alles auf Monitor
       Unrated                        Alles auf Monitor

Des Weiteren empfehlen wir für eine WebFilter Konfiguration folgende Einstellungen:

      Fortinet-3056.jpg
      Fortinet-3057.jpg
      Fortinet-3058.jpg
       Log all URLs
Durch die Aktivierung dieser Position wird für jeden URL in jedem Fall ein Logging durchgeführt auch wenn FortiGuard nicht zur Verfügung steht. Wir empfehlen innerhalb der FortiGuard Kategorieren "FortiGuard category based filter" für jede Kategorie welche zugelassen wird in der Aktion auf "Monitor" anstelle "Allow" zu konfigurieren damit jede einzelne URL in das WebFilter Log geschrieben wird und somit für eine spätere Auswertung sämtliche Informationen zur Verfügung stehen!
       Category Usae Quota
Diese Position erlaubt eine Zeit-, wie auch volumenbasierende Konfiguration der FortiGuard Kategorien. Dies bedeutet, dass für eine bestimmte Kategorie eine spezifische Zeit oder Volumen definiert werden kann!
       Allow users to override blocked categories
Durch diese Konfiguration wird den einzelnen User, welche in einer spezifischen Gruppe sind erlaubt ein "override" durchzuführen. Erhält ein entsprechender User, welcher Mitglied der definierten Gruppe ist eine "Block" für eine entsprechende Seite, kann dieser auf der geblockten Seite ein "override" ausführen. Ebenso kann anstelle eines "override" ein "switch to" ausgeführt werden. Dies bedeutet, dass dem User ermöglicht wird zu einem spezifischen WebFilter Profil zu wechseln. Dieser "switch to" kann anhand User, Gruppen, IP und "Ask" eingeschränkt und konfiguriert werden.
       Search Engines
Durch die Aktivierung dieser Funktion versucht der WebFilter nur erlaubte Kategorien innerhalb der entsprechenden Suchmaschinen-Ergebnisse aufzulisten. Zusätzlich kann anhand "Log all search keyword" der Suchtext für die Suche geloggt werden! Bei beiden Funktionen ist folgendes zu berücksichtigen: Da die entsprechenden Suchmaschinen HTTPS für die Suche verwenden, kann die WebFilter Funktion die gewünschten Ergebnisse nur dann erreichen, wenn für HTTPS Full SSL Inspection verwendet wird.
Der YouTube Education Filter bietet eine Möglichkeit, wobei durch Aktivierung ein Passwort zu definieren ist um eine Verbindung zum YouTube Education Account aufzubauen. Dieser wiederum bietet die Möglichkeit YouTube Filme / Movies zu diesem YouTube Education Account hinzuzufügen. Somit sind nur diese definierten YouTube Filme / Movies zugelassen. Es ist nicht möglich basierend der YouTube Kategorien im YouTube Education Account eine Konfiguration zu erstellen da keine offiziellen YouTube Kategorien existieren. Für diese Konfiguration ist die Full SSL Inspection die Grundvoraussetzung da ansonsten die Konfiguration über HTTPS durch die User umgangen werden kann! Weitere Informationen zur Konfiguration des YouTube Education Filters siehe nachfolgender Artikel:

FortiGate:FAQ#Was_ist_.22YouTube_Education_Filter.22.3F
       Static URL Filter
Durch "Block invalid URLs" werden Seiten blockiert welche über keinen gültigen Domain Namen verfügen! Durch die Aktivierung der "URL Filter"-Funktion wird über Wildcard, Simple sowie Regex ermöglicht Internetseiten, URLs sowie Domains von einer UTM-Aktion auszunehmen ("Exempt"). Ebenso können Aktionen wie Monitor, Allow und Block konfiguriert werden. Bei dem hier gezeigten WebFilter wurden Seiten wie *.apple.com, *.microsoft.com mit der Aktion "Exempt" konfiguriert. Für diese Seiten wird kein UTM Feature, wie zBsp Antivirus ausgeführt! Weitere Informationen zu dieser Konfiguration kann nachfolgendem Artikel entnommen werden:

FortiGate:FAQ#Wie_k.C3.B6nnen_mittels_einem_WebFilter_Profil_bestimmte_URLs_von_den_UTM_Features_ausgeschlossen_werden.3F

Im FortiOS ist die Position "Block malicious URLs discovered by FortiSandbox" aufgeführt und steht im Zusammenhang mit der FortiSandbox Funktion und kann nur dann genutzt werden, wenn diese auf dem FortiOS aktiviert und konfiguriert wurde. Durch den Web Content Filter kann eine Seite anhand der Definition des Pattern, der Wildcard oder Reg. Expression eingestuft werden Aktionen wie Block oder Exempt sind möglich. Für diese Funktion gilt Full SSL Inspection als Voraussetzung da ein Content Filter für den verschlüsselten Traffic nur dann durchgeführt werden kann, wenn eine "deep inspection" ausgeführt wird.
       Rating Options
Die Position "Allow websites when a rating error occurs" steuert das Verhalten der WebFilter Funktion, wenn eine Abfrage der Kategorisierung des WebFilters nicht auf der FortiGuard durchgeführt werden kann. Ist diese Abfrage aus irgendwelchen Gründen nicht erfolgreich, wird der Zugriff des Users auf diese entsprechende Seite geblockt! Unter normalen Umständen empfehlen wir diese Funktion zu aktivieren.
Durch "Rate URLs by domain and IP Adress" wird zusätzlich für die Kategorisierung zur Domaine die öffentliche IPv4 Adresse der entsprechenden Seite / URL ebenfalls auf FortiGuard überprüft. Wir empfehlen diese Funktion zu aktivieren um die zusätzliche Überprüfung durchzuführen!
Durch die Funktion "Block HTTP redirects by rating" werden "redirects" in der Überprüfung durch den WebFilter miteinbezogen. Wir empfehlen auch diese Funktion zu aktivieren!
Durch "Rate images by URL" werden die hinterlegten URLs der Images überprüft. Handelt es sich um einen URL für die betroffene Kategorie, für welche ein Block konfiguriert wurde, wird das entsprechende Image durch den Proxy entfernt und mit einem "blank" Image ersetzt.
       Proxy Options
Durch die Aktivierung von "Restrict Google account usage to specific domains" kann die entsprechende Goolge Domain konfiguriert werden und so der Zugriff auf diese Domain eingeschränkt werden. Für diese Funktion gilt Full SSL Inspection als Grundvoraussetzung.
Durch die Aktivierung von "Provide details for blocked HTTP 4xx and 5xx errors" werden die Fehlermeldungen des Web Servers direkt zurück gegeben anstelle der Fehlermeldungen des FortiOS Proxy Servers. Um die detaillierten HTTP errors des Server zu erhalten sollte diese Position aktiviert werden!
Soll verhindert werden dass eine HTTP Post Action durch einen User ausgeführt werden kann, muss die Position "HTTP Post Action" auf Block gesetzt werden. Wenn dies durchgeführt wird kann zBsp ein User kein Upload mehr auf einen Web Server durchführen werden. Für diese Funktion gilt Full SSL Inspection als Voraussetzung.
Durch die Aktivierung der Funktionen "Remove Java Applets, Remove AcitveX und Remove Cookies" wird dem Proxy Server ermöglicht diese Funktionen zu entfernen!
Die entsprechenden Profile sind nun konfiguriert und können einer entsprechenden Firewall Policy Rule hinzugefügt werden. Dabei ist folgendes zu beachten: In der Firewall Policy Rule sollten die entsprechenden Services / Ports explizit definiert werden. Dies bedeutet, dass auf Service "All" verzichtet werden sollte. Nachfolgendes Beispiel zeigt eine Firewall Policy Rule für welche HTTP / HTTPS ist der unverschlüsselter Traffic (Proxy Options Profile) sowie für den verschlüsselten Traffic (SSL Inspection Profile) ein WebFilter Profile aktiviert wurde:
      Policy & Objects > IPv4 Policy > Create New
      Fortinet-3059.jpg
Tipp.png

Nice to know: Ab OS 6.2 ist es möglich den UTM-Status komplett auszuschalten, resp. die Full Inspection ist vorhanden und konfiguriert, jedoch auf und somit inaktiv. Um die Standard-Einstellungen der no inspection in der CLI anschauen zu können, kann folgender Befehl ausgeführt werden:

          # config firewall policy
          # edit 1
          # sh config firewall policy
              edit 1
                 set uuid 05d88354-4817-51e9-7494-06cb70accbf0
                 set srcintf "wan2"
                 set dstintf "wan1"
                 set srcaddr "all"
                 set dstaddr "all"
                 set action accept
                 set schedule "always"
                 set service "ALL"
                 set inspection-mode proxy
                 set http-policy-redirect enable
                 set ssh-policy-redirect enable
                 set nat enable
                  next
                   end
            # sh fu | grep ssl-ssh-profile
                set ssl-ssh-profile "no-inspection"
            # end

Wie kann ich ein WebFilter Profil konfigurieren um einzelne URL / Sites von der Full SSL Inspection auszuschliessen?

Wenn ein WebFilter Profil in Zusammenhang mit Full SSL Inspection konfiguriert wird, können Situationen eintreten in denen eine bestimmte URL/Site von der Full SSL Inspection ausgeschlossen werden muss. Diese Funktion wird innerhalb des Full SSL Inspection Profile durch "ssl-exempt" zur Verfügung gestellt. Dabei können WebFilter lokale Kategorien, FortiGuard Kategorien sowie einzelne Adressen basierend auf IPv4 oder FQDN Adress-Objekten von der Full SSL Inspection ausgeschlossen werden. Die Konfiguration kann über Mgmt. Web Interface oder CLI durchgeführt werden:

       Security Profiles > SSL/SSH Inspection > [wähle das entsprechende Full SSL Inspection Profil] > Edit > Exempt from SSL Inspection
       Fortinet-3060.jpg 
       # config firewall ssl-ssh-profile
       # edit [wähle das entsprechende Full SSL Inspection Profile]
       # set whitelist [enable | disable]
       # config ssl-exempt
       # edit [gebe eine entsprechenden Integer an zB "1"]
       # set type [fortiguard-category | address]
       # set fortiguard-category [gebe die entsprechende FortiGuard Kategorie an; Für eine Liste benütze ?]
       # set address [gebe ein entsprechendes Adress Objekt an FQDN oder IPv4]
       # next
       # end

Die Position "Reputable Websites", welche der Konfiguration "whitelist" in der CLI entspricht, muss bei der "ssl-exempt" Konfiguration berücksichtigt werden! Dies bedeutet: Wenn diese Funktion deaktiviert wird, wird für die definierten Web-Kategorieren und / oder Adressen unter dem Menü-Punkt "Exempt from SSL Inspection" keine SSL Inspection durchgeführt! Es wird jedoch für die definierten Web-Kategorien und Adressen die UTM Funktionen ausgeführt, sofern diese konfiguriert wurden. Wird die Position "Reputable Websites" aktiviert, so wird für die definierten Web-Kategorien und / oder Adressen unter "Exempt from SSL Inspection" die UTM Funktionen ausgeführt und / oder ausgeschlossen, welche gemäss folgender Konfiguration in der CLI im WebFilter Profile erfasst wurde:

       # config webfilter profile
       # edit [Name des entsprechenden WebFilter Profiles]
       # config web
       # set whitelist [exempt-av | exempt-webcontent | exempt-activex-java-cookie | exempt-dlp | exempt-rangeblock | extended-log-others]
       # end
       # end

Somit kann anhand "Reputable Website" die Funktion "ssl-exempt" erweitert werden um die UTM Features, wie zBsp Antivirus, auszuschliessen! Bei der Konfiguration "ssl-exempt" ist des Weiteren zu berücksichtigen, dass im WebFilter-Profil lokale Kategorien konfiguriert werden und der Funktion "ssl-exempt" via "type fortiguard-category" als FortiGuard «local categorie» hinzugefügt werden. Dadurch können die URL / Sites über das Mgmt. Web-Interface dieser lokalen Kategorie angefügt und somit automatisch zur "ssl-exempt" Funktion hinzugefügt werden. Wie lokale Kategorien konfiguriert werden kann nachfolgendem Artikel entnommen werden:

       FortiGate:FAQ#Wie_kann_ein_WebFilter_Profil_mit_Black-_.2F_Whitelisting_konfigurieren.3F

Wie können mittels einem WebFilter Profil bestimmte URLs von den UTM Features ausgeschlossen werden?

Wenn ein WebFilter Profil konfiguriert wird, können innerhalb dieses WebFilter Profils bestimmte URLs anhand von Wildcards oder Regular Expressions unter der Position "URL Filters" konfiguriert werden. Folgende Möglichkeiten stehen zur Verfügung:

       Security Profiles > WebFilter > [wähle das entsprechende WebFilter Profil] > Edit > URL Filter > Create
       Fortinet-3061.jpg
       Fortinet-3062.jpg

Dabei kommt dem Vorgang (Action) "Exempt" eine spezielle Funktion zu. Wird die Action "Exempt" gewählt, so wird der definierte URL (sei es als Wildcard oder Regular Expression) von sämtlichen UTM Features wie zBsp Antivirus ausgeschlossen. Möchte man nur definierte UTM Features ausschliessen, steht via CLI diese Konfiguration detaillierter zur Verfügung:

       # config webfilter urlfilter
       # edit [Integer für URL-Filter - zBsp "1"]
       # config entries
       # edit [gebe einen entsprechenden Integer an zBsp "1"]
       # set url [gebe eine entsprechenden URL an zBsp basierend auf Wildcard "*.apple.com"]
       # set type [simple | regex | wildcard]
       # set action [exempt | block | allow | monitor]
       # set exempt [setze die entsprechend auszuschliessende Option, sofern "action exempt" gesetzt ist; av | web-content | activex-java-cookie | dlp | fortiguard | range-block all]
       # set status [enable | disable]
       # unset referrer-host
       # end
       # end

Somit steht für die Action Exempt folgendes zur Verfügung um ein UTM Feature auszuschliessen:

 * activex-java-cookie          ActiveX, Java, and cookie filtering
 * all                          Exempt from all
 * av                           Antivirus filtering
 * dlp                          DLP scanning
 * filepattern                  File pattern matching
 * fortiguard                   FortiGuard web filtering
 * pass                         Pass single connection from all
 * range-block                  Exempt range block feature
 * web-content                  Web filter content matching

Wird als Action "Exempt" gewählt, so wird "set exempt" im Hintergrund standardmässig wie folgt konfiguriert:

       # set exempt av web-content activex-java-cookie dlp fortiguard range-block all

Wie kann ich für ein WebFilter Profil bestimmte MIME Header blockieren?

Was ist "YouTube Education Filter"?

Der YouTube Education Filter war eine Möglichkeit für Unternehmen, wie zBsp Schulen, einen Account auf YouTube zu erstellen und dort anhand eines YouTube Accounts zu definieren, welche YouTube Movies / Videos freigegeben werden.
Dieser Service wird seit 1. Juli 2016 seitens Google nicht mehr unterstütz. Google stellt Informationen zur Einschränkung von YouTube-Inhalten zur Verfügung, wie zBsp die Einschränkung von YouTube-Inhalten, die den Nutzern der G Suite zur Verfügung stehen. Derzeit umfasst die von Google angebotene Möglichkeit, unangemessenen Inhalt einzuschränken mittels Prüfung von: DNS, HTTP-Header und Chromebooks.
Dies kann wie folgt konfiguriert werden (wo Restricted YouTube Access aktiviert wird):

Config webgui.png Konfiguration über das WebGUI:

Security Profiles > Web Filter > Search Engines

   Fortinet-3063.jpg
Config cli.png Konfiguration über die CLI:
     config webfilter profile
        edit "webfilter"
           config web
              set safe-search url
            end
       next
   end
Config webgui.png Konfiguration über das WebGUI:

Security Profiles > Web Filter > Search Engines

   Fortinet-3064.jpg
Config cli.png Konfiguration über die CLI:
     config webfilter profile
        edit "webfilter"
           config web
              set youtube-restrict strict
            end
       next
   end

Weitergehende Informationen können hier entnommen werden:

   https://docs.fortinet.com/document/fortigate/6.0.0/handbook/659877/youtube-education-filter

Wie kann für die WebFilter Funktion ein Troubleshooting durchgeführt werden?

Wenn für die WebFilter Funktion ein Troubleshooting durchgeführt werden soll, muss das WebFilter Cache berücksichtig werden, welches durch die FortiGuard Abfragen zur Kategorisierung im Hintergrund erstellt wird. Um die WebFilter Cache Informationen anzuschauen, zu löschen, TTLs der Einträge anzuschauen usw. stehen folgende Befehle zur Verfügung:

       # diagnose test application urlfilter 
       1.   This menu
       2.   Clear WF cache
       3.   Display WF cache contents
       4.   Display WF cache TTL list
       6.   Display WF cache in tree format
       7.   Toggle switch for dumping unrated packet
       10.  Print debug values
       11.  Clear Spam Filter cache
       13.  Toggle switch for dumping expired license packets
       14.  Show running timers (except request timers)
       144. Show running timers (including request timers)
       15.  Send INIT requests.
       16.  Display WF cache contents of prefix type
       19.  Display object counts
       20.  Display FTGD TCP stats
       21.  Display FTGD quota list
       22.  Reset all user quotas
       99.  Restart the urlfilter daemon
       
       Debug levels:
       Warning messages:             1   (0x001)
       Block events:                 2   (0x002)
       Pass events:                  4   (0x004)
       URL request events:           8   (0x008)
       Cache events:                 16  (0x010)
       Prefix events:                32  (0x020)
       Prefix delete subtree events: 64  (0x040)
       Add after prefix events:      128 (0x080)
       CMDB events:                  256 (0x100)
       DNS resolver messages:        512 (0x200)
       Keyword search messages:     1024 (0x400)
       INIT request messages:       2048 (0x800)
       Quota messages:              4096 (0x1000)

Somit kann zBsp anhand folgenden Befehls der Caches des WebFilters ausgelesen werden:

       # diagnose test application urlfilter 3
       
       Saving to file [/tmp/urcCache.txt]
       
       Cache Contents:
       -=-=-=-=-=-=-=-
       Cache Mode:   TTL
       Cache DB Ver: 17.33301
       
       Domain  |IP       DB Ver T URL
       34000000|34000000 17.33299 P Bhttp://www.ecall.ch/
       34000000|34000000 17.33296 P Chttps://apctrl1.fortinet.com/
       34000000|34000000 17.33295 P Chttps://logctrl1.fortinet.com/
       34000000|00000000 17.33292 P Bhttp://ocsp2.globalsign.com/
       34000000|00000000 17.33292 P Bhttp://ocsp.globalsign.com/
       29000000|29000000 17.33282 E Bhttp://yahoo.com/
       29000000|00000000 17.32731 E Dhttps://cse.google.com/

Die Spalte "Domain" sowie "IP" gibt die FortiGuard Kategorie in "hexdecimalen" Wert wieder! Um den Cache Inhalt des WebFilters zu löschen benutze folgende Befehl:

       # diagnose test application urlfilter 2

Eine andere Möglichkeit den Cache des WebFilters zu löschen ist den Deamon/Service des WebFilters neu zu starten:

       # diagnose test application urlfilter 99

Ebenso steht mit nachfolgendem Befehl betreffend WebFilter eine Statistik zur Verfügung:

       # diagnose webfilter fortiguard statistics list
       
       Rating Statistics:
       =====================
       DNS failures                     :          4
       DNS lookups                      :          9
       Data send failures               :          0
       Data read failures               :          0
       Wrong package type               :          0
       Hash table miss                  :          1
       Unknown server                   :          0
       Incorrect CRC                    :          0
       Proxy request failures           :          0
       Request timeout                  :         26
       Total requests                   :      23908
       Requests to FortiGuard servers   :       2535
       Server errored responses         :          0
       Relayed rating                   :          0
       Invalid profile                  :          0
       
       Allowed                          :          0
       Blocked                          :          1
       Logged                           :      23903
       Blocked Errors                   :          0
       Allowed Errors                   :          5
       Monitors                         :      23902
       Authenticates                    :          0
       Warnings:                        :          0
       Ovrd request timeout             :          0
       Ovrd send failures               :          0
       Ovrd read failures               :          0
       Ovrd errored responses           :          0
       
       Cache Statistics:
       =====================
       Maximum memory                   :   42284892
       Memory usage                     :      44832
       
       Nodes                            :          1
         Leaves                         :          0
         Prefix nodes                   :          0
         Exact nodes                    :          0
       
       Requests                         :          1
       Misses                           :          1
       Hits                             :          0
         Prefix hits                    :          0
         Exact hits                     :          0
       
       No cache directives              :          0
       Add after prefix                 :          0
       Invalid DB put                   :          0
       DB updates                       :          2
       
       Percent full                     :          0%
         Branches                       :        100%
         Leaves                         :          0%
           Prefix nodes                 :          0%
           Exact nodes                  :          0%
       
       Miss rate                        :        100%
       Hit rate                         :          0%
         Prefix hits                    :          0%
         Exact hits                     :          0%

Diese Statistik kann mit nachfolgendem Befehl zurückgesetzt werden:

       # diagnose webfilter fortiguard statistics flush

Möchte man den "Embeded Content" für eine Anfrage eines Host / Client im Zusammenhang mit dem WebFilter untersuchen um zBsp Teile einer geblockten Seite zu untersuchen, kann dies anhand des folgendem Debug Befehl durchgeführt werden:

       1. Konfiguriere "Putty" für logging, um alle Informationen in ein Log aufzuzeichnen (Category > Session > Logging > All session output)
       2. Erstelle eine Konsolen-Verbindung zur FortiGate (RS232 basierend resp. Seriell)
       3. Führe ein Login durch und gebe folgendes ein:
          Setze den Debug Filter zurück
          
          # diagnose debug reset
          Aktiviere für den debug "output" den "timestamp"
          
          # diagnose debug console timestamp enable
          Setze einen neuen Debug Filter urlfilter
          
          # diagnose debug urlfilter src-addr [IPv4 Adressee des Hosts / Clients von dem der Test ausgeführt wird zBsp "198.18.0.21"]
          # diagnose debug application urlfilter -1

Zusätzlich zu "src-addr" steht ebenfalls "test-url" zur Verfügung welcher durch Angaben eines entsprechenden URLs für "test-url" werden die Resultate für FortiGuard Kategorisierung zurückgegeben!

       Aktiviere den Debug Modus mit dem gesetzen Debug Filter:
       
       # diagnose debug enable

Nachfolgend ein Beispiel eines Outputs (Ausschnitt) des oben stehenden "debug" Filters anhand Source Adresse 198.18.0.21 sowie auf die Seite "www.also.com":

       --------------- output debug urlfilter src-addr / -1 ---------------
       
       # msg="received a request /tmp/.proxyworker000_0_0.url.socket, addr_len=38: d=www.also.com:80, id=23940, vfname='root', vfid=0, profile='VDOM-root-default', type=0, client=198.18.0.21, url_source=1, url="/"
       Not running keyword search.  It is not a supported search site site
       Checking urlfilter list 1
       Stop quota EP 198.18.0.21, cat 0
       Url filter exempt action (7f)
       msg="received a request /tmp/.proxyworker000_0_0.url.socket, addr_len=38: d=www.also.com:80, id=23941, vfname='root', vfid=0, profile='VDOM-root-default', type=0, client=198.18.0.21, url_source=1, url="/ec/cms2/en/6000/index.jsp"
       Not running keyword search.  It is not a supported search site site
       Checking urlfilter list 1
       Stop quota EP 198.18.0.21, cat 0
       Url filter exempt action (7f)
       msg="received a request /tmp/.proxyworker000_0_0.url.socket, addr_len=38: d=www.also.com:80, id=23945, vfname='root', vfid=0, profile='VDOM-root-default', type=0, client=198.18.0.21, url_source=1, url="/ec/cms2/media/css/6000/print.css"
       Not running keyword search.  It is not a supported search site site
       Checking urlfilter list 1
       Stop quota EP 198.18.0.21, cat 0
       Url filter exempt action (7f)
       msg="received a request /tmp/.proxyworker000_0_0.url.socket, addr_len=38: d=www.also.com:80, id=23943, vfname='root', vfid=0, profile='VDOM-root-default', type=0, client=198.18.0.21, url_source=1, url="/ec/cms2/media/css/6000/html5boilerplate/main.css"
       Not running keyword search.  It is not a supported search site site
       Checking urlfilter list 1
       Stop quota EP 198.18.0.21, cat 0
       Url filter exempt action (7f)
       msg="received a request /tmp/.proxyworker000_0_0.url.socket, addr_len=38: d=www.also.com:80, id=23944, vfname='root', vfid=0, profile='VDOM-root-default', type=0, client=198.18.0.21, url_source=1, url="/ec/cms2/media/css/6000/screen.css"
       Not running keyword search.  It is not a supported search site site
       Checking urlfilter list 1
       Stop quota EP 198.18.0.21, cat 0
       Url filter exempt action (7f)
       msg="received a request /tmp/.proxyworker000_0_0.url.socket, addr_len=38: d=www.also.com:80, id=23942, vfname='root', vfid=0, profile='VDOM-root-default', type=0, client=198.18.0.21, url_source=1, url="/ec/cms2/media/css/6000/html5boilerplate/normalize.css"
       Not running keyword search.  It is not a supported search site site
       Checking urlfilter list 1
       Stop quota EP 198.18.0.21, cat 0
       Url filter exempt action (7f)
       msg="received a request /tmp/.proxyworker000_0_0.url.socket, addr_len=38: d=www.also.com:80, id=23947, vfname='root', vfid=0, profile='VDOM-root-default', type=0, client=198.18.0.21, url_source=1, url="/ec/cms2/media/css/6000/dev_also_com.css"
       Not running keyword search.  It is not a supported search site site
       Checking urlfilter list 1
       Stop quota EP 198.18.0.21, cat 0
       Url filter exempt action (7f)
       msg="received a request /tmp/.proxyworker000_0_0.url.socket, addr_len=38: d=www.also.com:80, id=23946, vfname='root', vfid=0, profile='VDOM-root-default', type=0, client=198.18.0.21, url_source=1, url="/ec/cms2/media/css/6000/dev_also_com_2.css"
       Not running keyword search.  It is not a supported search site site
       Checking urlfilter list 1
       Stop quota EP 198.18.0.21, cat 0
       Url filter exempt action (7f)
       msg="received a request /tmp/.proxyworker000_0_0.url.socket, addr_len=38: d=www.also.com:80, id=23951, vfname='root', vfid=0, profile='VDOM-root-default', type=0, client=198.18.0.21, url_source=1, url="/ec/cms2/media/js_1/6000_1/html5boilerplate_1/modernizr-262min.js"
       Not running keyword search.  It is not a supported search site site
       Checking urlfilter list 1
       Stop quota EP 198.18.0.21, cat 0
       Url filter exempt action (7f)
       msg="received a request /tmp/.proxyworker000_0_0.url.socket, addr_len=38: d=fonts.googleapis.com:80, id=23948, vfname='root', vfid=0, profile='VDOM-root-default', type=0, client=198.18.0.21, url_source=1, url="/css?family=PT+Sans+Narrow|Raleway:400,500,600,700,800|Dancing+Script|Sanchez"
       Not running keyword search.  It is not a supported search site site
       Checking urlfilter list 1
       msg="received a request /tmp/.proxyworker000_0_0.url.socket, addr_len=38: d=www.also.com:80, id=23950, vfname='root', vfid=0, profile='VDOM-root-default', type=0, client=198.18.0.21, url_source=1, url="/ec/cms2/media/css/1010_ctv/magnific-popup.css"
       Not running keyword search.  It is not a supported search site site
       Checking urlfilter list 1
       Stop quota EP 198.18.0.21, cat 0
       Url filter exempt action (7f)
       msg="received a request /tmp/.proxyworker000_0_0.url.socket, addr_len=38: d=www.also.com:80, id=23952, vfname='root', vfid=0, profile='VDOM-root-default', type=0, client=198.18.0.21, url_source=1, url="/js/jquery-core/1.11.2/jquery-1.11.2.min.js"
       Not running keyword search.  It is not a supported search site site
       Checking urlfilter list 1
       Stop quota EP 198.18.0.21, cat 0
       Url filter exempt action (7f)
       msg="received a request /tmp/.proxyworker000_0_0.url.socket, addr_len=38: d=www.also.com:80, id=23953, vfname='root', vfid=0, profile='VDOM-root-default', type=0, client=198.18.0.21, url_source=1, url="/js/jquery-core/2.1.3/jquery-2.1.3.min.js"
       Not running keyword search.  It is not a supported search site site
       Checking urlfilter list 1
       Stop quota EP 198.18.0.21, cat 0
       Url filter exempt action (7f)
       msg="received a request /tmp/.proxyworker000_0_0.url.socket, addr_len=38: d=www.also.com:80, id=23954, vfname='root', vfid=0, profile='VDOM-root-default', type=0, client=198.18.0.21, url_source=1, url="/ec/cms2/media/js_1/6000_1/jquery/jquerywaypointsmin.js"
       Not running keyword search.  It is not a supported search site site
       Checking urlfilter list 1
       Stop quota EP 198.18.0.21, cat 0
       Url filter exempt action (7f)
       msg="received a request /tmp/.proxyworker000_0_0.url.socket, addr_len=38: d=www.also.com:80, id=23955, vfname='root', vfid=0, profile='VDOM-root-default', type=0, client=198.18.0.21, url_source=1, url="/ec/cms2/media/js_1/6000_1/jquery/jquerytouchSwipemin.js"
       Not running keyword search.  It is not a supported search site site
       Checking urlfilter list 1
       Stop quota EP 198.18.0.21, cat 0
       Url filter exempt action (7f)
       msg="received a request /tmp/.proxyworker000_0_0.url.socket, addr_len=38: d=www.also.com:80, id=23956, vfname='root', vfid=0, profile='VDOM-root-default', type=0, client=198.18.0.21, url_source=1, url="/ec/cms2/media/js_1/6000_1/bootstrap/bootstrap.js"
       Not running keyword search.  It is not a supported search site site
       Checking urlfilter list 1
       Stop quota EP 198.18.0.21, cat 0
       Url filter exempt action (7f)
       msg="received a request /tmp/.proxyworker000_0_0.url.socket, addr_len=38: d=www.also.com:80, id=23957, vfname='root', vfid=0, profile='VDOM-root-default', type=0, client=198.18.0.21, url_source=1, url="/ec/cms2/media/js_1/6000_1/plugins.js"
       Not running keyword search.  It is not a supported search site site
       Checking urlfilter list 1
       Stop quota EP 198.18.0.21, cat 0
       Url filter exempt action (7f)
       msg="received a request /tmp/.proxyworker000_0_0.url.socket, addr_len=38: d=www.also.com:80, id=23958, vfname='root', vfid=0, profile='VDOM-root-default', type=0, client=198.18.0.21, url_source=1, url="/ec/cms2/media/js_1/6000_1/metronome.js"
       Not running keyword search.  It is not a supported search site site
       Checking urlfilter list 1
       Stop quota EP 198.18.0.21, cat 0
       Url filter exempt action (7f)
       msg="received a request /tmp/.proxyworker000_0_0.url.socket, addr_len=38: d=www.also.com:80, id=23959, vfname='root', vfid=0, profile='VDOM-root-default', type=0, client=198.18.0.21, url_source=1, url="/ec/cms2/media/js_1/knockout/knockoutmin.js"
       Not running keyword search.  It is not a supported search site site
       Checking urlfilter list 1
       Stop quota EP 198.18.0.21, cat 0
       Url filter exempt action (7f)
       
       --------------- output debug urlfilter src-addr / -1 ---------------

Nachdem der Debug ausgeführt wurde sollte dieser wieder deaktiviert, sowie der Filter zurückgesetzt werden:

       Deaktiviere den Debug Modus:
       
       # diagnose debug disable
       Setze den Debug Filter zurück:
       
       # diagnose debug reset
       Kontrolliere den Debug Filter ob dieser zurückgesetzt wurde:
       
       # diagnose debug info

DNS Filter

OT und IOT

Wie kann ich die Industrie Signaturen auf der FortiGate aktivieren?

FortiOS 6x.svg FortiOS 7x.svg

Im FortiOS sind die Industrie Signaturen beim IPS integriert. Diese sind aber defaultmässig deaktiviert und müssen über die CLI aktiviert werden. Mit folgendem Befehl können die Industrie Signaturen aktiviert werden:

Config cli.png Konfiguration über die CLI:
config ips global
set exclude-signatures none
end

Um die Signaturen wieder auszuschliessen (exclude) wird folgender Syntax verwendet:

Config cli.png Konfiguration über die CLI:
config ips global
set exclude-signatures industrial
end

IPS

Wo finde ich die Release Notes für die IPS Engine?

Die Release Notes für die IPS Engine sind auf https://docs.fortinet.com unter dem Kapitel IPS Engine zum donwloaden bereit.

FortiOS 74.svg FortiOS 7.4:

Zu den aktuellen Releasenotes: https://docs.fortinet.com/product/ipsengine/7.4


FortiOS 72.svg FortiOS 7.2:

Zu den aktuellen Releasenotes: https://docs.fortinet.com/product/ipsengine/7.2


FortiOS 7x.svg FortiOS 7.1:

Zu den aktuellen Releasenotes: https://docs.fortinet.com/product/ipsengine/7.1


FortiOS 70.svg FortiOS 7.0:

Zu den aktuellen Releasenotes: https://docs.fortinet.com/product/ipsengine/7.0


FortiOS 64.svg FortiOS 6.4:

Zu den aktuellen Releasenotes: https://docs.fortinet.com/product/ipsengine/6.4


FortiOS 62.svg FortiOS 6.2:

Zu den aktuellen Releasenotes: https://docs.fortinet.com/product/ipsengine/6.2


FortiOS 60.svg FortiOS 6.0:

Zu den aktuellen Releasenotes: https://docs.fortinet.com/product/ipsengine/6.0


edit 5.09.2023 - 4Tinu

Welche IPS Engine ist mit welchem FortiOS Kompatibel?

FortiOS 56.svg FortiOS 6x.svg FortiOS 7x.svg

Im folgenden Dokument kann man entnehmen welche IPS Engine mit welchem FortiOS kompatibel ist:

IPS-Engine-Support-FortiOS.png

Im folgendem Dokument ist diese Matrix dokumentiert:


edit 25.11.2022 - 4Tinu

Wie kann ich die verwendete IPS Engine Version auf der FortiGate nachschauen?

FortiOS 56.svg FortiOS 6x.svg FortiOS 7x.svg

Im FortiOS ist jeweils eine IPS Engine enthalten und wird auch entsprechend bei einem Upgrade auf eine neue FortiOS Version auch upgegradet.

Config webgui.png Konfiguration über das WebGUI:

Über das Menu System --> FortiGuard --> License Information kann man unter Intursion Prevention die installierte IPS Engine Version nachschauen:

Fortinet-2884.jpg

Über die CLI kann dies mit diagnose autoupdate version nachgeschaut werden. Damit man den Output spezifisch auf die IPS Engine Fokusieren kann, empfehle ich noch mit grep entsprechend den Output zu filtern:

Config cli.png Konfiguration über die CLI:
# diagnose autoupdate versions | grep "IPS Attack" -A 6
IPS Attack Engine
---------
Version: 7.00018
Contract Expiry Date: Fri Sep 10 2021
Last Updated using scheduled update on Wed Mar 31 00:32:48 2021
Last Update Attempt: Wed Apr 14 10:03:31 2021
Result: No Updates

Wie kann ich das IPS Feature im WebGui aktivieren?

FortiOS 6x.svg FortiOS 7x.svg

Per Default ist der Menupunkt für die IPS Konfiguration im WebGui ausgeblendet. Um den Menupunkt sichtbar zu machen, kann das Feature folgendermassen aktiviert werden: Im WebGui:

Config webgui.png Konfiguration über das WebGUI:

Navigieren über das Menu System -> Feature Visibility und das Intrusion Prevention Feature aktivieren:

Fortinet-3260.jpg

Über die CLI kann das Feature auch im Menu eingeblendet werden:

Config cli.png Konfiguration über die CLI:
 
config system settings
set gui-ips enable
end

Menupunkt ausblenden:

 
config system settings
set gui-ips disable
end

Erfolgskontrolle im WebGui:

Config webgui.png Konfiguration über das WebGUI:

Nach dem aktivieren, ist der Menupunkt unter Security Profiles als Intrusion Prevention sichtbar:

Fortinet-3261.jpg

add 28.03.2023 - 4Tinu

Was ist der Unterschied zwischen Anomlien und Exploits?

Es ist wichtig, den Unterschied zwischen einer Anomalie und einem Exploit zu kennen.

Es ist auch wichtig zu wissen, welche FortiGate-Funktionen Schutz vor jeder dieser Arten von Bedrohungen bieten:

  • Exploits sind bekannte Angriffe mit bekannten Mustern, die von IPS, Web Application Firewall (WAF) oder Antivirensignaturen erkannt werden können.
  • Anomalien sind ungewöhnliche Verhaltensweisen im Netzwerk, wie z. B. eine ungewöhnlich hohe CPU-Auslastung oder ein ungewöhnlich hoher Netzwerkverkehr.

Anomalien müssen erkannt und überwacht (und in einigen Fällen blockiert oder entschärft) werden, da sie die Symptome eines neuen, noch nie dagewesenen Angriffs sein können. Anomalien lassen sich in der Regel besser durch Verhaltensanalysen aufspüren, z. B. durch ratenbasierte IPS-Signaturen, DoS-Regeln und die Überprüfung von Protokollbeschränkungen.

Anomalien Exploits

Bekannter/bestätigter Angriff

Wird erkannt, wenn eine Datei oder Datenverkehr mit einer Signatur übereinstimmt:

  • IPS Signaturen
  • WAF Signaturen
  • AntiVirus Signaturen

Beispiele:

  • Ausnutzung von bekannten Anwendungsschwachstellen
  • Software Schwachstelle (siehe CVEs)

Können Zero-Day oder DoS Angriffe sein

Erkannt durch Verhaltensanalyse:

  • Rate-based IPS Signaturen
  • DoS Regeln (L3 + L4 Anomalien)
  • Inspektion von Protokoll-Beschränkungen

Beispiele:

  • Ungewöhnlich hoher Traffic (DoS/Flood)
  • Ungewöhnlich hohe CPU-Auslastung

add 28.03.2023 - 4Tinu

Wie Unterstützen die SPU Prozessoren das IPS?

Content Prozessor (CP)
Der CP ist ein Co-Prozessor für die CPU. Er beschleunigt viele gängige ressourcenintensive, sicherheitsrelevante Prozesse. Seit dem allerersten FortiGate-Modell hat Fortinet einen CP in das Design integriert. Der CP arbeitet auf der Systemebene. CP8 und CP9 bieten einen schnellen Pfad (Fastpath) für den vom IPS inspizierten Datentraffic. Dabei sind auch Session welche Flussbasiert (Flow-Mdous) inspiziert werden. CP-Prozessoren beschleunigen auch intensive proxy-basierte Aufgaben wie:

  • Verschlüsselung und Entschlüsselung (SSL)
  • Antivirus

In den meisten Fällen müssen die Standartwerte (advanced) nicht verändert werden, da diese gut funktionieren.

IPS Optionen für den CP konfigurieren:

Config cli.png Konfiguration über die CLI:

Deaktivieren der IPS Acceleration:

 
config ips global
set cp-accel-mode none
end

Aktivieren der Basic IPS Acceleration:

 
config ips global
set cp-accel-mode basic
end

Aktivieren der Advanced Acceleration (default-Wert)
Mehr typen als die Basis Version können offgeloadet werden)

Hinweise zum Advanced Modus:
Verfügbar ist der Advanced Modus nur bei FortiGate Geräte welche zwei oder mehr CP8s oder einen/mehrere CP9-Prozessoren verbaut haben.

Bei FortiGate Geräten mit einem CP8 ist der Standardmodus für cp-accel basic.
Wenn man den Modus auf Advanced konfiguriert, werden die Arten der Patterns welche offgeloadet werden nicht geändert.

Bei FortiGate Geräten mit zwei oder mehr CP8 oder einem/ ehreren CP9s ist der Standardmodus cp-accel advanced.

 
config ips global
set cp-accel-mode advanced
end

Network Prozessor (NP)
Die Netzwerkprozessoren (NPs) bieten die folgenden Funktionen:

  • Pre IPS-Filterung von Anomalien und Loggen
  • Weiterleitung von Paketen
  • IPsec-Verschlüsselung und Entschlüsselungen
Config cli.png Konfiguration über die CLI:

NP Unterstützung für IPS deaktivieren:

 
config ips global
set np-accel-mode none
end

NP Unterstützung für IPS aktivieren:config ips global

 
config ips global
set np-accel-mode basic
end

SoC
In den kleineren FortiGate Modellen sind nicht NP und CP Prozessoren verbaut sondern einen sogenanten SoC. Der SoC kombiniert NPs, CPs und eine Universal-CPU auf einem einzigen Chip. Er beschleunigt den IPS-geprüften Datentraffic.
Die Konfiguration in der CLI kann von CP und NP Prozessoren übernommen werden.


add 28.03.2023 - 4Tinu

Wie soll ich vorgehen um das IPS in Betrieb zu nehmen?

Es gibt keinen einzig richtigen Weg, eine IPS-Lösung einzusetzen. Es hängt stark von den Anforderungen des Netzwerks und der Anwendungs Anforderungen ab. In den meisten Fällen kann man aber folgende Schritte befolgen: Der Einsatz einer IPS-Lösung erfolgt in der Regel in drei Schritten:

  1. Analysis: Der Administrator legt fest, was und wo geschützt werden soll.
  2. Evaluation: Nach einer ersten IPS-Konfiguration nimmt der Administrator weitere Anpassungen auf der Grundlage der IPS Logs vor. In dieser Phase wird das IPS nur für die Überwachung des Datentraffics konfiguriert und noch nicht zum blockieren
  3. Maintenance: Nachdem die IPS-Konfiguration korrekt funktioniert, setzt der Administrator das IPS auf Protect. Der Administrator muss die Protokolle weiterhin überwachen und weitere Anpassungen vornehmen, falls falsch positive oder Negativmeldungen auftreten.

1. Analysis (Analyse Phase)
In der Analysephase muss folgendes festgestellt werden: - welche Dienste müssten geschützt werden - Was sind die Bedrohungen für diese Dienste - Wo soll die IPS-Inspektion stattfinden? Dabei soll man realistische Erwartungen setzen. Man soll sich auf die Dienste konzentrieren, welche geschützt werden müssen. Anfgangen sollte man mit kritischten Diensten. Dabei klassifieziert man die Bedrohungen in verschiedene Gruppen

2. Evaluation (Evulationsphase)
In der Evaluierungsphase immer nur eine Gruppe von Signaturen aktivieren. Dabei beginnt man mit den kritischeren und arbeitet sich weiter bis zu weniger kritischen Signaturen. Warte und analyisere die Logs. Wenn die Logs auf Probleme hinweisen müssen Feinabstimmungen in der IPS Konfiguration vorgenommen werden. Sobald man mit der Signatrugruppe zufrieden ist, wird die nächste Gruppe für den IPS Schutz aktiviert. Dieser Evaluationsprozess kann sich gut und gerne über ein zwei Wochen ziehen. (Je nach komplexität der IPS Konfiguration)

3. Maintenance
Um die Anzahl der Fehlalarme zu minimieren, sollten die Liste der Signaturen, die zu blockieren sind, möglichst klein und präzise sein. In dieser Liste sollten die Angriffe enthalten sein, welche für die kritischen Dienste am gefährlichsten sind. Auch jetzt gilt , die IPS Lösung muss weiterhin im Log überwacht werden und wen nötig noch mehr Anpassungen vorgenommen werden.

Fortinet-3262.jpg

edit 5.09.2023 - 4Tinu

Traffic Shaper / TOS / DSCP

Wieso kann ich keine Applikationen in den Traffic Shaping Policy auswählen?

Wenn ich eine Traffic Shaping Policy erstellen möchte und gewisse Applikationen beachten will, ist es wichtig, dass das Feature Application Control aktiviert ist, damit ich die Option im WebGui sehen kann.

Falls die Option also nicht vorhanden ist, das entsprechende Feature aktivieren unter den Feature Einstellungen:

Config webgui.png Konfiguration über das WebGui:

Application Control nicht eingeschalten:

Fortinet-3111.jpg

Über das Menu System --> Feature Visbility und die Option Application Control aktivieren

Fortinet-3112.jpg

Nun kann in der Trafficshaper Policy das Applikations Feld benutzt werden.

Fortinet-3113.jpg

Übrigens, über die CLI kann jederzeit die Applikation in der Traffic Shaping Policy zugewiesen werden

Config cli.png Konfiguration über die CLI:
config system settings
     set gui-application-control [enable|disable]
end

Wie behebe ich bei kleineren FortiGate Modellen im Trafficshapping das Problem des TCP saw-toothing?

FortiOS 62.svg FortiOS 64.svg

Bei kleineren FortiGate Geräten (Entry Level) kann es bei langsamen Upload-Geschwindigkeiten zu Problemen kommen. Die begrenzte Upload-Geschwindigkeit wird durch TCP Saw-toothing verursacht wenn der Burst-Traffic die Geschwindigkeits-Limmite überschreitet. Grund dafür ist, dass die FortiGate den Traffic nicht ordnungsgemäss in die Queue stellt, und auf dem ausgehenden Interface die Burstcontroll angewendet werden soll.

Dies kann man ab dem FortiOS 6.2.1 wie folgt beheben:
Stellt den gesamten Traffic als 'default-class-id 10' und das wird für den gesamten Traffic verwendet.

Anwendung eines garantierten Prozentsatzes von 80 % und maximal 96 % beim Traffic-Shaping der Interfacebandbreite, welche auf 880 MB konfiguriert ist.

Config cli.png Konfiguration über die CLI:
# config firewall shaping-profile
# edit <profile name>
# set type queuing
# set default-class-id 10
# config shaping-entries
# edit 1
# set class-id 10
# set guaranteed-bandwidth-percentage 80
# set maximum-bandwidth-percentage 96
# set burst-in-msec 1000 <range from 0 to 2000>
# set cburst-in-msec 1800 <range from 0 to 2000>
# end
# end      

Anpassen des Grenzwertes: Den Grenzwert sollte man so konfigurieren, dass dieser sich unter dem Wert von cburst befindet, welcher höher ist als der Wert des Burst-Traffics. Der Wert beträgt zwischen 1000ms (50%) bis hin zu 1800ms (90%) der (outgoing Bandbreite) Obergrenze der erreichbaren Höchstgeschwindigkeit. Diese Werte können bei Bedarf niedriger gestellt werden.

Man kann dies mit folgenden Befehlen überprüfen:

Config cli.png Konfiguration über die CLI:
# diagnose netlink intf-class list wan2
# diagnose netlink intf-qdisc list wan2

In der folgenden Konfiguration soll die ausgehende Bandbreite auf 880 MB insgesamt 900 MB angewendet werden:

# config system interface
# edit wan2
# set outbandwidth 880000
# set egress-shaping-profile <?name of shaping-profile>
# end
# end

Wie kann ich eine unbeschränkte Speed-Limite im Traffic-Shaper setzen?

FortiOS 60.svg FortiOS 62.svg FortiOS 64.svg

Wenn eine unbeschränkte Bandbreite zugelassen werden möchten, kann dies lediglich via CLI mit dem Wert (null) vorgenommen werden.

Fortinet-3011.jpg
Fortinet-3012.jpg
Fortinet-3013.jpg

Eine Traffic Shaping Policy kann wie folgt erstellt werden:

Fortinet-3014.jpg

Zu beachtende Parameter (in / out):

Fortinet-3015.jpg
Fortinet-3016.jpg

Bei Application Category kann nunVoIp ausgewählt werden und bei Application -> SIP:

Fortinet-3017.jpg
Fortinet-3018.jpg

Kann ich auf einem FortiGate Device den IP-Paketen DSCP Informationen hinzufügen?

FortiOS 60.svg FortiOS 62.svg FortiOS 64.svg

In verschiedenen Situationen werden den IP-Paketen in einem internen Netzwerk ToS/DSCP Informationen hinzugefügt. Damit kann für einen bestimmten Traffic Typ, wie zum Beispiel VoIP, eine bestimmte Bandbreite, respektive eine Priorität verliehen werden. Üblicherweise werden solche Markierungen auf einem Core-Switch durchgeführt.

Wenn jedoch eine Markierung über einen Switch nicht möglich ist, aber die Markierung der IP-Pakete erforderlich ist, dass diese im Backbone Bereich des ISP's priorisiert werden, so ist es möglich dies ebenfalls über das FortiOS durchzuführen. ToS ist in RFC 791 definiert und durch RFC 1349 erweitert. DSCP ist die Ablösung von ToS und wird im RFC 2474 definiert. Nachfolgende Links geben vertieft Auskunft über ToS und DSCP:

DSCP Tabelle:

Damit IP-Pakete markiert werden können, müssen die Informationen des Providers/Services bekannt sein, wie diese Pakete markiert werden sollen. Wenn nun ein Provider zBsp "AF41" verlangt, wäre dies "Precedence 4" was wiederum "Class Selector 4" entspricht. Nachfolgend eine Tabelle für DSCP wie diese Informationen interpretiert werden:

Datei:Fortinet-324.jpg

Aus dieser DSCP Tabelle kann entnommen werden, dass zum Bespiel "AF41" der binäre Wert wie folgt bestimmt wird:

  Class Selector 4 = 100xxx 
  AF41             = xxx010
     
  Ergibt           = '''100010''' (oder Dezimal 34)

Mit diesen Informationen kann der entsprechender Traffic-Shaper konfiguriert werden. Damit dieser in der entsprechenden Traffic-Shaper Policy benutzt wird um den Traffic mit DSCP Informationen zu markieren:

Config webgui.png Konfiguration über das WebGui:
  • Über das Menu Policy & Objects -> Traffic Shapers -> Createnew.jpg ein neues Traffic-Shaper Profil anlegen.
Fortinet-3010.jpg
  • Im Feld DSCP kann jetzt der Binäre-Wert, welcher gemäss der oberen Tabelle ermittelt wurde, eingetragen werden.
Fortinet-2673.jpg
Konfiguration in der CLI

Über die CLI wird die DSCP Information folgendermassen im Traffic-Shaper Profil konfiguriert:

# config firewall shaper traffic-shaper
# edit [Name für das Profile] --> zum Beispiel "Citrix-CS4-AF41"
# set priority high
# set diffserv [enable | disable]
# set diffservcode [DSCP Code] --> zum Beispiel "100010"]
# end

Danach muss der neu konfigurierte "Traffic Shaper" in einer "Traffic Shaper Policy" definiert werden. Dabei ist zu beachten, dass die Traffic Shaper Policy so definiert wird, dass diese mit der entsprechenden IPv4 Firewall Policy Rule korrespondiert. Es muss ebenfalls darauf geachtet werden, dass die Policy über eine Übereinstimmung verfügt (matching criteria).

Als Beispiel möchten wir ausgehender VoIP Traffic markieren. Es existieren folgende IPv4 Firewall Regeln:

Config webgui.png Konfiguration über das WebGui:
Fortinet-2674.jpg

Somit ergibt sich folgende Traffic Shaper Policy welche über eine entsprechende Übereinstimmung verfügt (matching criteria): Jetzt ist darauf zu achten, dass in der Traffic Shaper Policy eine entsprechende Übereinstimmung gewährleistet ist (matching criteria):

  • Über das Menu Policy & Objects -> Traffic Shaping Policy -> Createnew.jpg kann eine Traffic Shaper Policy erstellt werden.
 Fortinet-2675.jpg

Durch diese Konfiguration werden nun IP Pakete in der IPv4 Firewall Policy '(ID17) durch den Traffic Shaper, welcher über die entsprechende Traffic Shaper Policy eingebunden wurde, markiert!

SIP / VoIP

Was im FortiOS als "SIP ALG" zu verstehen und soll ich diese Funktion benutzen?

FortiOS 64.svg FortiOS 62.svg FortiOS 60.svg

In den meisten Fällen sollte anstelle des "SIP Session Helpers" der "SIP ALG" (SIP Application Layer Gateway) benutzt werden. Der "SIP ALG" ist seit FortiOS 5.2 standard. Zusätzlich wird das SIP Protokoll im "SIP ALG" vor Angriffen im SIP-Bereich geschützt. Dies bedeutet zBsp., dass Sessions limitiert, Syntax betreffend SIP, sowie SDP Inhalte usw. der Nachrichten überprüft werden. Zusätzlich wird über den "SIP ALG" ein detailliertes Logging, wie auch Reporting zur Verfügung gestellt. Nachfolgende Darstellung zeigt wie der "SIP ALG" in seinem Grundkonstrukt implementiert ist:

Fortinet-3005.jpg    
     

Der SIP ALG unterstützt folgende Funktionen:

  • Alle Features implementiert im "Session Helper" sowie NAT, SIP und RTP Pinholes (Real Time Protocol Pinholes)
  • Zusätzlich, im Gegensatz zum Session Helper, kann auf dem SIP ALG folgendes durchgeführt werden:
  • SIP TCP und UDP Support
  • SIP Message Order Überprüfung
  • konfigurierbare Header Line Lenght Maximum
  • Message Fragment Assembly (TCP)
  • Wenn SIP Nachrichten fragmentiert sind (vers. Pakete) fügt der SIP ALG diese wieder zusammen und schickt diese als Ganzes weiter.
  • L4 Protocol Translation
  • Message Flood Protection
  • DoS Protection für "flooding INVITE, REGISTER" und andere Methoden
  • SIP message Type Filtering
  • SIP Statistik und Logging
  • SIP über IPv6
  • SIP über SSL/TLS
  • Deep SIP Message Syntax Checking (SIP Header Inspection oder SIP Fuzzing Protection
  • Hosted NAT Traversal
  • SIP High Availability (HA)
  • Geographical Redundancy (HA)
  • SIP Per Request Method Message Rate Limitation (schützt SIP Server vor SIP-Überlastung und DoS-Attacken)
  • RTP Bypass (RTP Pinholing)
  • SIP NAT
  • IP Topology Hiding

Diese Aufstellung zeigt das hinter "SIP" (VoIP) mehr steckt als man glaubt, und aus diesem Grund komplizierter ist als eine normale TCP/UDP-basierte Anwendung. Aufgrund der Komplexität der Signalisierung und der Protokolle bei "SIP", sowie der Inkonsistenzen die sich ergeben, wenn eine Firewall die Source-Adresse und Source-Port Daten mit NAT ändert, ist es schwierig für "SIP" eine Firewall ungehindert zu überwinden. "SIP" (VoIP) verwendet zwei verschiedene Protokolle: eines für die Signalisierung (zwischen dem Client und dem SIP/VoIP-Server) und eines für die Medien (zwischen den Clients). Die Port-/IP-Adresspaare, welche von den Medienprotokollen (RTP/RTCP) für jede Sitzung verwendet werden, werden von den Signalisierungsprotokollen dynamisch verhandelt. Firewalls müssen diese Informationen dynamisch mitverfolgen, warten und zum entsprechenden Zeitpunkt ausgewählte Ports für die Sitzungen auf sichere Weise öffnen und wieder schließen. Mehrere Medien-Ports werden über die Signalisierungssitzung dynamisch verhandelt; die Verhandlungen über die Medien-Ports sind in der Nutzlast der Signalisierungsprotokolle enthalten (IP-Adress- und Port-Informationen). Firewalls müssen für jedes Packet eine "Deep Inspection" durchführen, um diese Informationen zu erhalten und die Sitzungen dynamisch zu warten; dies erfordert zusätzliche Verarbeitungskapazitäten der Firewall. Die Source- und Destination-IP-Adressen sind in dies SIP/VoIP-Signalisierungspakete eingebettet. Eine Firewall mit NAT-Unterstützung übersetzt IP-Adressen und -Ports auf IP-Header-Ebene für Pakete. Vollsymmetrische NAT-Firewalls passen ihre NAT-Anbindungen häufig neu an und können so zufällig die "Pinholes" schließen, über die eingehende Pakete in das zu schützende Netzwerk gelangen. In diesem Fall kann der Dienstanbieter keine eingehenden Anrufe an den Kunden weiterleiten. Für die erfolgreiche Unterstützung von "SIP" muss mittels NAT-Firewall eine "Deep Packet Inspection" durchführen und die eingebettete IP-Adress- und Portinformationen bei der Weiterleitung via Firewall transformieren können. Genau hier setzt der "SIP ALG" an und übernimmt diese Arbeit in verschiedenen Bereichen. Dies bedeutet, dass er die SIP und SDP Informationen analysiert, passt die Pakete an (zBsp. für NAT), schützt das Protokoll auf DoS sowie IPS Ebene usw. Bei einigen SIP-Implementierungen, welche von Hersteller zu Hersteller verschieden sein können, kann es zu Problemen kommen. Das heisst, dass zBsp. weil über SIP Befehle gesendet wird diese durch den "SIP ALG" nicht erkannt werden. Diese Befehle - da nicht erkannt - werden als "unknown" eingestuft und entsprechend geblockt. Um dies zu verhindern kann diese spezifische Funktion zu Erkennung der Befehle, resp. die SIP Funktion deaktiviert werden damit "unknown" nicht geblockt wird. Wie hier aufgezeigt ist "SIP" resp. "VoIP" eine komplexe Materie und es existieren etliche verschiedenen Provider mit eigenen Implementierungen usw. Security-Technisch gesehen ist/wäre es sinnvoll den "SIP ALG" anhand eines "VoIP Profiles" zu benutzen. Dies ist jedoch höchst anspruchsvoll und komplex. Aus diesem Grund empfehlen wir die Funktion des "SIP Session Helpers" auf einer FortiGate in normaler Umgebungen zu löschen/deaktivieren und die Funktion des "SIP ALG" nicht zu benutzen. Der "SIP Session Helper" gelöscht/ deaktiviert, resp. "SIP ALG" disabled wird, kann hier entnommen werden:

Vorbereitung:

  • SIP-Server Konfiguration anpassen (falls NAT verwendet wird)
  -> Wenn der SIP-Verkehr beim Durchlaufen der FortiGate genatted ist, muss der SIP-Server so konfiguriert werden, dass seine öffentliche IP-Adresse im Application Header verwendet wird. Alle anderen VoIP-Geräte müssen ebenfalls mit ihrer öffentlichen IP-Adresse auf den SIP-Server verweisen.
  • öffnen der Firewall-Regeln auf der FortiGate
  -> Firewall-Richtlinien müssen jetzt ausdrücklich zugelassen werden, dass alle UDP-Ports für den Audio-Verkehr geöffnet werden können (und nicht nur die SIP- oder SCCP-Control-Ports).

Session Helper entfernen:

Folgenden Befehl unter system session-helper ausführen:

     #config system session-helper
     show

Unter den angezeigten Einstellungen befindet sich eine, die dem folgenden Beispiel ähnelt:

#edit 13
       set name sip
       set protocol 17
       set port 5060
     next

Hier ist Eintrag 13 welcher auf den SIP-Verkehr verweist und den UDP-Port 5060 für die Signalisierung verwendet. In diesem Beispiel würden die nächsten Befehle zum entfernen des entsprechenden Eintrags wie folgt lauten:

    #delete 13
    end

Wichtig: Es ist nicht zwingend erforderlich, dass der SIP-Eintrag 13 ist. Es ist somit zu prüfen welcher Eintrag die SIP-Helper-Einstellungen hat.

Anpassen des default -voip -alg-mode (standardmässig ist dieser auf proxy-based eingestellt):

Folgende Befehle müssen ausgeführt werden (gültig ab OS 6.2.2):

 #config system settings
         set default-voip-alg-mode kernel-helper-based
         set sip-expectation disable
         set sip-nat-trace disable
       end



Nichts desto trotz nachfolgend einige Hinweise auf was geachtet werden muss wenn zwar der "SIP Session Helper" gelöscht wird, jedoch dennoch der "SIP ALG" anhand eines "VoIP Profiles" benutzt wird:
Deaktiviere "unknown" SIP-Befehle

      #config voip profile
      #edit [Name des VoIP Profiles]
      #config sip 
      #set block-unknown disable
      #end
      

Deaktiviere NAT-Funktion innerhalb SIP

      #config voip profile
      #edit [Name des VoIP Profiles]
      #config sip 
      #set nat-trace disable
      #end

Aktiviere NAT-Register Funktion innerhalb SIP

      #config voip profile
      #edit [Name des VoIP Profiles]
      #config sip 
      #set register-contact-trace enable
      #end

Nachfolgend eine Liste aller CLI-Befehle welche für VoIP-Profile aufgerufen werden kann:


'''config voip profile''' 
Description: Configure VoIP profiles

edit <name> 
set comment {var-string}
          config sip
              Description: SIP.
              set status [disable|enable]
              set rtp [disable|enable]
              set nat-port-range {user}
              set open-register-pinhole [disable|enable]
              set open-contact-pinhole [disable|enable]
              set strict-register [disable|enable]
              set register-rate {integer}
              set invite-rate {integer}
              set max-dialogs {integer}
              set max-line-length {integer}
              set block-long-lines [disable|enable]
              set block-unknown [disable|enable]
              set call-keepalive {integer}
              set block-ack [disable|enable]
              set block-bye [disable|enable]
              set block-cancel [disable|enable]
              set block-info [disable|enable]
              set block-invite [disable|enable]
              set block-message [disable|enable]
              set block-notify [disable|enable]
              set block-options [disable|enable]
              set block-prack [disable|enable]
              set block-publish [disable|enable]
              set block-refer [disable|enable]
              set block-register [disable|enable]
              set block-subscribe [disable|enable]
              set block-update [disable|enable]
              set register-contact-trace [disable|enable]
              set open-via-pinhole [disable|enable]
              set open-record-route-pinhole [disable|enable]
              set rfc2543-branch [disable|enable]
              set log-violations [disable|enable]
              set log-call-summary [disable|enable]
              set nat-trace [disable|enable]
              set subscribe-rate {integer}
              set message-rate {integer}
              set notify-rate {integer}
              set refer-rate {integer}
              set update-rate {integer}
              set options-rate {integer}
              set ack-rate {integer}
              set prack-rate {integer}
              set info-rate {integer}
              set publish-rate {integer}
              set bye-rate {integer}
              set cancel-rate {integer}
              set preserve-override [disable|enable]
              set no-sdp-fixup [disable|enable]
              set contact-fixup [disable|enable]
              set max-idle-dialogs {integer}
              set block-geo-red-options [disable|enable]
              set hosted-nat-traversal [disable|enable]
              set hnt-restrict-source-ip [disable|enable]
              set max-body-length {integer}
              set unknown-header [discard|pass|...]
              set malformed-request-line [discard|pass|...]
              set malformed-header-via [discard|pass|...]
              set malformed-header-from [discard|pass|...]
              set malformed-header-to [discard|pass|...]
              set malformed-header-call-id [discard|pass|...]
              set malformed-header-cseq [discard|pass|...]
              set malformed-header-rack [discard|pass|...]
              set malformed-header-rseq [discard|pass|...]
              set malformed-header-contact [discard|pass|...]
              set malformed-header-record-route [discard|pass|...]
              set malformed-header-route [discard|pass|...]
              set malformed-header-expires [discard|pass|...]
              set malformed-header-content-type [discard|pass|...]
              set malformed-header-content-length [discard|pass|...]
              set malformed-header-max-forwards [discard|pass|...]
              set malformed-header-allow [discard|pass|...]
              set malformed-header-p-asserted-identity [discard|pass|...]
              set malformed-header-sdp-v [discard|pass|...]
              set malformed-header-sdp-o [discard|pass|...]
              set malformed-header-sdp-s [discard|pass|...]
              set malformed-header-sdp-i [discard|pass|...]
              set malformed-header-sdp-c [discard|pass|...]
              set malformed-header-sdp-b [discard|pass|...]
              set malformed-header-sdp-z [discard|pass|...]
              set malformed-header-sdp-k [discard|pass|...]
              set malformed-header-sdp-a [discard|pass|...]
              set malformed-header-sdp-t [discard|pass|...]
              set malformed-header-sdp-r [discard|pass|...]
              set malformed-header-sdp-m [discard|pass|...]
              set provisional-invite-expiry-time {integer}
              set ips-rtp [disable|enable]
              set ssl-mode [off|full]
              set ssl-send-empty-frags [enable|disable]
              set ssl-client-renegotiation [allow|deny|...]
              set ssl-algorithm [high|medium|...]
              set ssl-pfs [require|deny|...]
              set ssl-min-version [ssl-3.0|tls-1.0|...]
              set ssl-max-version [ssl-3.0|tls-1.0|...]
              set ssl-client-certificate {string}
              set ssl-server-certificate {string}
              set ssl-auth-client {string}
              set ssl-auth-server {string}
          end
          config sccp
              Description: SCCP.
              set status [disable|enable]
              set block-mcast [disable|enable]
              set verify-header [disable|enable]
              set log-call-summary [disable|enable]
              set log-violations [disable|enable]
              set max-calls {integer}
          end
      next
  end

Was ist zu beachten, wenn SIP (VoIP) über eine Fortigate implementiert wird?

FortiOS 64.svg FortiOS 62.svg FortiOS 60.svg

Wenn SIP resp. VoIP über eine FortiGate unter FortiOS 6.2 implementiert/ konfiguriert wird ist folgendes wichtig:
Im FortiOS gibt es zwei Funktionen welche den SIP Traffic manipulieren.

  1. Session Helper
  2. ALG (Application Layer Gateway)

Diese zwei Funktionen werden über eine globale Einstellung / Konfiguration gesteuert:

Config cli.png Konfiguration über die CLI:
# config system settings
# set default-voip-alg-mode [proxy-based | kernel-helper-based]
# end
Tipp.png

Die Optionen "proxy-based" und/oder "kernel-helper-based" haben folgende Bedeutung:

  • proxy-based = Default VoIP ALG is "proxy-based" (SIP ALG läuft im User Space)
  • kernel-helper-based = Default VoIP ALG is "kernel-helper-based" (SIP Helper läuft im Kernel Mode)

Somit wird durch folgende Konfiguration entweder der "ALG" oder der "Session Helper"
als Standard aktiviert:

  • proxy-based = ALG
  • kernel-helper-based = Session Helper

Um den "ALG" somit als Standard zu aktivieren, und den "Session Helper" zu deaktivieren, muss folgendes konfiguriert werden:

Config cli.png Konfiguration über die CLI:

Session Helper als Standard konfigurieren:

config system settings
set default-voip-alg-mode kernel-helper-based
end

Den Session Helper löschen:

      
# show system session-helper | grep sip -f

Durch den grep Befehl und den Parameter -f wird uns nur der Session-Helper angezeigt, welcher SIP enthält. In unserem Fall hat dieser die ID 12

   
config system session-helper
    edit 12
        set name sip <---
        set protocol 17
        set port 5060
    next
end  

Den gefundenen "Integer" - in unserem Beispiel die zwölf(12):

config system session-helper
delete [INTEGER_WERT --> in unserem Fall 12]
end
config system session-helper
delete 12
end

Deaktivieren der globalen "sip"-Funktionen:

       
config system settings
      set default-voip-alg-mode kernel-helper-based
      set sip-expectation disable
      set sip-nat-trace disable
end       

Damit die Konfiguration aktiviert wird muss ein Neustart des Devices durchgeführt werden:

      
execute reboot

Danach wird SIP resp. VoIP nicht mehr durch die FortiGate speziell über den "ALG" oder den "Session Helper" verarbeitet da der "Session Helper" nicht mehr existiert und der "ALG" nur dann genutzt wird, wenn auf einer Firewall Policy ein "VoIP Profile" konfiguriert wurde. Aus diesem Grund sollte darauf geachtet werden, dass "kein" VoIP Profile auf einer entsprechenden Firewall Policy Rule konfiguriert wurde. Nur so ist gewährleistet, dass die FortiGate betreffend SIP resp. VoIP den Traffic normal verarbeitet ohne in den SIP / VoIP Traffic einzugreifen. Wenn dennoch ein "VoIP Profile" benutzt wird sollte man sich der Problematik bewusst sein und folgenden Artikel berücksichtigen:

 https://fortinet.also.ch/wiki/index.php?title=FortiGate:FAQ#SIP_.2F_VoIP  -> 65.1 Was im FortiOS als "SIP ALG" zu verstehen und soll ich diese Funktion benutzen?

Ausgehend davon, dass SIP (VoIP) nicht benutzt wird, respektive die Konfiguration zur Nichtbenutzung korrekt durchgeführt wurde, kann mit nachfolgenden Befehlen dies bestätigt werden. Die Befehle können durchgeführt werden um festzustellen ob der "Session Helper" und / oder der "ALG" für SIP (VoIP) benutzt werden. Wurde die Konfiguration korrekt durchgeführt, bestätigen diese Kommandos dass SIP (VoIP) weder über den "Session Helper" noch über den "ALG" verarbeitet werden da die "counter" im Output für diese Kommandos auf Null stehen. Damit diese Überprüfung korrekt durchgeführt werden kann, muss dementsprechend SIP (VoIP) Traffic durchgeführt werden:
SIP Session Helper

Config cli.png Konfiguration über die CLI:
       
# diagnose sys sip status
       dialogs: max=131072, used=0
       mappings: used=0
       dialog hash by ID: size=8192, used=0, depth=0
       dialog hash by RTP: size=8192, used=0, depth=0
       mapping hash: size=8192, used=0, depth=0
       count0: 0
       count1: 0
       count2: 0
       count3: 0
       count4: 0

SIP ALG

       
# diagnose sys sip-proxy stats
       sip stats
       
       vdom name: root
       ---------------------------
            active-sessions: 0
            calls-attempted: 0
            calls-established: 0
            calls-failed: 0
       
            calls-active: 0
            registers-active: 0

                     |     received  |     blocked   |  unknown form |  long headers
            req-type |    req    resp|    req    resp|    req    resp|    req    resp
            UNKNOWN         0       0       0       0       0       0       0       0
            ACK             0       0       0       0       0       0       0       0
            BYE             0       0       0       0       0       0       0       0
            CANCEL          0       0       0       0       0       0       0       0
            INFO            0       0       0       0       0       0       0       0
            INVITE          0       0       0       0       0       0       0       0
            MESSAGE         0       0       0       0       0       0       0       0
            NOTIFY          0       0       0       0       0       0       0       0
            OPTIONS         0       0       0       0       0       0       0       0
            PRACK           0       0       0       0       0       0       0       0
            PUBLISH         0       0       0       0       0       0       0       0
            REFER           0       0       0       0       0       0       0       0
            REGISTER        0       0       0       0       0       0       0       0
            SUBSCRIBE       0       0       0       0       0       0       0       0
            UPDATE          0       0       0       0       0       0       0       0
            PING            0       0       0       0       0       0       0       0
            YAHOOREF        0       0       0       0       0       0       0       0 

Wie konfiguriere ich ein VoIP Profile und was bedeuten die entsprechenden Parameter?

FortiOS 64.svg FortiOS 62.svg FortiOS 60.svg

Bevor ein "VoIP Profile" konfiguriert wird unter FortiOS 6.2 sollte man sich der Problematik bewusst sein dh. dazu sollte folgende zwei Artikel konsultiert werden:

https://fortinet.also.ch/wiki/index.php?title=FortiGate:FAQ#SIP_.2F_VoIP
65.1 - Was ist unter «SIP ALG» zu verstehen und soll ich diese Funktion benutzen?
65.2 - Was ist unter zu beachten wenn SIP (VoIP) über eine Fortigate implementiert wird?

Wenn ein "VoIP Profile" konfiguriert werden möchte muss das entsprechende Feature resp. Menü auf dem Mgmt.-Web Interface aktiviert werden.

Config webgui.png Konfiguration über das WebGui:

Über das Menu:System -> Feature Visibility kann das VoIP Feature eingeschaltet werden:

Fortinet-3002.jpg
Config cli.png Konfiguration über die CLI:
config system settings
set gui-voip-profile [enable|disable]
end
Config webgui.png Konfiguration über das WebGui:

Sobald die Funktion aktiviert ist, erscheint unter "Security Profiles" -> "VoIP" der entsprechende Punkt:

Fortinet-3003.jpg

WICHTIG: Wenn sich nur eine limitierte Anzahl Verbindungen registrieren dürfen, so kann bei «REGISTER» die gewünschte Anzahl eingetragen werden. Wird der Wert auf 0 (null = default) belassen, so können sich unbeschränkte Anzahl Verbindungen registrieren. Das Gleiche gilt für die Anzahl der «INVITE».


Fortinet-3006.jpg

Die Positionen "REGISTER" und "INVITE" geben an wie viele Requests per Second und Policy über SIP akzeptiert werden.

  • "REGISTER" ist der Wert der Verbindungen darstellt welche benützt werden um Geräte am Controller anzumelden.
  • "INVITE" stellt den Wert des effektiven Call dar.
  • "SCCP" steht für das proprietäre CISCO Protokoll und wird nur im Zusammenhang mit diesem benutzt.

Dies bedeutet, wenn der Wert 100 gesetzt wird so können sich über das entsprechende konfigurierte "VoIP Profile" das für eine Firewall Policy konfiguriert wurde nicht mehr als zBsp. 100 Devices am Controller registrieren (REGISTER). Wenn "INVITE" auf 100 gesetzt wird, können sich über die entsprechende Policy nicht mehr als 100 Anrufe (INVITE) durchgeführt werden.


Nachdem ein entsprechendes "VoIP Profile" konfiguriert wurde, kann dieses in einer entsprechenden Firewall Policy eingebunden werden:

Fortinet-3004.jpg      
Tipp.png

Vorsicht bei der Implementierung, dass für "outgoing" sowie "incoming" ein korrektes NAT (Network Address Translation) für den VoIP-Traffic konfiguriert wird!

Config cli.png Konfiguration über die CLI:

Auf der CLI stehen für das "VoIP Profile" unzählige Optionen zur Verfügung:

# config voip profile
# edit [Name des entsprechenden Profil]
# set comment [Gebe einen entsprechenden Kommentar an]
# config sip
# set status [disable | enable]
# set rtp [disable | enable]
# set open-register-pinhole [disable | enable]
# set open-contact-pinhole [disable | enable]
# set strict-register [disable | enable]
# set register-rate [Integer]
# set invite-rate [Integer]
# set max-dialogs [Integer]
# set max-line-length [Integer]
# set block-long-lines [disable | enable]
# set block-unknown [disable | enable]
# set call-keepalive [Integer]
# set block-ack [disable | enable]
# set block-bye [disable | enable]
# set block-cancel [disable | enable]
# set block-info [disable | enable]
# set block-invite [disable | enable]
# set block-message [disable | enable]
# set block-notify [disable | enable]
# set block-options [disable | enable]
# set block-prack [disable | enable]
# set block-publish [disable | enable]
# set block-refer [disable | enable]
# set block-register [disable | enable]
# set block-subscribe [disable | enable]
# set block-update [disable | enable]
# set register-contact-trace [disable | enable]
# set open-via-pinhole [disable | enable]
# set open-record-route-pinhole [disable | enable]
# set rfc2543-branch [disable | enable]
# set log-violations [disable | enable]
# set log-call-summary [disable | enable]
# set nat-trace [disable | enable]
# set subscribe-rate [Integer]
# set message-rate [Integer]
# set notify-rate [Integer]
# set refer-rate [Integer]
# set update-rate [Integer]
# set options-rate [Integer]
# set ack-rate [Integer]
# set prack-rate [Integer]
# set info-rate [Integer]
# set publish-rate [Integer]
# set bye-rate [Integer]
# set cancel-rate [Integer]
# set preserve-override [disable | enable]
# set no-sdp-fixup [disable | enable]
# set contact-fixup [disable | enable]
# set max-idle-dialogs [Integer]
# set block-geo-red-options [disable | enable]
# set hosted-nat-traversal [disable | enable]
# set hnt-restrict-source-ip [disable | enable]
# set max-body-length [Integer]
# set unknown-header [discard | pass | respond]
# set malformed-request-line [discard | pass | respond]
# set malformed-header-via [discard | pass | respond]
# set malformed-header-from [discard | pass | respond]
# set malformed-header-to [discard | pass | respond]
# set malformed-header-call-id [discard | pass | respond]
# set malformed-header-cseq [discard | pass | respond]
# set malformed-header-rack [discard | pass | respond]
# set malformed-header-rseq [discard | pass | respond]
# set malformed-header-contact [discard | pass | respond]
# set malformed-header-record-route [discard | pass | respond]
# set malformed-header-route [discard | pass | respond]
# set malformed-header-expires [discard | pass | respond]
# set malformed-header-content-type [discard | pass | respond]
# set malformed-header-content-length [discard | pass | respond]
# set malformed-header-max-forwards [discard | pass | respond]
# set malformed-header-allow [discard | pass | respond]
# set malformed-header-p-asserted-identity [discard | pass | respond]
# set malformed-header-sdp-v [discard | pass | respond]
# set malformed-header-sdp-o [discard | pass | respond]
# set malformed-header-sdp-s [discard | pass | respond]
# set malformed-header-sdp-i [discard | pass | respond]
# set malformed-header-sdp-c [discard | pass | respond]
# set malformed-header-sdp-b [discard | pass | respond]
# set malformed-header-sdp-z [discard | pass | respond]
# set malformed-header-sdp-k [discard | pass | respond]
# set malformed-header-sdp-a [discard | pass | respond]
# set malformed-header-sdp-t [discard | pass | respond]
# set malformed-header-sdp-r [discard | pass | respond]
# set malformed-header-sdp-m [discard | pass | respond]
# set provisional-invite-expiry-time [Integer]
# set ips-rtp [disable | enable]
# set ssl-mode [off | full]
# set ssl-send-empty-frags [enable | disable]
# set ssl-client-renegotiation [allow | deny | secure]
# set ssl-algorithm [high | medium | low]
# set ssl-pfs [require | deny | allow]
# set ssl-min-version [ssl-3.0 | tls-1.0 | tls-1.1 | tls-1.2]
# set ssl-max-version [ssl-3.0 | tls-1.0 | tls-1.1 | tls-1.2]
# set ssl-client-certificate [string]
# set ssl-server-certificate [string]
# set ssl-server-certificate [string]
# set ssl-auth-client [string]
# set ssl-auth-server [string]
# end
# config sccp
# set status [disable | enable]
# set block-mcast [disable | enable]
# set verify-header [disable | enable]
# set log-call-summary [disable | enable]
# set log-violations [disable | enable]
# set max-calls [Integer]
# end
# end

Weitere Informationen welche Option welche Funktion besitzt kann dem nachfolgendem Link entnommen werden:

      https://docs.fortinet.com/document/fortigate/6.2.1/cli-reference/449620

Ebenso sind diverse VoIP spezifische CLI-Befehle ersichtlich:

      https://docs.fortinet.com/document/fortigate/6.2.1/cli-reference/424620/voip-profile

Wie kann man auf der FortiGate ein Debug für VoIP durchführen?

FortiOS 64.svg FortiOS 62.svg FortiOS 60.svg

Ausgehend davon, dass der SIP-Helper und / oder SIP ALG benutzt wird, kann mit nachfolgenden Kommandos ein Debug für SIP ausgeführt werden:

  1. Konfiguriere "putty" für ein logging dh., alle Informationen werden in ein Log aufgezeichnet (Category > Session > Logging > All session output)
  2. Erstelle eine SSH Verbindung zur FortiGate
  3. Führe ein Login durch und gebe folgendes ein:
Config cli.png Konfiguration über die CLI:

Alle Debug Filter zurücksetzen:

# diagnose debug reset

Einen Filter für die SIP Applikation setzen:

# diagnose debug application sip -1

Den Debug Modus aktiveren (Output an die Console senden):

# diagnose debug enable

Bei der Konfiguration des Debug
Levels für "diagnose debug application sip" wird dem Debug mit "-1" angewiesen den tiefsten Debug Level zu setzen. Wenn ein dedizierter Debug Level gesetzt werden soll stehen folgende Debug Level zur Verfügung:

       1     Configuration changes, mainly addition/deletion/modification of virtual domains
       2     TCP connection accepts or connects, redirect creation
       4     Create or delete a session
       16    Any IO read or write
       32    An ASCII dump of all data read or written
       64    Include HEX dump in the above output
       128   Any activity related to the use of the FortiCarrier dynamic profile feature to determine the correct profile-group to use
       256   Log summary of interesting fields in a SIP call
       1024  Any activity related to SIP geo-redundancy
       2048  Any activity related to HA syncing of SIP calls

Zusätzlich gibt es die Möglichkeit zum Debug Filter ein "log-filter" für den SIP ALG zu setzen welcher, sofern gesetzt, für das Kommando "diagnose debug application sip" angewendet:

       # diagnose sys sip-proxy log-filter ?
       list            Display the current filter
       clear           Clear the current filter
       vd              Index of virtual domain. -1 matches all
       src-addr4       IPv4 source address range to filter by
       dst-addr4       IPv4 destination address range to filter by
       src-addr6       IPv6 source address range to filter by
       dst-addr6       IPv6 destination address range to filter by
       src-port        Source port to filter by
       dst-port        Destination port to filter by
       policy          Policy to filter by
       policy-type     Policy-type to filter by
       voip-profile    VoIP profile to filter by
       negate          Negate the specified filter parameter 

Ein Filter wird anhand der zur Verfügung stehenden Filter Parameter gesetzt.
Beispiel:

# diagnose sys sip-proxy log-filter src-addr4 198.18.0.60 255.255.255.255

Ein gesetzter Filter kann zur Kontrolle anhand «list» aufgeführt werden:

# diagnose sys sip-proxy log-filter list

Um den gesamten Filter zurück zu setzen führe folgendes aus:

# diagnose sys sip-proxy log-filter clear

Nachdem das Troubleshooting erfolgreich durchgeführt wurde setze alle Filter zurück und deaktiviere den Debug Modus:

# diagnose debug disable
# diagnose debug reset

Was ist ein Session Helper mit “Pinhole” und wie kann dies konfiguriert werden?

FortiOS 64.svg FortiOS 62.svg FortiOS 60.svg

Funktion:
In diesem Beispiel wird die Adresse des Medienempfängers im SIP-SDP-Payload an die genattete IP-Adresse angepasst.

Fortinet-3001.jpg

Wichtig zu berücksichtigen:
Es muss beachtet werden dass ein Pinhole geöffnet wird und die Firewallregel zustandsabhängig sind. Nur so kann die Rückmeldung / Antwortverkehr ermöglicht werden. Dies ist auch zu berücksichtigen wenn nicht explizit eine Firewallregel erstellt wurde um den eingehenden Datenverkehr zuzulassen, da dieses Konzept auch bei einigen anderen Protokollen verwendet wird (zBsp. NAT-T für IPsec).

Config cli.png Konfiguration über die CLI:
config voip profile
    edit "voip-profile-name"
        config sip
            set strict-register [enable|disable]
            ...
        end
    next
end

NTP

Wie kann ich einen beliebigen Zeitserver auf der FortiGate konfigurieren?

FortiOS 64.svg FortiOS 62.svg FortiOS 60.svg

Der Zeitserver auf einer FortiGate ist eine globale Einstellung. Dieser Punkt ist zu berücksichtigen, wenn auf der FortiGate mit VDOMs gearbeitet wird. Die Zeit-Einstellungen sind somit im GLOBAL zu finden.

Die Zeitzone wird folgendermassen konfiguriert:

Config webgui.png Konfiguration über das WebGui:
  1. Den Menupunkt System -> Settings anwählen
  2. Im Bereich Time Zone den Pfeil anwählen und die gewünschte Zeitzone auswählen.
Fortinet-6000.jpg
Konfiguration über die CLI:
# config system global
# set timezone <ZEITZONEN_INDEX>
# end

BEISPIEL Zeitzone 26 (GMT+1:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna setzen.

# config system global
# set timezone 26
# end

Wie kann der gewünschte Zeitzonen Index ermittelt werden?

Config cli.png Konfiguration über die CLI:
# config system global
# set timezone ? --> Erzeugt eine Liste mit allen Zeitzonen Codes:
01    (GMT-11:00) Midway Island, Samoa
02    (GMT-10:00) Hawaii
.
.
.
26    (GMT+1:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna
.
.
86    (GMT+13:00) Samoa
76    (GMT+14:00) Kiritimati

Alle Zeitzonen Codes findest du hier (Mit der Tastenkombination ctrl + linksklick öffnest du ein seperates Fenster

Ein eigener Zeitserver kann auf der FortiGate nur über die CLI konfiguriert werden:

Config cli.png Konfiguration über die CLI:
# config system ntp
# set ntpsync enable
# set type custom
# set syncinterval 360
# config ntpserver
# edit 1
# set server "<NTP-SERVER-NAME oder IP>"
# next
# edit 2  --> so kann ein zweiter NTP Server konfiguriert werden
# set server "<NTP-SERVER2-NAME oder IP>"
# next
# end
# end

BEISPIEL:NTP Server Konfiguration mit ch.pool.ntp.org

# config system ntp
# set ntpsync enable
# set type custom
# set syncinterval 360
# config ntpserver
# edit 1
# set server "ch.pool.ntp.org"
# next
# end
# end

edit 05.07.2022 - 4tinu

Wie kann ich den NTP-Dienst auf einem Interface aktivieren?

FortiOS 6x.svg FortiOS 7x.svg

Wenn ich möchte, dass der System NTP Server auf einem Interface aktiviert ist, damit dieser als dhcp Parameter an die Clients propagiert werden kann, muss man diesen in den System Einstellungen aktivieren:

Config webgui.png Konfiguration über das WebGui:
  1. System -> Settings im Bereich System Time
  2. Setup device as local NTP server anwählen
  3. Listen on Interfaces in dieses Feld klicken
  4. vom Seitenmenu können die gewünschten Interfaces ausgewählt werden
  5. mit Apply wird die Konfiguration aktiv
Fortinet-6001.jpg
Konfiguration über die CLI:
# config system ntp
# set server-mode enable
# set interface "<INTERFACE1> <INTERFACE2> ... <INTERFACEn>"
# end

BEISPIEL Wir konfigurieren das Interface internal1 und internal2 als NTP Server:

# config system ntp
# set server-mode enable
# set interface "internal1 internal2"
# end

DHCP Option für NTP Server konfigurieren. Die restlichen DHCP Optionen sind bereits konfiguriert.

Config webgui.png Konfiguration über das WebGui:

Einrichten des Zeitservers beim DHCP Server:

  1. Auf dem Interface, auf welchem der DHCP Serverdienst läuft in die DHCP Optionen gehen
  2. Bei den DHCP Optionen die Checkbox "Advanced" anwählen
  3. Mode auf server stellen
  4. NTP Server Specify setzen
  5. Die Interface IP Adresse im Feld angeben
  6. Die Zeitzone als "Same as System" übernehmen
Fortinet-6002.jpg
Konfiguration über die CLI:
# config system dhcp server
# edit <INTIGER> 
# set timezone-option default
# set ntp-server1 <INTERFACE IP ADRESSE>
# next
# end

BEISPIEL: Wir konfigurieren den NTP Server mit der IP Adresse 192.168.1.99 (IP Adresse vom Interface)

# config system dhcp server
# edit 1
# set timezone-option default
# set ntp-server1 192.168.1.99
# next
# end

Wireless-Controller

Wo finde ich Informationen betreffend FortiGate Wireless-Controller und Forti Access Points?

Nachfolgender Artikel gibt Auskunft über die verschiedenen Konfigurationen und den Betrieb von Forti Access Points im Zusammenhang mit dem FortiGate Wireless Controller:

       FortiAP:FAQ

Wie konfiguriere ich einen Remote Access Point mit Split Tunnel?

Vorbemerkungen:
Ziel dieser Anleitung ist es, mit einem FortiAP-24D a eine gesicherte Remoteverbindung von einem Aussenstandort zu einem Hauptstandort zu erstellen. Es handelt sich hier um ein typisches Szenario, welches eingesetzt werden soll, um kleine Aussenstandorte oder HomeOffice Mitarbeiter anzubinden. Die Dokumentation wurde mit einem AP24d erstellt. Es eignen sich aber grundsätzlich auch folgende Access Points um ein solches Szenario zu etablieren:

  • FAP-11C
  • FAP-14C
  • FAP-21D
  • FAP-24D
  • FAP-25D
  • FAP-28C

Ausgangslage:

Zielarchitektur Verwendete Geräte

Fortinet-2225.png

  • Fortigate 60E Beta3
  • FortiAP-24D

Vorbedingungen:

  • Die Firewall im Main Office ist korrekt konfiguriert, so dass Clients im LAN über den WAN Anschluss ins Internet kommen.
  • Die Firewall im Main Office wird direkt und ohne weitere Router mit einer public IP vom Provider von der WAN Seite verbunden.
  • Der FortiAP befindet sich auf Werkseinstellungen, kriegt via DHCP am WAN Port eine IP, einen gültigen Default Gatway, sowie einen gültigen DNS Server.
  • Der FortiAP ist in der Lage über den am Ort vorhandenen Internetanschluss mindestens über die Ports 53TCP/UDP, 443TCP, 5246/UDP, 5247/UDP ins Internet zu kommunizieren.

Konfigurationsschritte
1. Einschalten von CAPWAP auf WAN Interface

Fortinet-2226.png

Die Verwaltung der Access Points über die Fortigate geschieht mit dem Protokoll CAPWAP. Damit die Fortigate Firewall Access Points über das WAN Interface verwalten kann, muss auf diesem Interface CAPWAP aktiviert werden.

2. Erstellen der SSID

Fortinet-2227.png

Unter Wifi & Switch Controller -> SSID -> + Create New wird eine neue SSID erstellt. Dabei müssen die gelb markierten Parameter konfiguriert werden. Damit später das Splitt-Tunneling funktioneirt ist es insbesondere sehr wichtig, dass der Defaultgateway der IP der Fortigate auf diesem Interface entspricht. Die anderen Parameter wie Name, SSID, Security Mode, IP Range etc. können nach gutdünken angepasst werden.

Nachdem diese SSID konfiguriert wurde, muss ein zusätzlicher Parameter wie folgt auf der CLI konfiguriert werden:

# config wireless-controller vap
# edit [Name of SSID Profil]
# set split-tunneling enable
# end

3. Erstellen FortiAP Profil

Fortinet-2229.png

Unter Wifi & Switch Controller -> FortiAP Profiles -> + Create New wird ein neues FortiAP Profil erstellt. Dabei müssen die gelb markierten Parameter konfiguriert werden. Inbesondere wichtig ist hier, dass der korrekte AP Typ (AP-24d in diesem Fall) gewählt wird, und dass die zuvor erstellte SSID gewählt wird.

Verfügt der Access Point zusätzlich über LAN Ports, so kann definiert werden, welches Netz an diesen LAN Ports ausgegeben werden soll. Es kann entweder das Netz am Remotestandort ausgegeben werden (Bridge to WAN) oder auch mittels NAT gearbeitet werden. Wird gewünscht dass hier das selbe Netz wie bei der SSID verwendet werden kann, so muss dies ebenfalls mittels "Bridge to SSID" und wahl des entsprechenden Netzes hinterlegt werden.

Nachdem das FortiAP Profile konfiguriert wurde, können über die CLI zusätzlich die Netze konfiguriert werden, welche eben nicht über den VPN Tunnel gehen sollen, sondern lokal ausgekoppelt werden sollen. Im obenstehenden Beispiel wäre dies das Netz 192.168.1.0/24 welches sich hinter dem Swisscom Router befindet. Somit hat ein Gerät hinter dem FortiAP folgende Kommunikationsmöglichkeiten:

  • Zugriff via CAPWAP-Tunnel auf interne Ressourcen des Hauptstandortes
  • Zugriff via CAPWAP-Tunnel über den Hauptstandort auf Ressourcen aus dem Internet
  • Zugriff auf Ressourcen aus dem lokalen Netz am Aussenstandort


# config wireless-controller wtp-profile
# set split-tunneling-acl-local-ap-subnet enable
# config split-tunneling-acl
# edit [Use a integer example "1"]
# set dest-ip [IPv4 address as 192.168.1.0/24]
# end

Wird gewünscht, dass nur gewisse Netze an den Hauptstandort geroutet werden sollen, und alles andere (inklusive Internetverkehr) lokal ausgekoppelt werden soll, so muss mit einer umgekehrten Maskierung gearbeitet werden, und hier in der Konfiguration alle Netze angegeben werden, welche nicht durch den Tunnel sollen.

Der hier konfigurierte CAPWAP Tunnel wird ausserdem standardmässig nicht mit DTLS verschlüsselt. Dies muss ebenfalls in der CLI konfiguriert werden:

# config wireless-controller wtp-profile
# edit [Name des entsprechenden Profils]
# set dtls-policy dtls-enabled
# end

Der durch die DTLS Verschlüsselung anfallende Overhead beträgt je nach AccessPoint ca. 20%.

4. Vorprovisionieren des AP

Fortinet-2230.png

Unter Wifi & Switch Controller -> Managed FortiAPs -> + Create New kann nun der zu verbindende Accesspoint vorkonfiguriert werden. Wichtig hierbei ist die korrekte Seriennummer, sowie das entsprechende vorgängig erstellte FortiAP Profil. Hat sich der Access Point bereits bei der Fortigate gemeldet, so sieht man dies anhand der IP unter der Kategorie Managed AP Status.

5. Erstellen der Firewall Policy
Damit der Datenverkehr zwischen dem AP und dem Internet, sowie zwischen dem AP und den internen Ressourcen gewährleistet werden kann, benötigt es auch entsprechende Firewall Regeln:
Fortinet-2228.png

6. Definieren der Management IP auf dem AP
Damit der AP nun den Weg zu seinem Controller findet, wenn er das erste Mal am Remote Standort eingesteckt wird, müssen wir ihm hierfür die IP konfigurieren. Dies geschieht auf dem Accesspoint direkt. Ein nicht konfigurierter Accesspoint hat standardmässig die IP 192.168.1.2 auf dem WAN Port. Auf diese kann man sich mittels Telnet verbinden, um die entsprechende Konfiguration vorzunehmen. Ein Zugriff auf den Access Point ist allenfalls auch via USB und FortiExplorer möglich. (Siehe FortiExplorer Handbuch)

	C:\Users\huberch>telnet 192.168.1.2
	FAP24D3X15001883 # login: admin
	FAP24D3X15001883 # cfg -a AC_IPADDR_1=172.20.120.142
	FAP24D3X15001883 # cfg -c
	FAP24D3X15001883 # exit

7. Verbinden
Nachdem der Access Point mit dem Internet verbunden wurde, wird er innerhalb von 3 - 5 Minuten eine Verbindung zu seinem Fortigate Controller aufnehmen. Dies kann im GUI überprüft werden:
Fortinet-2231.png

Quellen und weiterführende Informationen:

Was kann ich tun, wenn nach dem Upgrade der FortiGate auf 6.4.3 das WLAN nicht mehr funktioniert?

Es kann vorkommen, dass wen man die FortiGate auf das FortiOS 6.4.3 upgradet, dass sein WLAN mit den FortiAPs nicht mehr funktioniert. Die Clients bekommen eine IP Adresse und die Kommunikation scheint soweit zu funktionieren. Der Client selber kommt aber über das WiFi nicht ins Internet. Dieser Effekt tritt auf, wenn die FortiAP im Tunnel Modus an der FortiGate angebunden sind.

Folgende zwei Lösungsansätze können für dieses Problem Abhilfe geben: 1.) dtls-policy = dtls-enable

# config wireless-controller wtp-profile
# edit "[FortiAP_Profil_Name]"
# set dtls-policy dtls-enabled
# set dtls-in-kernel disable|enable
# end

2.) Offloading des Wirelesstraffics deaktivieren:

#config system npu    
#set capwap-offload disable  
#end 

VDOM

Was ist eine VDOM?

FortiOS 6x.svg FortiOS 7x.svg

Wenn man ein Netzwerk nicht nur segmentieren, sondern Firewallregeln und Administratoren in mehrere Sicherheitsdomänen unterteilen möchte?
Ist dies der Fall, können auf der FortiGate VDOMs aktiviert werden. Diese VDOMs teilen die FortiGate in mehrere logischen Geräte auf. Jede VDOM verfügt über unabhängige Sicherheitsregeln und Routing-Tabellen. Ausserdem kann standardmässig der Datenverkehr von einer VDOM nicht in eine anderes VDOM geleitet werden. Das bedeutet, dass zwei Interface in verschiedenen VDOMs die gleiche IP-Adresse haben können. Adresse teilen, ohne dass es zu Problemen mit überlappenden Subnetzen kommt. Wenn man VDOMs verwenden, wird ein einzelnes FortiGate-Gerät zu einem virtuellen Rechenzentrum für Netzwerksicherheit, UTM Inspektion und sicheren Kommunikationsgeräten.

Wie konfiguriere ich eine VDOM?

FortiOS 6x.svg FortiOS 7x.svg

VDOM müssen auf der CLI zuerst aktiviert werden, bevor die FortiGate im VDOM Modus ist.

Config cli.png Konfiguration über die CLI:
config system global
set vdom-mode [multi-vdom | no-vdom]
end

Beispiel:

config system global
set vdom-mode multi-vdom
end

You will be logged out for the operation to take effect.
Do you want to continue? (y/n)

Man wird kurz von der FortiGate ausgelogt und muss sich neu einloggen.

Config webgui.png Konfiguration über das WebGui:
Fortinet-3180.jpg

Nachdem der VDOM Modus auf der FortiGate aktiviert wurde, ist ein neues Menu freigeschalten worden:

  1. Unter System -> VDOM kann in das VDOM Fenster navigiert werden.
  2. Mit Create New kann eine neue VDOM erstellt werden. Dabei ist das Kontigent ohne Lizenzerweiterung normalerweise auf 10 Stück limitiert.
Fortinet-3181.jpg
  1. Name der VDOM definieren
  2. Typ der VDOM definieren (traffic oder Admin)
  3. den NGFW Modus kann hier definiert werden (default Profile-based)
  4. das Centrale SNAT Feature kann hier direkt für diese VDOM aktiviert werden, falls bedarf
  5. Die WiFi Region kann auch per VDOM definiert werden
  6. Kommentare schaffen Klarheit für weitere Administratoren
  7. ab FortiOS 7.2 kann beim Workflow Managment per VDOM das Feature Policy Change summary defniert werden. Weiter kann man auch die Gültigkeit der Policy definieren für diese VDOM
  • Mit OK wird die VDOM erstellt

add 28.06.2022 - 4tinu

Was ist eine Admin VDOM?

FortiOS 72.svg

Eine Admin Vdom ist eien VDOM welche für das Management zuständig ist. In dieser VDOM gibt es nur eine Netzwerkanbindung und es gibt keine Verbindung ins Internet. Diese VDOM ist dafür designt, dass man ein sauberes Management Netz aufbauen kann.

Ab FortiOS 7.2 kann dieses Feature verwendet werden. Zwischen FortiOS 6.2 - 7.0 gab es die Möglichkeit einen Split VDOM Modus zu konfigurieren, dabei gab es eine Admin VDOM und eine Traffic VDOM. Seit 7.2 wurde dies optimiert, so dass es mehrere Traffic VDOMs geben kann, aber nur eine Admin VDOM.

Config webgui.png Konfiguration über das WebGui:
Fortinet-3175.jpg

Um eine Admin Vdom im FortiOS 7.2 zu definieren, muss eine VDOM bereits eingerichtet worden sein.
Wie eine VDOM eingerichtet wird, kann in diesem Artikel entnommen werden.
Danach kann man folgendermassen vorgehen:

  1. Über das Menu System -> VDOM bekommt man die VDOM Übersicht.
  2. sehen wir die definierten Typen der VDOM. Momentan sind beide als Traffic definiert.
  3. Um den Typ in der fv_mgmt-OOB VDOM zu ändern, diese anwählen.
  4. über den Edit Button kommt man in das entsprechende Menu, um die Parameter in der VDOM zu editieren
Fortinet-3176.jpg
  1. Unter Type kann von Traffic auf Admin gewechselt werden
  2. Kommentare schaffen klarheit für weitere Administratoren
  3. Mit OK die Änderung bestätigen
Fortinet-3177.jpg

Es folgt ein Warnhinweis, dass in einer Admin VDOM Einschränkungen sein werden, wass mit dem Traffic zu tun hat. Diesen mit OK bestätigen.

Fortinet-3178.jpg

Nun sehen wir im Feld Type dass die 'fv_mgmt-OOB Vdom im Typ nicht mehr Traffic sondern Admin hinterlegt hat. Es ist immer nur eine Admin VDOM pro FortiGate möglich.

Fortinet-3179.jpg

Wenn man in die VDOM fv_mgmt-OOB geht, kann man erkennen, dass es nur noch das System, Netzwerk, Security Fabric und Log & Report Menu gibt-

Config cli.png Konfiguration über die CLI:

In der CLI kann man eine Admin VDOM wie folgt erfassen. ACHTUNG beim eingeben des Names genau sein, ansonsten wird eine Neue VDOM mit entsprechendem falsch geschriebenen Namen erstellt.

config vdom 
   edit fv_mgmt-OOB
   config system settings 
   set vdom-type admin
end

Some settings (e.g., firewall policy/object, security profile, wifi/switch controller, user, device, dashboard)
in this VDOM will be deleted.
Do you want to continue? (y/n)y   <-- Die Frage mit y beantworten um die Vdom in eine Admin VDOM umzuwandeln.

add 28.06.2022 - 4tinu

Logs und Reports

Wo wähle ich den Speicherort von Logs auf der FortiGate?

FortiOS 60.svg FortiOS 62.svg FortiOS 64.svg

Methode 1: Lokales Speichern auf FortiGate-Disk

Config webgui.png Konfiguration über das WebGui:
  1. Log & Report -> Log Settings
Fortinet-3068.jpg

Die Option Enable Historical FortiView ermöglicht es, dass Logs auch zu älteren Events aufrufbar sind.


Methode 2: Externes Speichern auf FortiAnalyzer, FortiManager, Syslog etc.

Config webgui.png Konfiguration über das WebGui:
  1. Log & Report -> Log Settings
Fortinet-3069.jpg

Wo wähle ich aus, welche Arten von Logs gespeichert werden?

FortiOS 60.svg FortiOS 62.svg FortiOS 64.svg

Logs können in zwei Kategorien unterteilt werden: Event Traffic Logs und Local Traffic Logs

Event Traffic Logs:
- Fokus auf Systemänderungen/-eingriffe durch Administratoren, FortiGate-Aktionen die nicht auf Policies basieren
- Beispiele: Konfigurationen, Anmeldungen, Protokollierungen

Local Traffic Logs:
- Standardmässig nicht aktiviert aufgrund hoher Log-Quantität
- Basierend auf Traffic, welcher von der FortiGate ausgeht, oder Richtung FortiGate verläuft

Config webgui.png Konfiguration über das WebGui:
  1. Log & Report -> Log Settings
Fortinet-3070.jpg

Die Option Resolve Hostnames ermöglicht es, dass IP-Adressen in einfachere Host-Adressen umbenannt werden. Falls der entsprechende DNS-Server eine lange Reaktionszeit hat, kann das Aufrufen von Logs ebenfalls verlangsamt werden.

Wie aktiviere ich Logging in der Firewall Policy?

Sobald man Logging-Grundeinstellungen vorgenommen hat, benötigt es eine entsprechende Aktivierung innerhalb der Policy.

Wichtig ist, dass mindestens ein Security Profile (i.e. AntiVirus, Web Filter, DNS Filter, Application Control etc.) innerhalb der Policy aktiv ist, damit für die Policy der gewünschte Log generiert wird.

Die Option Log Allowed Traffic muss zwingend aktiviert werden, um Log-Generierung zu ermöglichen. Sobald aktivert, kann zusätzlich folgendes ausgewählt werden:

Security Events: Logs werden "nur" für Security Events generiert.
All Sessions: Logs werden alle Sessions generiert.

Config webgui.png Konfiguration über das WebGui:
  1. Policy & Objects -> Firewall Policy
Fortinet-3071.jpg


In der CLI sind noch folgende, empfehlenswerte Optionen/Einstellungen möglich:

Config cli.png Konfiguration über die CLI:
Testen, ob Generierung von Logs funktioniert:
  
   # diagnose log test           

Anonymisieren von User-Namen innerhalb Logs:
   
   # config log setting          
       set user-anonymize enable
     end


Speichern aller Logs auf FTP, TFTP, oder USB als LZ4-File:
   
   # excecute backup disk allogs [ftp|tftp|usb]         

Speichern ausgewählter Logs auf FTP, TFTP, oder USB als LZ4-File:
   
   # excecute backup disk log [ftp|tftp|usb] <log_type> 

Wie kann ich Bedrohungen für Logs/Reports klassifizieren bzw. gewichten?

FortiOS 60.svg FortiOS 62.svg FortiOS 64.svg

Untern anderem für Applikations-Kontrollen, Web-Kategorien, oder IPS-Signaturen können Bedrohungen gewichtet werden mittels Punktesystem.

Standardeinstellungen:

  • Low = 5
  • Medium = 10
  • High = 30
  • Critical = 50

Diese Werte können gemäss individuellen Präferenzen geändert werden.

Wichtig: Gewichtung ist nur für (interne) Informationszwecke, d.h. es werden keine Aktionen für FortiGate konfiguriert.

Config webgui.png Konfiguration über das WebGui:
  1. Über das Menu Log & Report --> Threat Weight
Fortinet-3072.jpg

Wie aktiviere ich Reliable Logging?

FortiOS 60.svg FortiOS 62.svg FortiOS 64.svg

Aktivierung von Reliable Logging führt zum Wechsel des Transportprotokolls beim Transfer der Logs von FortiGate zu FortiAnalyzer oder Syslog. Das Transportprotokoll wechselt von UDP zu TCP. TCP hat folgende Vorteile:

  • Reihenfolge der Daten bleibt unverändert
  • Bestätigung im Fall eines erfolgreichen Transfers
  • Verwendung von SYN, SYN-ACK, ACK handshake

Wählt man FortiAnalyzer als Option für Remote Logging im GUI, dann wird Reliable Logging automatisch aktiviert. Im CLI muss Reliable Logging mit folgendem Befehl aktiviert werden:

Config cli.png Konfiguration über die CLI:
 # config log fortianalyzer setting 
      set reliable [enable/disable]

Wählt man Syslog als Option für Remote Logging, ist im CLI folgender Befehl nötig:

Config cli.png Konfiguration über die CLI:
 # config log syslogd setting 
      set mode udp | reliable | legacy-reliable   
 
(Hinweis: Bei legacy-reliable wird Port 601 als Standard festgelegt)

Wählt man FortiCloud als Option für Remote Logging, ist TCP bereits festgelegt.

Wie aktiviere ich OFTPS um Log-Transfers zu verschlüsseln?

Bei aktiviertem Reliable Logging kann der Transfer der Logs von FortiGate zu FortiAnalyzer zusätzlich verschlüsselt werden, durch Verwendung von OFTP (SSL-verschlüsselt). Dies ist zu empfehlen, wenn der Transfer in einem unsicheren Netzwerk stattfindet.

Folgender Befehl im CLI inklusive Konfiguration des enc-algorithm und Aktivierung des Reliable Logging:

Config cli.png Konfiguration über die CLI:
   config log fortianalyzer setting
         enc-algorithm [high-medium | high | low]
         set reliable enable 
   end

Wie muss eine Fortigate konfiguriert werden, damit sie zu Analysezwecken auf ein Kiwi Syslog loggt?

Einleitung:
Die folgende Anleitung wird dann relevant, wenn von einer Fortigate Firewall auf einen Syslogserver geloggt werden muss, ohne dass auf FortiCloud zurückgegriffen werden kann (wenn beispielsweise kein Internetzugriff existiert). Kiwi Syslog ist ein kostenfreier Basic-Syslogserver, welcher unter Windows installiert werden kann.

Konfiguration Fortigate:
Damit die Fortigate Firewall möglichst viel Logs auf den Syslogserver schreiben kann, müssen einige Einstellungen vorgenommen werden:

Config cli.png Konfiguration über die CLI:
config log memory setting
	set status enable
end

config log null-device setting
	set status enable
end

config log gui-display
	set resolve-hosts enable
	set resolve-apps enable
end

config log setting
	set fwpolicy-implicit-log enable
	set local-in-allow enable
	set local-in-deny-unicast enable
	set local-in-deny-broadcast enable
	set local-out enable
	set log-invalid-packet enable
end

Mit folgender Einstellung wird der Firewall mitgeteilt, wo der Syslogserver steht, an welchen die Logs gesendet werden sollen:

Config cli.png Konfiguration über die CLI:
config log syslogd setting
	set status enable
	set server "ip-des-syslog-servers"
end

Die Firewall sendet nun die Syslogs der hier konfigurierten IP via 514 UDP.

Damit allenfalls auch erlaubter Traffic geloggt wird, muss das Logging pro gewünschte Firewallregel eingeschaltet werden:

Config cli.png Konfiguration über die CLI:
config firewall policy
	edit 1
	set logtraffic all
end


Konfiguration Kiwi Syslog Server
Der Installer für den Kiwi Syslogserver kann hier oder hier: Datei:Kiwi-Syslog-Server-9.6.3-Freeware.zip heruntergeladen werden.

Nach der Installation des Tools muss folgender Parameter unter dem Menüpunkt Setup angepasst, und die IP des lokalen Adapters angewählt werden, auf dem die Logs empfangen werden:

Fortinet-2246.png

Sobald diese Einstellung gespeichert wurde, kommen die Logs im Kiwi Syslog Programm an.

Fortinet-2247.png

Wie sehe ich CLI-Befehle in den System Event Logs?

FortiOS 70.svg

Die CLI-Funktion cli-audit-log ermöglicht es, dass zusätzliche CLI-Befehle innerhalb der System Event Logs sichtbar sind -> neu sind show-, get-, und diagnose-Befehle inkludiert, zusätzlich zu execute und config. Die CLI-Audit-Log-Funktion wird folgendermassen aktiviert:

Config cli.png Konfiguration über die CLI:
 # config system global
      set cli-audit-log [enable/disable]
   end

Nach Aktivierung, können die gewünschten System Event Logs generiert und analysiert werden - Beispiele:

# execute log filter category 1 (1 = event)
# execute log display 
1: date=2021-04-14 time=14:44:11 eventtime=1618404251380006191 tz="+0200" logid="0100044548" type="event" subtype="system" level="information" vd="root" logdesc="Action performed" user="admin" ui="ssh(198.18.10.1)" action="Show" msg="show system global"
2: date=2021-04-14 time=14:44:28 eventtime=1618404269064238424 tz="+0200" logid="0100044548" type="event" subtype="system" level="information" vd="root" logdesc="Action performed" user="admin" ui="ssh(198.18.10.1)" action="Get" msg="get sys status"
3: date=2021-04-14 time=14:44:34 eventtime=1618403855135580384 tz="+0200" logid="0100044548" type="event" subtype="system" level="information" vd="root" logdesc="Action performed" user="admin" ui="ssh(198.18.10.1)" action="Diagnose" msg="diagnose log test"

Debuggen im WebGui

Wie benutze ich diagnose debug flow im Webgui?

FortiOS 72.svg
Das diagnose debug flow Kommando kennen wir bis zum FortiOS 7.2 hauptsächlich aus der CLI. Mit dieser Methode ist es uns möglich, das Pakett über die ganze FortiGate zu beobachten und können so Rückschlüsse ziehen, wie der Traffic durch die verschiedenen Module "fliesst"
Im FortiOS 7.2.0 ist nun das Kommando in das WebGui implementiert worden. Was bringt das für einen Vorteil?
Schauen wir uns das ganze einmal an:

  • Mein Windowsclient hat die IP Adresse 10.8.1.200
  • Ich rufe die Seite https://www.fwluzern.ch im Browser auf
  • fwluzern.ch -> 185.125.165.128

In der CLI setze ich den Filter folgendermassen:

 
# diagnose debug flow filter dadd 185.125.165.128
# diagnose debug flow filter sadd 10.8.1.200
# diagnose debug flow filter port 443
Config cli.png Konfiguration über die CLI:

 
# diagnose debug flow filter clear
# diagnose debug flow filter dadd 185.125.165.128
# diagnose debug flow filter sadd 10.8.1.200
# diagnose debug flow filter port 443
# diagnose debug flow trace start 100
# diagnose debug enable

id=65308 trace_id=557 func=print_pkt_detail line=5895 msg="vd-root:0 received a packet(proto=6, 10.8.1.200:52975->185.125.165.128:443) tun_id=0.0.0.0 from port3. flag [S], seq 1712664019, ack 0, win 64240"
id=65308 trace_id=557 func=init_ip_session_common line=6076 msg="allocate a new session-0003f81d, tun_id=0.0.0.0"
id=65308 trace_id=557 func=vf_ip_route_input_common line=2605 msg="find a route: flag=04000000 gw-146.4.73.65 via port4"
id=65308 trace_id=557 func=get_new_addr line=1228 msg="find SNAT: IP-146.4.73.74(from IPPOOL), port-52975"
id=65308 trace_id=557 func=fw_forward_handler line=903 msg="Allowed by Policy-3: SNAT"
id=65308 trace_id=557 func=ids_receive line=417 msg="send to ips"
id=65308 trace_id=557 func=__ip_session_run_tuple line=3502 msg="SNAT 10.8.1.200->146.4.73.74:52975"
id=65308 trace_id=558 func=print_pkt_detail line=5895 msg="vd-root:0 received a packet(proto=6, 10.8.1.200:52972->185.125.165.128:443) tun_id=0.0.0.0 from port3. flag [.], seq 4291329045, ack 2440827630, win 1026"
id=65308 trace_id=558 func=resolve_ip_tuple_fast line=5983 msg="Find an existing session, id-0003f818, original direction"
id=65308 trace_id=558 func=npu_handle_session44 line=1173 msg="Trying to offloading session from port3 to port4, skb.npu_flag=00000400 ses.state=00000204 ses.npu_state=0x00001108"
id=65308 trace_id=558 func=fw_forward_dirty_handler line=414 msg="state=00000204, state2=00000001, npu_state=00001108"
id=65308 trace_id=558 func=__ip_session_run_tuple line=3502 msg="SNAT 10.8.1.200->146.4.73.74:52972"
id=65308 trace_id=559 func=print_pkt_detail line=5895 msg="vd-root:0 received a packet(proto=6, 10.8.1.200:52975->185.125.165.128:443) tun_id=0.0.0.0 from port3. flag [.], seq 1712664020, ack 2091693566, win 1026"
id=65308 trace_id=559 func=resolve_ip_tuple_fast line=5983 msg="Find an existing session, id-0003f81d, original direction"
id=65308 trace_id=559 func=npu_handle_session44 line=1173 msg="Trying to offloading session from port3 to port4, skb.npu_flag=00000400 ses.state=00002204 ses.npu_state=0x00001108"
id=65308 trace_id=559 func=fw_forward_dirty_handler line=414 msg="state=00002204, state2=00000001, npu_state=00001108"
id=65308 trace_id=559 func=ids_receive line=417 msg="send to ips"
id=65308 trace_id=559 func=__ip_session_run_tuple line=3502 msg="SNAT 10.8.1.200->146.4.73.74:52975"
id=65308 trace_id=560 func=print_pkt_detail line=5895 msg="vd-root:0 received a packet(proto=6, 10.8.1.200:52975->185.125.165.128:443) tun_id=0.0.0.0 from port3. flag [.], seq 1712664020, ack 2091693566, win 1026"
id=65308 trace_id=560 func=resolve_ip_tuple_fast line=5983 msg="Find an existing session, id-0003f81d, original direction"
id=65308 trace_id=560 func=npu_handle_session44 line=1173 msg="Trying to offloading session from port3 to port4, skb.npu_flag=00000400 ses.state=00002204 ses.npu_state=0x00001108"
id=65308 trace_id=560 func=fw_forward_dirty_handler line=414 msg="state=00002204, state2=00000001, npu_state=00001108"
id=65308 trace_id=560 func=ids_receive line=417 msg="send to ips"
id=65308 trace_id=561 func=print_pkt_detail line=5895 msg="vd-root:0 received a packet(proto=6, 10.8.1.200:52975->185.125.165.128:443) tun_id=0.0.0.0 from port3. flag [.], seq 1712664537, ack 2091697662, win 1026"
id=65308 trace_id=561 func=resolve_ip_tuple_fast line=5983 msg="Find an existing session, id-0003f81d, original direction"
id=65308 trace_id=561 func=npu_handle_session44 line=1173 msg="Trying to offloading session from port3 to port4, skb.npu_flag=00000400 ses.state=00000204 ses.npu_state=0x00001108"
id=65308 trace_id=561 func=fw_forward_dirty_handler line=414 msg="state=00000204, state2=00000001, npu_state=00001108"
id=65308 trace_id=561 func=__ip_session_run_tuple line=3502 msg="SNAT 10.8.1.200->146.4.73.74:52975"
id=65308 trace_id=562 func=print_pkt_detail line=5895 msg="vd-root:0 received a packet(proto=6, 10.8.1.200:52975->185.125.165.128:443) tun_id=0.0.0.0 from port3. flag [.], seq 1712664537, ack 2091698145, win 1024"
id=65308 trace_id=562 func=resolve_ip_tuple_fast line=5983 msg="Find an existing session, id-0003f81d, original direction"
id=65308 trace_id=562 func=npu_handle_session44 line=1173 msg="Trying to offloading session from port3 to port4, skb.npu_flag=00000400 ses.state=00000204 ses.npu_state=0x00001108"
id=65308 trace_id=562 func=fw_forward_dirty_handler line=414 msg="state=00000204, state2=00000001, npu_state=00001108"
id=65308 trace_id=562 func=__ip_session_run_tuple line=3502 msg="SNAT 10.8.1.200->146.4.73.74:52975"
diagnose debug disable

Sieht einfach ein wenig unübersichtlich aus und wir verlieren uns gerne darin. Wenn wir das jetzt im WebGui ansehen werden wir sicher positiv überrascht sein:

Config webgui.png Konfiguration über das WebGui:
Fortinet-3157.jpg
  1. Über Network -> Diagnostics können die Analysetools aufgerufen werden
  2. Für den Flow aufzuzeichen Debug Flow auswäheln
Fortinet-3158.jpg
  1. Die Anzahl Pakette können definiert werden, welche aufgezeichnet werden können (max 1000)
  2. Um eine bestimmte Situation auzuzeichnen kann ein Filter defniert werden. Dabei gibt es den Basic Filter, welcher rudimentär eine IP Adresse oder ein Service Port oder Protokoll defniert werden kann.
  3. Im Advanced Filter besteht die Möglichkeit ein wenig genauer die Session zu definieren welche aufgezeichnet werden muss.
  4. Mit dem Button Start debug flow wird die Aufzeichnung gestartet (Analog diagnose debug flow trace start )
Fortinet-3159.jpg

Um die Aufzeichnung zu stoppen und den Output zu sehen den Button Stop debug flow anwählen

Fortinet-3160.jpg

Wir sehen jetzt den ganzen Output, welcher aufgezeichnet wurde. Der Vorteil ist, dass wir die einzelnen Packete einzel ein und ausklappen können und so viel Übersichtlicher die Daten anschauen können. Es gibt die Möglichkeit über den Button Save as CSV die Daten in ein CSV File abzuspeichern. Dieses File kann dann zur Aufbereitung in das Exel importiert werden und so für eine Externe Partei vorbereitet werden zur analyse.

Somit würde ich meinen, ist diese Umsetzung im Webgui eine Erleichterung beim Traffic Debuggen. Natürlich kann weiterhin auch über die CLI mit diagnose debug flow arbeiten, im Webgui hat man ein wenig mehr die Übersicht über die ganze Situation.


Man wird auf dem Webgui noch darauf aufmerksam gemacht, dass nicht alles ersichtlich ist, wenn das offloading in der Firewall Regel aktiviert ist (default mässig ist die Funktion aktiv)

Fortinet-3161.jpg

Um sicher zu sein, dass man alles sieht, sollte für das Troubleshooting das Offloading kurz deaktiviert werden.
Dies kann folgendermassen vorgenommen werden:

Config cli.png Konfiguration über die CLI:
config firewall policy
edit [POLICY_ID]
set auto-asic-offload [enable|disable]  <-- disable zum deaktivieren
end

Beispiel Firewallregel Policy mit ID 3

config firewall policy
   edit 3
       set name "O_vl2080-internet-webservices"
       set srcintf "port3"
       set dstintf "port4"
       set action accept
       set srcaddr "net_ulan_vl2080-10.8.1.0-24"
       set dstaddr "all"
       set schedule "always"
       set service "HTTP" "HTTPS"
       set utm-status enable
       set ssl-ssh-profile "certificate-inspection"
       set av-profile "default"
       set webfilter-profile "wf_t-s-flow"
       set logtraffic all
       set auto-asic-offload disable
       set nat enable
   next
end

Nach dem debuggen das Offloading wieder aktivieren!

config firewall policy
edit [POLICY_ID]
set auto-asic-offload enable  <-- enable zum aktivieren
end

add 22.06.2022 - 4tinu

Wie kann ich IP Pakete im WebGui aufzeichnen? (Packet Capture)

FortiOS 64.svg FortiOS 70.svg FortiOS 72.svg
Es ist möglich, dass wir Pakete auf der FortiGate im WebGui sniffen können.
Dabei unterscheidet sich die FortiOS 6.4/7.0 und FortiOS 7.2 Version ein wenig voneinander. Ich werde in diesem Artikel aufzeigen, wie man Pakete sniffen kann und was die Unterschiede der FortiOS Versionen sind.

FortiOS 64.svg FortiOS 70.svg Im FortiOS 6.4 und 7.0:

Config webgui.png Konfiguration über das WebGui:
Fortinet-3162.jpg
  1. Unter Dashboard -> Network -> acket Capture kann ein neuer Filter definiert werden. Falls kein Filter gesetzt ist, wird direkt das Capture Filter Fenster angezeigt, ansonsten mit Create New einen neuen definieren.
  2. Bei Interface kann das zu sniffende Interface definiert werden. (any für alle Interfaces)
  3. die maximale Anzahl Pakete definieren, welche aufgezeichnet werden können
  4. Die Filter Option aktivieren und entsprechende Filter (Host, Ports VLANs oder Protokolle) zur Einschränkung der Suche definieren
  • Mit OK ist der Filter dann definiert
Fortinet-3163.jpg

In der Übersicht findet man jetzt alle definierten Filter

  1. Hier können neue Filter hinzugefügt werden oder ediert, gelöscht und geklont werden
  2. Im Status Feld, kann erkennt werden ob momentan eine Aufzeichung am laufen ist.
  3. Die Aufzeichnung kann mit rechts Klick auf den Filter im Untermenu Start begonnen werden
Fortinet-3164.jpg
  • Im Status sehen wir dass der Sniffer jetzt am laufen ist (Running)
Fortinet-3165.jpg
  • Das Menu wieder mit rechts Klick aufrufen und mit Stop die Aufzeichnung stoppen. Wenn die Anzahl Pakete welche definiert wurden erreicht wurde, stoppt es automatisch
Fortinet-3166.jpg
  • Mit Download kann das pcap File heruntergeladen werden
Fortinet-3167.jpg
  • Nun kann die Datei im Wireshart zur analyse angeschaut werden

FortiOS 72.svg Im FortiOS 7.2:

Im FortiOS 7.2 gab es Verbesserungen für das Troubleshooting über das Webgui. Die Packet Capture Funktion wurde in ein anderes Menu verschoben und ein wenig optimiert und praktischer gestaltet. Das File muss nicht weiterhin heruntergeladen werden und im Wireshark analyisiert werden. Neu hat man die Möglichkeit dies gleich im Webgui anzuschauen.

Config webgui.png Konfiguration über das WebGui:
Fortinet-3168.jpg
  1. Über das Menu Network -> Diagnostics ruft man die Diagnostik Seite auf, auf welcher Packet Capture oder das Debug Flow durchgeführt werden kann
  2. für den Packetsniffer muss Packet Capture ausgewählt werden
  3. Beim Interface kann das zu sniffende Interface definiert werden (any für alle)
  4. Bei Maximum captured packets wird die Anzahl Pakete definiert, welche aufgezeichnet werden.
  5. Die Filter Optionen einschalten
Fortinet-3169.jpg   
  1. wenn die Filter Option aktiv ist können die Werte definiert werden
  2. Es kann zwischen Basic' und Advanced Filter ausgewählt werden.
  3. Die Aufzeichung kann mit Start capture aktiviert werden
Fortinet-3173.jpg
  • Im Advanced Filter können wir den Filter wie auf der CLI setzen mit den bekannten Operatoren. Mehr informationen zum Syntax findest du im Sniffer Packet Guide Sniffer Packet Guide
Fortinet-3170.jpg
  • sobald wir die Aufzeichnung gestartet haben, wehen wir in der Timeline eine Kurfe, welche uns anzeigt, wieviele Pakete pro Sekunde aufgezeichnet werden
  • mit Stop Capture wird die Aufzeichung gestoppt.
  • Mit dem Button Save as pcap kann auch die pcap Datei heruntergeladen werden um sich das ganze noch genauer im Wireshark anzuschauen.
Fortinet-3171.jpg
  • Wir können auf die verschiedenen Pakete navigieren und unter Headers sehen wir die Header Informationen wie IP Adressen und Layer 4 Informationen
Fortinet-3172.jpg
  • Wir können die Packet Daten anschauen im Menu Packet Data
Fortinet-3174.jpg
  • Ganz praktisch ist die Funktion das schon benutze Filter (egal ob Basic oder Advanced) auf der Seite aufgelistet werden und so jederzeit wieder verwendet werden können

Wie auch beim debug Flow wird man im FortiOS 7.2 darauf aufmerksam gemacht, dass wen das offloading in der Firewallregel aktiv ist, es sein kann, dass man nicht allen Traffic sieht.

Fortinet-3161.jpg

Um sicher zu sein, dass man alles sieht, sollte für das Troubleshooting das Offloading kurz deaktiviert werden.
Dies kann folgendermassen vorgenommen werden:

Config cli.png Konfiguration über die CLI:
config firewall policy
edit [POLICY_ID]
set auto-asic-offload [enable|disable]  <-- disable zum deaktivieren
end

Nach dem debuggen das Offloading wieder aktivieren!

config firewall policy
edit [POLICY_ID]
set auto-asic-offload enable  <-- enable zum aktivieren
end

add 22.06.2022 - 4tinu

ZTNA

Was ist Zero Trust Access Network (ZTNA)?

FortiOS 70.svg

ZTNA ist ein Feature, welches auf FortiGate, FortiGateVM, FortiClient, und FortiSASE einsetzbar ist. ZTNA wird primär verwendet, um die Sicherheit des VPN Netzwerks und dessen Applikationen zu erhöhen:

- Automatisch verschlüsselte Tunnels ermöglichen mehr Sicherheit bei Remote-Verbindungen 
- Geringerer Angriffsvektor: Applikationen sind durch Application Proxy versteckt/geschützt, und sind nur Usern
zugänglich, welche die Applikationen tatsächlich benötigen
- User und Endpoints werden im Rahmen jeder neu-gestarteten Session identifiziert/verifiziert

Voraussetzung ist, dass Endpoints einen FortiClient ZTNA Agent installiert haben, welcher die Identifizierung/Verifizierung vornimmt, und den verschlüsselten Tunnel zwischen Endpoint und FortiOS Proxy aufbaut. Statt einen VPN Tunnel zu initiieren, müssen User lediglich die gewünschte Netzwerk-Ressource bzw. -Applikation aufrufen/starten. Anschliessend erhalten User (wiederholt) die Aufforderung, den Usernamen, das Passwort und, im Fall von MFA, den Passcode einzugeben.


Wie wird das ZTNA Feature Lizenziert?

FortiOS 70.svg

Hat man beispielsweise FortiGate im Einsatz, dann braucht man zusätzlich eine kostenpflichtige FortiClient-Lizenz; auf der kostenlosen FortiClient-Version funktioniert das Feature nicht. Es ist in allen, derzeitigen FortiClient-Versionen bzw. -Leveln (auch: à la carte) inkludiert:

Fortinet-3036.jpg
Wichtig.svg

ZTNA-Feature verlangt mindestens FortiOS 7.0 und FortiClient 7.0.