Bekijk Volledige Versie : HTACCESS: Hoe een allow geven voor een IP-range met uitzondering van 1 IP-nummer?
Ik heb een htaccess met daarin het volgende:
order deny,allow
deny all
allow from 24.132.0.0/17
allow from 24.132.128.0/17
allow from 31.3.8.0/21
allow from 31.3.96.0/21
allow from 31.3.104.0/21
Maar in een van die ranges wil ik 1 IP-nummer uitsluiten. Ik kom er maar niet achter wat dan het commando moet zijn. Is er iemand ie het wel weet?
Yvette
dennis0162
31/07/11, 17:08
Geen idee of het werkt:
deny from 0.0.0.0
Dus jij bedoelt:
order deny,allow
deny 0.0.0.0
allow from 24.132.0.0/17
allow from 24.132.128.0/17
allow from 31.3.8.0/21
allow from 31.3.96.0/21
allow from 31.3.104.0/21
deny from 24.132.128.2
dennis0162
31/07/11, 18:50
Probeer dit eens:
order deny,allow
allow from 24.132.0.0/17
allow from 24.132.128.0/17
allow from 31.3.8.0/21
allow from 31.3.96.0/21
allow from 31.3.104.0/21
deny from 24.132.128.2
Probeer dit eens:
order deny,allow
allow from 24.132.0.0/17
allow from 24.132.128.0/17
allow from 31.3.8.0/21
allow from 31.3.96.0/21
allow from 31.3.104.0/21
deny from 24.132.128.2
Is het dan niet:
order deny,allow
deny from 24.132.128.2
allow from 24.132.0.0/17
allow from 24.132.128.0/17
allow from 31.3.8.0/21
allow from 31.3.96.0/21
allow from 31.3.104.0/21
Werkt niet.
Logisch, want je blokkeert eerst iets en daarna geef je het weer vrij.
Er zou eigenlijk iets moeten zijn met een 'exception' of zo.
Iemand nog een idee?
yvette
Inderdaad, maar dat deed je al he. Je denied eerst in je opdracht.
Probeer eens dit:
order allow,deny
allow from 24.132.0.0/17
allow from 24.132.128.0/17
allow from 31.3.8.0/21
allow from 31.3.96.0/21
allow from 31.3.104.0/21
deny from 24.132.128.2
Dat kan niet, want helemaal bovenaan deny ik alles, zie mijn eerste post.
Dus dit is wat ik wil:
1. Ik wil eerst de hele wereld blokkeren.
2. Dan wil ik alle IP-ranges uit Nederland toegang geven.
3. Als laatste wil ik sommige IP-nummers uit de NL-ranges blokkeren.
deny,allow,deny eigenlijk...
Hopelijk is het nu duidelijker,
Yvette
order allow, deny
deny from 24.132.128.2
allow from 24.132.0.0/17
allow from 24.132.128.0/17
allow from 31.3.8.0/21
allow from 31.3.96.0/21
allow from 31.3.104.0/2
deny from all
Dit zou 24.132.128.2 moeten blokkeren, omdat hij bij een exacte match van een IP niet verder zou kijken naar de "allow from". Probeer het eens.
Ordering is one of:
Allow,Deny
First, all Allow directives are evaluated; at least one must match, or the request is rejected. Next, all Deny directives are evaluated. If any matches, the request is rejected. Last, any requests which do not match an Allow or a Deny directive are denied by default.
Deny,Allow
First, all Deny directives are evaluated; if any match, the request is denied unless it also matches an Allow directive. Any requests which do not match any Allow or Deny directives are permitted.
Mutual-failure
This order has the same effect as Order Allow,Deny and is deprecated in its favor. Ik denk dat allow,deny voor jou zou werken?
Dat kan niet, want helemaal bovenaan deny ik alles, zie mijn eerste post.
Denk toch dat je nog maar eens goed naar de syntax moet kijken:
(allow|deny) The first argument to this directive is always from.
In je eerste post staat:
deny all
Maar moet zijn:
deny from all
Allow,Deny
First, all Allow directives are evaluated; at least one must match, or the request is rejected. Next, all Deny directives are evaluated. If any matches, the request is rejected. Last, any requests which do not match an Allow or a Deny directive are denied by default.
Deny,Allow
First, all Deny directives are evaluated; if any match, the request is denied unless it also matches an Allow directive. Any requests which do not match any Allow or Deny directives are permitted.
Hetgeen wat je wilt zou _eventueel_ zo moeten:
order allow,deny
allow from 24.132.0.0/17 (1)
allow from 24.132.128.0/17 (1)
allow from 31.3.8.0/21 (1)
allow from 31.3.96.0/21 (1)
allow from 31.3.104.0/21 (1)
deny from <ip> (2)
(3)
Wat zou resulteren in een allow voor bovenstaande ranges, een deny voor specified ip en daarnaast vallen alle andere request buiten de boot.
First, all Allow directives are evaluated; at least one must match, or the request is rejected (1). Next, all Deny directives are evaluated. If any matches, the request is rejected. (2) Last, any requests which do not match an Allow or a Deny directive are denied by default (3).
Verwijder uit voorbeeld uiteraard (1) (2) (3)
// edit @ Dennis, je specificeert de order, maar draait hem zelf om...
order allow, deny
deny from 24.132.128.2
allow from 24.132.0.0/17
allow from 24.132.128.0/17
allow from 31.3.8.0/21
allow from 31.3.96.0/21
allow from 31.3.104.0/2
deny from all
Ja, mijn deny from all hoort er niet tussen. Dan werkt hij wel.
Order allow, deny
deny from 24.132.128.2
allow from 24.132.0.0/17
allow from 24.132.128.0/17
allow from 31.3.8.0/21
allow from 31.3.96.0/21
allow from 31.3.104.0/2
Het zou kunnen dat hij zelf de order opsplitst, ik zou voor het overzicht allow,deny ook de rules zo schrijven ;)
de volgorde in de file doet er niets toe, het is apache die die gaat evalueren in de volgorde die je zet met "order".
De volgorde is juist:
1. Ik blokkeer eerst de hele wereld
2. Dan geef ik de IP-ranges van Nederland vrij.
3. In die IP-ranges wil ik echter een enkele IP kunnen blokkeren.
En dat laatste lukt me niet. Ik moet een soort 'uitzondering op de regel' hebben. Een exception of zo?
Bestaat zoiets in htaccess?
Yvette
nee, htaccess regels kunnen dit niet, tenzij je het betreffende netblok opdeelt in blokken zodat je de te blokkeren regels eruit kan laten.
De volgorde is juist:
1. Ik blokkeer eerst de hele wereld
2. Dan geef ik de IP-ranges van Nederland vrij.
3. In die IP-ranges wil ik echter een enkele IP kunnen blokkeren.
En dat laatste lukt me niet. Ik moet een soort 'uitzondering op de regel' hebben. Een exception of zo?
Bestaat zoiets in htaccess?
Yvette
je kan ook nog met rewite engine aan de gang, maar aangezien je zowel op mijn reactie als die van dennis niet inhoudelijk meer hebt gereageerd haak ik af om nog verder mee te helpen.
Succes met je probleem.
met alle respect.. maar als aangegeven in de wiki...
deny / allow / deny is helemaal niet aan de orde... dus ook je deny from all niet...
als je order allow deny gebruik... dan test de server dus eerst er er uberhaubt een match is met de allow regels... zo niet dat word de request niet eens behandeld... indien het wel zo is... (zoals in jouw ranges)... dan kun je nog de deny gebruiken op specifieke uitzonderingen te plaatsen...
dus order allow deny
alow 10.0.0.0 /8
deny 10.0.0.1
zou resulteren in het feit dat alle reekens behalve 10.* worden geblokeerd. EN dat 10.0.0.1 ook wordt geblockt..
ergo - jouw gewenste oplossing..
Ik kan natuurlijk een tweede ipblocker installeren.
Die kan dus alles wat allowed is, alsnog blokkeren.
Die scripts zijn er in overvloede, heeft iemand een aanrader?
Yvette
Sorry, maar lees je nu de oplossingen gewoon niet? Als je vraagt om hulp maar hier niets mee doet, wat is dan het punt van je vraag?
@Mikey
Ik heb je hele reactie over het hoofd gezien. Sorry daarvoor. Zie hem nu pas.
Wat betreft de Deny All. Dat staat in de htaccess file wel correct natuurlijk.
Jouw oplossingen werken niet, kan ook niet als je logisch nadenkt.
Over de Rewrite engine wil ik graag meer weten, als je nog zin hebt om te helpen.
Yvette
Het komt door een heel simpele reden:
Wanneer je bijvoorbeeld 3 reacties krijgt, dan ontvang je daar maar 1 notificatie van. Klik je op de link in die emailnotificatie, dan krijg je alleen de laatste reactie te zien. Probeer het zelf maar. Ik heb gewoon niet in de gaten gehad dat er meer reacties waren, foutje, niet meer, niet minder.
Geen enkele reden om je zo op te winden...
Yvette
met alle respect.. maar als aangegeven in de wiki...
deny / allow / deny is helemaal niet aan de orde... dus ook je deny from all niet...
als je order allow deny gebruik... dan test de server dus eerst er er uberhaubt een match is met de allow regels... zo niet dat word de request niet eens behandeld... indien het wel zo is... (zoals in jouw ranges)... dan kun je nog de deny gebruiken op specifieke uitzonderingen te plaatsen...
dus order allow deny
alow 10.0.0.0 /8
deny 10.0.0.1
zou resulteren in het feit dat alle reekens behalve 10.* worden geblokeerd. EN dat 10.0.0.1 ook wordt geblockt..
ergo - jouw gewenste oplossing..
Precies wat ik vetgedrukt aangeduid heb ;)
@Mikey
Jouw oplossingen werken niet, kan ook niet als je logisch nadenkt. Over de Rewrite engine wil ik graag meer weten, als je nog zin hebt om te helpen.
YvetteYvette, lees even de berichten van Mikey en mij opnieuw of neem de documentatie goed door.
Je doet namelijk een paar aannames die niet kloppen. Wij doen de moeite om precies uit te leggen hoe het werkt en kopiƫren de relevante tekst uit de documentatie voor je. Vervolgens lees je over onze beide posts heen en na het lezen misinterpreteer je alsnog de werking van de door ons gegeven code, terwijl de uitleg er duidelijk bij staat.
Lees dus echt even de Apache documentatie over mod_access. Ik zal het nog 1x proberen uit te leggen:
Allow,Deny
First, all Allow directives are evaluated; at least one must match, or the request is rejected. Next, all Deny directives are evaluated. If any matches, the request is rejected. Last, any requests which do not match an Allow or a Deny directive are denied by default.
Hieronder dus met volgorde van verwerking, de derde regel heb ik erbij gezet, zodat je begrijpt wat er gebeurt.
order allow, deny
1 allow from 24.132.0.0/17
1 allow from 24.132.128.0/17
1 allow from 31.3.8.0/21
1 allow from 31.3.96.0/21
1 allow from 31.3.104.0/2
2 deny from 24.132.128.2
3 any requests which do not match an Allow or a Deny directive are denied by default
Het is erg storend dat je over onze oplossingen heenleest en dat komt erg ondankbaar over. Indien je vragen hebt of iets niet begrijpt, dan willen we het best uitleggen en indien je uit kunt leggen, waarom je specifieke ranges toegestaan wilt geven, met enkele uitzonderingen, dan kunnen we wellicht meedenken en eventueel een betere oplossing aanraden. Indien het om een aparte server gaat met belangrijke gegevens, dan heeft een firewall sowieso de voorkeur.
Ok,
Als ik mensen gekwetst heb door hun oplossing niet goed te begrijpen, dan spijt me dat. Dat was niet de bedoeling. Excuses daarvoor. Ik ben nu eenmaal niet zo thuis in deze materie.
@Mikey / Dennis
Als ik het goed begrijp, hoef ik niet eerst alles te blokkeren, want hij blokkeert automatisch wat niet ge-allowed wordt?
Ok, gaan we proberen. Ik laat het jullie weten.
Yvette
Voorals nog lijkt het erop dat het werkt.
Ik houd je op de hoogte als daar verandering in komt.
Bedankt tot zover en nogmaals excuses, Yvette