Zur Navigation

ipv6 adressbereiche in htaccess sperren

1 vian

Hallo,
ich möchte über die htaccess ipv6 sperren.
Wie geht das?

Grund: ich möchte bestimmte ip-ranges von meinem Blog fernhalten.
Mit ipv4 war das problemlos (z.B. deny from 120.*.*.*)
Geht das auch genauso mit ipv6 (z.B. deny from 2001:*:*:*) ???

Falls nicht, wie kann ich ipv6 komplett sperren für meinen Blog via htaccess.

Ich freue mich über Eure Hilfe.
Vian

17.06.2014 01:21

2 Jörg Kruse

Grund: ich möchte bestimmte ip-ranges von meinem Blog fernhalten.
Mit ipv4 war das problemlos (z.B. deny from 120.*.*.*)

Das wäre mir neu, dass Wildcards hier funktionieren? Normalerweise wird ein IP-Address-Range als Subnetz in der CIDR-Notation angegeben:

Deny from 120.0.0.0/8

Ich habe das grad auch nochmal getestet. Das funktioniert:

Deny from 127.0.0.0/8

Das funktioniert nicht:

Deny from 127.*.*.*

Ranges von IPv6-Adressen werden ebenfalls in der CIDR-Notation definiert, siehe hierzu auch Beispiel im Apache-Manual:

IPv6 addresses and IPv6 subnets can be specified as shown below:

Allow from 2001:db8::a00:20ff:fea7:ccea
Allow from 2001:db8::a00:20ff:fea7:ccea/10

17.06.2014 07:29 | geändert: 17.06.2014 07:35

3 vian

Zitat von Jörg

Ranges von IPv6-Adressen werden ebenfalls in der CIDR-Notation definiert, siehe hierzu auch Beispiel im Apache-Manual:

[quote]IPv6 addresses and IPv6 subnets can be specified as shown below:

Allow from 2001:db8::a00:20ff:fea7:ccea
Allow from 2001:db8::a00:20ff:fea7:ccea/10

Hallo und Danke für Deine Antwort
Gibt es das Apache Manual bzw. den Inhalt der von dir empfohlenen Seite evtl. irgendwo auch auf Deutsch?
Vielleicht weißt Du das ja.
Ich habe Probleme das sehr abstrakte Englisch zu verstehen.
Obwohl es mir genau die wichtige Antwort auf meine Fragen zu beinhalten scheint.
Ich verstehen nur nicht die richtige Schreibweise, also eben ohne "Wildcard".

Muß man immer die ganze IP6 wie in Deinem Beispiel angeben und am Ende "/10" schreiben, wenn man einen ganzen Bereich sperren will, wie z.B. in der IP4 - "Wildcard": 120.*.*.* ?
Und wie kann ich auf diese Weise ganze Länder damit sperren?
Z.B. hat China bestimmte, bekannte IP4s, aber für IP6 kenne ich die nicht.

Herzliche Grüsse von Vian

26.06.2014 19:15

4 Jörg Kruse

Gibt es das Apache Manual bzw. den Inhalt der von dir empfohlenen Seite evtl. irgendwo auch auf Deutsch?

Ja, hier:

http://httpd.apache.org/docs/2.4/de/

Der entsprechende Abschnitt ist aber nicht übersetzt:

http://httpd.apache.org/docs/2.4/de/mod/mod_authz_host.html

Muß man immer die ganze IP6 wie in Deinem Beispiel angeben und am Ende "/10" schreiben, wenn man einen ganzen Bereich sperren will, wie z.B. in der IP4 - "Wildcard": 120.*.*.* ?

Eine Wildcard * gibt es wie gesagt weder für IPv4 noch für IPv6.

Die Zahl hinter dem / gibt die Zahl der Bits an, die gleich sind.

Erklärt ist das in dem Wikipedia-Artikel:

https://de.wikipedia.org/wiki/Classless_Inter-Domain_Routing

Für IPv4 kann man auch noch "partielle" IP-Adressen angeben:

Allow from 127

Das ist gleichbedeutend mit:

Allow from 127.0.0.0/8

.. und für den Laien wohl auch einfacher zu verstehen als die CIDR-Notation: alle IP-Adressen, die mit "127" anfangen

Ich habe in der Apache-Dokumentation allerdings kein Beispiel gefunden, ob solche partiellen Angaben auch für IPv6 möglich sind. Ich habe grad auch nicht die Möglichkeit, das zu testen. Werde ich aber vielleicht nachholen, sobald ich die Gelegenheit dazu habe.

Und wie kann ich auf diese Weise ganze Länder damit sperren?
Z.B. hat China bestimmte, bekannte IP4s, aber für IP6 kenne ich die nicht.

Wenn sich eine solch manuell erstellte htaccess Datei überhaupt vernünftig pflegen lässt. Wenn du einen eigenen (V-)Server hast, wäre mod_geoip eine Möglichkeit. Hierzu gibt es auch eine deutschsprachige Anleitung:

