1 votes

Apache enregistre l'URL complète plutôt que l'URI

Mon serveur web Apache a enregistré les messages suivants sur access.log :

46.22.173.131 - - [23/Dec/2014:15:34:54 +0100] "GET http://pl.wikipedia.org/wiki/Special:Search?search=&go=Go HTTP/1.1" 302 482 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"
182.254.156.77 - - [23/Dec/2014:16:53:22 +0100] "GET http://www.ly.com/ HTTP/1.1" 302 433 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0"`
182.254.208.62 - - [23/Dec/2014:17:57:49 +0100] "GET http://www.ly.com/ HTTP/1.1" 302 433 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0"

J'ai deux Virtualhost définis - un pour le port 80 qui redirige simplement vers le 443 ... et le Virtualhost pour le port 443 qui se connecte à ssl_access.log .

Je ne comprends pas ce que signifient ces journaux ? Quelqu'un a-t-il essayé d'accéder à ces URL via mon serveur web ?

Veuillez m'aider à comprendre ces journaux.

Joyeux Noël à tous !

0 votes

0 votes

7voto

faker Points 17246

http://wiki.apache.org/httpd/ProxyAbuse :

Pourquoi des demandes de sites étrangers apparaissent-elles dans mes fichiers journaux ?

Une entrée d'access_log montrant cette situation pourrait ressembler à ceci :

63.251.56.142 - - [25/Jul/2002:12:48:04 -0700] "GET http://www.yahoo.com/ HTTP/1.0" 200 1456
Pour cette ligne de journal, les 200 (avant-dernier champ dans cet exemple) indique que la demande a été acceptée. a abouti - mais voir ci-dessous pour une explication de ce que le "succès" signifie dans cette situation.

C'est généralement le résultat de clients malveillants qui essaient d'exploiter des ouvertures pour accéder à un site web sans révéler leur véritable emplacement. leur véritable emplacement. Ils peuvent le faire pour manipuler les systèmes de publicité par paiement au clic. payants, ajouter des commentaires ou du spam sur le site de quelqu'un d'autre, ou simplement pour faire quelque chose de méchant sans être détecté.

Il est important d'éviter que votre serveur ne soit utilisé comme un open proxy ouvert pour abuser d'autres sites.

0 votes

Ok. Cela explique ce qui se passe ici. La prochaine question serait comment empêcher cela.

0 votes

Empêcher les gens de le demander ? C'est impossible. Vous pouvez créer un VirtualHost par défaut qui n'envoie que des 404 pour de telles requêtes et les enregistre dans un autre fichier journal. Mais au final, il y aura toujours des scanners qui essaieront d'exploiter votre serveur de cette manière. C'est le bruit de fond d'Internet.

0 votes

Je comprends. Existe-t-il un exemple de configuration pour un tel VirtualHost configuration quelque part ?

1voto

rahul kumar Points 251

En plus de l'excellente réponse de faker, les 302 Le code de réponse est dû à la redirection HTTPS que vous avez configurée.

Pour vérifier si vous êtes vulnérable au même exploit via HTTPS, exécutez les commandes suivantes [source] :

openssl s_client -connect yourdomain.com:443
[wait for the connection to initialise]
GET http://www.yahoo.com/ HTTP/1.1
Host: www.yahoo.com

Ou avec curl :

curl -H -x https://domain.name.here:443 www.google.de

Conformément à la Documentation Apache vous ne devriez pas recevoir de contenu de yahoo.com et devriez afficher une réponse 404 ou 403. Si c'est le cas, ces journaux n'ont rien d'inquiétant et sont plus que probablement des analyses automatiques effectuées par des robots.

0voto

Kurtis Rader Points 101

Comme le note @faker, il est important de configurer votre serveur web de manière à ce qu'il ne puisse pas être utilisé comme un proxy public. Cela devrait être le comportement par défaut (c'est-à-dire que le proxy est désactivé) à moins que vous n'ayez explicitement activé un ou plusieurs modules de proxy (regardez dans votre httpd.conf pour les déclarations LoadModule qui font référence aux modules de proxy) et que vous ayez ajouté les paramètres suivants Proxy des directives. Néanmoins, si vous voulez que de telles requêtes soient explicitement bloquées et enregistrées comme telles, vous pouvez faire ce que j'ai fait et ajouter des lignes comme celles-ci à votre fichier httpd.conf ou .htaccess :

# There is some seriously broken malware that attempts to proxy via our web
# server to www.baidu.com, planeta.ru, etc. The proxy attempt per se isn't
# broken (although we don't allow proxying via this web server). It's that
# only the first request makes any sense. Subsequent requests mangle both the
# HTTP_HOST and REQUEST_URI into nonsensical strings. Eventually the request
# is so mangled Apache responds with a 403 status.
#
# So check the request line to see if it looks like an attempt to proxy via
# our web server. Since we don't allow proxying nip the insanity in the bud.
RewriteCond %{THE_REQUEST} ^GET\s+https?:// [NC]
RewriteRule ^ blocked.php [NC,END,E=REASON:proxy-probe]

J'ai un "blocked.php" script qui fournit une page de réponse personnalisée incluant la var env REASON mais vous pourriez tout aussi bien remplacer cette règle par

RewriteRule ^ - [NC,L,R=403]

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X