Squid en reverse sans cache

Squid en reverse sans cache - Sécurité - Systèmes & Réseaux Pro

Marsh Posté le 30-11-2009 à 18:37:46    

Bonjour à tous,
 
Je dois installer un reverse proxy squid de manière à rediriger des requetes http sur différents serveurs en fonction du path de l'url.
 
Par exemple je reçoit:
http://ipdureverseproxy/toto/foo
Je veux renvoyer ce que je trouve sur http://ip.du.server.1/foo
 
Au départ on fonctionnait avec apache et le fichier de conf était le suivant (si ca peut vous donner une idée simple de ce que je souhaite faire):
 

ProxyPass /toto http://ip.du.serveur.1:port
ProxyPassReverse /toto http://ip.du.serveur.1:port
 
ProxyPass /titi http://ip.du.serveur.2:port
ProxyPassReverse /titi http://ip.du.serveur.2:port
 
ProxyPass /tata http://ip.du.serveur.3:port
ProxyPassReverse /tata http://ip.du.serveur.3:port


 
C'était simple et efficace mais ma boite veut passer à Squid pour des raisons de sécurité et veut au moins que quelqu'un sache comment faire..
L'ennui c'est que j'ai vraiment du mal à comprendre et à faire le merge de toutes les infos que je trouve sur Squid.
 
Je souhaite me faire un fichier de conf minimaliste qui me permet de faire la même chose et j'en suis arrivé à ca:
 

http_port 80
visible_hostname squid
acl toto urlpath_regex ^/toto
cache_peer ip.du.server.1 parent 80 0 no-query originserver name=server1
cache_peer_access server1 allow toto
 
acl toto urlpath_regex ^/titi
cache_peer ip.du.server.2 parent 80 0 no-query originserver name=server2
cache_peer_access server2 allow titi
 
acl toto urlpath_regex ^/tata
cache_peer ip.du.server.3 parent 80 0 no-query originserver name=server3
cache_peer_access server3 allow tata


 
Je n'ai pas trouvé de directive qui permet de relier toto à server1 autre que celle ci (cache_peer_access) alors que je ne veux pas de cache, donc j'ai bien peur que ca ne fasse pas ce que je veux, mais de toute facon j'obtiens une erreur 403 Forbidden, avec wget en local.  
 
Si vous avez une idée de comment faire, ou vers quoi chercher... J'avoue que j'ai du mal à cerner jusqu'ou je dois configurer squid pour avoir un fonctionnement normal (Par exemple si je veux pouvoir accéder au reverse depuis le réseau local, il faut lui dire? En localhost aussi?)
 
Merci de votre aide.
 

Reply

Marsh Posté le 30-11-2009 à 18:37:46   

Reply

Marsh Posté le 30-11-2009 à 22:57:11    

Pour pas mettre en cache local tu met "proxy-only".
 
Après le pk tu as un 403 je sais pas. Si tu fais une trace la requette part sur ton backend ou reste sur le squid ? les logs disent quoi ?

Reply

Marsh Posté le 01-12-2009 à 09:32:22    

Je vais me pencher sur la question a tête reposée et je vais bien regarder ce proxy-only. Sinon je crois avoir compris un truc: le reverse proxy s'apelle accellerator chez squid.. J'ai faux?  
Pour le 403, je crois que ca reste sur le proxy, c'est un message de squid alors ca dois être dans les acl.
En tout cas merci de votre aide..
A suivre..


Message édité par milootooloo le 01-12-2009 à 09:34:31
Reply

Marsh Posté le 01-12-2009 à 09:55:41    

oui c'est accelerator. Je me focussais sur les acl and co mais ouais là t'es en proxy normal j'ai l'impression

Reply

Marsh Posté le 01-12-2009 à 10:00:51    

Je@nb a écrit :

oui c'est accelerator. Je me focussais sur les acl and co mais ouais là t'es en proxy normal j'ai l'impression


 
Ok, alors je crois avoir compris le problème.. C'est pas possible de faire ce que je veux..
Si vous pouvez me dire ce que vous pensez de mon raisonnement:
 
