Rocky fw: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „=Die Firewall= =Die Dienste= *firewalld *kea-dhcp4server“)
 
Zeile 1: Zeile 1:
=Die Firewall=
 
  
=Die Dienste=
+
= Die Firewall =
*firewalld
+
 
*kea-dhcp4server
+
== Ziel ==
 +
Die Firewall trennt drei Netzbereiche voneinander: das Schulungsnetz (WAN), die DMZ und das interne LAN. Sie übernimmt gleichzeitig die Aufgaben eines Routers, eines DHCP-Servers für das LAN und kontrolliert den gesamten Netzverkehr zwischen den Zonen.
 +
 
 +
== Netzplan ==
 +
 
 +
{| class="wikitable"
 +
! Interface !! Zone !! Netz !! IP Firewall
 +
|-
 +
| enp0s3 || external || 192.168.HS.0/24 (Schulungsnetz) || 192.168.HS.2XX
 +
|-
 +
| enp0s8 || dmz || 10.88.2XX.0/24 || 10.88.2XX.1
 +
|-
 +
| enp0s9 || internal || 172.26.2XX.0/24 || 172.26.2XX.1
 +
|}
 +
 
 +
=== Feste IP-Adressen ===
 +
 
 +
{| class="wikitable"
 +
! System !! Netz !! IP !! Dienste
 +
|-
 +
| fw.itXX.int || WAN/DMZ/LAN || siehe oben || firewalld, Kea DHCP
 +
|-
 +
| ns.itXX.int || DMZ || 10.88.2XX.2 || BIND9 (DNS)
 +
|-
 +
| http.itXX.int || DMZ || 10.88.2XX.3 || Apache
 +
|-
 +
| ldap.itXX.int || LAN || 172.26.2XX.2 || OpenLDAP
 +
|-
 +
| client.itXX.int || LAN || per DHCP || Ansible Control Node
 +
|}
 +
 
 +
== Dienste auf der Firewall ==
 +
 
 +
;firewalld: Zonenverwaltung, Paketfilterung, Masquerading
 +
;Kea DHCP4: IP-Vergabe für das LAN (172.26.2XX.0/24)
 +
 
 +
== Regelwerk ==
 +
 
 +
{| class="wikitable"
 +
! Von !! Nach !! Erlaubt !! Gesperrt
 +
|-
 +
| LAN || WAN || alles (Masquerading) || —
 +
|-
 +
| DMZ || WAN || alles (Masquerading) || —
 +
|-
 +
| WAN || DMZ || TCP/80, TCP/443 (http), UDP/53 TCP/53 (ns) || alles andere
 +
|-
 +
| WAN || LAN || — || alles
 +
|-
 +
| LAN || DMZ || TCP/80, UDP/53 TCP/53 || alles andere
 +
|-
 +
| DMZ || LAN || TCP/636 (LDAPS) || alles andere
 +
|-
 +
| LAN || LAN || alles || —
 +
|}
 +
 
 +
;Begründung DMZ → LAN TCP/636: Die DMZ-Server (ns, http) authentifizieren sich über SSSD gegen den LDAP-Server im LAN. Dafür muss LDAPS (Port 636) aus der DMZ ins LAN erlaubt sein. Alle anderen Verbindungen von der DMZ ins LAN sind gesperrt – ein kompromittierter DMZ-Server soll keinen freien Zugriff auf das interne Netz bekommen.
 +
 
 +
= Umsetzung =
 +
 
 +
== Netzwerkkonfiguration ==
 +
 
 +
=== enp0s3 (WAN) ===
 +
* nmcli con mod enp0s3 ipv4.addresses 192.168.HS.2XX/24
 +
* nmcli con mod enp0s3 ipv4.gateway 192.168.HS.1
 +
* nmcli con mod enp0s3 ipv4.dns 192.168.HS.1
 +
* nmcli con mod enp0s3 ipv4.method manual
 +
* nmcli con up enp0s3
 +
 
 +
=== enp0s8 (DMZ) ===
 +
* nmcli con mod enp0s8 ipv4.addresses 10.88.2XX.1/24
 +
* nmcli con mod enp0s8 ipv4.method manual
 +
* nmcli con up enp0s8
 +
 
 +
=== enp0s9 (LAN) ===
 +
* nmcli con mod enp0s9 ipv4.addresses 172.26.2XX.1/24
 +
* nmcli con mod enp0s9 ipv4.method manual
 +
* nmcli con up enp0s9
 +
 
 +
=== IP-Forwarding aktivieren ===
 +
;Damit die Firewall Pakete zwischen den Interfaces weiterleitet
 +
* echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/99-forwarding.conf
 +
* sysctl -p /etc/sysctl.d/99-forwarding.conf
 +
 
 +
== firewalld ==
 +
 
 +
