2011-03-23 14:59:44 +01:00
|
|
|
#!/bin/sh
|
|
|
|
|
2015-09-14 22:14:22 +02:00
|
|
|
#solves MTU problem with bad ISPs
|
2011-03-23 14:59:44 +01:00
|
|
|
iptables -A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
|
2012-09-30 11:26:11 +02:00
|
|
|
|
|
|
|
# Wenn ein router direkt am Netz hängt, ist er auch ssh Angriffen ausgesetzt.
|
2015-09-14 22:14:22 +02:00
|
|
|
# Das wirkt bei kleinen Geräten wie ein DOS
|
2012-11-17 18:16:33 +01:00
|
|
|
WAN=$(uci get network.wan.ifname)
|
|
|
|
iptables -A INPUT -i $WAN -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
|
|
|
|
iptables -A INPUT -i $WAN -j REJECT
|
|
|
|
|
2013-10-27 13:10:56 +01:00
|
|
|
# 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
|
2015-09-14 22:14:22 +02:00
|
|
|
/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
|
|
|
|
|
2016-01-30 11:59:46 +01:00
|
|
|
# Erlaube router solicitation von client zu knoten
|
|
|
|
ebtables -A INPUT -p IPv6 -i ! bat0 --ip6-proto ipv6-icmp --ip6-icmp-type router-solicitation -j ACCEPT
|
|
|
|
ebtables -A INPUT -d Multicast --logical-in br-mesh -i ! bat0 -j ACCEPT
|
|
|
|
|
|
|
|
# No input from/to local node ip from batman
|
|
|
|
ebtables -A INPUT --logical-in br-mesh -i bat0 -p IPv6 --ip6-source fdff::1/128 -j DROP
|
|
|
|
ebtables -A INPUT --logical-in br-mesh -i bat0 -p IPv6 --ip6-destination fdff::1/128 -j DROP
|
|
|
|
|
2015-09-14 22:14:22 +02:00
|
|
|
# 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
|
|
|
|
|
2016-01-30 11:59:46 +01:00
|
|
|
# Do not forward local node ip
|
|
|
|
ebtables -A FORWARD --logical-out br-mesh -o bat0 -p IPv6 --ip6-destination fdff::1/128 -j DROP
|
|
|
|
ebtables -A FORWARD --logical-out br-mesh -o bat0 -p IPv6 --ip6-source fdff::1/128 -j DROP
|
|
|
|
|
2015-09-14 22:14:22 +02:00
|
|
|
# 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 BATMAN -> CLIENT
|
|
|
|
ebtables -A FORWARD -p IPv6 --ip6-proto ipv6-icmp --ip6-icmp-type router-advertisement -j IN_ONLY
|
|
|
|
# Regelt alles was an Multicast/Broadcast von CLIENT -> BATMAN geht bei MULTICAST_OUT
|
|
|
|
ebtables -A FORWARD -d Multicast --logical-out br-mesh -o bat0 -j MULTICAST_OUT
|
|
|
|
|
|
|
|
######## OUTPUT ############
|
|
|
|
ebtables -P OUTPUT ACCEPT
|
|
|
|
|
2016-01-30 11:59:46 +01:00
|
|
|
# Erlaube router advertisment von knoten zu client
|
|
|
|
ebtables -A OUTPUT -p IPv6 -o ! bat0 --ip6-proto ipv6-icmp --ip6-icmp-type router-advertisement -j ACCEPT
|
|
|
|
|
|
|
|
# Do not output local node ip to batman
|
|
|
|
ebtables -A OUTPUT --logical-out br-mesh -o bat0 -p IPv6 --ip6-destination fdff::1/128 -j DROP
|
|
|
|
ebtables -A OUTPUT --logical-out br-mesh -o bat0 -p IPv6 --ip6-source fdff::1/128 -j DROP
|
|
|
|
|
2015-09-14 22:14:22 +02:00
|
|
|
# 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
|
|
|
|
# Regelt alles was an Multicast/Broadcast von KNOTEN -> BATMAN geht bei MULTICAST_OUT
|
|
|
|
ebtables -A OUTPUT -d Multicast --logical-out br-mesh -o bat0 -j MULTICAST_OUT
|