Je trouve dans une doc sur le reverse proxy: (http://www.visolve.com/squid/sqguide.php)
 

For Configuring squid for Reverse Proxy
 
To run Squid as an accelerator, you probably want to listen on port 80. And you have to define the machine you are accelerating for. This is done in squid module,
 
http_port 80
httpd_accel_host visolve.com
httpd_accel_port 81
httpd_accel_single_host on
httpd_accel_with_proxy on
 
If you are using Squid as an accelerator for a virtual host system, then instead of a 'hostname' here you have to use the word virtual as:
 
http_port 80
httpd_accel_host virtual
httpd_accel_port 81
httpd_accel_with_proxy on
httpd_accel_single_host off


 
Apparement ca me donne le choix entre accelérer un seul serveur ou bien des hotes virtuels.. Si ce ne sont pas des hotes virtuels.. Je l'ai bien ou je pense n'est ce pas? ^^ Ou alors je change de doc?


Message édité par milootooloo le 01-12-2009 à 10:02:08
Reply

Marsh Posté le 01-12-2009 à 10:23:46    

Marche pas un truc du genre ? :
 
http_port 80 accel defaultsite=your.main.website.name
acl toto urlpath_regex ^/toto
cache_peer ip.du.server.1 parent 80 0 no-query originserver name=server1
cache_peer_access server1 allow toto
 
acl toto urlpath_regex ^/titi
cache_peer ip.du.server.2 parent 80 0 no-query originserver name=server2
cache_peer_access server2 allow titi
 
acl toto urlpath_regex ^/tata
cache_peer ip.du.server.3 parent 80 0 no-query originserver name=server3
cache_peer_access server3 allow tata

Reply

Marsh Posté le 01-12-2009 à 10:40:07    

Je ne sais pas mais je pense avoir trouvé une autre solution satisfaisante..
Je fait comme recommandé dans la doc en mode virtual et je met les ip des serveurs dans /etc/hosts. Je croyais que ca ne marchait que pour des serveurs locaux mais c'était une erreur.
 
Je reviendrais pour vous faire part des résultats.
Merci encore.

Reply

Marsh Posté le 02-12-2009 à 15:06:27    

Ben si en fait ca marche.. et ce que j'avais trouvé c'était le même chose...
 
Maintenant je me heurte à un autre problème mais qui dois pouvoir se résoudre..
 
Dans mon exemple apache original, le premier répertoire après le nom du serveur n'était pas transmis au serveur  caché, mais seulement le reste de l'url.
 
En demandant http://adressedureverseproxy/toto/foo/bar
je tombais sur http://totoserver/foo/bar
 
Avec cette config tout est transmi j'ai ca:
 
En demandant http://adressedureverseproxy/toto/foo/bar
je tombe sur http://totoserver/toto/foo/bar
 
Une idée sachant que je n'ai pas accès aux serveurs web?


Message édité par milootooloo le 02-12-2009 à 15:08:13
Reply

Marsh Posté le 02-12-2009 à 15:23:51    

Avec redirect_program et un petit script :)

Reply

Marsh Posté le 02-12-2009 à 15:29:12    

Merci mille fois, vous me sauvez!

Reply

Marsh Posté le 02-12-2009 à 15:29:12   

Reply

Marsh Posté le 02-12-2009 à 16:51:59    

