Skip to main contentSkip to footer
Guías de plugins

Compartir bloqueos de IP entre servidores Linux con un grupo

Patrick Schlesinger
ReportedIP Linux Agent plugin guide: one ban list for every server

Para compartir bloqueos de IP entre servidores Linux, pon las claves API de esos servidores en un grupo de reportedip.com: el ReportedIP Linux Agent de cada host descarta la dirección que notifica cualquier miembro, en todos los puertos, durante la ventana de bloqueo del grupo. La lista llega con el feed de la comunidad, vive en su propio set del kernel y no necesita ninguna clave de configuración en el host.

Los grupos están incluidos a partir del plan Professional. El set del grupo existe desde el agente 0.3.25 y la lista blanca del grupo desde la 0.3.27. Una clave sin grupo funciona exactamente igual que antes.

Qué cambia un grupo en un servidor Linux

El agente ya llena cinco sets del kernel con la blacklist de la comunidad, uno por servicio expuesto: ssh, mail, web, ftp y edge. Esos sets contienen lo que ha notificado toda la comunidad, filtrado por tu nivel de confianza, y cada uno solo actúa en los puertos de su servicio. Un grupo añade una sexta lista, group, con lo que notificaron los demás miembros de tu propio grupo de cuenta, y esa actúa en todos los puertos.

En la práctica, la diferencia se nota. Un escáner que machaca el SSH de tu servidor web queda bloqueado allí por el vigilante local; con un grupo, la misma dirección se descarta en el servidor de correo y en el host de la base de datos en su siguiente sincronización, antes de que llegue a ellos. Los miembros pueden ser servidores Linux con el agente y sitios WordPress con el plugin Hive, mezclados en un mismo grupo.

ListaSets del kernelPuertos en los que actúa la reglaDe dónde vienen las direcciones
sshrip-ssh, rip-ssh-v6de lists.ssh.portsla comunidad
mailrip-mail, rip-mail-v625, 465, 587, 110, 995, 143, 993la comunidad
webrip-web, rip-web-v680, 443la comunidad
ftprip-ftp, rip-ftp-v621la comunidad
edgerip-edge, rip-edge-v6todos los puertosla comunidad
grouprip-group, rip-group-v6todos los puertoslos miembros de tu grupo

Cómo descarga y aplica el agente la lista del grupo

En un servidor con licencia, la lista del grupo se descarga como JSON en la misma pasada que el feed de la comunidad. Professional incluye una licencia (un servidor) y Business tres, y se pueden añadir más por host. La frecuencia de la pasada la decide el servidor, no el host: cada 15 minutos a partir de Professional. Cada descarga es condicional, así que una lista sin cambios responde 304 y cuesta una petición sin transferencia.

  • El intercambio es atómico. El set nuevo se construye junto al antiguo y se intercambia, así que nunca hay un momento con el set vacío.
  • Un grupo vacío es válido. A diferencia de las listas de la comunidad, la lista del grupo no tiene tamaño mínimo: un grupo sin bloqueos en curso es un estado real, no una descarga fallida.
  • Primero se protege el host. El loopback, los rangos privados, las direcciones propias del host, el cliente SSH desde el que estás conectado y whitelist.conf quedan fuera de cada set antes de aplicar nada. El servicio tampoco pone nunca en la lista la dirección desde la que notifica un miembro.
  • Nada que configurar. La lista group está siempre activa y no necesita ninguna entrada en config.yaml. Con una clave sin grupo el servicio no devuelve lista y el set simplemente se queda vacío.

El modelo de bloqueo completo, con las reglas de iptables y nftables que escribe el agente, está en Bloquear con el Linux Agent. Para la parte del kernel, el manual de ipset describe los tipos de set que usa el agente en un host con iptables.

Cómo llega la lista blanca del grupo a cada servidor

Un grupo puede llevar una lista blanca de hasta 200 direcciones y prefijos, cada uno con una nota, gestionada en tu cuenta. El agente la lee en la misma petición que la lista del grupo y la escribe en /var/lib/reportedip-agent/group-whitelist, con el formato de whitelist.conf y cada nota como comentario. Después la aplica en la misma pasada en los tres sitios donde actúa una lista blanca en el host:

  1. el set de lista blanca del kernel, que va antes de cada regla de bloqueo,
  2. el filtro por el que pasa cada lista descargada,
  3. la barrera de notificación del vigilante de registros, para que el host nunca notifique una dirección así.

