FortiGate:FAQ: Unterschied zwischen den Versionen
Zeile 6.228: | Zeile 6.228: | ||
SD-WAN Orchestration kann mit der FG90D aktuell nicht genutzt werden, da dieses Modell aktuell noch nicht unterstützt wird: | 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 | https://docs.fortinet.com/document/fortimanager/6.4.1/sd-wan-orchestrator-release-notes/798783/supported-fortigate-models | ||
Zeile 6.259: | Zeile 6.261: | ||
In unserem Beispiel sieht das Objekt folgendermassen aus: | In unserem Beispiel sieht das Objekt folgendermassen aus: | ||
Name : net_VoIP-CLIENTs | Name : net_VoIP-CLIENTs | ||
Color : 5 (irgend so ein Rosarot) --> Gemäss | Color : 5 (irgend so ein Rosarot) --> Gemäss interner Abklärungen es ist '''Lachsfarbig''' | ||
Type : Subnet | Type : Subnet | ||
IP : 10.180.253.0/24 | IP : 10.180.253.0/24 | ||
Zeile 6.287: | Zeile 6.289: | ||
</pre> | </pre> | ||
|} | |} | ||
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 | |||
{| class="wikitable" style="width:850px" | |||
|- style="background:#89E871" | |||
| [[file:config_webgui.png|25px|link=]] '''Konfiguration über das WebGui:''' | |||
|- | |||
| | |||
Menu: ''Policy & Objects -> Firewall Policy -> Create New : | |||
[[Datei:Fortinet-3283.jpg|350px|link=]] | |||
# ''Incoming Interface'' ist das Interface, hinter welchem die VoIP Clients an die FortiGate angeschlossen sind. In diesem Beispiel das ''internal1'' Interface | |||
# ''Outgoing Interface'' ist die SD-WAN Zone (in diesem Beispiel ''ext-ISP-Internet'') | |||
# ''Source'' ist das ''net_VoIP-CLIENTs'' Adressobjekt | |||
# ''Destination'' das Adressobjekt ''all'' auswählen | |||
# ''Service'' benutzen wir das Objekt ''ALL'' | |||
# ''Action'' wird auf ''Deny'' (ist ein Silent Drop) konfiguriert | |||
# Damti wir im Trafficlog entsprechende Einträge sehen, die ''Log Violation Traffic'' Option aktivieren | |||
# Kommentare erleichtern später das Troubleshooting und das Auditieren. | |||
# 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 | |||
|} | |||
{| class="wikitable" style="width:850px" | |||
|- style="background:#89E871" | |||
| [[file:config_cli.png|25px|link=]] '''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 | |||
</pre> | |||
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 | |||
|} | |||
{| class="wikitable" style="width:850px" | {| class="wikitable" style="width:850px" |
Version vom 9. Juni 2023, 10:44 Uhr
FortiGate-6.0, FortiGate-6.2,FortiGate-6.4, FortiGate-7.0 FortiGate-7.2 FortiGate 7.4:FAQ
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:
- Release Notes 6.0
- Release Notes 6.2
- Release Notes 6.4
- Release Notes 7.0
- Release Notes 7.2
- Release Notes 7.4
- Datei:Security-Fabric-Upgrade-Guide-6.0.0.pdf
- Datei:Security-Fabric-Upgrade-Guide-6.0.1.pdf
- Datei:Security-Fabric-Upgrade-Guide-6.0.2.pdf
- Datei:Security-Fabric-Upgrade-Guide-6.0.3.pdf
- Datei:Security-Fabric-Upgrade-Guide-6.0.4.pdf
- Datei:Security-Fabric-Upgrade-Guide-6.0.13.pdf
- Datei:Security-Fabric-Upgrade-Guide-6.0.15.pdf
- Datei:Security-Fabric-Upgrade-Guide-6.0.16.pdf
- Datei:Fortinet-Recommended-SecurityBestPractices.pdf
- Datei:FortiOS-Software-Platform-Matrix-60.pdf
- Datei:IPS-Application-Control-Signature-Syntax.pdf
- FortiOS 6.0.0 Maximum Values Tabelle
- FortiOS 6.0.1 Maximum Values Tabelle
- FortiOS 6.0.2 Maximum Values Tabelle
- FortiOS 6.0.3 Maximum Values Tabelle
- Datei:FortiOS-FortiAPS-IPS-AV-compatibility.pdf
- Datei:FortiOS-Compatibility-FAZ.pdf
- Datei:FortiOS-Compatibility-FMG.pdf
FortiOS 6.0 Handbook Dokumente
- Datei:FortiGate-Whats-New-60.pdf
- Datei:FortiGate-Handbook-60.pdf
- Datei:FortiGate-Authentication-60.pdf
- Datei:FortiGate-BestPractices-60.pdf
- Datei:FortiGate-FortiView-60.pdf
- Datei:FortiGate-Firewall-60.pdf
- Datei:FortiGate-HA-60.pdf
- Datei:FortiGate-Hardening-60.pdf
- Datei:FortiGate-getting-started-60.pdf
- Datei:FortiGate-IPSec-VPN-60.pdf
- Datei:FortiGate-Life-of-a-Packet.60.pdf
- Datei:FortiGate-Load-Balancing-60.pdf
- Datei:FortiGate-Logging-and-Reporting-60.pdf
- Datei:FortiGate-Managing-Devices-60.pdf
- Datei:FortiGate-Managing-Switch-60.pdf
- Datei:FortiGate-Network-60.pdf
- Datei:FortiGate-Open-Ports-60.pdf
- Datei:FortiGate-Sandbox-Inspection-60.pdf
- Datei:FortiGate-Security-Fabric-60.pdf
- Datei:FortiGate-Security-Profiles-60.pdf
- Datei:FortiGate-SIP-60.pdf
- Datei:FortiGate-SSL-VPN-60.pdf
- Datei:FortiGate-System-Administration-60.pdf
- Datei:FortiGate-Traffic-Shaping-60.pdf
- Datei:FortiGate-Transparent-Mode-60.pdf
- Datei:FortiGate-Troubleshooting-60.pdf
- Datei:FortiGate-VDOMS-60.pdf
- Datei:FortiGate-Virtual-FortiOS-60.pdf
- Datei:FortiGate-Wireless-60.pdf
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:
- Datei:FortiGate-Whats-New-60.pdf EoS
- Datei:FortiGate-Whats-New-62.pdf
- Datei:FortiGate-Whats-New-64.pdf 6.4.12
- Datei:FortiGate-Whats-New-70.pdf 7.0.12
- Datei:FortiGate-Whats-New-72.pdf 7.2.5
- Datei:FortiGate-Whats-New-74.pdf 7.4.0
New Features Guide - SD-WAN mit FortiOS, FortiManager und FortiAnalyzer:
- Datei:FortiGate-Whats-New-SD-WAN-70.pdf
- Datei:FortiGate-Whats-New-SD-WAN-72.pdf
- Datei:FortiGate-Whats-New-SD-WAN-74.pdf
edit 9.06.2023 - 4Tinu
Wo finde ich offizielle Dokumente über die Hardware Acceleration?
In diesen Dokumenten ist beschrieben wie die verschiedenen Prozesse auf der FortiGate funktionieren:
- Datei:FortiGate-Hardware-accel-60.pdf EoS - 6.0.16
- Datei:FortiGate-Hardware-accel-62.pdf 6.2.14
- Datei:FortiGate-Hardware-accel-64.pdf 6.4.12
- Datei:FortiGate-Hardware-accel-70.pdf 7.0.12
- Datei:FortiGate-Hardware-accel-72.pdf 7.2.5
- Datei:FortiGate-Hardware-accel-74.pdf 7.4.0
edit 9.06.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:
- Datei:FortiGate-Handbook-60.pdf EoS
- Datei:FortiGate-Cookbook-62.pdf 6.2.14
- Datei:FortiGate-AdminGuide-64.pdf 6.4.12
- Datei:FortiGate-AdminGuide-70.pdf 7.0.12
- Datei:FortiGate-AdminGuide-72.pdf 7.2.5
- Datei:FortiGate-AdminGuide-74.pdf 7.4.0
3G4G LTE Modem Operator's Manual
edit 9.06.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
- Datei:FortiGate-BestPractices-62.pdf 6.2.13
- Datei:FortiGate-BestPractices-64.pdf
- Datei:FortiGate-BestPractices-70.pdf 7.0.11
- Datei:FortiGate-BestPractices-72.pdf 7.2.5
- Datei:FortiGate-BestPractices-74.pdf 7.4.0
edit 9.06.2023 - 4Tinu
Wo finde ich den Log Referenzguide fuer die FortiGate?
- Datei:FortiOS-Log-Reference-60.pdf EoS - 6.0.16
- Datei:FortiOS-Log-Reference-62.pdf 6.2.14
- Datei:FortiOS-Log-Reference-64.pdf 6.4.12
- Datei:FortiGate-LogMessageReference-70.pdf 7.0.12
- Datei:FortiGate-LogMessageReference-72.pdf 7.2.5
- Datei:FortiGate-LogMessageReference-74.pdf 7.4.0
edit 9.06.2023 - 4Tinu
Wie verarbeitet die FortiGate ein Paket?
In den folgenden Dokumenten wird beschrieben wie der Life of Packet ist:
- Datei:FortiGate-Life-of-a-Packet.60.pdf
- Datei:FortiGate-Life-of-Packet-62.pdf
- Datei:FortiGate-Life-of-Packet-64.pdf
Mehr Informationen im folgenden Wiki Artikel: |
Wo finde ich saemtliche CLI Befehle einer FortiGate?
- Datei:FortiGate-CLI-Ref-60.pdf EoS - 6.0.16
- Datei:FortiGate-CLI-Ref-62.pdf 6.2.11
- Datei:FortiGate-CLI-Ref-64.pdf 6.4.12
- Datei:FortiGate-CLI-Ref-70.pdf 7.0.12
- Datei:FortiGate-CLI-Ref-72.pdf 7.2.5
- Datei:FortiGate-CLI-Ref-74.pdf 7.4.0
edit 9.06.2023 - 4Tinu
Welche RFCs Unterstuetzt meine FortiOS Version?
Die RFCs findet man auf der folgenden Seite (FortiOS 5.0 - 7.2)
Mit der Kombination Shift+Linksklick auf den Link, wird ein seperates Fenster geöffnet
Welches sind die wichtigsten Ports und Protokolle für einen reibungslosen Betrieb?
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:
In den folgenden Dokumenten ist Dokumentiert, wie die FortiGate mit seinen Umsystemen kommuniziert:
- Datei:FortiGate-Open-Ports-60.pdf --> Link auf Docs
- Datei:FortiGate-Open-Ports-62.pdf --> Link auf Docs
- Datei:FortiGate-Open-Ports-64.pdf --> Link auf Docs
- Datei:FortiGate-Open-Ports-70.pdf --> Link auf Docs
- Datei:FortiGate-Open-Ports-72.pdf --> Link auf Docs
- Datei:FortiGate-Open-Ports-74.pdf --> Link auf Docs
edit 9.06.2023 - 4Tinu
Wo finde ich Dokumente über FortiOS Carrier?
- Datei:FortiGate-Carrier-60.pdf EoS
- Datei:FortiOS-Carrier-62.pdf 6.2.14
- Datei:FortiOS-Carrier-64.pdf 6.4.12
- Datei:FortiOS-Carrier-70.pdf 7.0.12
- Datei:FortiOS-Carrier-72.pdf 7.2.4
- Datei:FortiOS-Carrier-74.pdf 7.4.0
edit 9.06.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:
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: |
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
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 |
---|
|
FortiGate Mid Range Devices: Comparison |
---|
|
FortiGate 1000 und 2000 Series: Comparison |
---|
FortiGate 3000 Series: Comparison |
---|
FortiGate 5000: Comparison |
---|
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)?
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
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):
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:
- Datei:Fortinet-Hardware-Airflow.pdf Version Mai 2022
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 9.06.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:
Konfiguration über die CLI: |
# get hardware [cpu | memory | nic | npu | status] |
Somit kann anhand der Optionen folgendes ausgeführt werden:
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 |
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 |
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 |
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 |
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 |
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 |
| |
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 |
| |
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 |
| |
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 |
grün | verbunden |
blinkend grün | senden und empfangen von Daten | |
Off |
Keine Verbindung aktiv | |
Ethernet Port |
grün | verbunden mit 1 Gbps |
orange(Amber) | verbunden mit 100 Mbps | |
Off |
Nicht verbunden oder mit 10 Mbps verbunden.
| |
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:
Anordnung Link Status und Link Speed LED bei FortiGate Modellen mit nach hinten gerichteten Interfaces:
Dokument:
Wie wird ein Hardware Switch auf der FortiGate komplett gelöscht?
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:
Konfiguration über das WebGui: |
|
|
|
|
|
Ü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:
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.
|
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:
|
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 |
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
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:
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:
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:
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:
Legende:
Region | Farbe | Stecker Typ von Fortinet |
EU: U.a. Schweiz, Deutschland, Österreich, Italien, Frankreich | grün | Typ C |
AU: Australien, Neuseeland | blau | Typ I |
UK: England, Schottland, Wales, (Nord-)Irland | violett | Typ G |
US: USA, Kanada | orange | Typ A |
Rest: U.a. Indien, Südafrika | Rot | Kein Fortinet Kabel erhältlich |
- 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:
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!
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:
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 Breackout Cables
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 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:
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 |
---|---|---|---|---|
|
|
|
|
|
Schematic vom SoC3:
Schematic vom SoC4:
SoC Prozessoren Generationen Vergleich:
SoC3 und SoC4 im Vergleich zum NP6:
FortiGuard (FDDS)
Wo finde ich den Service Status der FortiGuard?
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
Wieso bekomme ich im WebGUI von FortiOS 6.4 die Meldung Unable to connect to FortiGuard Servers?
Im WebGUI kann folgende Meldung erscheinen: Unable to connect to FortiGuard Servers
Folgendermassen kann man versuchen diese Meldung zu beheben:
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:
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?
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.
Konfiguration über das WebGui: |
Auf der FortiGate sieht man im Dashboard den Status der FortiGate Cloud:
Nun ist die FortiGate mit der Cloud verbunden und sendet die Logdaten in das angegebene Datencenter |
Wie finde ich die FortiGate in der FortiCloud?
Um sich in der FortiCloud anzumelden gibt es verschiedene Methode.
1 Einloggen über die FortiGate:
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 |
2 Einloggen über die URL:
Mann kann direkt über die URL in die Cloud einloggen:
- Europäsche Cloud : https://europe.forticloud.com
- Globale Cloud : https://login.forticloud.com/
Bei beiden Methoden muss authentifiziert werden:
Nach erfolgreichem anmelden erscheint das Dashboard der Cloud:
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.
5. mit Undeploy kann ich die Verbindung zur FortiCloud unterbrechen und es werden keine Logs mehr empfangen von diesem Gerät
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: |
Referenz: DESCRIPTION FORTISANDBOX CLOUD |
Konfiguration über das WebGui: |
Über das WebGui der FortiGate kann im Dashboard die aktuelle Quote angezeigt werden: (Beispiel hier einer FortiGate 60F): |
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:
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:
- Verbinde den USB-Stick mit der Workstation und verifiziere den zugewiesenen Laufwerksbuchstaben!
- Jetzt eine DOS-Box öffnen (unter Windows 10 = Windows durchsuchen > cmd )
- 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.
Konfiguration über das WebGui: |
|
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 |
USB Stecker Typ C |
LINDY USB Type C Serial Converter |
RS232-to-RJ45 Kabel |
Bei beiden Adaptern wird kein RS232-to-RJ45 Kabel mitgeliefert. Dies kann unter folgender ALSO-Artikel-Nr. bezogen werden: |
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 |
|
Pinbelegung RS232 |
|
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:
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:
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?
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:
Konfiguration über die CLI: |
# config system global # set gui-display-hostname [enable | disable] # end Das Resultat: |
Wie kann ich die update Notification beim einloggen der FortiGate deaktivieren?
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:
Konfiguration über das WebGui: |
Nach dem einloggen auf die FortiGate über das WebGui erscheint zum teil folgende Meldung: |
Konfiguration über die CLI: |
Notification ausschalten: 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: 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?
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.
Konfiguration über die CLI: |
Navigieren über das Menu: System -> Settings -> Administraion Settings:
Nach dem bestätigen wird man aus dem WebGui disconcetet und man muss sich neu folgendermassen einloggen: https://MANAGEMENT-IP:[CUSTOM-PORT] |
Konfiguration über die CLI: |
HTTP-Port anpassen: 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: 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:
Im CLI:
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?
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:
Konfiguration über das WebGui: |
Über das Menu System->Settings zu den View Settings scrollen im Feld Theme das Farbthema auswählen: Hier findet man eine Liste der Möglichen Themen im FortiOS 7.0 und FortiOS 7.2: Neutrino: Mariner: Graphite: Melongene Retro: Eclipse: Onyx: Dark Matter: Jade (default): |
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:
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:
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:
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:
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?
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:
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.
- Putty öffnen
- Tastenkombination ctrl-V und dann ? eingeben
Mit der im WebGui verfügbaren CLI Konsole funktioniert diese Methode nicht! |
Veranschauung:
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?
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:
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:
Konfiguration über das WebGui: |
|
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:
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 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 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 |
Was muss ich beachten wenn ich auf das FortiOS 6.2.2 upgraden will?
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?
"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.
Wie kann ich das gesamte Konfigurationsfile einer FortiGate mit mehreren VDOMs sichern?
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:
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.
Konfiguration über das WebGui: |
Um die ganze Konfiguration mit sämtlichen VDOMs und GLOBALEN Paramenter zu backupen GLOBAL auswählen: 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: |
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:
Die aktuellen Release Notes, welche von Fortinet direkt gepflegt & geupdatet werden sind auf der Docs-Seite aufgeführt:
Das FortiOS 6.0 ist seit 29.09.2022 end of Support. Bitte Update dein System auf eine Supportete Version! |
edit 9.06.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:
Die aktuellen Release Notes, welche von Fortinet direkt gepflegt & geupdatet werden sind auf der https://docs.fortinet.com Seite: aufgeführt:
Das FortiOS 6.2 wird am 28.09.2023 end of Support gehen. Bitte Update dein System auf eine Supportete Version! ( >= 6.4) |
edit 9.06.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:
Die aktuellen Release Notes, welche auch immer gepflegt werden, findet man auf der https://docs.fortinet.com Seite:
edit 9.06.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:
Die aktuellen Release Notes, welche auch immer gepflegt werden, findet man auf der https://docs.fortinet.com Seite:
edit 9.06.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:
Die aktuellen Release Notes, welche auch immer gepflegt werden, findet man auf der https://docs.fortinet.com Seite:
edit 9.06.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 7.4 Release Notes |
Die aktuellen Release Notes, welche auch immer gepflegt werden, findet man auf der https://docs.fortinet.com Seite:
edit 9.06.2023 - 4Tinu
Unterstützt meine FortiGate eine bestimmte FortiOS Version?
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: |
|
FortiGate-WIFI Modelle die 5.4 nicht unterstützen: |
|
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: |
|
FortiGate-WIFI Modelle die 6.0 nicht unterstützen: |
|
Die unten aufgeführten Hardware-Modelle unterstützen die FortiOS-Version 6.2 nicht:
FortiGate Modelle die 6.2 nicht unterstützen: |
|
FortiGate-WIFI Modelle die 6.2 nicht unterstützen: |
|
FortiGate Rugged Modelle die 6.2 nicht unterstützen: |
|
Die unten aufgeführten Hardware-Modelle unterstützen die FortiOS-Version 6.4 nicht:
FortiGate Modelle die 6.4 nicht unterstützen: |
|
FortiGate-WIFI Modelle die 6.4 nicht unterstützen: |
|
FortiGate Rugged Modelle die 6.4 nicht unterstützen: |
|
FortiGate Modelle die 7.0 noch nicht unterstützen: |
|
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: |
|
FortiGate Rugged Modelle die 7.0 momentan (Stand: April 2021) nicht unterstützen: |
|
Das FortiOS 7.0 wird von folgenden Geräten unterstützt:
Das FortiOS 7.2 wird von folgenden Geräten unterstützt:
Artikel editiert 08.06.2022 / 4Tinu
Wann geht eine FortiOS Version End of Support?
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:
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:
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 | 2017-03-30 | 30.03.2020 | 30.9.2021 |
6.0 | 29.03.2018 | 29.03.2021 | 29.09.2022 |
6.2 | 28.03.2019 | 28.03.2022 | 28.09.2023 |
6.4 | 31.03.2020 | 31.03.2023 | 30.09.2024 |
7.0 | 30.03.2021 | 30.03.2024 | 30.09.2025 |
7.2 | 31.03.2022 | 31.032025 | 30.09.2026 |
7.4 | 11.05.2023 | 11.05.2026 | 11.11.2027 |
Ausnahmen werden hier aufgeführt:
https://support.fortinet.com/Information/ProductLifeCycle.aspx
edit 9.06.2023 - 4Tinu
Wie wird eine FortiGate von Grund auf mit einem entsprechenden FortiOS installiert (staging)?
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:
- http://www.solarwinds.com/downloads/ (Abschnitt: Free Trial Downloads > TFTP Server & SFTP/SCP Server > DOWNLOAD FREE Tool > Free TFTP Server > DOWNLOAD NOW)
- https://www.solarwinds.com/free-tools/free-tftp-server (Direkter Link)
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
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! |_____________________| |
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:
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:
|
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:
- Datei:HowTo FortiGate Staggen-v2.0.pdf
- Datei:FortiGate-Guide-Staggen SwitchAufloesen-Version-1.0.pdf
edit 29.07.2022 - 4tinu
Wie kann ich im FortiOS 6.0 einen Firmware Upgrade vornehmen?
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:
- Upgrade Pfad überprüfen
- Release Notes lesen
- Wartungsfenster definieren/Kunde informieren
- Fallback Szenarium planen
- Konfiguration sichern (Backup erstellen)
- Richtigen FortiOS Versionen vom Supportportal herunterladen
- Upgrade im Wartungsfenster vornehmen, dabei den Upgrade Pfad genau einhalten
- Ü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:
Konfiguration über das WebGui: |
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. Das File wird auf die FortiGate eingelesen. sobald das File eingelesen ist, beginnt die Installation des Images. Nach erfolgreichem implementieren, wird die FortiGate neu gestartet. Du siehst bei den Systeminformationen nun die neue aktuelle FortiOS Version. |
Nach dem Upgrade kann in der CLI noch nach allfälligen Fehlern gesucht werden, welche eventuell beim Upgrade passiert sind:
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?
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:
- Upgrade Pfad überprüfen
- Release Notes lesen
- Wartungsfenster definieren/Kunde informieren
- Fallback Szenarium planen
- Konfiguration sichern (Backup erstellen)
- Richtigen FortiOS Versionen vom Supportportal herunterladen
- Upgrade im Wartungsfenster vornehmen, dabei den Upgrade Pfad genau einhalten
- Ü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:
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?
In diesem Artikel wird beschrieben, wie man ab FortiOS 7.0 über das Fabric Management die FortiGate upgraden kann.
Konfiguration über das WebGui: | ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
|
add 22.06.2022 - 4tinu
Wie kann ich einen FortiOS Rollback durchführen?
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)
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
Mit dem Befehl 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
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 |
Datei:HowTo FortiOS rollback.pdf
Wie kann ich eine FortiGate auf den Fabrikzustand zurück setzen?
Mit dem folgenden CLI Befehl kann die FortiGate auf die Grundkonfiguration zurückgesetzt werden:
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.
Konfiguration über die CLI: |
execute factoryreset2 |
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?
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:
Konfiguration über die CLI: |
execute factoryreset-shutdown |
add 30.06.2022 - 4tinu
DNS
Wie konfiguriere ich auf einer FortiGate die System DNS Server?
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:
Konfiguration über das WebGui: |
Über das Menu Network > DNS |
Über die CLI werden die System DNS Server wie folgt konfiguriert:
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.
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.
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.
Konfiguration über die CLI: |
# config system global # set dnsproxy-worker-count <integer> # end |
Wie konfiguriere ich auf der FortiGate "DNS over TLS"?
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.
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:
- 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
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?
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:
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?
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:
Konfiguration über das WebGui: |
Über das Menu :System -> Feature Visibility muss das Feature DNS Database eingeschaltet werden: |
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: | ||||||
|
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:
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: |
Der zu konfigurierende DNS Server muss als MASTER Server konfiguriert werden, jedoch NICHT als Authoritativ! |
Der DNS Server ist konfiguriert - nun muss für die entsprechende Zone ein "A" Record für www.mydomain.ch erfasst werden! |
Es ist zu empfehlen für den Host ebenfalls einen "PTR-Record" zu erstellen! |
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 |
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:
|
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:: |
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: |
|
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?
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.
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:
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?
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: |
|
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: 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?
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) |
DHCP
Wie kann ich eine Vendor DHCP Option auf einem WAN Interface konfigurieren?
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:
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
ARP
Wie kann ich im FortiOS einer FortiGate "ARP"-Einträge auflisten, hinzufügen oder löschen?
Um eine Liste der ARP-Einträge auf der FortiGate zu erhalten nutzt man den get system arp
Befehl auf der CLI:
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
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:
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:
Konfiguration über die CLI: |
Füge einen "ARP" Eintrag "temporär" hinzu # 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:
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:
Konfiguration über 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:
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:
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 |
Was ist der Unterschied zwischen den Funktionen "system arp-table" und "proxy-arp?
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:
Konfiguration über 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.
Welche Informationen bekomme ich aus der ARP Liste?
Bei der Fehlerbehebung von bestimmten Verbindungsproblemen ist es erforderlich zu schauen was im Layer 2 so passiert. Mit dem Befehl diagnose ip arp list
kann die im Cache befindliche ARP Liste auf der FortiGate angezeigt werden. In dieser Liste können diverse Details entnommen werden.
Konfiguration über 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 |
| |||||||||||||||||||||||||||||||||
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. |
Routing
Wie funktioniert das Routing auf einer FortiGate?
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:
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
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.
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.
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.
Was bedeutet der Begriff "ECMP" beim Routing?
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. |
Wenn eine der ECMP-Routen ausfällt, und aus der Routingtabelle entfernt wird, wird der Traffic über die restlichen Routen geleitet. |
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.
# 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)?
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 |
|
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 |
|
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 # 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). | ||
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. Was passiert aber im gleichen Szenario, wenn Strict RPF verwendet wird?
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?
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)
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. |
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:
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: |
Wie kann ich auf einer FortiGate die Routing-Tabelle ansehen?
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:
Konfiguration über das WebGui: |
Routing-Tabelle im WebGui für FortiOS Versionen 5.6/6.0/6.2: Über das WebGui kann ich nur die aktive Routing-Tabelle anschauen: Gehe auf Monitor -> Routing Monitor Routing-Tabelle im WebGui ab FortiOS Version 6.4: Menu Dashboard -> Network und dann beim Widget Static & Dynamic Routing auf die Grafik klicken Nun sieht man die Routing-Tabelle im Diagramm und in aufgelisteter Form. |
In der CLI ist die FortiOS Version nicht relevant, da ist der Syntax bei allen gleich:
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 |
Wenn ich die gesamte Routing-Tabelle sehen möchte (aktive und inaktive Routen) kann ich die Routing Datenbank wie folgt abfragen:
(Routen welche mit * markiert sind, sind aktive Routen)
Konfiguration über CLI: get router info routing-table database |
# 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 |
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) |
Wie kann ich auf einer FortiGate den Routing "cache" auflisten und aktualisieren?
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:
Konfiguration über CLI: diagnose ip rtcache list |
# 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 auchim Kernel die Routing Informationen auf den neuesten Stand gebracht:
Konfiguration über CLI: execute router restart |
# 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.
Was ist eine Blackhole-Route?
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.
Konfiguration über das WebGui: |
Im Menu Netzwork -> Static Routes
|
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.
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:
Konfiguration über das WebGui: |
|
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 |
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:
Siehe auch : https://tools.ietf.org/html/rfc1918 |
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
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?
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 |
---|
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:
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)
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+
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.
Konfiguration über das WebGui: |
Menu:Policy & Objects -> Addresses -> Create New+ -> Category Multicast Address |
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.
Regel 2:
Von der Swisscom TV Box zu den Multicast Adressen
SNAT muss in dieser Regel aktiviert werden
Nun sollte das Swisscom TV über die FortiGate funktionieren.
Wie kann ich eine Local Out Route verwenden?
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.
Konfiguration über das WebGui: |
Damit man Local Out Routen im WebGui konfigurieren kann, muss zuerst das Feature aktiviert werden. |
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
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.
Allgemein zur Konfiguration:
Was bedeuten die verschiedenen Optionen beim Outgoing Interface?
- 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:
Local Out Routing Möglichkeiten:
Anwendungsbeispiel:
Wir haben folgendes Szenarium :
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:
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. Dies kann dazu führen, dass die FortiGate über ein nicht vorgesehenes Interface versucht den FortiAnalyzer zu erreichen und wir dadurch einen Verbindungsfehler bekommen: 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. Natürlich kann auch über das klassische Local Out Routing Menu navigiert werden.
|
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:
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: Oder man navigiert über den Local Out Routing Menupunkt in die Konfigurationsoberfläche:
|
Konfiguration über die CLI: |
config system dns set interface-select-method sdwan end |
System FortiGuard:
Konfiguration über das WebGui: |
Vom FortiGuard Konfigurationsmenu kann auch direkt zu den Local Out Routen gelangt werden: Alternativ über Local Out Routing navigieren:
|
Konfiguration über die CLI: |
config system fortiguard set interface-select-method auto end |
Ergebniss:
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?
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.
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:
Konfiguration über die CLI: |
# config system settings # show full-configuration | grep aux # set auxiliary-session disable |
Die Funktion kann wie folgt eingeschaltet werden:
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?
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
SDWAN - Workaroung SIP Routing
WIKI Beitrag wird momentan erstellt, bitte um ein wenig Geduld (4Tinu 08.06.2023)
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.
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.
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
Konfiguration über das WebGui: |
Menu: Policy & Objects -> Addresses -> Create New -> Address : |
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
Konfiguration über das WebGui: |
Menu: Policy & Objects -> Firewall Policy -> Create New :
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 |
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 |
Konfiguration über die CLI: |
Konfiguration der Triggers: Die Trigger bilden die Grundlage damit die entsprechende Aktion danach ausgeführt werden kann. Dabei benutzen wir die Methode, dass wir in den SD-WAN Eventlogs Interface Status Daten herauslesen. In unserem Beispiel müssen wir das Interface wan2 für die Triggers verwenden. Wir müssen zwei Triggers bilden:
Konfiguration des Triggers um zu prüfen ob das Interface neu down ist: Event : SDWAN SLA information warning ID : 22931 Name : LOG_ID_EVENT_VWL_SLA_INFO_WARNING 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: Event : SDWAN SLA notification ID : 22933 Name : LOG_ID_EVENT_VWL_SLA_INFO_NOTIF 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 Aktion:
Aktion für die SIP Drop Policy zu aktivieren: 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: 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
Automatischer Stitch um die VoIP Drop Regel zu aktivieren, wenn das Interface DOWN geht: In diesem Stitch wird der Trigger 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 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 |
add 08.06.2023 - 4Tinu
Zwei Faktor Authentifizierung
Wie kann ich die Timeouts für die 2FA Dienste auf der FortiGate anpassen?
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:
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:
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.
Die 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:
Konfiguration im FortiAuthenticator 6.x: |
Über das Menue User Account Policies -> Tokens können die Timeouts konfiguriert werden:
|
Wie kann ich auf einer FortiGate einen SMS Service / Provider konfigurieren?
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:
- Swisscom (@sms.ip-plus.net)
- F24 (Dolphin) (https://www.f24.com/tochtergesellschaften/f24-schweiz-ag/)
- Truesenses (http://www.truesenses.com/)
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:
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?
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:
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
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.
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?
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:
Konfiguration über das WebGui: |
|
Der Bug ist im FortiOS 6.4.1 behoben worden
Nun findet man die Session-Ansicht in der FortiView:
Konfiguration über das WebGui: |
|
Prozesse
Wie kann ich auf einer FortiGate die Prozesse auflisten?
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:
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 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:
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?
Eine weitere Möglichkeit die Prozesse aufzulisten ist:
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' 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?
Im FortiOS 6.4.x wird man feststellen, dass das Kommando diagnose sys top-summary
eine Fehlermeldung generiert:
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
edit 9.06.2023 - 4Tinu
Welche Prozesse existieren auf einer FortiGate und welche Aufgaben haben diese?
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?
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:
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?
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?
Konfiguration über CLI: |
Als Erstes müssen wir wissen, welcher Prozess welche Prozess-Nummer erhalten hat. Dies wird mit dem Befehl # 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 |
Hier ist ein Link um dezimale Zahlen in binäre Zahlen umzurechnen: |
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:
Konfiguration über das WebGui: |
|
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?
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:
Wie kann unter Windows 10 ein CA erstellt werden, welches auf die Firewall geladen werden kann?
- Herunterladen des Tools XCA Datei:Setup xca-1.4.1.zip
- Installieren von XCA auf einem Windows PC
- Generieren einer CA mit XCA gemäss folgender Anleitung: Datei:Xca howto.pdf (Quelle: barracuda.com)
- Exportieren der CA im *.pem Format
- Importieren des Zertifikates auf der Fortigate Firewall unter System > Certificates > Import > CA Certificate > Type=File
Wie kann ich Zertifikate sichern (Back-Up) und wiederherstellen?
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).
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)?
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.
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:
Konfiguration über das WebGui: |
|
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:
LAN Role
DMZ Role
|
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?
Um die Interface Statistik anzuschauen kann über die CLI folgender Befehl eingegeben werden:
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 |
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.
Konfiguration über das WebGui: |
Über das Menu Network -> Interfaces ->
Die VLAN Interfaces sieht man beim physikalischen Interface wenn man auf das + klickt. |
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.
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 |
Wie kann ich den MTU Wert auf einem Interface anpassen?
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.
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:
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 |
Wenn die FortiGate im transparent Modus ist muss noch folgendes beachtet werden: |
Auch interessant:
- Mehr Informationen über die MTU: https://www.msxfaq.de/netzwerk/grundlagen/mtu.htm
- VPN Interface : Wie kann ich auf einem VPN Interface die MTU Werte anpassen?
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.
Konfiguration über das WebGui: |
Über das Menu Network --> Interfaces --> [Interface auswählen] in die Interface Konfiguration navigieren. Ganz nach unten scrollen, dann kann man im Menupunkt Miscellaneos unter Status die Aktion anwählen:
Im "Comments"-Feld kann ein Kommentar eingefügt werden. In der Gesamtübersicht der Interfaces erkennt man die deaktivierten Interfaces anhand dessen dass diese hellgrau geschrieben sind: |
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?
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
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. Datei:Fortinet-Hardware-Schematics.pdf <-- Die Schematics dürfen nicht mit Endkunden geteilt werden!! |
Beispiele:
In diesem Fall können die Interfaces aggregiert werden:
In diesem Fall können die beiden 10GB Interfaces nicht aggregiert werden, da diese jeweils an einem separaten NP angeschlossen sind:
Sniffer Mode / CTAP
Administrator
Wie richte ich auf der FortiGate ein SSH Login mittels privatem Schlüssel ein?
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:
Konfiguration im PuTTy Key Generator: |
|
Nun muss der Public Key auf die FortiGate impotiert werden.
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. ---- 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.
Konfiguration im PuTTy: |
Ergebniss: |
Konfiguration für Linux oder Mac OS X: |
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)
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: 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:
Konfiguration über die CLI: |
# config system global # set admin-maintainer [enable | disable] # end |
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! |
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! |
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:
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. |
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?
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):
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: Der User muss akzeptieren, dass er auf das Anmeldefenster kommt. |
2. Eine Warnmeldung nachdem ich mich auf die FortiGate eingeloggt habe:
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. |
Die Templates können auch nach eigenen Wünschen angepasst werden:
Konfiguration über das WebGui: |
|
|
User / Gruppe
Wie konfiguriere ich eine Usergruppe?
Konfiguration über das WebGui: |
|
|
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 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:
Konfiguration über das WebGui: |
Über den Menupunkt Monitor -> Firewall User Monitor können die momentan eingeloggten User eingesehen werden: Um einen User zu deauthorizieren, muss der entsprechende User mittels Rechtsklick angewählt werden und dann der Button Deauthenticate selektiert werden. |
Wie eröffne ich einen User für die Zweifaktor Authentifizierung über SMS?
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.
Konfiguration über das WebGui: | ||
Hinweis: Der Parameter set two-factor sms muss über die CLI konfiguriert werden.
Jetzt muss der User bei der entsprechenden Regel in die Source eingefügt werden.
| ||
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
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 |
Resultat: |
Wenn wir jetzt eine Anfrage über den Webbrowser in das Internet vornehmen wird ein Loging Fenster im Browser erscheinen: 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. |
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:
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?
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
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:
|
Konfiguration über die CLI: |
# config system settings # set gui-local-in-policy enable # end |
Um das ganze zu veranschaulichen ein kleines Beispiel:
Konfiguration über das WebGui: |
Wir konfigurieren auf dem Interface (internal) die Services PING(icmp 8), HTTPS (tcp443), SSH(tcp22) und FMG-Access(tcp541). 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: Der HTTPS wird als TCP4443 (Admin Port) im Tap Authentication angezeigt und ist auf diesem Screenshot nicht ersichtlich! |
Die manuell konfigurierten Local-In Firewall Regeln werden im WebGui nicht angezeigt! |
Wie kann ich eine manuelle Local-In Policy konfigurieren?
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:
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 |
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:
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
Konfiguration über die CLI: |
# config firewall local-in-Policy # edit [Policy_ID] # set status [enable | disable] -> aktivieren oder deaktivieren # end |
Die manuell konfigurierten Local-In Firewall Regeln werden im WebGui nicht angezeigt! |
Wie kann ich geographisch gebundene Adressobjekte erstellen?
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:
Konfiguration über das WebGui: |
In der Gesamtübersicht findet man alle GeoIP Objekte unter dem Abschnitt Geography' Diese Objekte können jetzt in einer Firewall Regel als Source oder Destination verwendet werden. |
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 |
add 10.03.2022 - 4Tinu
Wie kann ich die Geo-IP Datenbank aktualisieren?
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
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
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?
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.
Konfiguration über das WebGui: |
Unter dem Menu System->FortiGuard->Licence Information-> Firmware&General Updates findet man die Internet Service Database Definitions: |
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.
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. Wenn auf die Detail Ansicht geklickt wird, kann man die ganze Liste mit den IP-Adressen und Services einsehen: |
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.
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. Nun kann der gewünschte ISDB Service selektiert werden und die Firewall Regeln ansonsten wie gewohnt konfiguriert werden. |
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. |
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?
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:
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:
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?
Grundsätzlich kann man die Sessions mit dem CLI Befehl diagnose sys session clear
löschen.
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:
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?
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: | ||||||||||||||||||||||||||
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") 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": Proto_state Feld für SCTP Ab FortiOS 4.2 unterstützt ein FortiGate Device resp. FortiOS ebenfalls "stateful firewalling" für SCTP: 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= |
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":
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. statistic (bytes/packets/err): org=3408/38/0 reply=3888/31/0 tuples=2 | ||||||||||||||||||||||||||
hook=out dir=org |
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= |
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?
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:
- Jegliche Änderungen an einer Firewallregel.
- Änderungen am Routing.
- Sämtliche netzwerkbezogenen Konfigurationsänderungen.
Wie kann ich die Session Timer auf der FortiGate anpassen um System Ressourcen einzusparen?
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:
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.
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)
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:
|
Schema |
|
|
Vor/Nachteile |
+ Der Datenverkehr wird ohne Verzögerung ausgeliefert |
+ Entscheidungen im Proxy-Mode fallen detaillierter aus |
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?
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.
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?
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
Konfiguration über das WebGui: |
In die entsprechende Policy gehen und dann den Inspektions-Modus auf Proxy einstellen.
|
Konfiguration über die CLI: |
config firewall policy edit [Policy-ID] --> Policy ID eingeben zBsp edit 2 set inspection-mode proxy next end |
Flow Modus
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.
|
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.
Konfiguration über das WebGui: |
Im Menu "Settings" kann der NGFW Modus definiert werden. |
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.
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.
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:
Nachfolgend eine Uebersicht was innerhalb der "UTM/NGFW" Funktion betreffend dieser zwei zur Verfügung stehenden "inspection" Mode durchgeführt wird:
NAT
Wie funktioniert das Destinations NAT auf einer FortiGate?
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
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:
Wie richte ich ein Destinations NAT mit einem VIP Objekt ein?
Konfiguration über das WebGui: |
Über das Menu Policy & Objects -> Virtual IPs -> kann ein neues VIP Objekt erstellt werden |
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.
|
Um eine neue Regel zu erstellen geht man über Policy & Objects -> IPv4 Policy ->
|
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?
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:
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:
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.
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
Konfiguration über das WebGui: |
|
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:
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)"
|
Ab dem FortiOS 6.4.3 kann die Option match-vip enable nur noch in DENY Firewallregeln verwendet werden. Siehe auch in den Releasenotes: |
Ab dem FortiOS Version 7.2.4 wird bei einer Firewallregel welche die Aktion Deny hat, die Option |
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.
Konfiguration über das WebGui: |
|
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 ?
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.
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.
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:
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).
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.
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?
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.
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.
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?
Folgendermassen kann herausgefunden werden, welche Cipher die FortiGate unterstützt:
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. |
Ciper Suite: |
FortiOS 6.4 |
|
FortiOS 6.2 |
|
FortiOS 6.0 |
|
Load Balancing
SSL-VPN
Wie konfiguriere ich ein SSL-VPN im Tunnelmodus?
Um ein SSL-VPN von grundauf aufzubauen muss man folgende vier Punkte konfigurieren:
- Einrichten Benutzerkonten und Gruppen für die Remote SSL-VPN Benutzer
- SSL-VPN Portale konfigurieren
- SSL-VPN Einstellungen konfigurieren
- 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
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.
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 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 --> eröffnet: 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: |
2. Punkt : SSL VPN Portale konfigurieren
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 -->
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:
Wir sehen jetzt eine Übersicht mit den neu angelegten Portalen , welche Moden ein und ausgeschalten sind |
3. Punkt: SSL-VPN Settings
Konfiguration über das WebGui: |
Nun werden die Portale den entsprechenden Usergruppen zugewiesen:
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.
Nun muss man ganz nach oben scrollen und in das hellgelbe Feld klicken. So kann man direkt eine Firewall Policy erstellen: |
Schritt 4: Firewall Regeln konfigurieren:
Konfiguration über das WebGui: |
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. |
VPN Client Konfigurieren
Konfiguration FortiClient: |
Beim FortiClient eine neue Verbindung erstellen:
Nun kann man die Verbindung testen indem man eine neue Session aufbaut: 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. Wenn Username und Passwort richtig sind, wird sich der Client am VPN anmelden. Wir bekommen folgende Meldung 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. Wir können auf dem Client über das Eingabe Fenster von Windows CMD eingeben. Es öffnet sich das schwarze Eingabe Fenster. 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 Routingtabelle kann man mit dem Befehl |
Auf der FortiGate können wir das ganze im Eventlog anschauen gehen:
Konfiguration über das WebGui: |
Zum Eventlog gelangt man folgenermassen: Log & Report --> Events --> entsprechende Kategorie auswählen Für das User Eventlog: Für das VPN Eventlog Um eine Detalierte Ansicht zu bekommen auf das entsprechende Event klicken: |
Konfiguration über die CLI:
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 |
- Die ganze Anleitung als Datei: Datei:HowTo FortiGate SSL-VPN Tunnelmode.pdf
Was versteht man beim SSL-VPN unter einem Split-Tunnel?
Ü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: |
|
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: |
|
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>
Konfiguration über das WebGui: |
|
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 |
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:
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:
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 |
|
|
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:
|
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:
|
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
|
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
|
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:
Wieso wird beim SSL-VPN im Webmodus viel Memory und CPU Leistung verbraucht?
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:
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 ...
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. |
Wichtig zu wissen: |
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.
Hinweis: |
Wie überprüfe ich Hosts bei SSL-Verbindungen?
Wie erhöhe ich die Sicherheit der SSL-VPN-Verbindung durch Zwei-Faktor-Authentifizierung mit Zertifikaten?
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.
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).
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?
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.
Umgekehrt kann (nur) im CLI der Zugang spezifischer IP-Adressen ausgeschlossen werden. Beispielsweise können Hosts anhand ihrer geographischer IP-Adressen ausgeschlossen werden.
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.
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?
Konfiguration über das WebGui: |
VPN Events: - Zeigt neue Verbindunsanfragen: z.B. ssl-new-con
- Zeigt Authentifizierungen von SSL-VPN-Usern: z.B. auth-logon, auth-logout |
Wie verhindere ich Logout von SSL-VPN-Usern?
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.
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.
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?
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:
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?
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:
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
Konfiguration über das WebGui: |
Schritt 1: Schritt 2: Schritt 3: ]] |
Wie kann ich nicht-gewünschte Login-Versuche (potenzielle Brute-Force-Attacken) auf das SSL-VPN-Portal verhindern?
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:
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
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)
Local-In-Policy kann nur via CLI konfiguriert werden |
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:
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:
Konfiguration über die CLI: |
config vpn ssl setting set port-precedence [disable|enable] end Die Option |
IPSec VPN
Wie konfiguriere ich eine Site-to-Site IPSec VPN Verbindung von Grund auf?
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 |
||
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.
Konfiguration über das WebGui: |
Um einen VPN Tunnel zu konfigurieren, geht man über das Menu VPN --> IPsec Tunnels --> Create New --> IPsec Tunnel
Network:
Authentication
kleiner Tipp: Nicht den Preshard Key aus diesem Beispiel nehmen, bitte selber einen Einmaligen Preshared Key definieren! Phase 1 Proposal
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
|
Schritt 2 - Routen konfigurieren
Schritt 3 - Policy einrichten
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:
Nun versuchen wir das Webmail Portal zu erreichen: https://198.18.200.45
In den ForwardLogs der beiden FortiGates sehen wir unsere Requests im Log:
Konfiguration über das WebGui: |
Seite Labor 1 Seite Labor 2 |
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.
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?
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
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?
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?
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:
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:
- 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.
- 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.
- 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.
- 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.
- 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 |
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. # 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. # 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. # 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) # 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).
# 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
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:
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
Die Zerfikatsmeldung kann ignoriert werden. Übersicht des Policysets (es ist darauf zu achten, dass die VPN Regeln oberhalb der regulären Regeln sind): |
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
# 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
# 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
# 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: 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 Wenn alles grün ist, ist der Tunnel up and running Damit der Traffic an den Server weitergeleitet wird, muss noch eine Policy eingerichtet werden: Policy & Objects -> IPv4 Policy -> Create New
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: |
Konfiguration vom FortiClient |
Eine neue Verbindung im FortiClient einrichten: Reiter SSL-VPN anwählen
Zum Verbinden den entsprechenden Tunnel anwählen und die Benutzer Daten (Username und Passwort) eingeben. Mit verbinden baut man den Tunnel auf. 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)
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 |
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.
Folgende Faktoren sind relevant um zu bestimmen, welcher Durchsatz maximal überhaupt möglich ist:
Seite A | Seite B |
---|---|
1. Firewall |
1. Firewall |
3. Parameter zwischen den 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:
- Die Festplattengeschwindigkeit des Zielsystems
- Die Geschwindigkeit des SMB Protokolls
- Die Geschwindigkeit der onRead Antivirenüberprüfung des Zielsystems
- 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: |
IPerf Anleitung | |
Datei:Tools-iperf.zip | IPerf Tool |
Messaufbau
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 |
||
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:
Konfiguration über das WebGUI: |
Konfigurieren des VPN-Tunnels: Netzwerkeinstellungen:
Authentication konfigurieren:
Phase 1 Parameter konfigurieren:
Phase 2 Selektoren konfigurieren: Auf der Sophos wird der Term 0.0.0.0/0 nicht unterstützt.
|
Konfigurieren der Routen: Die Routen werden wie folgt konfiguriert:
Menu: Network -> static Routes -> |
Konfigurieren der Policies: Menu : Policy & Objects -> IPv4 Policy -> |
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:
Konfiguration über das WebGUI: |
Auf der Sophos UTM Firewall wird ein VPN wie folgt aufgebaut:
|
Neuen Tunnel erstellen:
|
Remote Gateway:
|
Policy:
|
Connections:
|
Erfolgskontrolle:
VPN-Monitore: |
VPN Monitor - FortiGate: VPN Monitor - Sophos UTM: |
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 |
||
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
Konfiguration über das WebGui: |
Konfigurieren des VPN Tunnels: Netzwerkeinstellungen:
Authentication konfigurieren:
Phase 1 Parameter konfigurieren:
Phase 2 Selektoren konfigurieren: Auf der Sophos wird der Term 0.0.0.0/0 nicht unterstützt.
|
Konfigurieren der Routen: Die Routen werden folgendermassen konfiguriert:
Menu: Network -> Static Routes -> |
Konfigurieren der Policies: Menu : Policy & Objects -> IPv4 Policy -> |
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
Konfiguration über das WebGui: |
Ein neuer VPN wird im Menu Configure-> VPN -> IPsec connections erstellt. Authentication konfigurieren: |
Netzwerkeinstellungen:
Local gateway: (Netzwerk Optionen Sophos XG Firewall)
Remote gateway (Netzwerk Optionen der FortiGate- Remoteseite)
|
Phase 1 Parameter konfigurieren:
|
Phase 2 Selektoren konfigurieren:
|
Wie konfiguriere ich ein VPN zwischen einer FortiGate und einer Checkpoint Firewall?
Ausgangslage:
Seite FortiGate | Seite Checkpoint | |
---|---|---|
Netzplan |
||
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:
Konfiguration über das WebGUI: |
Konfigurieren des VPN-Tunnels: Netzwerkeinstellungen:
Authentication konfigurieren:
Phase 1 Parameter konfigurieren:
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:
|
Konfigurieren der Routen: Die Routen werden wie folgt konfiguriert:
Menu: Network -> Static Routes -> Blackhole Route mit Distanz 254: |
Konfigurieren der Policies: Menu : Policy & Objects -> IPv4 Policy -> Die ganze Policy noch bei bedarf gegengleich konfigurieren (Source Interface / Netz und Destinations Interface / Netz) Dabei kann die Clone Reverse Funktion benutzt werden. Komplettes Regelsetup: |
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
Erfolgskontrolle
FortiGate Monitor:
Checkpoint Monitor:
Traffic generieren und im Debug auf den beiden Geräten prüfen:
Ping von der FortiGate aus generiert:
- 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 - mit dem Befehl
execute ping 10.10.151.2
können wir die IP Adresse auf der Checkpoint vom LAN Interface anpingen
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?
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:
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 |
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:
- Datei:FortiClientConfigurationTool 5.6.6.zip
- Datei:FortiClientConfigurationTool 6.0.0.zip
- Datei:Forticlient-5.6.0-configurator-tool.pdf
- Datei:FortiClient-5.6.0-XML-Reference.pdf
Wieviele Remote VPN User kann ich auf der FortiGate nutzen?
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)
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)
Konfiguration über das WebGui: |
Wizard wird gestartet über VPN->IPsec Wizard Template type Remote Access |
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?
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:
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:
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:
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?
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: |
|
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:
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:
Konfiguration über das WebGui: | ||
Konfigurieren der Phase 1:
Konfigurieren der Phase 2:
Es ist darauf zu achten, dass alle Phase2-Parameter auf der FortiGate genau gleich konfiguriert werden. Policy Route konfigurieren:
Diese Route ist nichts Anderes als eine Standardroute, die auf den IPSEC-Tunnel (target.Home) zeigt. Policy konfigurieren:
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.
Konfiguration über das WebGui: |
Netzwerk Einstellungen konfigurieren:
Authentifikation konfigurieren:
Phase 1 Parameter konfigurieren:
Phase 2 Parameter konfigurieren:
Konfiguration der Routen:
Die Blackhole-Route wird wie folgt konfiguriert:
Wer mehr über Blackhole-Route wissen möchte, kann dies im folgenden Artikel nachlesen: Konfigurieren der Firewall Regeln 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). 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. Regelwerk auf der FortiGate: 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! |
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:
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
|
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
|
Anschliessend kann die HA-Funktion auf dem Master unter System -> HA aktiviert werden.
|
3. Aktivieren der HA Funktion auf dem Slave
|
Nun kann die HA-Funktion auf dem Slave ebenfalls System -> HA aktiviert werden.
|
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:
Auch auf der Konsole kann der Status angeschaut werden:
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:
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.
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 |
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:
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:
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:
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 |
Wie kann ich im Cluster von der aktiven auf die passive Fortigate zugreifen?
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:
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:
Konfiguration über die CLI: |
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. 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:
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.
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:
- Private-Daten-Verschlüsselung deaktivieren
set private-data-encryption disable
- Cluster Synchronisieren
execute ha sync start
- Checksummen enreut überprüfen
diagnose sys ha checksum cluster
(auf beiden Devices> Wenn die Prüfsummen gleich sind, weiter mit Schritt 4 - private-data-Verschlüsselung einschalten
set private-data-encryption enable
- Cluster erneut synchronisieren
execute ha sync start
- Checksummen noch einmal überprüfen
diagnose sys ha checksum cluster
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:
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: Wenn eine Disk vorhanden ist: |
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.
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?
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:
|
Folgendermassen kann man erkennen, dass im Cluster mindestens ein FortiGate Gerät nicht richtig Lizenziert ist:
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
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:
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:
Konfiguration über die CLI: |
# diagnose debug disable |
4.) Verschuchen den Failover mit reset-uptime erneut durchzuführen:
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.
Über die CLI kann man dies folgendermassen einschalten:
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
Jetzt über das Menu 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.
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.
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 |
- Informationen über das SCTP Protokoll: https://www.ionos.de/digitalguide/server/knowhow/sctp-stream-control-transmission-protocol/
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:
Konfiguration über die CLI: |
# diagnose ips anomaly [clear | config | filter | list | status] |
Die verschiedenen Optionen für "ips anomaly" haben folgende Bedeutung:
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:
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:
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:
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:
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:
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:
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.
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 |
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 |
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
Wie funktioniert ein Botnet?
In diesem Dokument wird beschrieben wie ein Botnet funktioniert:
add 16.03.2023 - 4Tinu
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)
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.
Konfiguration über das WebGui: |
Wenn man auf botnet packages klickt kann man die Liste aufrufen, aus welcher ersichtlich ist, welche Botnetze und C&C Netze bekannt sind. |
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)
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:
Konfiguration über das WebGui: |
Unter dem Menupunkt System -> Feature Visibility muss das Feature IPS Feature aktiviert werden. |
Jetzt kann unter den Security Profilen ein neues IPS Profil angelegt werden. |
Das IPS Profil muss jetzt an eine Policy gebunden werden: |
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:
Konfiguration über das WebGui: |
Im Menu über Log & Report -> Intrusion Prevention
Wenn der Event angeklickt wird, können noch mehr Details entnommen werden: |
Antivirus
Wo finde ich auf der FortiGuard Support Seite mehr Informationen betreffend den Antivirus Database Inhalte?
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.
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?
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.
Konfiguration über das WebGui: |
Über das Menu System -> FortiGuard nach unten scrollen bis man den folgenden Menu-Abschnitt findet:
|
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 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. *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 |
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?
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 : 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.
Konfiguration über das WebGui: |
|
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:
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):
Wichtig: Der Befehl ist für OS 6.2, wie auch für OS 6.4 unterschiedlich!!!
Konfiguration über die CLI: |
config firewall profile-protocol-options edit <profile_name> config http set uncompressed-oversize-limit 20 end end end |
Wichtig: Der Befehl ist für OS 6.2, wie auch für OS 6.4 unterschiedlich!!! |
Konfiguration über die CLI: |
config firewall profile-protocol-options edit "protocol" config ssh set uncompressed-oversize-limit 20 end end end |
Wichtig: Der Befehl ist für OS 6.2, wie auch für OS 6.4 unterschiedlich!!! |
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 * elf * exe * hta * html * jad * class * cod * javascript * msoffice * msofficex * fsg * upx * petite * aspack * prc * sis * hlp * activemime * jpeg * gif * tiff * png * bmp * ignored * unknown * mpeg * mov * mp3 * wma * wav * pdf * avi * rm * torrent * hibun * 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) Benützt Flow-Mode mit kompakter Antivirus Datenbank sowie erweiterte Technik für Antivirus Scan! Auf 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) Automatisierte Schadware (Virus, Trojaner etc.) Erkennung in Echtzeit – auch für die Public Cloud
• Virus Outbreak Prevention Hash-Signaturen die von Malware Drittanbietern erweitert und von FortiGuard bereitgestellt wird. Bei Übereinstimmung von FortiGuard Datenquelle wird Datei bösartig eingestuft
• File Signature Check
Wie kann ich auf der FortiGate die Antivirus Funktion konfigurieren?
- Als Erstes muss auf der FortiGate unter System -> Feature Visibility die Option AntiVirus aktiviert worden sein.
- Das standardmässig (default) aktivierte AntiVirus-Profil kann unter Security -> Profiles AntiVirus bearbeitet werden.
- Nun kann vom Scan Mode auf Full, und Detect Viruses auf Block gesetzt werden.
- 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.
Ist Proxy-Based ausgewählt worden, so erscheint unter den AntiVirus Profilen ein rotes P welches auf den aktivieren Proxy-Modus hinweist.
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?
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?
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?
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
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
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) # set webfilter-expiration {integer} wann die Lizenz des FortiGuard Webfilter verfällt (zw. [0-4294967295]) # 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} # set ovrd-auth-https [enable | disable] # set warn-auth-https [enable | disable] # set close-ports [enable | disable] # set ovrd-auth-port {integer} # 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:
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.
Anschliessend die endsprechenden Felder ausfüllen und mittels Captcha bestätigen:
Jede Anfrage sollte innerhalb von 24 Stunden von Fortinet beantwortet werden. Als Bestätigung erhält man von Fortinet folgendes Email:
-------------- email outpout --------------
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) // Protocol Option
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
# config firewall profile-protocol-options # config firewall # edit [Name des entsprechenden Proxy Options Profile zBsp "local-default.intra"] # edit [policy ID] # 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
# 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
# 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
Eine Seite kann nachträglich folgendermassen einer lokalen Kategorie hinzugefügt werden:
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
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:
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
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
# 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
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):
Konfiguration über das WebGUI: |
Security Profiles > Web Filter > Search Engines |
Konfiguration über die CLI: |
config webfilter profile edit "webfilter" config web set safe-search url end next end |
Konfiguration über das WebGUI: |
Security Profiles > Web Filter > Search Engines |
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?
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:
Konfiguration über die CLI: |
config ips global set exclude-signatures none end |
Um die Signaturen wieder auszuschliessen (exclude) wird folgender Syntax verwendet:
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 7.4:
Zu den aktuellen Releasenotes: https://docs.fortinet.com/product/ipsengine/7.4
FortiOS 7.2:
- Datei:IPS-Engine-Release-Notes-Version-7.2-build212.pdf
- Datei:IPS-Engine-Release-Notes-Version-7.2-build234.pdf
- Datei:IPS-Engine-Release-Notes-Version-7.2-build249.pdf
- Datei:IPS-Engine-Release-Notes-Version-7.2-build255.pdf
Zu den aktuellen Releasenotes: https://docs.fortinet.com/product/ipsengine/7.2
FortiOS 7.1:
- Datei:IPS-Engine-Release-Notes-Version-7.1-build105.pdf
- Datei:IPS-Engine-Release-Notes-Version-7.1-build124.pdf
- Datei:IPS-Engine-Release-Notes-Version-7.1-build142.pdf
- Datei:IPS-Engine-Release-Notes-Version-7.1-build157.pdf
- Datei:IPS-Engine-Release-Notes-Version-7.1-build159.pdf
Zu den aktuellen Releasenotes: https://docs.fortinet.com/product/ipsengine/7.1
FortiOS 7.0:
- Datei:IPS-Engine-Release-Notes-Version-7.0-build018.pdf
- Datei:IPS-Engine-Release-Notes-Version-7.0-build029.pdf
- Datei:IPS-Engine-Release-Notes-Version-7.0-build043.pdf
- Datei:IPS-Engine-Release-Notes-Version-7.0-build044.pdf
Zu den aktuellen Releasenotes: https://docs.fortinet.com/product/ipsengine/7.0
FortiOS 6.4:
- Datei:IPS-Engine-Release-Notes-Version-6.4-build091.pdf
- Datei:IPS-Engine-Release-Notes-Version-6.4-build0100.pdf
- Datei:IPS-Engine-Release-Notes-Version-6.4-build0114.pdf
- Datei:IPS-Engine-Release-Notes-Version-6.4-build0148.pdf
- Datei:IPS-Engine-Release-Notes-Version-6.4-build0155.pdf
Zu den aktuellen Releasenotes: https://docs.fortinet.com/product/ipsengine/6.4
FortiOS 6.2:
- Datei:IPS-Engine-Release-Notes-Version-6.2-build071.pdf
- Datei:IPS-Engine-Release-Notes-Version-6.2-build064.pdf
Zu den aktuellen Releasenotes: https://docs.fortinet.com/product/ipsengine/6.2
FortiOS 6.0:
Zu den aktuellen Releasenotes: https://docs.fortinet.com/product/ipsengine/6.0
edit 9.06.2023 - 4Tinu
Welche IPS Engine ist mit welchem FortiOS Kompatibel?
Im folgenden Dokument kann man entnehmen welche IPS Engine mit welchem FortiOS kompatibel ist:
Im folgendem Dokument ist diese Matrix dokumentiert:
edit 25.11.2022 - 4Tinu
Wie kann ich die verwendete IPS Engine Version auf der FortiGate nachschauen?
Im FortiOS ist jeweils eine IPS Engine enthalten und wird auch entsprechend bei einem Upgrade auf eine neue FortiOS Version auch upgegradet.
Konfiguration über das WebGUI: |
Über das Menu System --> FortiGuard --> License Information kann man unter Intursion Prevention die installierte IPS Engine Version nachschauen: |
Ü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:
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?
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:
Konfiguration über das WebGUI: |
Navigieren über das Menu System -> Feature Visibility und das Intrusion Prevention Feature aktivieren: |
Über die CLI kann das Feature auch im Menu eingeblendet werden:
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:
Konfiguration über das WebGUI: |
Nach dem aktivieren, ist der Menupunkt unter Security Profiles als Intrusion Prevention sichtbar: |
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:
Beispiele:
|
Können Zero-Day oder DoS Angriffe sein Erkannt durch Verhaltensanalyse:
Beispiele:
|
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:
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) Hinweise zum Advanced Modus: Bei FortiGate Geräten mit einem CP8 ist der Standardmodus für cp-accel basic. 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
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:
- Analysis: Der Administrator legt fest, was und wo geschützt werden soll.
- 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
- 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.
edit 9.06.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:
Konfiguration über das WebGui: |
Application Control nicht eingeschalten: |
Über das Menu System --> Feature Visbility und die Option Application Control aktivieren |
Nun kann in der Trafficshaper Policy das Applikations Feld benutzt werden. Übrigens, über die CLI kann jederzeit die Applikation in der Traffic Shaping Policy zugewiesen werden |
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?
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.
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:
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?
Wenn eine unbeschränkte Bandbreite zugelassen werden möchten, kann dies lediglich via CLI mit dem Wert (null) vorgenommen werden.
Eine Traffic Shaping Policy kann wie folgt erstellt werden:
Zu beachtende Parameter (in / out):
Bei Application Category kann nunVoIp ausgewählt werden und bei Application -> SIP:
Kann ich auf einem FortiGate Device den IP-Paketen DSCP Informationen hinzufügen?
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:
- http://bogpeople.com/networking/dscp.shtml
- http://en.wikipedia.org/wiki/Differentiated_Services_Code_Point#Classification_and_marking
- https://de.wikipedia.org/wiki/DiffServ
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:
Konfiguration über das WebGui: |
|
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:
Konfiguration über das WebGui: |
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):
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?
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:
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?
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.
- Session Helper
- ALG (Application Layer Gateway)
Diese zwei Funktionen werden über eine globale Einstellung / Konfiguration gesteuert:
Konfiguration über die CLI: |
# config system settings # set default-voip-alg-mode [proxy-based | kernel-helper-based] # end |
Die Optionen "proxy-based" und/oder "kernel-helper-based" haben folgende Bedeutung:
Somit wird durch folgende Konfiguration entweder der "ALG" oder der "Session Helper"
|
Um den "ALG" somit als Standard zu aktivieren, und den "Session Helper" zu deaktivieren, muss folgendes konfiguriert werden:
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 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
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?
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.
Konfiguration über das WebGui: | ||
Über das Menu:System -> Feature Visibility kann das VoIP Feature eingeschaltet werden: | ||
Konfiguration über die CLI: | ||
config system settings set gui-voip-profile [enable|disable] end | ||
Konfiguration über das WebGui: | ||
Sobald die Funktion aktiviert ist, erscheint unter "Security Profiles" -> "VoIP" der entsprechende Punkt: 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». Die Positionen "REGISTER" und "INVITE" geben an wie viele Requests per Second und Policy über SIP akzeptiert werden.
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:
| ||
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?
Ausgehend davon, dass der SIP-Helper und / oder SIP ALG benutzt wird, kann mit nachfolgenden Kommandos ein Debug für SIP ausgeführt werden:
- Konfiguriere "putty" für ein logging dh., alle Informationen werden in ein Log aufgezeichnet (Category > Session > Logging > All session output)
- Erstelle eine SSH Verbindung zur FortiGate
- Führe ein Login durch und gebe folgendes ein:
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 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. # 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?
Funktion:
In diesem Beispiel wird die Adresse des Medienempfängers im SIP-SDP-Payload an die genattete IP-Adresse angepasst.
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).
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?
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:
Konfiguration über das WebGui: |
|
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?
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:
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?
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:
Konfiguration über das WebGui: |
|
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.
Konfiguration über das WebGui: |
Einrichten des Zeitservers beim DHCP Server:
|
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 |
|
|
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
|
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
|
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
|
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:
# 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
|
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:
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:
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?
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?
VDOM müssen auf der CLI zuerst aktiviert werden, bevor die FortiGate im VDOM Modus ist.
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. |
Konfiguration über das WebGui: |
Nachdem der VDOM Modus auf der FortiGate aktiviert wurde, ist ein neues Menu freigeschalten worden:
|
|
add 28.06.2022 - 4tinu
Was ist eine Admin VDOM?
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.
Konfiguration über das WebGui: |
Um eine Admin Vdom im FortiOS 7.2 zu definieren, muss eine VDOM bereits eingerichtet worden sein.
|
|
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. |
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. |
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- |
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?
Methode 1: Lokales Speichern auf FortiGate-Disk
Konfiguration über das WebGui: |
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.
Konfiguration über das WebGui: |
|
Wo wähle ich aus, welche Arten von Logs gespeichert werden?
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
Konfiguration über das WebGui: |
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.
Konfiguration über das WebGui: |
|
In der CLI sind noch folgende, empfehlenswerte Optionen/Einstellungen möglich:
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?
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.
Konfiguration über das WebGui: |
|
Wie aktiviere ich Reliable Logging?
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:
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:
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:
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:
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:
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:
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:
Sobald diese Einstellung gespeichert wurde, kommen die Logs im Kiwi Syslog Programm an.
Wie sehe ich CLI-Befehle in den System Event Logs?
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:
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?
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
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:
Konfiguration über das WebGui: |
|
|
Um die Aufzeichnung zu stoppen und den Output zu sehen den Button Stop debug flow anwählen |
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)
Um sicher zu sein, dass man alles sieht, sollte für das Troubleshooting das Offloading kurz deaktiviert werden.
Dies kann folgendermassen vorgenommen werden:
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)
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.
Im FortiOS 6.4 und 7.0:
Konfiguration über das WebGui: |
|
In der Übersicht findet man jetzt alle definierten Filter
|
|
|
|
|
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.
Konfiguration über das WebGui: |
|
|
|
|
|
|
|
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.
Um sicher zu sein, dass man alles sieht, sollte für das Troubleshooting das Offloading kurz deaktiviert werden.
Dies kann folgendermassen vorgenommen werden:
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)?
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?
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:
ZTNA-Feature verlangt mindestens FortiOS 7.0 und FortiClient 7.0. |