Page 1 sur 1
[Apache 2] empecher GET
Publié : mer. 25 mars 2015 18:19
par Ryu_wm
Bonjour/bonsoir.
Je ne trouve pas la méthode pour empêcher des petits plaisantins de faire un GET URL depuis MON Apache :
Code : Tout sélectionner
123.151.149.222 - - [25/Mar/2015:00:51:39 +0100] "GET http://www.baidu.com/ HTTP/1.1" 200 53 "-" "-"
D'une part car je ne souhaite pas servir de rebond, d'autre part je suppose que si GET fonctionne POST également.
Quelqu'un sait comment empêcher ce comportement je vous prie

car marre d'essayer de limiter les erreurs potentielles :
Hits by Response Code
Code 400 - Bad Request 17
Code 403 - Forbidden 2
Code 404 - Not Found 225
Code 405 - Method Not Allowed 550
[Apache 2] empecher GET
Publié : mer. 25 mars 2015 18:22
par poulpito
un LIMIT POST GET dans ton site.conf ?
order allow,deny
deny from all
plus l'habitude me trompe peut être
[Apache 2] empecher GET
Publié : mer. 25 mars 2015 18:52
par Ryu_wm
Merci, mais la directive se contourne avec une requête GET mal formée

(dans ce cas Apache ne comprend pas et traite par défaut en GET)
[Apache 2] empecher GET
Publié : jeu. 26 mars 2015 09:52
par Zedoune
Pour moi ton serveur ne fait pas de GET vers l'extérieur.
Pour faire ce genre de requête bizarre, suffit de forcer un nom de domaine par rapport à une IP, par exemple en modifiant le fichier hosts
X.Y.Z.W
www.baidu.com
curl
http://www.baidu.com ça va arriver sur X.Y.Z.W et pas sur le vrai
www.baidu.com
Après, l'intérêt de ce genre de chose, je ne sais pas. Suffit de faire des virtualhosts et de refuser un "virtualhost générique".
[Apache 2] empecher GET
Publié : jeu. 26 mars 2015 11:58
par nidosaur
Pour moi ton serveur ne fait pas de GET vers l'extérieur.
Pour faire ce genre de requête bizarre, suffit de forcer un nom de domaine par rapport à une IP, par exemple en modifiant le fichier hosts
X.Y.Z.W
www.baidu.com
curl
http://www.baidu.com ça va arriver sur X.Y.Z.W et pas sur le vrai
www.baidu.com
Après, l'intérêt de ce genre de chose, je ne sais pas. Suffit de faire des virtualhosts et de refuser un "virtualhost générique".
+1 pour les virtualhosts ... c'est la base de l'hébergement
[Apache 2] empecher GET
Publié : jeu. 26 mars 2015 17:23
par Ryu_wm
1° merci
2° le serveur répond bien "200" sur le GET donc il le fait
3° rajouter des 127.0.0.1 dans le hosts oui c'est une idée mais ça rajoute du taf si je dois éplucher toutes les requetes "GET" pour mettre le domaine demandé en 127.0.0.1
4° je n'ai rien compris sur votre explication sur les Vhosts (ce serveur fonctionne en Vhosts justement) ?
[Apache 2] empecher GET
Publié : jeu. 26 mars 2015 17:27
par Zedoune
2) la ligne de log explique qu'on t'a fais un GET et que ton serveur a répondu 200, pas que ton serveur a fait un GET sur baidu.com !!
3) ça n'a rien à voir, j'expliquais comment un client distant pouvait faire des requêtes bizarres de ce style
4) il faut un vhost "poubelle" qui traite toutes les requêtes non traités par tes vhosts où il y a des choses. D'ailleurs, une bonne pratique à avoir est de faire un fichier de log par virtualhost, comme ça, tu sais par qui ça a été généré