La lista blanca del grupo es una capa más junto al whitelist.conf propio del host y su lista blanca automática; nunca los sustituye. No edites el archivo a mano, la siguiente sincronización lo vuelve a escribir. Una clave que sale de su grupo pierde el archivo con la siguiente sincronización.

Cómo comprobar el grupo en un host

reportedip-agent status muestra el grupo en tres sitios: la línea group bajo las listas con el número de entradas y la antigüedad de la última descarga correcta, las líneas de la lista blanca del grupo marcadas con group: y sus notas, y una línea bajo la cuenta con el nombre del grupo, su tamaño y su ventana de bloqueo. Las imágenes de terminal de abajo son salidas de ejemplo con direcciones de documentación de la RFC 5737 y la RFC 3849 y nombres de host inventados; el formato es el que imprime el agente.

Salida de terminal de reportedip-agent status con el set del grupo, dos entradas de la lista blanca del grupo y la línea del grupo bajo la cuenta
Salida de ejemplo de reportedip-agent status en un host cuya clave está en un grupo.

Una clave sin grupo imprime group=none y una indicación de dónde se gestionan los grupos. No es un fallo y no convierte el código de salida de status en un aviso: una monitorización que lee ese código se queda en verde en cada host sin grupo.

Salida de terminal de reportedip-agent status para una clave sin grupo, con group=none bajo la cuenta
Una clave sin grupo: el set se queda vacío y nada cuenta como degradado.

reportedip-agent whitelist list imprime el archivo propio del host, la lista blanca automática y la del grupo, esta última en líneas marcadas con group:. La misma línea de cuenta indica además la reputación de la dirección desde la que notifica el host; una dirección listada con una confianza de 75 o más, el nivel más bajo que sirve un feed, aparece como condición de salud reputation.

Configurar un grupo para tus servidores en cuatro pasos

  1. Actualiza el agente a la 0.3.32 o posterior en cada host. Cada host necesita una licencia de servidor para el feed.
  2. Crea el grupo en Grupos dentro de tu cuenta de reportedip.com y elige la ventana de bloqueo, 24 horas por defecto.
  3. Añade las claves API de los servidores, y si procede de los sitios WordPress con Hive, que deben compartir sus bloqueos. Una clave puede estar en un grupo.
  4. Ejecuta sudo reportedip-agent sync o espera a la siguiente pasada y comprueba la línea del grupo en status. Lanzar sync a mano siempre está permitido; una lista descargada hace menos de 15 minutos simplemente no se vuelve a descargar.

El grupo también puede enviar con cada bloqueo nuevo un webhook firmado, con un HMAC-SHA256 sobre el contenido, a una herramienta de chat o de tickets; los detalles están en la página de grupos. En el lado de WordPress, el plugin Hive aplica la misma lista como tipo de bloqueo propio, como se explica en Compartir bloqueos de IP entre sitios WordPress.

Preguntas sobre los bloqueos de grupo en servidores Linux

¿La lista del grupo sustituye al feed de la comunidad?

No. Las cinco listas de la comunidad mantienen sus puertos y su filtro de confianza. La lista del grupo es una sexta lista junto a ellas, alimentada solo por los miembros de tu grupo, y actúa en todos los puertos porque compartir un bloqueo es la razón de ser de un grupo.

¿Puede un grupo dejar a mis propios servidores sin acceso entre sí?

El servicio deja fuera de la lista la dirección desde la que notifica cada miembro, y el agente mantiene fuera de cada set las direcciones propias del host, los rangos privados y tu cliente SSH. Las direcciones que deban quedar exentas en todas partes van en la lista blanca del grupo.

¿Cómo levanto un bloqueo de grupo?

Para todo el grupo, borra la entrada o añade una excepción en tu cuenta; cada miembro la retira en su siguiente sincronización. En un solo host, reportedip-agent whitelist add <address> mantiene la dirección fuera de los sets de ese host para siempre.

Sigue leyendo

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Rellena este campo
Rellena este campo
Por favor, introduce una dirección de correo electrónico válida.
Tienes que aprobar los términos para continuar