[PATCH] firewall: filter broadcasts

Tobias Klaus tk+ff at meskal.net
Mo Sep 21 15:24:27 CEST 2015


> 
> Ja, aber Testen geht leichter, wenn wir mal ne beta damit gebaut haben.
Eben. 

sollte soeben applied sein.


> 
> Tim
> >
> >Gruß
> >Tobias
> >
> >Am Montag, 14. September 2015, 22:14:22 schrieb Tim Niemeyer:
> >> This ebtables rules are based on the gluon work.
> >> 
> >> Signed-off-by: Tim Niemeyer <tim.niemeyer at mastersword.de>
> >> ---
> >> 
> >>  bsp/default/root_file_system/etc/firewall.user | 89
> >+++++++++++++++++++++++++-
> >>  1 file changed, 88 insertions(+), 1 deletion(-)
> >> 
> >> diff --git a/bsp/default/root_file_system/etc/firewall.user
> >b/bsp/default/root_file_system/etc/firewall.user
> >> index c2eddfc..1cf3763 100755
> >> --- a/bsp/default/root_file_system/etc/firewall.user
> >> +++ b/bsp/default/root_file_system/etc/firewall.user
> >> @@ -11,4 +11,91 @@ iptables -A INPUT -i $WAN -j REJECT
> >>  
> >>  # Limit ssh to 3 new connections per 60 seconds
> >>  /usr/sbin/ip6tables -A INPUT -p tcp --dport 22 -m state --state NEW
> >-m recent --set --name dropbear
> >> -/usr/sbin/ip6tables -A INPUT -p tcp --dport 22 -m state --state NEW
> >-m recent --update --seconds 60 --hitcount 3 --rttl --name dropbear -j
> >DROP
> >> \ No newline at end of file
> >> +/usr/sbin/ip6tables -A INPUT -p tcp --dport 22 -m state --state NEW
> >-m recent --update --seconds 60 --hitcount 3 --rttl --name dropbear -j
> >DROP
> >> +
> >> +
> >> +# Im folgenden ebtables rules, die unnötigen Broadcast-Overhead
> >reduzieren sollen:
> >> +
> >> +######## CLEAN UP ############
> >> +ebtables -F
> >> +ebtables -X
> >> +
> >> +######## IN_ONLY ############
> >> +ebtables -N IN_ONLY -P RETURN
> >> +
> >> +# Daten aus dem BATMAN werden erlaubt
> >> +# Alles außer Daten von BATMAN werden DROP'ed
> >> +ebtables -A IN_ONLY -i ! bat0 --logical-in br-mesh -j DROP
> >> +
> >> +######## OUT_ONLY ############
> >> +ebtables -N OUT_ONLY -P RETURN
> >> +
> >> +# Daten ins BATMAN werden erlaubt
> >> +# Alles außer Daten ins BATMAN werden DROP'ed
> >> +ebtables -A OUT_ONLY --logical-out br-mesh -o ! bat0 -j DROP
> >> +
> >> +######## MULTICAST_OUT ############
> >> +ebtables -N MULTICAST_OUT -P DROP
> >> +
> >> +# Verbiete ARP Antworten an alle
> >> +ebtables -A MULTICAST_OUT -p ARP --arp-op Reply --arp-ip-src 0.0.0.0
> >-j DROP
> >> +# Verbiete ARP Requests an alle
> >> +ebtables -A MULTICAST_OUT -p ARP --arp-op Request --arp-ip-dst
> >0.0.0.0 -j DROP
> >> +# Erlaube alle anderen ARP's
> >> +ebtables -A MULTICAST_OUT -p ARP -j RETURN
> >> +# Erlaube DHCP Requests
> >> +ebtables -A MULTICAST_OUT -p IPv4 --ip-proto udp --ip-dport 67 -j
> >RETURN
> >> +# Erlaube DHCPv6 Requests
> >> +ebtables -A MULTICAST_OUT -p IPv6 --ip6-proto udp --ip6-dport 547 -j
> >RETURN
> >> +# Erlaube PING
> >> +ebtables -A MULTICAST_OUT -p IPv4 --ip-proto icmp -j RETURN
> >> +# Erlaube alles was nicht IP ?? ist " hop-by-hop " ??
> >> +ebtables -A MULTICAST_OUT -p IPv6 --ip6-proto 0 -j RETURN
> >> +# Erlaube PINGv6
> >> +ebtables -A MULTICAST_OUT -p IPv6 --ip6-proto ipv6-icmp -j RETURN
> >> +# Erlaube Organisation der Multicast Gruppen
> >> +ebtables -A MULTICAST_OUT -p IPv4 --ip-proto igmp -j RETURN
> >> +
> >> +######## INPUT ############
> >> +ebtables -P INPUT ACCEPT
> >> +
> >> +# Erlaube nur DHCP Antworten von BATMAN -> KNOTEN
> >> +ebtables -A INPUT -p IPv4 --ip-proto udp --ip-dport 68 -j IN_ONLY
> >> +# Erlaube nur DHCPv6 Antworten von BATMAN -> KNOTEN
> >> +ebtables -A INPUT -p IPv6 --ip6-proto udp --ip6-dport 546 -j IN_ONLY
> >> +# Erlaube nur Router-Advertisment von BATMAN -> KNOTEN
> >> +ebtables -A INPUT -p IPv6 --ip6-proto ipv6-icmp --ip6-icmp-type
> >router-advertisement -j IN_ONLY
> >> +# Verbiete Router-Solicitation von BATMAN -> KNOTEN
> >> +ebtables -A INPUT -p IPv6 -i bat0 --ip6-proto ipv6-icmp
> >--ip6-icmp-type router-solicitation -j DROP
> >> +
> >> +######## FORWARD ############
> >> +ebtables -P FORWARD ACCEPT
> >> +
> >> +# Erlaube nur DHCP Request von CLIENT -> BATMAN
> >> +ebtables -A FORWARD -p IPv4 --ip-proto udp --ip-dport 67 -j OUT_ONLY
> >> +# Erlaube nur DHCP Antworten von BATMAN -> CLIENT
> >> +ebtables -A FORWARD -p IPv4 --ip-proto udp --ip-dport 68 -j IN_ONLY
> >> +# Erlaube nur DHCPv6 Request von CLIENT -> BATMAN
> >> +ebtables -A FORWARD -p IPv6 --ip6-proto udp --ip6-dport 547 -j
> >OUT_ONLY
> >> +# Erlaube nur DHCPv6 Antworten von BATMAN -> CLIENT
> >> +ebtables -A FORWARD -p IPv6 --ip6-proto udp --ip6-dport 546 -j
> >IN_ONLY
> >> +# Erlaube nur Router-Solicitation von CLIENT -> BATMAN
> >> +ebtables -A FORWARD -p IPv6 --ip6-proto ipv6-icmp --ip6-icmp-type
> >router-solicitation -j OUT_ONLY
> >> +# Erlaube nur Router-Advertisment von CLIENT -> KNOTEN
> >Müsste das nicht "BATMAN -> CLIENT" heißen?
> >
> >> +ebtables -A FORWARD -p IPv6 --ip6-proto ipv6-icmp --ip6-icmp-type
> >router-advertisement -j IN_ONLY
> >> +# Regel alles was an Multicast/Broadcast von CLIENT -> BATMAN geht
> >bei MULTICAST_OUT
> >RegelT?
> >
> >> +ebtables -A FORWARD -d Multicast --logical-out br-mesh -o bat0 -j
> >MULTICAST_OUT
> >> +
> >> +######## OUTPUT ############
> >> +ebtables -P OUTPUT ACCEPT
> >> +
> >> +# Erlaube nur DHCP Request von KNOTEN -> BATMAN
> >> +ebtables -A OUTPUT -p IPv4 --ip-proto udp --ip-dport 67 -j OUT_ONLY
> >> +# Erlaube nur DHCPv6 Request von KNOTEN -> BATMAN
> >> +ebtables -A OUTPUT -p IPv6 --ip6-proto udp --ip6-dport 547 -j
> >OUT_ONLY
> >> +# Erlaube nur Router-Solicitation von KNOTEN -> BATMAN
> >> +ebtables -A OUTPUT -p IPv6 --ip6-proto ipv6-icmp --ip6-icmp-type
> >router-solicitation -j OUT_ONLY
> >> +# Verbiete Router-Advertisment von KNOTEN -> BATMAN
> >> +ebtables -A OUTPUT -p IPv6 -o bat0 --ip6-proto ipv6-icmp
> >--ip6-icmp-type router-advertisement -j DROP
> >> +# Regel alles was an Multicast/Broadcast von KNOTEN -> BATMAN geht
> >bei MULTICAST_OUT
> >RegelT?
> >> +ebtables -A OUTPUT -d Multicast --logical-out br-mesh -o bat0 -j
> >MULTICAST_OUT
> >> 
> 
> 




Mehr Informationen über die Mailingliste franken-dev