A propos du temps de réponse très long d’hier

[ 3 ] Commentaires
Share

Hier, entre 11h30 et 13h30 (environ), le blog a été plus ou moins indisponible. Plus exactement, le temps de réponse était très long, ce qui faisait qu’on ne pouvait pas avoir la page web recherchée avant une vingtaine de secondes (pour certains, ça allait mieux, mais pour moi, c’était plutôt vers les 20-30 secondes). Heureusement, c’est revenu vers 14h, donc je ne me fait pas plus de soucis que ça. Cela dit, c’est intéressant, il y a de quoi se poser quelques questions. Je n’ai pas accès à tous les logs, donc je ne peux pas savoir ce qui a provoqué cette lenteurs. Les scénarios possibles sont très variés : ça pourrait être tout simplement le réseau de l’hébergeur (1and1) qui était en mauvais état (ça arrive : suivez le compte Twitter de OVH pour vous rendre compte de toute la maintenance qu’il y a à faire), ou eux qui faisaient une maintenance sur mon serveur, ou plus probablement un problème d’attaque sur ce dernier.

Avant toute chose, je me permets de remercier : @FOX15, @fetard, @corentin_L, @cr0vax, @jaguie, et @tasanv pour avoir pris le temps de tester chez eux le temps de réponse.
Comment ça marche ? Plusieurs possibilités. La plus simple est une grande quantité de tentatives de connexion sur un temps court, ce qui ‘surcharge’ le serveur. Pour cela, il ‘suffit’ d’ordonner à une certaine quantité d’ordinateurs de se connecter tous en même temps sur la même page, et vous verrez alors ce qu’il se passera (attaque par Deni de Service, ou DoS). Cela dit, comme le serveur écoute sur plusieurs ports, il est possible que cet afflux de connexion ait été fait sur d’autres ports que le HTTP (suivez mon regard), notamment dans une tentative de brute force pour prendre contrôle du serveur. Je suis sur un auto-administré (et je prévois de bouger AbriCoCotier d’ici peu, une grande partie des sauvegardes sont déjà faites), donc j’ai peu de raisons de m’en préoccuper (et de toute façon, je n’ai pas la main pour changer le numéro de port du SSH, donc comme ça c’est rapide).

Bref, en tout cas, sur les graphiques d’uptime, on voit très clairement qu’il y a eu une « baisse de forme » aux heures que je vous ai indiqué plus avant :

Je me suis donc dis qu’il pourrait être une bonne chose de regarder sur les logs d’accès (qui me sont disponibles), si je voyait un grand nombre de connexions sur une certaine IP, ou bien un grand nombre d’IP ne faisant qu’une seule requête.

J’ai donc fait un petit script python que voici :

#!/usr/bin/env python
#

"""Main function of the access log script."""

__version__ = '1'

import sys
import traceback
import logger

def main(argv):
    """Main function of the access log script."""

    try:
        logger.info("Start MAIN.")
        f = open('access.log')
        lines = f.readlines()
        output = []
        for l in lines:
            output.append(l.split(" - - ",1)[0])
        different_ip = list(set(output))
        #logger.info(str(output))
        the_count = []
        for d in different_ip:
            the_count.append([output.count(d),d])
        the_count.sort()
        logger.info(str(the_count))

        logger.info("End MAIN.")
    except:
        e = traceback.format_exc()
        logger.error("Error during execution," \
                     + " error is: " + str(e))

if __name__ == "__main__":
    main(sys.argv[1:])

Ce script me donne une liste de chaque IP, avec le nombre de requêtes qu’elle a effectué (ou que l’on a trouvé dans le log de la journée, que j’ai réduis à la période 11h30 – 13h30).

On voit plusieurs choses :

  • L’IP qui a eu le plus de connexions (398 sur la période) est l’IP 66.249.65.228, qui appartient à… Google (c’est celle du Google Bot).
  • La 2e IP avec le plus de connexions (252) est celle… de chez moi (logique, vu les tests que j’ai fait)
  • Pas mal d’autres IP sont autour de 100 connexions, mais on va dire que c’est parce qu’ils ont vu plusieurs pages (une page représentant entre 30 et 40 requêtes).
  • Enfin, un grand nombre d’utilisateurs n’ont fait qu’une seule requête, mais on peut dire que potentiellement ils n’ont pas attendu la réponse de la page HTML (correspondant à la toute première requête).

Bref : au final, je ne suis pas convaincu que l' »attaque » (si vraiment il y en a eu une) est à chercher sur le protocole HTTP. Je note d’ailleurs que, au moment où j’écris ces lignes (il est 00h27), le temps d’accès au blog est une fois de plus très très lent, et pourtant les logs m’indiquent que peu de monde se connecte actuellement (mais je dois avouer que je vois encore une grosse quantité de gens qui ne font qu’une seule requête, et je trouve ça louche quand même).

Vous serez peut-être intéressé :

3 commentaires sur ce billet

  1. Thibault dit :

    attaque par Google bot ? 🙂
    Je me demandais quel soft te sortait des graphiques comme ceux la ? c’est ton hébergeur et ses outils intègres ou autre ?

    RépondreRépondre
  2. Louis dit :

    @Thibault: Ah non pas d’attaque du Google Bot, mais il passe très très souvent.

    Pour les graphs, c’est Mon.itor.us qui fournit ça (je n’ai pris que le service gratuit, et ça suffit, comme tu peux le voir 🙂 )

    RépondreRépondre
  3. Thibault dit :

    Merci pour l’info. Je vais tester ce service, je ne connaissais pas.

    RépondreRépondre

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *