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 :jap: 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

Code : Tout sélectionner



DocumentRoot "g:/www"
ServerName bcc5-328.no-ip.info
ServerAdmin admin@ryu-homeftp.no-ip.org
ErrorLog g:/silent_www/logs/error.log
CustomLog g:/silent_www/logs/access.log combined

    Options -Indexes MultiViews
    AllowOverride None
    Order allow,deny
    Allow from all
	

DirectoryIndex index.php index.htm index.html index.var.html

    DirectoryIndex index.php index.html


	Alias /[]/ "g:/silent_www/[]/"



    TypesConfig conf/mime.types
    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz
	AddType application/x-httpd-php .php .php5
	AddType application/x-httpd-php-source .phps



[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 :D (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
:jap: ç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 ^^