Apache2 Directory Allow from <IP range>
Gunther
- webserver
Hallo Selfgemeinde!
Ich möchte gerne den Zugang zu einem bestimmten Verzeichnis auf meinem Apache2 auf *zwei* unterschiedliche IP ranges einschränken.
Die beiden Bereiche lauten:
186.57.156.0 - 186.57.175.255
187.66.99.0 - 187.66.255.255
Das entsprechende Kapitel in der Apache Doku http://httpd.apache.org/docs/2.2/mod/mod_authz_host.html hat mir nicht wirklich weitergeholfen, denn eine Einschränkung auf
186.57 und 187.66 ist mir nicht präzise genug. Ich hätte es halt gerne noch weiter eingeschränkt.
Frage:
Ist das machbar und wenn ja, wie?
Gruß Gunther
Ist das machbar und wenn ja, wie?
Ich glaube mit einer Bitmaskenangabe
186.57.156.0 - 186.57.175.255
wird abgedeckt durch
186.57.156/10
186.57.160/12
mfg Beat
Hi beat!
»» Ist das machbar und wenn ja, wie?
Ich glaube mit einer Bitmaskenangabe
»» 186.57.156.0 - 186.57.175.255
wird abgedeckt durch
186.57.156/10
186.57.160/12
Vielen Dank für deine Antwort.
Allerdings habe ich die entsprechenden Beispiele schon in der Apache Doku nicht verstanden. Google hilft mir auch nicht wirklich weiter.
Könntest du mir das netterweise auch noch kurz Erklären (das Funktionsprinzip) oder hast du einen entsprechenden Link für mich parat, wo ich das mal nachlesen kann?
Gruß Gunther
Könntest du mir das netterweise auch noch kurz Erklären (das Funktionsprinzip) oder hast du einen entsprechenden Link für mich parat, wo ich das mal nachlesen kann?
0.0.0.0/0 = 0.0.0.0
0.0.0.0/1 = 0.0.0.0 + 0.0.0.1
0.0.0.0/2 = 0.0.0.0 + 0.0.0.1 + 0.0.0.2 + 0.0.0.3
0.0.0.0/7 = 0.0.0.0 + ... + 0.0.0.127
0.0.0.128/7 = 0.0.0.128 + ... + 0.0.0.255
Es handelt sich um einen binären Aufbau.
Als Basis der Bitmaske sollte der Klarheit wegen ein binärer Wert stehen
0.0.0.129/7 ist aber (theoretisch) gleichwertig mit 0.0.0.128/7
mfg Beat
Moin!
»» Könntest du mir das netterweise auch noch kurz Erklären (das Funktionsprinzip) oder hast du einen entsprechenden Link für mich parat, wo ich das mal nachlesen kann?
0.0.0.0/0 = 0.0.0.0
0.0.0.0/1 = 0.0.0.0 + 0.0.0.1
0.0.0.0/2 = 0.0.0.0 + 0.0.0.1 + 0.0.0.2 + 0.0.0.30.0.0.0/7 = 0.0.0.0 + ... + 0.0.0.127
0.0.0.128/7 = 0.0.0.128 + ... + 0.0.0.255Es handelt sich um einen binären Aufbau.
Als Basis der Bitmaske sollte der Klarheit wegen ein binärer Wert stehen
0.0.0.129/7 ist aber (theoretisch) gleichwertig mit 0.0.0.128/7
Hä? Nö!
0.0.0.0/1 ist nicht 0.0.0.0 und 0.0.0.1, sondern 0.0.0.0 bis 128.255.255.255
Die Bitmaske fängt vorn bei der IP an, nicht hinten.
Abgesehen davon ist 0.0.0.0 sowieso eher ungünstig als IP-Adresse in Beispielen, weil sie ebenso häufig als 0.0.0.0/0 für das Default-Gateway bzw. "das ganze Internet" steht.
Insofern ist dein gesamter Bitmasken-Aufbau falsch, auch wenn das Prinzip - nur umgekehrt eben - in etwa hinkommt.
Die Bitmaske übersetzt sich 1:1 in eine entsprechende Netzmaske.
Bitmaske /8 ist Netzmaske 255.0.0.0; die /16 ist 255.255.0.0, und die /17 wäre 255.255.128.0. Die Zahl der Bitmaske gibt die Anzahl der 1-Bits in der Netzmaske an, von vorne beginnend. Aus IP und Netzmaske errechnet sich dann die IP des Netzwerkes, in dem sich die jeweilige IP befindet. Umgekehrt kann man durch Angabe von Netz-IP und Maske eben bestimmen, welche Sammlung von IP-Adressen man meint.
- Sven Rautenberg
Moin zusammen!
0.0.0.0/1 ist nicht 0.0.0.0 und 0.0.0.1, sondern 0.0.0.0 bis 128.255.255.255
Die Bitmaske fängt vorn bei der IP an, nicht hinten.
Abgesehen davon ist 0.0.0.0 sowieso eher ungünstig als IP-Adresse in Beispielen, weil sie ebenso häufig als 0.0.0.0/0 für das Default-Gateway bzw. "das ganze Internet" steht.
Insofern ist dein gesamter Bitmasken-Aufbau falsch, auch wenn das Prinzip - nur umgekehrt eben - in etwa hinkommt.
Die Bitmaske übersetzt sich 1:1 in eine entsprechende Netzmaske.
Bitmaske /8 ist Netzmaske 255.0.0.0; die /16 ist 255.255.0.0, und die /17 wäre 255.255.128.0. Die Zahl der Bitmaske gibt die Anzahl der 1-Bits in der Netzmaske an, von vorne beginnend. Aus IP und Netzmaske errechnet sich dann die IP des Netzwerkes, in dem sich die jeweilige IP befindet. Umgekehrt kann man durch Angabe von Netz-IP und Maske eben bestimmen, welche Sammlung von IP-Adressen man meint.
Vielen Dank euch beiden.
Jetzt bin ich zwar wieder etwas schlauer, auch wenn ich (immer) noch nicht ganz verstanden habe, wie ich dann nun meinen IP-Bereich genau angeben kann (da "Die Bitmaske fängt vorn bei der IP an ...").
Ist aber momentan für die unmittelbare Lösung meines Vorhabens auch nicht (mehr) wichtig, da mir zwischenzeitlich auch mal aufgefallen ist, dass es über den (partiellen) Hostnamen deutlich einfacher geht.
Nichtsdestotrotz werde ich mich noch weiter mit dem Thema 'Bitmaske' beschäftigen (wobei da auch wieder ein ganzer Rattenschwanz hintendranhängt).
Also nochmals besten Dank!
Gruß Gunther
PS: Deutlich "bequemer" (einfacher) wäre es natürlich mit einer festen IP. Mein ISP möchte dafür allerdings EUR 4,90 im Monat haben. Ist das im Vergleich zu anderen Anbietern preiswert/ teuer? Und da ich sonst eigentlich keinen anderen Anwendungszweck (lokaler Mail-Server, etc.) habe, gehe ich davon aus, dass ich mir den "Luxus" sparen kann, oder sehe ich das falsch?
Moin!
Ist aber momentan für die unmittelbare Lösung meines Vorhabens auch nicht (mehr) wichtig, da mir zwischenzeitlich auch mal aufgefallen ist, dass es über den (partiellen) Hostnamen deutlich einfacher geht.
Das ist aber aus Performance- und Sicherheitsgründen keine wirklich schöne Lösung.
Performance: Jeder Request erfordert einen Reverse-DNS-Lookup, damit der der IP zugeordnete Domainname mit dem Muster verglichen werden kann - das will man eigentlich nie. Außerdem:
Security: Die Rückwärtsauflösung der IP in einen Namen übernehmen Systeme, denen du nicht vertrauen kannst. Eine IP hat jeder - und Gewalt über den Nameserver, der diese IP rückwärts in den Domainnamen auflöst, hat ein Angreifer im Zweifel auch, das ist gar keine Kunst, sondern elementarer Bestandteil jedes etwas größeren Hostings eines Servers mit eigener IP. Ein Angreifer kann dir also mit Leichtigkeit den gewünschten Domainnamen vorspielen.
- Sven Rautenberg
Moin Sven!
»» Ist aber momentan für die unmittelbare Lösung meines Vorhabens auch nicht (mehr) wichtig, da mir zwischenzeitlich auch mal aufgefallen ist, dass es über den (partiellen) Hostnamen deutlich einfacher geht.
Das ist aber aus Performance- und Sicherheitsgründen keine wirklich schöne Lösung.
Stimmt! Ist mir nach dem Lesen deines Beitrags jetzt auch klar geworden - danke!
Performance: Jeder Request erfordert einen Reverse-DNS-Lookup, damit der der IP zugeordnete Domainname mit dem Muster verglichen werden kann - das will man eigentlich nie. Außerdem:
OK, die Performance-Einbuße ließe sich in dem Fall noch verschmerzen (es geht mir ja darum, dass ich alleine auf diese Verzeichnisse zugreifen möchte, und deshalb überlege, wie ich die "Angriffsfläche" nach außen hin so klein wie möglich machen kann).
Security: Die Rückwärtsauflösung der IP in einen Namen übernehmen Systeme, denen du nicht vertrauen kannst. Eine IP hat jeder - und Gewalt über den Nameserver, der diese IP rückwärts in den Domainnamen auflöst, hat ein Angreifer im Zweifel auch, das ist gar keine Kunst, sondern elementarer Bestandteil jedes etwas größeren Hostings eines Servers mit eigener IP. Ein Angreifer kann dir also mit Leichtigkeit den gewünschten Domainnamen vorspielen.
Ja, verstanden. Einziges "Hindernis" wäre dann nur noch, dass er wissen müsste, wie denn der "richtige" Hostname lautet (was aber im Zweifelsfall vermutlich auch nicht sehr schwierig sein dürfte herauszufinden).
Also muss ich doch direkt mit der Bitmasken-Geschichte auseinandersetzen, oder meinem Provider monatlich EUR 5,- für eine feste IP-Adresse bezahlen. ;-)
@hotti: Danke auch dir für die sehr verständliche & ausführliche Erklärung. Ich glaube, dass ich so langsam anhand aller Erklärungen und Google, anfange die Sache zu kapieren!
Gruß Gunther
Hä? Nö!
0.0.0.0/1 ist nicht 0.0.0.0 und 0.0.0.1, sondern 0.0.0.0 bis 128.255.255.255
Die Bitmaske fängt vorn bei der IP an, nicht hinten.
Richtig.
(Wusste ich praktisch auch schon mal besser)
/x bezeichnet die invariablen Bits einer IP von vorne/links gelesen
Beispiel
127.0.1.7/32 = 01111111.00000000.00000001.00000111
127.0.1.7/31 = 01111111.00000000.00000001.0000011n
127.0.1.7/30 = 01111111.00000000.00000001.000001nn
127.0.1.7/29 = 01111111.00000000.00000001.00000nnn
..
127.0.1.7/3 = 011nnnnnn.nnnnnnnn.nnnnnnnn.nnnnnnnn
127.0.1.7/2 = 01nnnnnnn.nnnnnnnn.nnnnnnnn.nnnnnnnn
127.0.1.7/1 = 0nnnnnnnn.nnnnnnnn.nnnnnnnn.nnnnnnnn
mfg Beat
hi Beat;
Deine Darstellung
127.0.1.7/29 = 01111111.00000000.00000001.00000nnn
verwirrt etwas. Ich versuchs mal verständlicher, also:
/29 heißt: Maskenlänge 29 Bit
Von links beginnend, wie Sven geschrieben hat, und sieht so aus
11111111.11111111.11111111.11111000
Die IP-Adresse, klar, die kann auch binär geschrieben sein:
01111111.00000000.00000001.00000111
Und jetzt kommen wir mal zum Begriff "Maske"
01111111.00000000.00000001.00000111 IP
11111111.11111111.11111111.11111000 Maske
-------------------------------------- bitweise AND verknüpft
01111111.00000000.00000001.00000000
Wir erhalten damit die Netzadresse zu: 127.0.1.0
Aufgrund der Maske haben wir 3 Bit für den Hostanteil und schreiben das mal auf:
127.0.1.0 Netzadrese
127.0.1.1 host
127.0.1.2 host
127.0.1.3 host
127.0.1.4 host
127.0.1.5 host
127.0.1.6 host
127.0.1.7 Broadcastadresse
Merke: Deine Schreibweise ist nicht korrekt, weil, Du hast die Broadcastadresse notiert, richtig ist:
127.0.1.0/29
Netzadresse/Maskenlänge
für diese Art der Schreibweise. Das nächsthöhere Netz mit 6 möglichen Hosts wäre:
127.0.1.8/29
und hat die Broadcastadresse
127.0.1.15
So wird geteilt ;-)
Hotte
Hallo ihr netten Helfer!
So, dank eurer freundlichen Hilfe & Unterstützung habe ich es
a) verstanden (zumindest weitestgehend) und
b) für meinen Anwendungsfall jetzt auch hinbekommen.
Vielen Dank nochmal!
Eine letzte Frage hätte ich dazu noch:
Sehe ich das richtig, dass ich aber bspw. auf diese Art & Weise in dem Fall von z.B.
xxx.xxx.168.000 bis
xxx.xxx.255.255
wenn ich den als
xxx.xxx.168.0/17
angebe, den IP-Bereich aber im Prinzip nur auf
xxx.xxx.128.000 bis
xxx.xxx.255.255
einschränken kann?
Gruß Gunther
Moin!
wenn ich den als
xxx.xxx.168.0/17
angebe, den IP-Bereich aber im Prinzip nur auf
xxx.xxx.128.000 bis
xxx.xxx.255.255
einschränken kann?
Ja, die Bitmasken lassen sich nicht auf beliebige Bereiche anwenden. Wenn der gewünschte Bereich mit einer einzigen Bitmaske nicht angebbar ist, muss man mehrere Bereiche angeben, mit entsprechend kleineren Bitmasken.
Es gibt ein kleines Linux-Kommandozeilentool namens "ipcalc", welches diverse Bitmaskenberechnungen und -ausgaben erledigt. Für den hier fraglichen Bereich sagt es:
deaggregate 127.0.168.0 - 127.0.255.255
127.0.168.0/21
127.0.176.0/20
127.0.192.0/18
Und schon hast du da deine drei Maskenbereiche, die du angeben musst, um den Gesamtbereich abzudecken ohne Überlappung.
- Sven Rautenberg
Moin!
ipcalc 127.0.168.0 - 127.0.255.255
deaggregate 127.0.168.0 - 127.0.255.255
127.0.168.0/21
127.0.176.0/20
127.0.192.0/18Und schon hast du da deine drei Maskenbereiche, die du angeben musst, um den Gesamtbereich abzudecken ohne Überlappung.
Vielen Dank Sven - wieder was gelernt und auch richtig verstanden inzwischen.
Nett auch, dass du mir gleich die passende Aufteilung gepostet hast.
Gruß & Dank
Gunther