[Apache 2] empecher GET
Publié : jeu. 26 mars 2015 18:41
par Ryu_wm
Heu Z .... j'ai du mal là
comment un GET
http://www.baidu.com" (180.76.3.151) pourrait atterrir chez moi (89.82.81.60) ?
Vhost poubelle ... OK ... Sachant que l'Apache à un certain nombre de Vhosts déjà, comment tu fais ça ?? Et d'ailleurs chacun possède son propre fichier de log (je ne saurai faire autrement d'ailleurs).
//EDIT :il semblerai que j'y avait déjà pensé, j'ai un Vhost qui écoute tout avant les autres :
les autres sont après avec les noms de domaine qui vont bien.
exemple pour l'un d'eux
[Apache 2] empecher GET
Publié : jeu. 26 mars 2015 20:50
par Zedoune
Heu Z .... j'ai du mal là
comment un GET
http://www.baidu.com" (180.76.3.151) pourrait atterrir chez moi (89.82.81.60) ?
echo "89.82.81.60
www.baidu.com" >> /etc/hosts
curl
http://www.baidu.com/
et voilà ! t'as un GET trop bizarre

(on peut le faire directement dans curl avec un paramètre mais j'ai oublié)
pour le reste j'utilise plus apache depuis longtemps alors je peux pas t'aider

[Apache 2] empecher GET
Publié : jeu. 26 mars 2015 21:08
par Ryu_wm
oki

[Apache 2] empecher GET
Publié : jeu. 26 mars 2015 21:20
par dsebire
C'est le paramètre Servername qui est important.
C'est ce qui défini a quelle url le Server va répondre.
Virtualhost x.y.z.w:80 (ou un nom dns) défini sur quelle ip le serveur va répondre (très pratique si tu veux limiter un site a un accès local, tu met 127.0.0.1)
[Apache 2] empecher GET
Publié : lun. 30 mars 2015 17:32
par nidosaur
ServerName prod.tutu.fr
ServerAlias test.toto.com
DocumentRoot /srv/test/www
DirectoryIndex index.php
Options FollowSymLinks
AllowOverride All
RewriteEngine On
RewriteCond %{HTTP_HOST} !^test.toto.com
RewriteCond %{HTTP_HOST} !^prod.tutu.fr
RewriteRule ^/(.*)$ http://prod.tutu.fr/$1 [R=301,L]
RewriteMap tolower int:tolower
Customlog /var/log/apache2/prod.fr.log varnish_combined
Errorlog /var/log/apache2/prod.fr.err
[Apache 2] empecher GET
Publié : lun. 30 mars 2015 17:34
par nidosaur
grosso modo ton vhost va répondre uniquement a prod.tutu.fr et test.toto.com
le documentroot je t'explique pas
le mod rewrite fait que tout ce qui arrive et qui n'est pas test.toto.com ou prod.tutu.fr sera rédirigé vers prod.tutu.fr (en théorie ca ne peut pas arriver)
aprés le log cutom prévu en backend varnish et l'errorlog
[Apache 2] empecher GET
Publié : lun. 30 mars 2015 18:36
par Ryu_wm

ça me permettra de mettre en oeuvre le mod_rewrite et pourquoi pas l'url_rewrite. Je teste ceci ce weekend et te fais savoir.
maintenant question déjà posée : comment mon ip aurait elle pu répondre à un nom de domaine connu comme baidu.com ? (sauf si il y a un fichier /hosts qq part sur terre qui dit 89.82.81.60
www.baidu.com)
[Apache 2] empecher GET
Publié : lun. 30 mars 2015 19:19
par c0bw3b
La requête est adressée à ton adresse IP au niveau réseau, mais contient un GET d'une page arbitraire au niveau applicatif (HTTP). Il n'y a pas d'association DNS ou via fichier hosts entre ton IP et le FQDN
www.baidu.com à mon avis.
Je vois pas bien l'intérêt pour les petits malinois de forger une telle requête mais bon....
[Apache 2] empecher GET
Publié : lun. 30 mars 2015 19:20
par Zedoune
ou tu fais une requête avec CURL en faisant des trucs bizarres avec ce paramètre
--resolve
Provide a custom address for a specific host and port pair.
Using this, you can make the curl requests(s) use a specified
address and prevent the otherwise normally resolved address to
be used. Consider it a sort of /etc/hosts alternative provided
on the command line. The port number should be the number used
for the specific protocol the host will be used for. It means
you need several entries if you want to provide address for the
same host but different ports.
[Apache 2] empecher GET
Publié : lun. 30 mars 2015 19:21
par c0bw3b
on peut le faire directement dans curl avec un paramètre mais j'ai oublié)
--resolve
Provide a custom address for a specific host and port pair. Using this, you can make the curl requests(s) use a specified address and prevent the otherwise normally resolved address to be used. Consider it a sort of /etc/hosts alternative provided on the command line.
C'est ça Z ? POuaaah post croisés je suis grillé ^^
[Apache 2] empecher GET
Publié : mar. 31 mars 2015 17:24
par Ryu_wm
Ha ! ça devient plus clair, merci à vous.
[Apache 2] empecher GET
Publié : mer. 1 avr. 2015 10:59
par nidosaur
aussi il faut prendre en compte que si tu remplis ton fichier hosts, il commence a lire le fichier hosts avant de faire une résolution dns.
https://support.microsoft.com/fr-fr/kb/172218/fr
donc même pas besoin de chercher les options de curl
[Apache 2] empecher GET
Publié : mer. 1 avr. 2015 11:06
par Zedoune
aussi il faut prendre en compte que si tu remplis ton fichier hosts, il commence a lire le fichier hosts avant de faire une résolution dns.
https://support.microsoft.com/fr-fr/kb/172218/fr
donc même pas besoin de chercher les options de curl
c'est définit dans le nsswitch.conf sous unix ça je crois pour "host" ça doit être "host: file dns", suffit de mettre "dns file" et normalement ça inverse l'ordre.
cependant, qqn qui fait des trucs bizarres je pense pas qu'il s'emmerde à faire un script qui modifie le /etc/hosts à chaque fois ^^
par contre, le fichier hosts, des fois je m'en sers pour tester des virtualhost auxquels j'ai encore pas mis à jour le DNS ^^