|
|
| (39 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) |
| Zeile 1: |
Zeile 1: |
| | | *[[Rocky fw firewalld]] |
| = Die Firewall =
| | *[[Rocky fw nftables]] |
| | | *[[Rocky fw firewalld mit return]] |
| == 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.21 || BIND9 (DNS)
| |
| |-
| |
| | http.itXX.int || DMZ || 10.88.2XX.11 || Apache
| |
| |-
| |
| | ldap.itXX.int || LAN || 172.26.2XX.3 || 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
| |