Linux - Netzwerk und Serveradminstration Firewall: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| (23 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
| + | = Firewall = | ||
| + | {{#drawio:5102-firewall-01}} | ||
| + | |||
| + | = Routing und Masquerading = | ||
| + | {{#drawio:5102-masquerade}} | ||
| + | * Damit die Firewall als Internet-Router fungieren kann, muss die Quell-IP der Pakete umgeschrieben werden | ||
| + | * Dazu müssen Firewall-Regeln unter [nftables Masquerade|nftables]] erstellt werden, das machen wir weiter unten. | ||
| + | |||
=Wir klonen das debian-template= | =Wir klonen das debian-template= | ||
Folgendes stellen wir ein | Folgendes stellen wir ein | ||
| Zeile 10: | Zeile 18: | ||
| '''CPU''' || 4 Kerne || - | | '''CPU''' || 4 Kerne || - | ||
|- | |- | ||
| − | | '''1. NIC''' || WAN || | + | | '''1. NIC''' || WAN || Bridge br0 |
|- | |- | ||
| − | | '''2. NIC''' || | + | | '''2. NIC''' || DMZ || Internes Netzwerk (Client-Netz) |
|- | |- | ||
| − | | '''3. NIC''' || | + | | '''3. NIC''' || LAN || Internes Netzwerk (Demilitarized Zone) |
|- | |- | ||
| − | | '''4. NIC''' || | + | | '''4. NIC''' || SERVER || Internes Netzwerk (Server-Netz) |
|} | |} | ||
| Zeile 40: | Zeile 48: | ||
address 192.168.Y.2XX/24 | address 192.168.Y.2XX/24 | ||
gateway 192.168.Y.254 | gateway 192.168.Y.254 | ||
| + | dns-nameservers 192.168.Y.88 | ||
| + | dns-search it2XX.int | ||
post-up ip route add 10.88.0.0/16 via 192.168.Y.88 | post-up ip route add 10.88.0.0/16 via 192.168.Y.88 | ||
| − | # | + | #DMZ |
auto enp0s8 | auto enp0s8 | ||
iface enp0s8 inet static | iface enp0s8 inet static | ||
| − | address | + | address 10.88.2XX.1/24 |
| − | # | + | #LAN |
auto enp0s9 | auto enp0s9 | ||
iface enp0s9 inet static | iface enp0s9 inet static | ||
| − | address | + | address 172.26.2XX.1/24 |
| + | |||
| − | # | + | #SERVER |
auto enp0s10 | auto enp0s10 | ||
iface enp0s10 inet static | iface enp0s10 inet static | ||
| Zeile 70: | Zeile 81: | ||
ff02::2 ip6-allrouters | ff02::2 ip6-allrouters | ||
</pre> | </pre> | ||
| − | = | + | =Reboot= |
| − | * | + | *systemctl reboot |
| − | + | ||
| − | + | =SSH Keys hinterlegen= | |
| + | *[[SSH Keys hinterlegen fw]] | ||
| + | |||
=NAT mit nftables= | =NAT mit nftables= | ||
;Datei erstellen, alles was drin ist kann raus | ;Datei erstellen, alles was drin ist kann raus | ||
| Zeile 81: | Zeile 94: | ||
# Variablen | # Variablen | ||
| − | define LAN = 172. | + | define LAN = 172.26.2XX.0/24 |
| − | define | + | define SERVER = 10.2XX.1.0/24 |
define DMZ = 10.88.2XX.0/24 | define DMZ = 10.88.2XX.0/24 | ||
# Alte Regeln löschen (flush) | # Alte Regeln löschen (flush) | ||
| − | flush | + | flush ruleset |
# NAT-Tabelle erstellen/verwenden | # NAT-Tabelle erstellen/verwenden | ||
| Zeile 105: | Zeile 118: | ||
ip saddr $LAN oif enp0s3 masquerade | ip saddr $LAN oif enp0s3 masquerade | ||
| − | # | + | # SERVER nach außen - Masquerade |
| − | ip saddr $ | + | ip saddr $SERVER oif enp0s3 masquerade |
} | } | ||
} | } | ||
| Zeile 112: | Zeile 125: | ||
;Firewall aktivieren | ;Firewall aktivieren | ||
*systemctl enable nftables --now | *systemctl enable nftables --now | ||
| + | ;Kontrolle | ||
| + | *nft list ruleset | ||
=Forward= | =Forward= | ||
| Zeile 119: | Zeile 134: | ||
=Reboot= | =Reboot= | ||
*systemctl reboot | *systemctl reboot | ||
| − | + | =Allgemeine Tests= | |
| − | + | ;Kontrolle der IPs | |
| − | + | *ip a s | |
| − | + | ;Kontrolle der Routen | |
| − | + | *ip r s | |
| − | + | ;Kontrolle Nameserver | |
| − | + | *cat /etc/resolv.conf | |
| − | = | + | ;Kontrolle NFTables |
| − | * | + | *nft list ruleset |
| − | * | + | ;Kontrolle IPFORWARD |
| − | * | + | *cat /proc/sys/net/ipv4/ip_forward |
| − | + | =Konnektivitäts Test= | |
| − | + | Wir brauchen 2 Terminals | |
| − | + | ;1 Terminal | |
| − | * | + | *tcpdump -ni enp0s3 icmp |
| − | + | ;2 Terminal | |
| − | + | *ping -c 1 1.1.1.1 | |
| − | + | *ping -c 1 -I 10.88.213.1 1.1.1.1 | |
| − | * | + | *ping -c 1 -I 10.88.213.1 192.168.7.201 |
| − | * | + | *ping -c 1 -I 10.88.213.1 10.88.201.1 |
| − | + | *ping -c 1 -I 172.26.213.1 10.88.201.1 | |
| − | * | + | *ping -c 1 -I 10.213.1.1 10.88.201.1 |
Aktuelle Version vom 15. April 2026, 10:12 Uhr
Firewall
Routing und Masquerading
- Damit die Firewall als Internet-Router fungieren kann, muss die Quell-IP der Pakete umgeschrieben werden
- Dazu müssen Firewall-Regeln unter [nftables Masquerade|nftables]] erstellt werden, das machen wir weiter unten.
Wir klonen das debian-template
Folgendes stellen wir ein
| Attribut | Wert | Netzwerk / Typ |
|---|---|---|
| Name | fw | - |
| RAM | 4 GB | - |
| CPU | 4 Kerne | - |
| 1. NIC | WAN | Bridge br0 |
| 2. NIC | DMZ | Internes Netzwerk (Client-Netz) |
| 3. NIC | LAN | Internes Netzwerk (Demilitarized Zone) |
| 4. NIC | SERVER | Internes Netzwerk (Server-Netz) |
Erklärung
- XX = Platznummer
- Y = Klassensaal
Hostname
- hostnamectl set-hostname fw.it2XX.int
Interfaces
- cat /etc/network/interfaces
source /etc/network/interfaces.d/* # The loopback network interface auto lo iface lo inet loopback # The primary network interface #WAN auto enp0s3 iface enp0s3 inet static address 192.168.Y.2XX/24 gateway 192.168.Y.254 dns-nameservers 192.168.Y.88 dns-search it2XX.int post-up ip route add 10.88.0.0/16 via 192.168.Y.88 #DMZ auto enp0s8 iface enp0s8 inet static address 10.88.2XX.1/24 #LAN auto enp0s9 iface enp0s9 inet static address 172.26.2XX.1/24 #SERVER auto enp0s10 iface enp0s10 inet static address 10.2XX.1.1/24
Hosts
- cat /etc/hosts
127.0.0.1 localhost 127.0.1.1 fw.it2XX.int fw # The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters
Reboot
- systemctl reboot
SSH Keys hinterlegen
NAT mit nftables
- Datei erstellen, alles was drin ist kann raus
- cat /etc/nftables.conf
#!/usr/sbin/nft -f
# Variablen
define LAN = 172.26.2XX.0/24
define SERVER = 10.2XX.1.0/24
define DMZ = 10.88.2XX.0/24
# Alte Regeln löschen (flush)
flush ruleset
# NAT-Tabelle erstellen/verwenden
table ip nat {
chain postrouting {
type nat hook postrouting priority 100; policy accept;
# DMZ nach 192.168.Y.0/24 - kein NAT (RETURN)
ip saddr $DMZ ip daddr 192.168.Y.0/24 return
# DMZ nach 10.88.0.0/16 - kein NAT (RETURN)
ip saddr $DMZ ip daddr 10.88.0.0/16 return
# DMZ nach außen (enp0s3) - Masquerade
ip saddr $DMZ oif enp0s3 masquerade
# LAN nach außen - Masquerade
ip saddr $LAN oif enp0s3 masquerade
# SERVER nach außen - Masquerade
ip saddr $SERVER oif enp0s3 masquerade
}
}
- Firewall aktivieren
- systemctl enable nftables --now
- Kontrolle
- nft list ruleset
Forward
- echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/99-ipforward.conf
- sysctl -p /etc/sysctl.d/99-ipforward.conf
Reboot
- systemctl reboot
Allgemeine Tests
- Kontrolle der IPs
- ip a s
- Kontrolle der Routen
- ip r s
- Kontrolle Nameserver
- cat /etc/resolv.conf
- Kontrolle NFTables
- nft list ruleset
- Kontrolle IPFORWARD
- cat /proc/sys/net/ipv4/ip_forward
Konnektivitäts Test
Wir brauchen 2 Terminals
- 1 Terminal
- tcpdump -ni enp0s3 icmp
- 2 Terminal
- ping -c 1 1.1.1.1
- ping -c 1 -I 10.88.213.1 1.1.1.1
- ping -c 1 -I 10.88.213.1 192.168.7.201
- ping -c 1 -I 10.88.213.1 10.88.201.1
- ping -c 1 -I 172.26.213.1 10.88.201.1
- ping -c 1 -I 10.213.1.1 10.88.201.1

