Standardvorgaben für Firewall-Konfigurationen (Check Point & FortiGate)
Diese Referenz definiert die verbindlichen Namenskonventionen, Syntax-Vorgaben und Skript-Templates für die Automatisierung von Firewall-Regelwerken. Sie gilt primär für Check Point R82 und FortiOS 7.4.
1. Objektbenennung
Die Namensgebung für alle Netzwerk- und Host-Objekte muss strikt dem folgenden Schema folgen:
Schema: <SYSTEMCODE>[-<SYSTEMCODE2>][6]-<TYPE>-<LOCATION>.<bezeichnung>
Parameter-Definition:
- SYSTEMCODE: max. 8 Zeichen, ausschließlich Kleinbuchstaben, abgeleitet aus der Einrichtung oder Anwendung (z. B.
sap,ldap). - SYSTEMCODE2: (Optional) max. 8 Zeichen, Kleinbuchstaben. Wird nur genutzt, wenn das Objekt Teil eines übergeordneten, komplexen Systems ist.
- 6: Wird direkt und ohne Bindestrich an den letzten SYSTEMCODE angehängt, aber ausschließlich bei IPv6-Objekten. Bei IPv4 wird dies komplett weggelassen.
- TYPE:
h= Host / Gatewayn= Netzwerkr= Adressrangeg= Gruppet= NAT-Objekt
- LOCATION: IATA-Flughafencode des Standorts (z. B.
fra,bre).ext= Partner / Internetdiv= Standortübergreifend
- bezeichnung: Fachlich sprechender Name, ausschließlich Kleinbuchstaben (aus Auftrag, IPAM, Assetdaten, bzw. abgeleitet von
SourceHostname/DestinationHostname).
Kollisionsregel:
Haben zwei Objekte denselben generierten Namen, verweisen aber auf unterschiedliche IP-Adressen, ist ein Suffix anzuhängen (-2, -3, etc.).
Beispiele Netzwerkobjekte:
sap-n-fra.dmz-prod(Netzwerk, IPv4)ldap-sap6-h-ext.dc01(Host, IPv6)backup-h-fra.srv01(Host, IPv4)
Vorgaben für Service-Objekte:
- ICMP:
icmp-proto/PING - TCP Port 22:
ssh/SSH - UDP Port 161:
snmp/SNMP - UDP Port 162:
udp_162/SNMPTRAP - Sonstige TCP/UDP Ports:
tcp_<PORT>oderudp_<PORT>(z. B.tcp_15671)
2. Check Point (R82.10) - Konfigurationsvorlagen
2.1 CLISH (Interfaces & Routen)
Aufbau von Interfaces erfolgt immer in der Reihenfolge: physisches Interface → VLAN → IPs setzen → Interface aktivieren (state on) → Routen setzen. Der Abbau erfolgt exakt umgekehrt (Routen löschen → IPs entfernen → state off). Soll ein Route migriert werden, so ist sie zuerst zu entfernen und danach die neue Route anzulegen.
Beispiel Aufbau (Hinzufügen):
add interface eth-s1p2 vlan 1644
set interface eth-s1p2.1644 ipv4-address 10.231.210.50 mask-length 28
set interface eth-s1p2.1644 state on
set static-route 10.0.0.0/8 nexthop gateway address 10.1.2.254 on
Beispiel Abbau (Entfernen):
set static-route 10.0.0.0/8 off
delete interface eth1-02 ipv4-address
set interface eth1-02 state off
2.2 API Skript (mgmt_cli) für Objekte & Regeln
Die Erstellung auf dem Management-Server (SmartCenter) erfolgt über ein Bash-Skript nach dem unten angegebenen Vorschlag. Es muss immer geprüft werden, ob ein Objekt mit der entsprechenden IP bereits existiert, um Duplikate zu vermeiden (Prüfung auf IP-Adresse, nicht Name!). Neue Regeln werden immer als letzte Regel (position last) angefügt. Policy-Paket und Access-Layer sollen im Script abgefragt werden. Weitere fehlende Informationen müssen durch das Script beim User abgefragt werden, sodass auf jeden Fall ein Script ausgegeben werden kann. Da bei Löschaufträgen die UUID nicht aus dem Auftrag hervorgeht, sollen durch das Script nur Elemente hinzugefügt werden. Zu löschende Elemente sollte als Anleitung ausgegeben werden.
Standard-Skriptrahmen:
#!/bin/bash
# Login-Daten abfragen
read -rp "SmartCenter-Benutzer: " SC_USER
read -rsp "Passwort: " SC_PASS; echo
read -rp "Policy Package / Access Layer: " SC_LAYER
# Session initialisieren
SESSION=$(mgmt_cli login user "$SC_USER" password "$SC_PASS" --format json \
| python3 -c "import sys,json; print(json.load(sys.stdin)['sid'])")
# Existenzprüfung und Anlage von Objekten
EXISTING=$(mgmt_cli -s "$SESSION" show hosts limit 500 --format json | \
python3 -c "import sys,json; d=json.load(sys.stdin); \
[print(o['name']) or exit() for o in d.get('objects',[]) if o.get('ipv4-address')=='10.1.2.3']")
if [ -z "$EXISTING" ]; then
mgmt_cli -s "$SESSION" add host name "sap-h-fra.appserver01" ipv4-address "10.1.2.3"
OBJ_SAP_H_FRA_APPSERVER01="sap-h-fra.appserver01"
else
OBJ_SAP_H_FRA_APPSERVER01="$EXISTING"
fi
# Anlage der Regel (Nutzung der Variablen ohne führendes $)
mgmt_cli -s "$SESSION" add access-rule layer "$SC_LAYER" position last name "RULE-NAME" source "$OBJ_SAP_H_FRA_APPSERVER01" destination "ANY" service "SSH" action "Accept"
# Änderungen publizieren und abmelden
mgmt_cli -s "$SESSION" publish
mgmt_cli -s "$SESSION" logout
3. FortiOS (7.4.11) - Konfigurationsvorlagen
3.1 Interfaces und VLANs
config system interface
edit "eth1.1298"
set vdom "root"
set ip 10.1.2.1 255.255.255.0
set vlanid 1298
set interface "eth1"
next
end
3.2 Statisches Routing
config router static
edit 0
set dst 10.0.0.0 255.0.0.0
set gateway 10.1.2.254
set device "eth1.1298"
next
end
Soll ein Route migriert werden, so muss vom Admin die Nummer der Route beschafft werden. In der Ausgabe muss danach gefragt werden, um den vollständigen Auftrag auszugeben.
3.3 Adress-Objekte
config firewall address
edit "sap-n-fra.dmz-prod"
set type ipmask
set subnet 10.1.2.0 255.255.255.0
next
end
3.4 Firewall Policies (Regelwerk)
Regeln werden bei FortiGate standardmäßig mit edit 0 am Ende angehängt (Next Free ID).
Regelnamen (set name): Sofern im Auftrag kein Regelname vorgegeben ist, werden diese automatisch generiert. Werden fortlaufende IDs im Namen verwendet, erfolgen diese zur Wahrung der Übersichtlichkeit immer in 10er-Schritten (z. B. POLICY-0010, POLICY-0020).
config firewall policy
edit 0
set name "POLICY-0010"
set srcintf "eth0"
set dstintf "eth1"
set srcaddr "sap-h-fra.appserver01"
set dstaddr "sap-n-fra.dmz-prod"
set service "SSH"
set action accept
set logtraffic all
next
end