http://blog.yoonic.at/2014/02/apache2-laender-sperren-nicht-nett-aber-manchmal-noetig/

26.06.2014 22:39 | geändert: 26.06.2014 22:45

5 vian

Zitat von Jörg

Danke !!!



Zitat von Jörg
Die Zahl hinter dem / gibt die Zahl der Bits an, die gleich sind.

Wieviele Zahlen sind denn als letzte Zahl das Maximum?
Diese Zahl würde ich dann der Einfachheit halber eingeben.

Zitat von Jörg
Für IPv4 kann man auch noch "partielle" IP-Adressen angeben:

Allow from 127

Das ist gleichbedeutend mit:

Allow from 127.0.0.0/8

.. und für den Laien wohl auch einfacher zu verstehen als die CIDR-Notation: alle IP-Adressen, die mit "127" anfangen

Danke, das war sehr gut beschrieben. Ist /8 immer die maximal mögliche Zahl?

Zitat von Jörg
Ich habe in der Apache-Dokumentation allerdings kein Beispiel gefunden, ob solche partiellen Angaben auch für IPv6 möglich sind. Ich habe grad auch nicht die Möglichkeit, das zu testen. Werde ich aber vielleicht nachholen, sobald ich die Gelegenheit dazu habe.

Das finde ich total nett und ich freue mich schon darauf :-)

Zitat von Jörg
Wenn sich eine solch manuell erstellte htaccess Datei überhaupt vernünftig pflegen lässt.
Nein, leider bläht sie sich sehr auf, deshalb nutze ich parallel noch ein anderes Programm via php, es ist aber nur für die Sperrung von IPv4 dienlich.
Zitat von Jörg
Wenn du einen eigenen (V-)Server hast, wäre mod_geoip eine Möglichkeit. Hierzu gibt es auch eine deutschsprachige Anleitung:

http://blog.yoonic.at/2014/02/apache2-laender-sperren-nicht-nett-aber-manchmal-noetig/
Danke dafür, habe ich leider nicht aber ich werde mal meinen Hoster fragen, vielleicht ist das ja auch für mich durch den Admin aktivierbar- würde mir viel Arbeit ersparen!

Du gibst tolle Tips, danke!

26.06.2014 23:46

6 Jörg Kruse

Zitat von vian
Zitat von Jörg
Die Zahl hinter dem / gibt die Zahl der Bits an, die gleich sind.

Wieviele Zahlen sind denn als letzte Zahl das Maximum?

Das Maximum ist die Anzahl der Bits, die eine IP-Adresse hat. Bei IPv4 sind dies 32, bei IPv6 128

Diese Zahl würde ich dann der Einfachheit halber eingeben.

Damit würdest du genau eine einzelne IP-Adresse adressieren.

Nochmal zur Erklärung

Die Adresse 127.0.0.0 in Bits:

01111111 00000000 00000000 00000000

127.0.0.0/8 betrifft alle IP-Adressen, die die ersten 8 Bits gleich haben.
Das sind alle IP-Adressen, die mit "01111111" bzw. "127." anfangen

127.0.0.0/24 bedeutet, dass die ersten 24 Bits gleich sein müssen. Das betrifft also alle IP-Adressen, die mit "01111111 00000000 00000000" bzw. "127.0.0." anfangen

127.0.0.0/32 beinhaltet nur die IP-Adresse 127.0.0.0, weil dann alle 32 Bits gleich sein müssen.

28.06.2014 19:40

7 vian

Danke, Jörg, Du kannst das toll erklären, - viel klarer und verständlicher und vor allem kürzer als Wikipedia :-)

Jetzt habe ich es verstanden und weiß mir zu helfen!

Ganz herzliche Grüsse von Vian

29.06.2014 20:15

... 4 Monate später ...

8 vian

Hallo Jörg,

ich habe inzwischen versucht mit der htaccess ipv6 Bereiche zu sperren, indem ich sie meiner htaccess zugefügt habe, leider werden die neuen Daten ignoriert.

Hier ein Beispiel wie ich es gemacht habe:

#COUNTRY_BLOCK_START
<Limit GET HEAD POST>
order allow,deny
deny from 91.*.*.*
deny from 2001:4ba=::/32
allow from all
</Limit>
#COUNTRY_BLOCK_END

Die ipv4 werden wie immer geblockt, die ipv6 aber wird durchgelassen
Weißt Du, wo der Fehler ist?

Über einen Rat von Dir würde ich mich sehr freuen :-)

Viele Grüße von Vian

24.11.2014 21:36

9 Jörg Kruse

Ist das Gleichheitszeichen ein Tippfehler (?):

deny from 2001:4ba=::/32

25.11.2014 08:47

10 vian

Oh ja, danke für die Nachfrage, es soll eine Null sein, also :

deny from 2001:4ba0::/32

Viele Grüße von Vian!

27.11.2014 10:39