=== Installation und Start ===
 +
* dnf install -y firewalld
 +
* systemctl enable --now firewalld
 +
 
 +
=== Interfaces den Zonen zuweisen ===
 +
* firewall-cmd --permanent --zone=external --change-interface=enp0s3
 +
* firewall-cmd --permanent --zone=dmz --change-interface=enp0s8
 +
* firewall-cmd --permanent --zone=internal --change-interface=enp0s9
 +
 
 +
=== Masquerading ===
 +
;LAN und DMZ kommen hinter der externen IP raus
 +
* firewall-cmd --permanent --zone=external --add-masquerade
 +
* firewall-cmd --permanent --zone=dmz --add-masquerade
 +
 
 +
=== WAN → DMZ: DNS und HTTP freigeben ===
 +
* firewall-cmd --permanent --zone=dmz --add-service=dns
 +
* firewall-cmd --permanent --zone=dmz --add-service=http
 +
* firewall-cmd --permanent --zone=dmz --add-service=https
 +
 
 +
=== LAN → DMZ: DNS und HTTP freigeben ===
 +
* firewall-cmd --permanent --zone=internal --add-service=dns
 +
* firewall-cmd --permanent --zone=internal --add-service=http
 +
* firewall-cmd --permanent --zone=internal --add-service=https
 +
 
 +
=== DMZ → LAN: nur LDAPS ===
 +
;Rich Rule: erlaubt LDAPS aus der DMZ ins LAN
 +
* firewall-cmd --permanent --zone=internal --add-rich-rule='rule family="ipv4" source address="10.88.2XX.0/24" service name="ldaps" accept'
 +
 
 +
=== WAN → LAN: alles sperren ===
 +
;Die internal-Zone hat per default kein accept von external – keine weitere Regel nötig
 +
 
 +
=== Konfiguration laden ===
 +
* firewall-cmd --reload
 +
 
 +
=== Kontrolle ===
 +
* firewall-cmd --list-all --zone=external
 +
* firewall-cmd --list-all --zone=dmz
 +
* firewall-cmd --list-all --zone=internal
 +
 
 +
== Kea DHCP4 für das LAN ==
 +
 
 +
=== Installation ===
 +
* dnf install -y kea
 +
 
 +
=== Konfiguration ===
 +
* vim /etc/kea/kea-dhcp4.conf
 +
<pre>
 +
{
 +
  "Dhcp4": {
 +
    "interfaces-config": {
 +
      "interfaces": [ "enp0s9" ]
 +
    },
 +
    "lease-database": {
 +
      "type": "memfile",
 +
      "persist": true,
 +
      "name": "/var/lib/kea/kea-leases4.csv"
 +
    },
 +
    "valid-lifetime": 3600,
 +
    "subnet4": [
 +
      {
 +
        "subnet": "172.26.2XX.0/24",
 +
        "pools": [ { "pool": "172.26.2XX.100 - 172.26.2XX.200" } ],
 +
        "option-data": [
 +
          { "name": "routers", "data": "172.26.2XX.1" },
 +
          { "name": "domain-name-servers", "data": "10.88.2XX.2" },
 +
          { "name": "domain-name", "data": "itXX.int" }
 +
        ]
 +
      }
 +
    ]
 +
  }
 +
}
 +
</pre>
 +
 
 +
=== Start ===
 +
* systemctl enable --now kea-dhcp4
 +
 
 +
=== Kontrolle ===
 +
* systemctl status kea-dhcp4
 +
* cat /var/lib/kea/kea-leases4.csv

Version vom 19. Mai 2026, 18:50 Uhr

Die Firewall

Ziel

Die Firewall trennt drei Netzbereiche voneinander: das Schulungsnetz (WAN), die DMZ und das interne LAN. Sie übernimmt gleichzeitig die Aufgaben eines Routers, eines DHCP-Servers für das LAN und kontrolliert den gesamten Netzverkehr zwischen den Zonen.

Netzplan

Interface Zone Netz IP Firewall
enp0s3 external 192.168.HS.0/24 (Schulungsnetz) 192.168.HS.2XX
enp0s8 dmz 10.88.2XX.0/24 10.88.2XX.1
enp0s9 internal 172.26.2XX.0/24 172.26.2XX.1

Feste IP-Adressen

System Netz IP Dienste
fw.itXX.int WAN/DMZ/LAN siehe oben firewalld, Kea DHCP
ns.itXX.int DMZ 10.88.2XX.2 BIND9 (DNS)
http.itXX.int DMZ 10.88.2XX.3 Apache
ldap.itXX.int LAN 172.26.2XX.2 OpenLDAP
client.itXX.int LAN per DHCP Ansible Control Node

Dienste auf der Firewall

firewalld
Zonenverwaltung, Paketfilterung, Masquerading
Kea DHCP4
IP-Vergabe für das LAN (172.26.2XX.0/24)

