Rocky fw: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
(Die Seite wurde neu angelegt: „=Die Firewall= =Die Dienste= *firewalld *kea-dhcp4server“) |
|||
| Zeile 1: | Zeile 1: | ||
| − | |||
| − | =Die Dienste= | + | = Die Firewall = |
| − | *firewalld | + | |
| − | *kea- | + | == 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