[PATCH] firewall: filter broadcasts

Tim Niemeyer tim.niemeyer at mastersword.de
Mo Sep 21 13:32:46 CEST 2015


Hi

Am 21. September 2015 12:36:48 MESZ, schrieb Tobias Klaus <tk+ff at meskal.net>:
>Dafür was es tun soll, sieht es ganz gut aus. Einige nicht-funktionale
>Kleinigkeiten hab ich noch. Siehe unten.

Bei den Kleinigkeiten hast du überall Recht. Bitte direkt beim Anwenden korrigieren. Ansonsten würde ich den Patch so bald ich dann dazu kommen applien.

>
>Reviewed-by: Tobias Klaus <tk+ff at meskal.net>

Danke fürs drüber gucken.

>
>Wie Du und Tom schon geschrieben habt, sollten wir das aber noch
>ausführlich testen.

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

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