Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

[Ubuntu+Apache 2.4] Configuratie issue reverse-proxy

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo allen,

Ik ben nogal een newbie in deze hoek, maar ik zit met een probleem in de hoek van gebruik van <Location> directive van Apache.

Situatie:
  • Schone Ubuntu 14.04 met alleen OpenSSH en Apache (v. 2.4) modules
  • Werkt puur als reverse-proxy naar een enkele web-server (geen eigen web-hosting en geen virtual hosting oid).
Ik wil dat per default alle http requests een 403 forbidden krijgen (Require all denied).
Maar alleen de http requests waarvan URL bestaat uit /test1 en /test2 mogen doorgaan (Require all granted).

Ik heb hiervoor de 000-default.conf aangepast, dat deze er als volgt ziet (en is dus fout):

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<VirtualHost *:80>

   # Basic access limitation: deny all, except when URL starts with /test1 or /test2
   <Location /test1>
          Require all granted
   </Location>
   <Location /test2>
          Require all granted
   </Location>
   <Location />
         Require all denied
   </Location>
  
   # Proxy all requests to webserver.test.nl
   ProxyPass        /   http://webserver.test.nl/
   ProxyPassReserve /   http://webserver.test.nl/

</VirtualHost>

Uiteraard krijgt nu alles een 403.
Het lukt mij niet om de "Require all denied" algemeen te krijgen, om vervolgens de deur alleen open te zetten voor /test1 en /test2 (zodat hij het doorstuurt naar /webserver.test.nl/test1 (of test2).
Ik heb de "require all denied" elders proberen te zetten, maar dat maakt niets uit... het levert eerder een validatie/start error op van Apache2 service.

Voordat ik verder ging met dat "denied / allow" gedeelte, werkte het proxy'en van /test1 naar behoren.

Waar ga ik hier de mist in?

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 00:17

Hero of Time

Moderator LNX

There is only one Legend

Ik ga er even vanuit dat je hier een typo hebt gemaakt in de config en dit niet op de server is, want de s en v staan verkeerd om.

Verders moet je eens goed nadenken wat je nou precies doet. Je denied access op /, maar je wilt 't wel gaan via ProxyPass laten lopen. Dat werkt niet. Je moet dan ProxyPass /test1 webserver.test.nl doen.

Lees nog eens goed de documentatie van Apache 2.4 mbt ProxyPass en ook wat het standaard gedrag is bij niet bestaande locaties.

Commandline FTW | Tweakt met mate


Verwijderd

Topicstarter
Hero of Time schreef op maandag 08 september 2014 @ 19:35:
Ik ga er even vanuit dat je hier een typo hebt gemaakt in de config en dit niet op de server is, want de s en v staan verkeerd om.

Verders moet je eens goed nadenken wat je nou precies doet. Je denied access op /, maar je wilt 't wel gaan via ProxyPass laten lopen. Dat werkt niet. Je moet dan ProxyPass /test1 webserver.test.nl doen.

Lees nog eens goed de documentatie van Apache 2.4 mbt ProxyPass en ook wat het standaard gedrag is bij niet bestaande locaties.
De config boven heb ik snel uit de hand getikt met andere benamingen. Dus er kan inderdaad wel een tikfout inzitten. Maar in essentie komt het overeen waarmee ik nu aan het 'spelen' ben.
Waar doel je precies op met die "s en v"?

Die " ProxyPass /" had ik er initieel staan, en later wilde ik meer URL access restriction toevoegen (dus die <Location> directives, waarmee ik wilde bereiken dat alles dicht zit behalve requests naar /test1 en /test2 URLs.
Maar je hebt inderdaad gelijk... daar had nu beter "ProxyPass /test1" kunnen staan.

Update nav 1e commentaar
Ik heb nu de <Directory /var/www/> directive in mijn apache2.conf op "Require all denied" gezet (stond op "all granted". Daarnaast in mijn 000-default.conf heb ik de <Location> spul verwijderd en staan nu alleen nog maar de ProxyPass /test1 ... en ProxyPass /test2 ... alsmede ProxyPassReverse / ...
Gevolg is dat alles wat niet voldoet aan wat in de ProxyPass is aangegeven wordt gedenied omdat dit zou resulteren leesactie op /var/www
Ik heb hiermee het gedrag wat ik wil: alles 403 forbidden, behalve voor de URLs die in ProxyPass staan. Deze worden doorgestuurd naar mijn andere webserver.

Mijn vraag nu is:
Heb ik het op deze manier correct gedaan of vinden jullie dit niet echt handig?
Let wel: ik gebruik dit puur als reverse-proxy. Verder niets.

[ Voor 25% gewijzigd door Verwijderd op 09-09-2014 09:25 ]


  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 00:17

Hero of Time

Moderator LNX

There is only one Legend

Verwijderd schreef op dinsdag 09 september 2014 @ 08:54:
[...]

De config boven heb ik snel uit de hand getikt met andere benamingen. Dus er kan inderdaad wel een tikfout inzitten. Maar in essentie komt het overeen waarmee ik nu aan het 'spelen' ben.
Waar doel je precies op met die "s en v"?
Lees je config nog eens. ProxyPassReserve is nou niet echt iets wat zou werken ;).

Heb je verders ook al getest zonder documentroot? Geen idee eigenlijk hoe dat zou werken, nooit mee gespeeld, zowel in 2.2 als 2.4.

Commandline FTW | Tweakt met mate


Verwijderd

Topicstarter
Hero of Time schreef op dinsdag 09 september 2014 @ 10:29:
[...]

Lees je config nog eens. ProxyPassReserve is nou niet echt iets wat zou werken ;).

Heb je verders ook al getest zonder documentroot? Geen idee eigenlijk hoe dat zou werken, nooit mee gespeeld, zowel in 2.2 als 2.4.
OK... dus ook daar gewoon /test1 en /test2 uitwerken.

Voor de rest lijkt het te werken...
Zowel http://abcd als http://abcd/iets komt direct uit op een 403, terwijl de http://abcd/test1 wordt geproxy'd.

Vraagje terzijde:
Ik heb tevens een dood-eenvoudige HTML requests-per-second limiter nodig. Geen extra poespas van waar-en-wie die terecht komt.
Alle overgebleven verkeer dient maximaal 10 request per seconde op te leveren.

Wat zou je hierbij voorstellen bij een Ubuntu 14.04/Apache setup?
Ik zag e.g. mod_security, mod_evasive en mod_qos voorbij komen.
Wat zou voor mijn toepassing het beste zijn?