, , , , , , , , , , ,

Erklärt: ARP-Tabelle – Proxy_Arp und Neighbour sowie der MAC Filter

Posted by

0
(0)
die arp tabelle v2

Vorwort:

Was sind die sogenannten ARP-Tabellen?

Wofür sind diese gut? Und was sind mögliche Gefahren, die man hierfür beachten und absichern sollte?

Ich erkläre Dir in diesem Tutorial, was ARP-Tabellen sind und welche Tricks man anwenden kann und wie man Netzwerke besser strukturiert und absichert.

Mein Name ist Jan und bin Technik begeistert, ich gebe mein Wissen zur Forschung und allgemeinen Zwecks kostenlos frei für die Internetgemeinschaft.

Für einen guten Zweck, zur Förderung von Vereinen und Communitys.

Seit vielen Jahren beschäftige ich mich mit den Themen Netzwerk, Server sowie deren Systemadministration.

jan hill
Jan H. – Autor

1. Was sind ARP-Tabellen?

Die ARP-Tabellen lösen im Endeffekt die MAC zu IP-Adressen auf und oder andersrum.

Die ARP-Tabelle ist im Linux Systemen für IPv4: arp -n einsehbar.

Da IPv4 und das neuere IPv6 Protokoll jeweils getrennt voneinander arbeiten, ist die Neighbour Tabelle für IPv6 unter Linux einsehbar mit folgendem Befehl:

ip -6 neighbour

Es gibt Möglichkeiten mittels statischen ARP-Einträgen, MAC und IP-Adresse manuell zu verknüpfen.

Sehen wir uns zunächst anhand ein paar Beispiele uns die ARP-Tabellen genauer an.

2. Proxy_ARP (IPv4) Tabelle

arp v4
Hier sehen wir die ARP-Tabelle

3. Neighbour (IPv6) – Proxy_NDP Tabelle

ipv6 neighbour
Hier sehen wir alle Einträge von IPv6 Adressen in der ARP/NDP Tabelle

IPV6-Adresse dev Schnittstelle lladdr MAC-Adresse

Wie ich schon sagte, arbeiten IPV4 und IPv6 jeweils getrennt voneinander.

Deswegen gibt es hierfür im Linux Kernel für IPv4 Proxy_ARP und bei IPv6 Proxy_NDP.

4. Was ist der ARP-Cache?

Der ARP Cache ist das, was oben bereits steht, die zwischengespeicherten Einträge.

Die ARP-Tabellen haben auch einen sogenannten Cache, den man auch selbstverständlich wieder leeren kann.

Mit ip neigh flush all [dev INTERFACE] können wir bei IPv6 den gesamten Cache oder für die jeweilige Schnittstelle flushen.

Sobald die Maschine mit dem jeweiligen Gateway wieder Kontakt aufnimmt, so wird die MAC und IP-Adresse in der ARP-Tabelle wiederaufgenommen.

Bei IPv4 wäre für Proxy_ARP folgender Befehl notwendig, um den Cache einmal zu leeren: ip neigh flush proxy

5. Was ist ein MAC-Filter?

Ein MAC-Filter dient für die Unterbindung sogenanntem MAC-Spoofing.

Man kann durchaus sehr leicht MAC-Adressen fälschen, um somit bei Missbrauch auch die Sicherheit des Netzwerkes gefährden.

Zudem, wenn sehr viele gespoofte MAC-Adressen generiert werden, verliert man dort schnell den Überblick.

Es wäre umso besser einen MAC-Filter zu aktivieren, um selbst genaustens die MACs zu den jeweiligen IP-Adressen zuzuweisen.

Somit wäre das Netzwerk zwar streng von den Filtern her, aber es wäre am sichersten und man weiß, welchen Server man genau im Netzwerk bei sich hat.

Es gibt verschiedene Möglichkeiten, einen MAC-Filter zu aktivieren.

Zumeist passiert das schon ab dem Netzwerk-Switch, der die LAN Ports an die jeweiligen Rechner aufteilt.

Aber auch virtuell, wenn man gerade nicht einen Managed Switch bei sich Zuhause hat, ist das ganze möglich.

6. MAC-Filter (Virtuell) mittels UFW Firewall Linux

Bash
apt install ufw -y

