[Apache 2] empecher GET

Répondre
Avatar de l’utilisateur
Ryu_wm
Messages : 8251
Inscription : ven. 12 janv. 2018 17:44

[Apache 2] empecher GET

Message 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
Avatar de l’utilisateur
poulpito
Messages : 12402
Inscription : ven. 12 janv. 2018 17:44
Localisation : Grenoble

[Apache 2] empecher GET

Message par poulpito »

un LIMIT POST GET dans ton site.conf ?


order allow,deny
deny from all


plus l'habitude me trompe peut être :)
Avatar de l’utilisateur
Ryu_wm
Messages : 8251
Inscription : ven. 12 janv. 2018 17:44

[Apache 2] empecher GET

Message 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)
Avatar de l’utilisateur
Zedoune
Messages : 15343
Inscription : ven. 12 janv. 2018 17:44

[Apache 2] empecher GET

Message 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".
nidosaur
Messages : 936
Inscription : ven. 12 janv. 2018 17:44

[Apache 2] empecher GET

Message 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
Avatar de l’utilisateur
Ryu_wm
Messages : 8251
Inscription : ven. 12 janv. 2018 17:44

[Apache 2] empecher GET

Message 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) ?
Avatar de l’utilisateur
Zedoune
Messages : 15343
Inscription : ven. 12 janv. 2018 17:44

[Apache 2] empecher GET

Message 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é :)
Avatar de l’utilisateur
Ryu_wm
Messages : 8251
Inscription : ven. 12 janv. 2018 17:44

[Apache 2] empecher GET

Message 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


Avatar de l’utilisateur
Zedoune
Messages : 15343
Inscription : ven. 12 janv. 2018 17:44

[Apache 2] empecher GET

Message 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 :(
Avatar de l’utilisateur
Ryu_wm
Messages : 8251
Inscription : ven. 12 janv. 2018 17:44

[Apache 2] empecher GET

Message par Ryu_wm »

oki ;)
Avatar de l’utilisateur
dsebire
Messages : 13191
Inscription : ven. 12 janv. 2018 17:44
Localisation : Loiret - entre la ville et les champs

[Apache 2] empecher GET

Message 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)
nidosaur
Messages : 936
Inscription : ven. 12 janv. 2018 17:44

[Apache 2] empecher GET

Message 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

nidosaur
Messages : 936
Inscription : ven. 12 janv. 2018 17:44

[Apache 2] empecher GET

Message 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
Avatar de l’utilisateur
Ryu_wm
Messages : 8251
Inscription : ven. 12 janv. 2018 17:44

[Apache 2] empecher GET

Message 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)
Avatar de l’utilisateur
c0bw3b
Messages : 5523
Inscription : ven. 12 janv. 2018 17:44
Localisation : Lyon

[Apache 2] empecher GET

Message 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....
Avatar de l’utilisateur
Zedoune
Messages : 15343
Inscription : ven. 12 janv. 2018 17:44

[Apache 2] empecher GET

Message 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.
Avatar de l’utilisateur
c0bw3b
Messages : 5523
Inscription : ven. 12 janv. 2018 17:44
Localisation : Lyon

[Apache 2] empecher GET

Message 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é ^^
Avatar de l’utilisateur
Ryu_wm
Messages : 8251
Inscription : ven. 12 janv. 2018 17:44

[Apache 2] empecher GET

Message par Ryu_wm »

Ha ! ça devient plus clair, merci à vous.
nidosaur
Messages : 936
Inscription : ven. 12 janv. 2018 17:44

[Apache 2] empecher GET

Message 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
Avatar de l’utilisateur
Zedoune
Messages : 15343
Inscription : ven. 12 janv. 2018 17:44

[Apache 2] empecher GET

Message 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 ^^
Répondre