ketanest112
Goto Top

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:

#!/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

Content-ID: 333998

Url: https://administrator.de/contentid/333998

Ausgedruckt am: 19.11.2024 um 05:11 Uhr

Sheogorath
Lösung Sheogorath 04.04.2017 aktualisiert um 01:56:29 Uhr
Goto Top
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
ketanest112
ketanest112 04.04.2017 um 09:56:54 Uhr
Goto Top
Danke für den Link!
Es lag schienbar tatsächlich am icmp, den hatte ich auch freigegeben. Aber halt nicht den ipv6-icmp.

Jetzt geht alles face-smile

Was mich zwar immernoch etwas verwundert, warum die andren Dienste nicht funktionieren, wenn icmp nicht freigegeben ist aber gut.

Bezüglich ferm und ufw: Danke für den Tipp, werd ich mir ansehen.

Grüße
Ketanest
Sheogorath
Lösung Sheogorath 04.04.2017 um 13:24:52 Uhr
Goto Top
Moin,

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
ketanest112
ketanest112 04.04.2017 um 14:05:22 Uhr
Goto Top
Aaah, sehr gut, jetzt habs ichs gerafft!

Danke!