Wir installieren zunächst das UFW Paket und danach geben wir alle Ports frei, die wir zunächst brauchen

Bash
apt install sudo -y
# INPUT, OUPUT sowie FORWARD alles bei Standard sperren
sudo ufw default deny incoming
sudo ufw default deny outgoing
sudo ufw default deny routed
# Für SSH
sudo ufw allow 22/tcp
# Und für Proxmox
sudo ufw allow 8006/tcp
# Für ICMP - OUTPUT
# Mit Nano folgene Datei öffnen und einfügen bei #ICMP ok
sudo nano /etc/ufw/before.rules
-A ufw-before-output -p icmp --icmp-type echo-request -j ACCEPT
# Für DNS - OUTPUT
sudo ufw allow out proto udp to any port 53
sudo ufw allow out proto tcp to any port 53
sudo ufw allow out proto tcp to any port 80
sudo ufw allow out proto tcp to any port 443
Bash
# Jetzt aktivieren wir die UFW
ufw enable

# Tipps
# Schaltet die UFW komplett aus
ufw disable

# Lädt einmal die Rules komplett neu durch siehe: /etc/ufw/before.rules
ufw reload
Screenshot 04 01 2025 23.28.21
Wir erstellen eine neue Linux Brücke für unsere VMs die auf den Host geroutet sind
Bash
# Jetzt die Linux Brücke aktivieren mit
ifreload -a
Screenshot 04 01 2025 23.31.20
Jetzt beim anlegen einer neuen VM die Linux Brücke auswählen und die Netzwerk Daten eintragen
Screenshot 04 01 2025 23.32.57
Jetzt haben wir ein sehr strenges Netzwerk
Bash
# Jetzt müssen wir das IPv4 und optional IPv6 Forwarding im Linux Kernel aktivieren
nano /etc/sysctl.conf
# Jetzt einfach einfügen und abspeichern
net.ipv4.conf.default.rp_filter=1
net.ipv4.conf.all.rp_filter=1

net.ipv4.ip_forward=1

net.ipv6.conf.all.forwarding=1

net.ipv4.conf.all.accept_redirects = 0
net.ipv6.conf.all.accept_redirects = 0

net.ipv4.conf.all.secure_redirects = 1

# Im Anschluss die neuen Änderungen nun übernehmen
sysctl -p

Jetzt hat der jeweilige Container aufgrund der vorherigen Regeln keine Internetverbindung und ist auch nicht von außen erreichbar.

Um jetzt die jeweilige MAC-Adresse zu der jeweiligen z. B. IPv4 IP-Adresse zu binden, müssten wir einmal folgendes machen

Bash
sudo iptables -A INPUT -i vmbr1 -s 11.11.11.2 -m mac --mac-source BC:24:11:8A:51:1A -j ACCEPT
sudo iptables -A FORWARD -i vmbr1 -s 11.11.11.2 -m mac --mac-source BC:24:11:8A:51:1A -j ACCEPT
sudo iptables -t nat -A POSTROUTING -s 11.11.11.0/24 -o vmbr0 -j MASQUERADE

Hier nutzen wir einmal direkt iptables und dann wird alles im INPUT und FORWAD von Source IP für die eindeutige MAC-Adresse freigegeben.

Wenn IP oder MAC nicht übereinstimmt, geht logischerweise kein Traffic durch.

Screenshot 05 01 2025 01.16.16
Hier sehen wir das Resultat wenn MAC und IP übereinstimmen

Der Aufbau meines Netzwerkes

Screenshot 05 01 2025 01.21.01
Das ist die Container IP mit der MAC-Adresse in der ARP-Tabelle

  • 11.11.11.0/24 ist mein Subnetz
    • Erstellt auf vmbr1
  • BC:24:11:8A:51:1A ist meine MAC-Adresse vom Container
    • Diese muss übereinstimmend sein zu meiner 11.11.11.2 IP-Adresse
  • MASQUERADE: Erlaubt die Verwendung meines kompletten vmbr0 Netzwerkes (NAT)
    • Dabei muss hierfür die IP-Source 11.11.11.0/24 übereinstimmen

Was ist ARP-Spoofing?

Wenn man Proxy_ARP oder Proxy_NDP auf allen Schnittstellen aktiviert, z. B. für IP-Routing oder VPN-Gateways etc.