Aller je vous embête une dernière fois (j'espère)
J'ai fait un joli script shell que voila:


#!/bin/bash
echo $1 | sed 's/^\/titi//'


 
dans ma conf je met :
 
redirector_program /adressedemonscript.sh
 
Les droits sont corrects, mais squid me sort:
 

[root@squid sh]# 2009/12/02 16:49:05| Starting Squid Cache version 3.0.STABLE20 for x86_64-unknown-linux-gnu...
2009/12/02 16:49:05| Process ID 24338
2009/12/02 16:49:05| With 32768 file descriptors available
2009/12/02 16:49:05| helperOpenServers: Starting 5/5 'dnsserver' processes
2009/12/02 16:49:05| helperOpenServers: Starting 5/5 'redirector.sh' processes
2009/12/02 16:49:05| Unlinkd pipe opened on FD 19
2009/12/02 16:49:05| Swap maxSize 102400 + 8192 KB, estimated 8507 objects
2009/12/02 16:49:05| Target number of buckets: 425
2009/12/02 16:49:05| Using 8192 Store buckets
2009/12/02 16:49:05| Max Mem  size: 8192 KB
2009/12/02 16:49:05| Max Swap size: 102400 KB
2009/12/02 16:49:05| Version 1 of swap file without LFS support detected...
2009/12/02 16:49:05| Rebuilding storage in /exec/products/squid/var/cache (CLEAN)
2009/12/02 16:49:05| Using Least Load store dir selection
2009/12/02 16:49:05| Set Current Directory to /exec/products/squid/var/cache
2009/12/02 16:49:05| Loaded Icons.
2009/12/02 16:49:05| Accepting accelerated HTTP connections at 0.0.0.0, port 80, FD 21.
2009/12/02 16:49:05| Accepting  HTTP connections at 0.0.0.0, port 3128, FD 22.
2009/12/02 16:49:05| Accepting ICP messages at 0.0.0.0, port 3130, FD 23.
2009/12/02 16:49:05| HTCP Disabled.
2009/12/02 16:49:05| Configuring Parent x.x.x.x/80/0
2009/12/02 16:49:05| Configuring Parent x.x.x.x/80/0
2009/12/02 16:49:05| Configuring Parent x.x.x.x/80/0
2009/12/02 16:49:05| Ready to serve requests.
2009/12/02 16:49:05| Done reading /exec/products/squid/var/cache swaplog (40 entries)
2009/12/02 16:49:05| Finished rebuilding storage from disk.
2009/12/02 16:49:05|        40 Entries scanned
2009/12/02 16:49:05|         0 Invalid entries.
2009/12/02 16:49:05|         0 With invalid flags.
2009/12/02 16:49:05|        40 Objects loaded.
2009/12/02 16:49:05|         0 Objects expired.
2009/12/02 16:49:05|         0 Objects cancelled.
2009/12/02 16:49:05|         0 Duplicate URLs purged.
2009/12/02 16:49:05|         0 Swapfile clashes avoided.
2009/12/02 16:49:05|   Took 0.00 seconds (8982.71 objects/sec).
2009/12/02 16:49:05| Beginning Validation Procedure
2009/12/02 16:49:05| helperHandleRead: unexpected read from redirector #2, 1 bytes '
'
2009/12/02 16:49:05| helperHandleRead: unexpected read from redirector #5, 1 bytes '
'
2009/12/02 16:49:05| helperHandleRead: unexpected read from redirector #4, 1 bytes '
'
2009/12/02 16:49:05| helperHandleRead: unexpected read from redirector #3, 1 bytes '
'
2009/12/02 16:49:05| helperHandleRead: unexpected read from redirector #1, 1 bytes '
'
2009/12/02 16:49:05|   Completed Validation Procedure
2009/12/02 16:49:05|   Validated 105 Entries
2009/12/02 16:49:05|   store_swap_size = 592
2009/12/02 16:49:05| WARNING: redirector #1 (FD 10) exited
2009/12/02 16:49:05| WARNING: redirector #3 (FD 12) exited
2009/12/02 16:49:05| WARNING: redirector #4 (FD 13) exited
2009/12/02 16:49:05| WARNING: redirector #5 (FD 14) exited
2009/12/02 16:49:05| Too few redirector processes are running
2009/12/02 16:49:05| storeDirWriteCleanLogs: Starting...
2009/12/02 16:49:05|   Finished.  Wrote 40 entries.
2009/12/02 16:49:05|   Took 0.00 seconds (294117.65 entries/sec).
FATAL: The redirector helpers are crashing too rapidly, need help!


 
J'ai l'impression que mes redirectors doivent tourner sans s'aretter mais ca me parait louche..
 

Reply

Marsh Posté le 02-12-2009 à 16:54:52    

Hannn echo -e?? J'essaye..

Reply

Marsh Posté le 02-12-2009 à 17:38:22    

Essaie un truc du genre :
 
#!/bin/bash
while true
do
read toto
echo $toto | sed 's/^\/titi//'
done

Reply

Marsh Posté le 02-12-2009 à 17:43:17    

Ok merci.  
J'avais essayé mais pas bien (le script faisait en plus un echo dans un fichier de log que j'avais oublié d'enlever, et ca a rempli mon fs, et j'ai du redémarer mon serveur parce qu'il croyais etre toujours full apres suppression des fichiers.. 10min pour redémarer ce monstre..)
 
Toutefois: tout fonctionne, et concernant ce redirector, voila le code pour ceux que ca interesse:
 
while read addr do
 echo ...
done
 
Mettre le read addr comme condition du while permet de terminer le redirector lorsque qu'il recoit un EOF.
 


Message édité par milootooloo le 08-01-2010 à 15:59:41
Reply

Marsh Posté le 08-01-2010 à 15:56:18    

Bonjour,
 
Je remet ce thread en route car j'ai quelques petites questions.. Si les admins veulent que je crée un nouveau thread, pas de problème..
 
Ma question est à propos du systeme de lookup dns de squid.
Je souhaite désactiver complètement le lookup, de manière à ne pas avoir de process en ecoute sur le port 68 (udp).
J'ai essayé l'option de compilation --disable-internal-dns, mais en fait ca n'a rien à voir et squid utilise un programme externe à la place. Etant donné que les requetes n'utilisent en aucun cas des noms de domaines, je pense qu'il serait bon d'empêcher l'écoute sur le port 68, ce qui réduirait la surface d'attaque.
 
Si quelqu'un a une idée..
 
Merci!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed