Nos atacan... gradualmente
2018-01-04 11:57:13
La jornada de ayer en Saiyine Punto Com amaneció sobresaltada, ya que estabamos bajo un (flojo) asedio. ¡Llegamos a tener picos de CPU del 3%! Y memoria de sobra, y eso que estamos en un LAMP con 600 miseros megas de RAM.
Pese a lo discreto del ataque, el departamente de seguridad no tardó ni diez horas en descubrir que teniamos miles de entradas en el log de apache tal que así (ip, fecha y agente de usuario filtrados, para que entre en el formato de la pagina):
* - - [*:05:57*] "GET / HTTP/1.1" 403 465 "-" "Mozilla/5.0 (*) Gecko/20090824 Firefox/3.5.3" * - - [*:05:57*] "GET / HTTP/1.1" 403 465 "-" "Mozilla/5.0 (*) Gecko/20090824 Firefox/3.5.3" * - - [*:05:57*] "GET / HTTP/1.1" 403 465 "-" "Mozilla/5.0 (*) Gecko/20090824 Firefox/3.5.3" * - - [*:05:58*] "GET / HTTP/1.1" 403 465 "-" "Mozilla/5.0 (*) Gecko/20090824 Firefox/3.5.3"
El identificador completo del navegador es "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3", que se corresponde con un Firefox del año de la polka, y que considero extremadamente poco probable que sea real, aunque se podrian haber molestado en meterle un random.
Los accesos llegaban desde miles de IPs diferentes, directos a la IP del servidor (por lo que Cloudflare ni se entera), hacian un GET de mi raiz y listos. Unos 40.000 accesos en 36 horas.
Los más avispaos notareis el 403: naturalmente, en cuanto lo detecté, pase de recalentarme el cerebro electronico generando un index.php para cada llamada, y los bloque con mod_rewrite.
RewriteCond %{HTTP_USER_AGENT} "Gecko\/20090824 Firefox\/3.5.3" [nocase] RewriteRule ^.*$ – [forbidden,last]
Luego mi desocupo me llevo a banear las dos o tres mil IPs más recientes directamente por iptables:
{listado de IPs} | parallel sudo iptables -A fuerabots -s {} -p tcp --destination-port 80 -j DROP
Y esta mañana estaba la cosa tan tranquila, aunque es un problema indecidible saber si el baneo tiene algo que ver, naturalmente, que he limpiado la cadena fuerabots.
¿Que demonios? Vi que la IP de mi servidor aparecia en una lista de servidores MongoDB (bendito sea) sin asegurar, pero la uri no coincide con la API, hasta donde yo se. Se que el agente de usuario es falso porque un navegador hubiera respetado las trampas 301 que intenté, y un nmap a las IP no me dice gran cosa, parecen IPs caseras... Recordad que la S en IoT es por "Seguridad".