Automatización del bloqueo de direcciones IP.

Automatización del bloqueo de direcciones IP.

Tengo una máquina Ubuntu 12.04 que ejecuta Apache2 y aloja alrededor de 10 sitios web de WordPress.

Recientemente he sido objeto de ataques de clientes que parecen estar enviando solicitudes POST a un archivo de WordPress llamado 'xmlrpc.php'.

La forma en que bloqueo las direcciones IP que envían estas solicitudes maliciosas es un proceso manual tedioso y quiero automatizarlo de alguna manera.

Una vez que noto que la carga de mi servidor es alta, realizo las siguientes acciones:

  1. Ejecuto apachetop en todos mis archivos de acceso a host virtual. Esto muestra todas las solicitudes realizadas para poder ver si se realiza alguna solicitud a xmlrpc.php

  2. Una vez que identifico qué IP están atacando mi servidor, ejecuto el siguiente comando para cada dirección IP infractora:sudo iptables -A INPUT -s 94.102.52.95 -j DROP

  3. Cuando todas las direcciones IP se han agregado a mi lista de bloqueo, la carga de mi servidor cae inmediatamente a niveles normales.

¿Hay alguna manera de automatizar este proceso? Estaba pensando en escribir un código dentro de xmlrpc.php que agregará cualquier dirección IP a mi lista de bloqueo para cualquier IP que envíe solicitudes. ¿Alguien tiene alguna idea sobre cómo hacer esto?

¡Gracias de antemano!

Respuesta1

No creo que bloquear todas las IP sea la solución para este problema. Las IP que realizan acciones POST probablemente sean PC infectadas o pirateadas en todo el mundo. Sólo inundarás tus IPtables al incluirlas en la lista negra de todas ellas. Si el sitio de WP ha sido pirateado, sugeriría desconectarlo y notificar al cliente para que limpie el desorden y actualice todos los componentes.

Podrías instalar mod_security para evitar cargas de código malicioso. También puede indicarle a mod_security que bloquee las solicitudes POST también en esa página específica, devolverá simplemente un 404, esto le ahorrará algo de carga (y dejará de piratear).

Si lo anterior aún no ayuda y desea bloquear todas las IP (me aseguraría de eliminarlas después de un tiempo, para evitar iptables enormes), puede crear un script que siga el archivo access.log y bloquee las IP (por ejemplo, un shell script con un cronjob/sleep, o mejor: un bonito demonio en perl/python).

información relacionada