Ip6tables sperrt komplett
Hallo zusammen,
ich habe schon ein wenig recherchiert, aber nix zur Problemlösung gefunden.
Ich habe letztens dann doch auch mal auf IPv6 "umgestellt" bzw. erweitert, unter anderem auch meinen Server.
Auf diversen Seiten hab ich gesehen, dass ich Firewallmäßig ip6tables benutzen muss, die Syntax hier aber exakt gleich ist wie bei iptables.
Das hab ich ausprobiert, packetfilter file iptables kopiert, iptables durch ip6tables ersetzt und gut.
Startet auch ohne meckern, nur sperrt er mir am Ende sämtlichen Traffic (obwohl vorher diverse Ports "ACCEPTED" wurden).
Das Skript erlaubt diverse Ports und DROPPED am Ende alle anderen Pakete. RELATED,ESTABLISHED ist natürlich freigegeben.
Sobald ich das Skript mit "stop" aufrufe, flushed er sämtliche tables und Traffic läuft wieder.
Könnt ihr euch das erklären?
Anbei mal der Code:
ich habe schon ein wenig recherchiert, aber nix zur Problemlösung gefunden.
Ich habe letztens dann doch auch mal auf IPv6 "umgestellt" bzw. erweitert, unter anderem auch meinen Server.
Auf diversen Seiten hab ich gesehen, dass ich Firewallmäßig ip6tables benutzen muss, die Syntax hier aber exakt gleich ist wie bei iptables.
Das hab ich ausprobiert, packetfilter file iptables kopiert, iptables durch ip6tables ersetzt und gut.
Startet auch ohne meckern, nur sperrt er mir am Ende sämtlichen Traffic (obwohl vorher diverse Ports "ACCEPTED" wurden).
Das Skript erlaubt diverse Ports und DROPPED am Ende alle anderen Pakete. RELATED,ESTABLISHED ist natürlich freigegeben.
Sobald ich das Skript mit "stop" aufrufe, flushed er sämtliche tables und Traffic läuft wieder.
Könnt ihr euch das erklären?
Anbei mal der Code:
#!/bin/sh
#
# init.d/packetfilter6
### BEGIN INIT INFO
# Provides: packetfilter6
# Required-Start: $network $syslog
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Description: Starts the packetfilter IPv6
### END INIT INFO
IPTABLES=/sbin/ip6tables
PIP6="aa::1"
# (P für primäre IP)
SIP6="aa::2"
# (S für sekundäre IP)
case "$1" in
start)
echo "Starte Paketfilter IPv6..."
#auf Ping antworten
$IPTABLES -A INPUT -p icmp -j ACCEPT
#localhost immer zulassen
$IPTABLES -A INPUT -d ::1 -j ACCEPT
$IPTABLES -A INPUT -s ::1 -j ACCEPT
#SSH zulassen
$IPTABLES -A INPUT -p tcp -d $PIP6 --dport 22 -j ACCEPT
#SMTP zulassen
$IPTABLES -A INPUT -p tcp -d $PIP6 --dport 25 -j ACCEPT
#HTTP(S) zulassen
$IPTABLES -A INPUT -p tcp -d $PIP6 --dport 80 -j ACCEPT
$IPTABLES -A INPUT -p tcp -d $PIP6 --dport 443 -j ACCEPT
#MySQL zulassen, derzeit inaktiv
#$IPTABLES -A INPUT -p tcp -d $PIP6 --dport 3306 -j ACCEPT
#VPN zulassen, nicht mehr über primäre IP
#$IPTABLES -A INPUT -p tcp -d $PIP6 --dport 1194 -j ACCEPT
#VPN auf sek. IP über 443 zulassen und umleiten
$IPTABLES -A INPUT -p tcp -d $SIP6 --dport 1194 -j ACCEPT
$IPTABLES -A INPUT -p tcp -d $SIP6 --dport 443 -j ACCEPT
$IPTABLES -t nat -A PREROUTING -p tcp -d $SIP6 --dport 443 -j DNAT --to-destination $SIP6:1194
#anmerkung für administrator.de: Muss so gelöst werden, da VPN und HTTPS gleichzeitig auf dem gleichen Port nicht geht
#DNS zulassen
$IPTABLES -A INPUT -p tcp -d $PIP6 --dport 53 -j ACCEPT
$IPTABLES -A INPUT -p udp -d $PIP6 --dport 53 -j ACCEPT
$IPTABLES -A INPUT -p tcp -d $PIP6 --dport 953 -j ACCEPT
#Teamspeak zulassen
$IPTABLES -A INPUT -p udp -d $PIP6 --dport 9989 -j ACCEPT
$IPTABLES -A INPUT -p tcp -d $PIP6 --dport 30033 -j ACCEPT
$IPTABLES -A INPUT -p tcp -d $PIP6 --dport 10011 -j ACCEPT
$IPTABLES -A INPUT -p tcp -d $PIP6 --dport 41144 -j ACCEPT
#NTP Loggen und zulassen; LOG limitiert auf 30 gleiche Pakete pro Minute
$IPTABLES -A INPUT -p udp -d $PIP6 --dport 123 -m limit --limit 30/min -j LOG --log-prefix='[iptables]: '
$IPTABLES -A INPUT -p udp -d $PIP6 --dport 123 -j ACCEPT
#Aufgebaute bzw. bekannte Verbindungen zulassen
$IPTABLES -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
$IPTABLES -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
#Alle anderen Inputs und Forwards droppen
$IPTABLES -A INPUT -j DROP
$IPTABLES -A FORWARD -j DROP
;;
stop)
echo "Beende Paketfilter..."
$IPTABLES -F
$IPTABLES -t nat -F
$IPTABLES -t mangle -F
$IPTABLES -X
$IPTABLES -t nat -X
$IPTABLES -t mangle -X
;;
reload|restart)
$0 stop && sleep 1 && $0 start
;;
status)
$IPTABLES -L
$IPTABLES -t nat -L
$IPTABLES -t mangle -L
;;
*)
echo "Usage: $0 {start|stop|status|reload|restart}"
exit 1
esac
exit 0
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 333998
Url: https://administrator.de/contentid/333998
Ausgedruckt am: 19.11.2024 um 05:11 Uhr
4 Kommentare
Neuester Kommentar
Moin,
der Fehler ist schnell gefunden. Siehe: https://www.jethrocarr.com/2013/02/09/ip6tables-ipv6-icmp-vs-icmp/
Hintergrund ist der, dass IPv6 eben nicht IPv4 ist und untenrum etwas anders aufgebaut ist. Dementsprechend kann man nicht einfach blindlinks alles blockieren. z.B. icmpv6 ist unbedingt notwendig, damit da überhaupt was funktioniert.
Ingesamt würde ich dir empfehlen eher sowas wie ferm oder ufw zu nutzen, dann sparst du dir die viele Scripterei. Aber das ist deine Sache ^^
Gruß
Chris
der Fehler ist schnell gefunden. Siehe: https://www.jethrocarr.com/2013/02/09/ip6tables-ipv6-icmp-vs-icmp/
Hintergrund ist der, dass IPv6 eben nicht IPv4 ist und untenrum etwas anders aufgebaut ist. Dementsprechend kann man nicht einfach blindlinks alles blockieren. z.B. icmpv6 ist unbedingt notwendig, damit da überhaupt was funktioniert.
Ingesamt würde ich dir empfehlen eher sowas wie ferm oder ufw zu nutzen, dann sparst du dir die viele Scripterei. Aber das ist deine Sache ^^
Gruß
Chris
Moin,
Da in IPv6 anders als bei IPv4 über ICMP sehr viel getan wird. Unter anderem die gesamte kommunikation bezüglich IP-Adress Aushandlung und Neightbor discovery. Sprich ohne ICMP findest du weder ein Gateway noch sonst was. Deswegen kannst du dich auch nicht unterhalten ;)
Details hierzu ebenso wie weitere Unterschiede zwischen IPv4 und IPv6 (z.B. dass man sich den DHCP spart) findest du bereits feinst säuberlich bei Wikipedia aufgelistet mit einem ensprechenden Quellenverzeichnis: https://en.wikipedia.org/wiki/IPv6#Comparison_with_IPv4
Gruß
Chris
Was mich zwar immernoch etwas verwundert, warum die andren Dienste nicht funktionieren, wenn icmp nicht freigegeben ist aber gut.
Da in IPv6 anders als bei IPv4 über ICMP sehr viel getan wird. Unter anderem die gesamte kommunikation bezüglich IP-Adress Aushandlung und Neightbor discovery. Sprich ohne ICMP findest du weder ein Gateway noch sonst was. Deswegen kannst du dich auch nicht unterhalten ;)
Details hierzu ebenso wie weitere Unterschiede zwischen IPv4 und IPv6 (z.B. dass man sich den DHCP spart) findest du bereits feinst säuberlich bei Wikipedia aufgelistet mit einem ensprechenden Quellenverzeichnis: https://en.wikipedia.org/wiki/IPv6#Comparison_with_IPv4
Gruß
Chris