Fortigate HA Cluster

Dieses Dokument beschreibt die Funktionsweise und Konfiguration eines Clusters mit Fortigate Firewalls unter Forti OS 6.2.5. Das dafür verwendete Protokoll ist das Fortigate Clustering Protocol (FGCP), welches folgende Funktionen vereint:

  • Ausfallsicherheit: durch permanente Heartbeat-Pakete kann selbst bei Ausfall einer Firewall eine Ausfallzeit der Dienste von weniger als einer Sekunde realisiert werden. Der Einsatz von virtuellen MAC Adressen dient dazu, dass Clients bei einem Failover keine neuen Adressen lernen müssen.
  • Session Failover: Im Normalzustand werden permanent die Zustände von TCP, SIP und IPSec Sessions auf alle Cluster-Mitglieder verteilt, so dass im Fehlerfall auch diese Protokolle ohne erneuten Verbindungsaufbau weiterlaufen können.
  • Lastverteilung: Mit Hilfe eines Active-Active Clusters kann die Session Last auf alle Cluster-Mitglieder verteilt werden, so dass ressourcenintensive Sicherheitsfeatures (z.B. Virusscan) auf mehrere Systeme verteilt werden können.
  • Virtuelles Clustering:  Als Erweiterung des FGCP lässt sich das Clustering auch auf virtualisierte Firewalls mit mehreren VDOMS erweitern.
  • Full-Mesh HA: Vor- und nachgelagerte Switches können vollvermascht an den Cluster mit Hilfe von LACP angeschlossen werden, so dass auch die angeschlossene Layer-2 Umgebung voll redundant aufgebaut werden kann.

Jedes Mitglied einer Clustergruppe ist eine sog. Einheit (Unit). Eine dieser Einheiten wird als primäre Firewall ausgewählt, die die Konfiguration an alle weiteren Einheiten verteilt. Ebenso können Statusinformation über aktive Sessions synchronisiert werden, so dass z.B. TCP Sessions bei einem Ausfall ohne TCP Verbindungsaufbau weiterlaufen. Die Synchronisierung der Einheiten läuft über dedizierte Heartbeat Interfaces.

Voraussetzungen

Bevor ein Cluster in Betrieb genommen werden kann müssen folgende Voraussetzungen erfüllt sein:

  • Innerhalb des Clusters muss dasselbe FortiGate Firewall Modell eingesetzt werden.
  • Die Firmware Version muss auf allen Einheiten identisch sein.
  • Alle genutzten Interfaces müssen mit statischen Adressen versehen sein. DHCP oder PPPoE kann erst aktiviert werden, wenn der Cluster formiert wurde.
  • Alle Einheiten müssen den gleichen Lizensierungsstand aufweisen. Wenn es Unterschiede gibt, dann wird der Cluster nur die Lizenzen aktivieren, die auf allen Einheiten identisch sind. Ausnahme bildet die FortiToken Lizenz.

Testaufbau

Zur Veranschaulichung der Konfiguration dient folgender Testaufbau, bestehend aus zwei FortiGate 50E und einem nachgelagerten Aruba 2930F Switch.

Im produktiven Umfeld würde man, sofern verfügbar, den Switch mit geeigneten Virtualisierungstechniken (VSF, IRF, VSS oder änlichen) ebenfalls redundant auslegen.

Wenn die beiden Firewalls räumlich getrennt sind, wäre auch der Transport der Heartbeat-Pakete über ein separates VLAN möglich.

Konfiguration

Die Konfiguration erfolgt in folgenden Schritten:

1. Hostnamen vergeben

Da die Hostnamen nicht synchronisiert werden, müssen diese eindeutig vergeben werden. In unserem Fall heißen die Einheiten Primary und Secondary.

2. Auf beiden Systemen die Lizenzen aktivieren

3. HA Konfiguration auf Primary durchführen. Hierzu müssen folgende Parameter konfiguriert werden:

  • Mode: Active-Active oder Active-Passive. Wir wählen hier Active-Passive, so dass ein System keine aktiven Verbindungen hat, sondern nur im Fehlerfall einspringt. Für kleinere Systeme ist das die empfohlene Einstellung. Auf größeren Plattformen kann zur Performancesteigerung auch eine Active-Active Konfiguration erstellt werden.
  • Device Priority: Ein numerischer Prioritätenwert, bei dem die höchste Priorität dazu führt, dass dieses System die Rolle des Masters annimmt. Wir wählen den Wert 200.
  • Group Name: Alphanumerischer Gruppenname, der im Cluster identisch sein muss.
  • Password: Passwort zu Authentifizierung der Firewalls.
  • Session Pickup: Die Möglichkeit TCP, IPSsec und VPN Sessions auf die anderen Firewalls zu synchronisieren, so dass die Sessions im Fehlerfall ohne Neuaufbau weiterlaufen.
  • Monitor Interfaces: Hier können ein oder mehrere Interfaces ausgewählt werden, deren Ausfall zu einem Failover führt.
  • Hearbeat Interface: Mindestens ein, empfohlen zwei physikalische Interfaces um die Heartbeat-Pakete zu übertragen und die Firewalls zu synchronisieren. Hier konfigurieren wir das Interface 5.
  • Heartbeat Priority: Hier kann für jedes Interface eine Priorität angegeben werden.
  • Management Interface Reservation: Hier können physikalische Interfaces definiert werden, die von der HA Konfiguration ausgenommen sind, um jedes singuläre System über definierte Managementprotokolle (HTTPS, SSH, SNMP usw) ansprechen zu können.

Auf der Primary Firewall sieht die Konfiguration dann so aus:

Auf der Secondary Firewall sieht die Konfiguration identisch aus mit Ausnahme der Device Priorität. Hier wählen wir einen kleineren Wert, damit dieses System in den Standby Modus versetzt wird.

Sobald die beiden Interfaces über die Heartbeat Interfaces verbunden werden, wird der Cluster formiert. Primary läuft als Master und Secondary als Slave. Statt der Konfigurationsseite wird nun der Status des Clusters angezeigt:

Management Interface Reservation kann optional noch konfiguriert werden, um die beiden Systeme in vorhandene Management- und Monitoring System einzubinden. Auch fürs Troubleshooting ist es zu empfehlen, eine Managemt Interface Reservation einzurichten. Wir gehen dazu mit “Edit” in die Konfiguration des Clusters:

Mit dieser Einstellung lassen sich nun verschiedene IP Adressen auf den beiden Systemen konfigurieren:

Die Management Interfaces werden in der Cluster Übersicht mit einem Zahnrad und die Heartbeat Interfaces mit einem Herz angezeigt:

Auf den Chassis sollte nun auch die HA LED auf beiden Systemen grün sein:

Failover-Test

Bei einem Ausfall einer Firewall kommt es zu einer kurzen Unterbrechung und die aktiven Sessions werden von der zweiten Einheit übernommen. Um ein Gefühl für die Ausfallzeit zu bekommen lassen wir ein Ping auf eine IP Adresse der Systeme laufen und schalten die aktive Firewall aus:

Im HA Event Log sehen wir folgende Meldungen:

Der Status fehlerhafte HA Status wird auch direkt am Chassis in Form einer roten HA LED angezeigt:

Weitere Dokumentation zu diesem Thema findet sich im FortiOS Handbook – High Availability unter https://docs.fortinet.com