Ebtables: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| (11 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 6: | Zeile 6: | ||
*Erweiterte Protokollierung, MAC DNAT/SNAT und Brouter-Einrichtungen sind ebenfalls enthalten. | *Erweiterte Protokollierung, MAC DNAT/SNAT und Brouter-Einrichtungen sind ebenfalls enthalten. | ||
*Das ebtables-Tool kann mit den anderen Linux-Filtertools (iptables, ip6tables und arptables) kombiniert werden.*um eine *Damit kann man überbrückende Firewall erstellen, die auch in der Lage ist, diese höheren Netzwerkschichten zu filtern. *Dies wird durch die Bridge-Netfilter-Architektur ermöglicht, die Teil des Standard-Linux-Kernels ist. | *Das ebtables-Tool kann mit den anderen Linux-Filtertools (iptables, ip6tables und arptables) kombiniert werden.*um eine *Damit kann man überbrückende Firewall erstellen, die auch in der Lage ist, diese höheren Netzwerkschichten zu filtern. *Dies wird durch die Bridge-Netfilter-Architektur ermöglicht, die Teil des Standard-Linux-Kernels ist. | ||
| + | =Wichtig= | ||
| + | *Die Bridge Interfaces in der VirtualBox müssen auf promisc stehen | ||
| + | *Das bedeutet die müssen alles annehmen | ||
| + | |||
| + | [[Datei:Bridge-22.png]] | ||
| + | |||
=Haupteigenschaften= | =Haupteigenschaften= | ||
*Verwendung analog zu iptables | *Verwendung analog zu iptables | ||
| Zeile 18: | Zeile 24: | ||
=Installation= | =Installation= | ||
| − | *apt install ebtables | + | *apt install ebtables bridge-utils |
| + | =/etc/network/interfaces= | ||
| + | <pre> | ||
| + | auto lo | ||
| + | iface lo inet loopback | ||
| + | |||
| + | auto enp0s3 | ||
| + | iface enp0s3 inet static | ||
| + | address 10.0.10.11/24 | ||
| + | gateway 10.0.10.1 | ||
| + | |||
| + | auto enp0s8 | ||
| + | iface enp0s8 inet manual | ||
| + | |||
| + | auto enp0s9 | ||
| + | iface enp0s9 inet manual | ||
| + | |||
| + | auto vmbr0 | ||
| + | iface vmbr0 inet manual | ||
| + | bridge_ports enp0s8 enp0s9 | ||
| + | bridge_fd 5 | ||
| + | bridge_stp no | ||
| + | </pre> | ||
| + | |||
| + | *ifup vmbr0 | ||
| + | |||
| + | =Schaubild= | ||
| + | ==Die Ketten== | ||
| + | *'''FORWARD''': für Pakte, die über eine Schnittstelle hereinkommen und den Rechner auch wieder verlassen. | ||
| + | *'''INPUT''': für Pakete, die über eine Schnittstelle hereinkommen und einen Dienst auf dem Rechner ansprechen | ||
| + | *'''OUTPUT''': für herausgehende Pakete, die von einem lokalen Dienst erzeugt wurden. | ||
| + | {{#drawio:ebtables-2}} | ||
| + | |||
| + | *Jedes Paket durchläuft nur eine Filter Kette | ||
| + | |||
| + | ==Die Regeln der Tabelle== | ||
| + | Regeln werden mit '''ebtables''' erstellt und an Ziele geschickt. | ||
| + | ==Ziele der Tabelle== | ||
| + | *'''ACCEPT''': das Paket kann passieren | ||
| + | *'''LOG''': schreibt einen Eintrag in die syslog | ||
| + | *'''DROP''': das Paket wird ignoriert und keine Antwort gesendet | ||
| + | |||
| + | =Syntax Allgemein= | ||
| + | *eptables -L | ||
| + | -L # Listing | ||
| + | -t filter # anzeigen der filter Kette | ||
| + | Da -t filter Default ist, kann man es auch weglassen, | ||
| + | *ebtables -L -t filter | ||
| + | =Firewallscript= | ||
| + | ==Der Rumpf== | ||
| + | Zuerst wird in dem firewall-Skript ein case start - stop Block angelegt: | ||
| + | *cd /usr/local/sbin/ | ||
| + | *vi bridge-firewall | ||
| + | <pre> | ||
| + | #!/bin/bash | ||
| + | FRONT=enp0s8 | ||
| + | FRONTMAC=08:00:27:bf:99:11 | ||
| + | BRIDGEMAC=72:18:e5:f6:68:ed | ||
| + | CLIENTMAC=08:00:27:3c:e0:f9 | ||
| + | CLIENT=192.168.56.106 | ||
| + | BACK=enp0s9 | ||
| + | BRIDGE=vmbr0 | ||
| + | |||
| + | case $1 in | ||
| + | start) | ||
| + | echo "starte firewall" | ||
| + | #flushen der Regeln | ||
| + | ebtables -F | ||
| + | ebtables -F -t nat | ||
| + | ebtables -P INPUT ACCEPT | ||
| + | ebtables -P OUTPUT ACCEPT | ||
| + | #Block MAC Adresse | ||
| + | #ebtables -A FORWARD -i $BACK -o $FRONT -d 08:00:27:75:ba:ec -j DROP | ||
| + | #Antispoofing | ||
| + | #ebtables -A FORWARD -p IPv4 --ip-src 172.16.1.4 -s ! 00:11:22:33:44:55 -j DROP | ||
| + | #Only forward IPv4 for a specific MAC address: | ||
| + | #ebtables -A FORWARD -s 00:11:22:33:44:55 -p IPV4 -j ACCEPT | ||
| + | #ebtables -A FORWARD -s 00:11:22:33:44:55 -j DROP | ||
| + | |||
| + | #IPv4 Pakete | ||
| + | #ebtables -A FORWARD -p IPv4 -j ACCEPT | ||
| + | #ARP Pakete | ||
| + | #ebtables -A FORWARD -p ARP -j ACCEPT | ||
| + | #Pakete die 802.3 und 802.2 Frames haben | ||
| + | #ebtables -A FORWARD -p LENGTH -j ACCEPT | ||
| + | |||
| + | |||
| + | ebtables -A FORWARD --log-level info --log-ip --log-prefix EBFW | ||
| + | ebtables -P FORWARD ACCEPT | ||
| + | ;; | ||
| + | stop) | ||
| + | echo "stoppe firewall" | ||
| + | ebtables -F | ||
| + | ebtables -F -t nat | ||
| + | ebtables -P INPUT ACCEPT | ||
| + | ebtables -P OUTPUT ACCEPT | ||
| + | ebtables -P FORWARD ACCEPT | ||
| + | ;; | ||
| + | esac | ||
| + | </pre> | ||
| + | |||
| + | ==Script ausführbar machen== | ||
| + | *chmod +x bridge-firewall | ||
| + | |||
| + | ==Testen des Scripts== | ||
| + | *firewall start | ||
| + | *firewall stop | ||
| + | *firewall | ||
=Setup= | =Setup= | ||
| − | + | {{#drawio:ebtables-1}} | |
=Links= | =Links= | ||
*https://ebtables.netfilter.org/ | *https://ebtables.netfilter.org/ | ||
*http://www.dilnetpc.com/ebtables-cmd-overview.pdf | *http://www.dilnetpc.com/ebtables-cmd-overview.pdf | ||
Aktuelle Version vom 20. September 2022, 05:02 Uhr
Was ist ebtables
- Das Programm ebtables ist ein Filtertool für eine Linux-basierte Bridging-Firewall.
- Es ermöglicht eine transparente Filterung des Netzwerkverkehrs, der eine Linux-Bridge passiert.
- Die Filtermöglichkeiten beschränken sich auf die Link-Layer-Filterung
- Sowieeinige grundlegende Filterungen auf höheren Netzwerkschichten.
- Erweiterte Protokollierung, MAC DNAT/SNAT und Brouter-Einrichtungen sind ebenfalls enthalten.
- Das ebtables-Tool kann mit den anderen Linux-Filtertools (iptables, ip6tables und arptables) kombiniert werden.*um eine *Damit kann man überbrückende Firewall erstellen, die auch in der Lage ist, diese höheren Netzwerkschichten zu filtern. *Dies wird durch die Bridge-Netfilter-Architektur ermöglicht, die Teil des Standard-Linux-Kernels ist.
Wichtig
- Die Bridge Interfaces in der VirtualBox müssen auf promisc stehen
- Das bedeutet die müssen alles annehmen
Haupteigenschaften
- Verwendung analog zu iptables
- Ethernet-Filterung
- MAC NAT: Möglichkeit, die MAC-Ethernet-Quell- und -Zieladresse zu ändern.
- Dies kann in einigen sehr seltsamen Setups nützlich sein (ein reales Beispiel ist verfügbar).
- Brouting: Entscheiden Sie, welcher Datenverkehr zwischen zwei Schnittstellen überbrückt werden soll.
- Beziehungsweisewelcher Datenverkehr zwischen denselben beiden Schnittstellen geleitet werden soll.
- Die beiden Schnittstellen gehören zu einem logischen Bridge-Gerät
- haben aber ihre eigene IP-Adresse und können zu einem anderen Subnetz gehören.
- Übergeben Sie Pakete an Userspace-Programme, indem Sie Netlink-Sockets verwenden.
Installation
- apt install ebtables bridge-utils
/etc/network/interfaces
auto lo
iface lo inet loopback
auto enp0s3
iface enp0s3 inet static
address 10.0.10.11/24
gateway 10.0.10.1
auto enp0s8
iface enp0s8 inet manual
auto enp0s9
iface enp0s9 inet manual
auto vmbr0
iface vmbr0 inet manual
bridge_ports enp0s8 enp0s9
bridge_fd 5
bridge_stp no
- ifup vmbr0
Schaubild
Die Ketten
- FORWARD: für Pakte, die über eine Schnittstelle hereinkommen und den Rechner auch wieder verlassen.
- INPUT: für Pakete, die über eine Schnittstelle hereinkommen und einen Dienst auf dem Rechner ansprechen
- OUTPUT: für herausgehende Pakete, die von einem lokalen Dienst erzeugt wurden.
- Jedes Paket durchläuft nur eine Filter Kette
Die Regeln der Tabelle
Regeln werden mit ebtables erstellt und an Ziele geschickt.
Ziele der Tabelle
- ACCEPT: das Paket kann passieren
- LOG: schreibt einen Eintrag in die syslog
- DROP: das Paket wird ignoriert und keine Antwort gesendet
Syntax Allgemein
- eptables -L
-L # Listing -t filter # anzeigen der filter Kette
Da -t filter Default ist, kann man es auch weglassen,
- ebtables -L -t filter
Firewallscript
Der Rumpf
Zuerst wird in dem firewall-Skript ein case start - stop Block angelegt:
- cd /usr/local/sbin/
- vi bridge-firewall
#!/bin/bash FRONT=enp0s8 FRONTMAC=08:00:27:bf:99:11 BRIDGEMAC=72:18:e5:f6:68:ed CLIENTMAC=08:00:27:3c:e0:f9 CLIENT=192.168.56.106 BACK=enp0s9 BRIDGE=vmbr0 case $1 in start) echo "starte firewall" #flushen der Regeln ebtables -F ebtables -F -t nat ebtables -P INPUT ACCEPT ebtables -P OUTPUT ACCEPT #Block MAC Adresse #ebtables -A FORWARD -i $BACK -o $FRONT -d 08:00:27:75:ba:ec -j DROP #Antispoofing #ebtables -A FORWARD -p IPv4 --ip-src 172.16.1.4 -s ! 00:11:22:33:44:55 -j DROP #Only forward IPv4 for a specific MAC address: #ebtables -A FORWARD -s 00:11:22:33:44:55 -p IPV4 -j ACCEPT #ebtables -A FORWARD -s 00:11:22:33:44:55 -j DROP #IPv4 Pakete #ebtables -A FORWARD -p IPv4 -j ACCEPT #ARP Pakete #ebtables -A FORWARD -p ARP -j ACCEPT #Pakete die 802.3 und 802.2 Frames haben #ebtables -A FORWARD -p LENGTH -j ACCEPT ebtables -A FORWARD --log-level info --log-ip --log-prefix EBFW ebtables -P FORWARD ACCEPT ;; stop) echo "stoppe firewall" ebtables -F ebtables -F -t nat ebtables -P INPUT ACCEPT ebtables -P OUTPUT ACCEPT ebtables -P FORWARD ACCEPT ;; esac
Script ausführbar machen
- chmod +x bridge-firewall
Testen des Scripts
- firewall start
- firewall stop
- firewall


