Router Firewall - Vertiefung UNIX-/Linux Netzwerke: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
(22 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
==Grundkonfiguration==
+
= Firewall =
* Hardwareanpassungen, damit die Dienste später auch genug Ressourcen haben:
+
= Routing und Masquerading =
** 4 GB RAM
+
{{#drawio:5102-masquerade}}
** 4 CPUs
+
* Damit die Firewall als Internet-Router fungieren kann, muss die Quell-IP der Pakete umgeschrieben werden
** 4 Netzwerkkarten
+
* Dazu müssen Firewall-Regeln unter [nftables Masquerade|nftables]] erstellt werden, das machen wir weiter unten.
* Als nächstes setzen wir den Hostnamen der äußeren '''Router Firewall''' und konfigurieren die statischen IP
 
* '''hostnamectl set-hostname fw.it2xx.int'''
 
* für die statische IP muss die Datei ''/etc/network/interfaces'' bearbeitet werden (Distributions abhängig)
 
* '''vim ''/etc/network/interfaces'' '''
 
auto lo
 
iface lo inet loopback
 
#WAN
 
auto enp0s3
 
iface enp0s3 inet static
 
  address 172.22.0.'''xx'''/16
 
  gateway 172.22.1.1
 
  post-up ip route add 10.88.0.0/16 via 172.22.0.88
 
 
#LAN
 
auto enp0s8
 
iface enp0s8 inet static
 
  address 172.17.2'''xx'''.1/24
 
#DMZ
 
auto enp0s9
 
iface enp0s9 inet static
 
  address 10.88.2''xx''.1/24
 
  
 +
=== Netzkonfiguration Firewall ===
 +
*Wir klonen das Debian Template
 +
{{fw-maschine
 +
| ip  = 172.22.0.2XX
 +
| cidr = 16
 +
| gw  = 172.22.1.1
 +
| ns  = 172.22.0.88
 +
| fqdn = fw.it2XX.int
 +
| dom  = it2XX.int
 +
}}
  
* '''ifdown -va ; ifup -va'''
+
=Erklärung=
* bzw.
+
*XX = Platznummer
* '''systemctl restart networking'''
+
*Y = Klassensaal
* Als Kontrolle kann man '''ip addr show''' ausführen
+
 
 +
==Halt==
 +
*systemctl halt
 +
 
 +
=Danach passen wir die fw an=
 +
Folgendes stellen wir ein
 +
{| class="wikitable"
 +
! Attribut !! Wert !! Netzwerk / Typ
 +
|-
 +
| '''Name''' || fw || -
 +
|-
 +
| '''RAM''' || 4 GB || -
 +
|-
 +
| '''CPU''' || 4 Kerne || -
 +
|-
 +
| '''1. NIC''' || WAN || Bridge br0
 +
|-
 +
| '''2. NIC''' || DMZ || Internes Netzwerk (Demilitarized Zone)
 +
|-
 +
| '''3. NIC''' || LAN || Internes Netzwerk (Client-Netz)
 +
|-
 +
| '''4. NIC''' || SERVER || Internes Netzwerk (Server-Netz)
 +
|}
 +
 
 +
=Auf unserem Host eine kleine Anpassung=
 +
;Als kit user
 +
*nano ~/.ssh/config
 +
Host fw
 +
  HostName <FIREWALLIP>
 +
  User kit
 +
=Auf dem Management Rechner=
 +
;Schlüsselpaar anlegen mit Passphrase
 +
*ssh-keygen
 +
;Konfig erstellen
 +
*nano ~/.ssh/config
 +
Host fw
 +
  HostName <FIREWALLIP>
 +
  User kit
 +
;Wenn noch nicht geschehen Öffentlicher Schlüssel übertragen
 +
*ssh-copy-id fw
 +
;Danach könnt ihr euch so einloggen
 +
*ssh fw
 +
 
 +
=Interfaces=
 +
{{network-interfaces-fw
 +
| ip  = 172.22.0.2XX
 +
| cidr = 16
 +
| gw  = 172.22.1.1
 +
| ns  = 172.22.0.88
 +
| dom  = it2XX.int
 +
}}
 +
 
 +
=Reboot=
 +
*ifup -va
 +
oder
 +
*systemctl reboot
 +
 
 +
=SSH Keys hinterlegen=
 +
*[[SSH Keys hinterlegen fw]]
 +
 
 +
=NAT mit nftables=
 +
;Datei erstellen, alles was drin ist kann raus
 +
{{nftabels-var1
 +
| kit = 172.22.0.0/16
 +
}}
 +
# Alte Regeln löschen (flush)
 +
flush ruleset
 +
{{vorlage:nat2}}
 +
 
 +
;Firewall aktivieren
 +
*systemctl enable nftables --now
 +
;Kontrolle
 +
*nft list ruleset
 +
 
 +
=Alternatives Laden=
 +
*nft -f /etc/nftables.conf
 +
=Löschen der Regeln=
 +
*nft flush 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
 +
oder
 +
*sysctl net.ipv4.ip_forward

Aktuelle Version vom 19. Mai 2026, 12:20 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.

Netzkonfiguration Firewall

  • Wir klonen das Debian Template
Parameter Wert Erläuterung
Netzwerk (NIC) br0 bridge
IP 172.22.0.2XX Statische IP
CIDR 16 Classless Inter-Domain Routing Präfixlänge
GW 172.22.1.1 GATEWAY
NS 172.22.0.88 Resolver
FQDN fw.it2XX.int Fully Qualified Domain Name
SHORT fw Short Name
DOM it2XX.int Domain Name
Anpassen des Templates

oder

Mit Skript
  • debian-setup.sh -f fw.it2XX.int -a 172.22.0.2XX/16 -g 172.22.1.1 -n 172.22.0.88

Erklärung

  • XX = Platznummer
  • Y = Klassensaal

Halt

  • systemctl halt

Danach passen wir die fw an

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 (Demilitarized Zone)
3. NIC LAN Internes Netzwerk (Client-Netz)
4. NIC SERVER Internes Netzwerk (Server-Netz)

Auf unserem Host eine kleine Anpassung

Als kit user
  • nano ~/.ssh/config
Host fw
 HostName <FIREWALLIP>
 User kit

Auf dem Management Rechner

Schlüsselpaar anlegen mit Passphrase
  • ssh-keygen
Konfig erstellen
  • nano ~/.ssh/config
Host fw
 HostName <FIREWALLIP>
 User kit
Wenn noch nicht geschehen Öffentlicher Schlüssel übertragen
  • ssh-copy-id fw
Danach könnt ihr euch so einloggen
  • ssh fw

Interfaces

  • vi /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 172.22.0.2XX/16
 gateway 172.22.1.1
 dns-nameservers 172.22.0.88
 dns-search it2XX.int
 post-up ip route add 10.88.0.0/16 via 172.22.0.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

Reboot

  • ifup -va

oder

  • 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 WANIP = <WANIP der Firewall>
define LAN = 172.26.2XX.0/24
define MGMT = 172.27.2XX.0/24
define SERVER = 10.2XX.1.0/24
define DMZ = 10.88.2XX.0/24
define KIT = 172.22.0.0/16
define WANDEV = enp0s3
# Alte Regeln löschen (flush)
flush ruleset
 table inet nat {
  chain postrouting {
   type nat hook postrouting priority 100; policy accept;
        ip saddr $DMZ ip daddr $KIT return
        ip saddr $DMZ ip daddr 10.88.0.0/16 return
        ip saddr $DMZ oif $WANDEV snat to $WANIP
        ip saddr $LAN oif $WANDEV snat to $WANIP
        ip saddr $SERVER oif $WANDEV snat to $WANIP
        ip saddr $MGMT oif $WANDEV snat to $WANIP
     }
  }
Firewall aktivieren
  • systemctl enable nftables --now
Kontrolle
  • nft list ruleset

Alternatives Laden

  • nft -f /etc/nftables.conf

Löschen der Regeln

  • nft flush 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

oder

  • sysctl net.ipv4.ip_forward