Regelwerk

Von Nach Erlaubt Gesperrt
LAN WAN alles (Masquerading)
DMZ WAN alles (Masquerading)
WAN DMZ TCP/80, TCP/443 (http), UDP/53 TCP/53 (ns) alles andere
WAN LAN alles
LAN DMZ TCP/80, UDP/53 TCP/53 alles andere
DMZ LAN TCP/636 (LDAPS) alles andere
LAN LAN alles
Begründung DMZ → LAN TCP/636
Die DMZ-Server (ns, http) authentifizieren sich über SSSD gegen den LDAP-Server im LAN. Dafür muss LDAPS (Port 636) aus der DMZ ins LAN erlaubt sein. Alle anderen Verbindungen von der DMZ ins LAN sind gesperrt – ein kompromittierter DMZ-Server soll keinen freien Zugriff auf das interne Netz bekommen.

Umsetzung

Netzwerkkonfiguration

enp0s3 (WAN)

  • nmcli con mod enp0s3 ipv4.addresses 192.168.HS.2XX/24
  • nmcli con mod enp0s3 ipv4.gateway 192.168.HS.1
  • nmcli con mod enp0s3 ipv4.dns 192.168.HS.1
  • nmcli con mod enp0s3 ipv4.method manual
  • nmcli con up enp0s3

enp0s8 (DMZ)

  • nmcli con mod enp0s8 ipv4.addresses 10.88.2XX.1/24
  • nmcli con mod enp0s8 ipv4.method manual
  • nmcli con up enp0s8

enp0s9 (LAN)

  • nmcli con mod enp0s9 ipv4.addresses 172.26.2XX.1/24
  • nmcli con mod enp0s9 ipv4.method manual
  • nmcli con up enp0s9

IP-Forwarding aktivieren

Damit die Firewall Pakete zwischen den Interfaces weiterleitet
  • echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/99-forwarding.conf
  • sysctl -p /etc/sysctl.d/99-forwarding.conf

firewalld

Installation und Start

  • dnf install -y firewalld
  • systemctl enable --now firewalld

Interfaces den Zonen zuweisen

  • firewall-cmd --permanent --zone=external --change-interface=enp0s3
  • firewall-cmd --permanent --zone=dmz --change-interface=enp0s8
  • firewall-cmd --permanent --zone=internal --change-interface=enp0s9

Masquerading

LAN und DMZ kommen hinter der externen IP raus
  • firewall-cmd --permanent --zone=external --add-masquerade
  • firewall-cmd --permanent --zone=dmz --add-masquerade

WAN → DMZ: DNS und HTTP freigeben

  • firewall-cmd --permanent --zone=dmz --add-service=dns
  • firewall-cmd --permanent --zone=dmz --add-service=http
  • firewall-cmd --permanent --zone=dmz --add-service=https

LAN → DMZ: DNS und HTTP freigeben

  • firewall-cmd --permanent --zone=internal --add-service=dns
  • firewall-cmd --permanent --zone=internal --add-service=http
  • firewall-cmd --permanent --zone=internal --add-service=https

DMZ → LAN: nur LDAPS

Rich Rule
erlaubt LDAPS aus der DMZ ins LAN
  • firewall-cmd --permanent --zone=internal --add-rich-rule='rule family="ipv4" source address="10.88.2XX.0/24" service name="ldaps" accept'

WAN → LAN: alles sperren

Die internal-Zone hat per default kein accept von external – keine weitere Regel nötig

Konfiguration laden

  • firewall-cmd --reload

Kontrolle

  • firewall-cmd --list-all --zone=external
  • firewall-cmd --list-all --zone=dmz
  • firewall-cmd --list-all --zone=internal

Kea DHCP4 für das LAN

Installation

  • dnf install -y kea

Konfiguration

  • vim /etc/kea/kea-dhcp4.conf
{
  "Dhcp4": {
    "interfaces-config": {
      "interfaces": [ "enp0s9" ]
    },
    "lease-database": {
      "type": "memfile",
      "persist": true,
      "name": "/var/lib/kea/kea-leases4.csv"
    },
    "valid-lifetime": 3600,
    "subnet4": [
      {
        "subnet": "172.26.2XX.0/24",
        "pools": [ { "pool": "172.26.2XX.100 - 172.26.2XX.200" } ],
        "option-data": [
          { "name": "routers", "data": "172.26.2XX.1" },
          { "name": "domain-name-servers", "data": "10.88.2XX.2" },
          { "name": "domain-name", "data": "itXX.int" }
        ]
      }
    ]
  }
}

Start

  • systemctl enable --now kea-dhcp4

Kontrolle

  • systemctl status kea-dhcp4
  • cat /var/lib/kea/kea-leases4.csv