Müssen Sicherheitsvorkehrungen immer vorgenommen werden.

Wenn dies nicht geschieht, so wird man Opfer eines IP-Spoofing Angriffes.

Stellt Euch das so vor, dass der Angreifer manipulierte ARP Einträge erzeugt, um somit Eure IP-Adressen zu missbrauchen, zumeist für (D)DoS Attacken.

Ein MAC-Filter unterbindet dies zwar sowieso, aber bei Layer 2 Brücken über VPN oder IP-Protokollen ist es immer mit sehr viel Aufwand verbunden.

Es ist aber immer wichtig, das Netzwerk so gut wie möglich abzusichern.

Meine Konfigurationen

Von IPtables und UFW:

Bash
root@pve01:~# cat /etc/iptables/rules.v4
# Generated by iptables-save v1.8.9 on Sun Jan  5 01:30:16 2025
*raw
:PREROUTING ACCEPT [88447:23584120]
:OUTPUT ACCEPT [75574:19274070]
COMMIT
# Completed on Sun Jan  5 01:30:16 2025
# Generated by iptables-save v1.8.9 on Sun Jan  5 01:30:16 2025
*nat
:PREROUTING ACCEPT [3783:521782]
:INPUT ACCEPT [2669:142264]
:OUTPUT ACCEPT [4031:263967]
:POSTROUTING ACCEPT [2672:160715]
-A POSTROUTING -s 11.11.11.0/24 -o vmbr0 -j MASQUERADE
COMMIT
# Completed on Sun Jan  5 01:30:16 2025
# Generated by iptables-save v1.8.9 on Sun Jan  5 01:30:16 2025
*filter
:INPUT ACCEPT [329:43229]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [297:42815]
:ufw-after-forward - [0:0]
:ufw-after-input - [0:0]
:ufw-after-logging-forward - [0:0]
:ufw-after-logging-input - [0:0]
:ufw-after-logging-output - [0:0]
:ufw-after-output - [0:0]
:ufw-before-forward - [0:0]
:ufw-before-input - [0:0]
:ufw-before-logging-forward - [0:0]
:ufw-before-logging-input - [0:0]
:ufw-before-logging-output - [0:0]
:ufw-before-output - [0:0]
:ufw-reject-forward - [0:0]
:ufw-reject-input - [0:0]
:ufw-reject-output - [0:0]
:ufw-track-forward - [0:0]
:ufw-track-input - [0:0]
:ufw-track-output - [0:0]
-A INPUT -j ufw-before-logging-input
-A INPUT -j ufw-before-input
-A INPUT -j ufw-after-input
-A INPUT -j ufw-after-logging-input
-A INPUT -j ufw-reject-input
-A INPUT -j ufw-track-input
-A INPUT -s 11.11.11.2/32 -i vmbr1 -m mac --mac-source bc:24:11:8a:51:1a -j ACCEPT
-A FORWARD -j ufw-before-logging-forward
-A FORWARD -j ufw-before-forward
-A FORWARD -j ufw-after-forward
-A FORWARD -j ufw-after-logging-forward
-A FORWARD -j ufw-reject-forward
-A FORWARD -j ufw-track-forward
-A FORWARD -s 11.11.11.2/32 -i vmbr1 -m mac --mac-source bc:24:11:8a:51:1a -j ACCEPT
-A OUTPUT -j ufw-before-logging-output
-A OUTPUT -j ufw-before-output
-A OUTPUT -j ufw-after-output
-A OUTPUT -j ufw-after-logging-output
-A OUTPUT -j ufw-reject-output
-A OUTPUT -j ufw-track-output
COMMIT
# Completed on Sun Jan  5 01:30:16 2025

Ich danke Dir für deine Interesse an meinen Inhalten 🙂

Ich würde mich über einen kurzen Kommentar freuen oder eine weiterempfehlung

Der Inhalt ist für die Forschung und Bildung freigegeben (Creative-Commons – Wiederverwendung erlaubt aber mit Namensnennung)

Wie hilfreich war dieser Beitrag?

Klicke auf die Sterne um zu bewerten!

Durchschnittliche Bewertung 0 / 5. Anzahl Bewertungen: 0

Bisher keine Bewertungen! Sei der Erste, der diesen Beitrag bewertet.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert