Alguien está ejecutando un script y tomando datos de nuestro servidor. ¿Qué debemos hacer? Ya hemos encontrado la dirección IP y la hemos incluido en la lista negra.

Al final del día, estás entrando en una guerra fría: si alguien quiere obtener acceso a estos datos y terminará en un sitio web público, encontrará la manera de obtenerlos. Dicho esto, hay muchas maneras de restringir el acceso:

  1. Apache mod_security (antiguo blog ModSecurity y nuevo blog SpiderLabs):
    1. Agente de usuario: ¿es un agente de usuario extraño? Si es así, puede filtrar las solicitudes de este agente de usuario
    2. Límites de solicitud: puede limitar la cantidad de solicitudes que puede hacer una determinada IP en un determinado período de tiempo
    3. Bloqueo de geolocalización: esto puede ser bastante peligroso y requiere un trabajo adicional más allá de mod_security (como una búsqueda en la base de datos de geo IP), pero si desea bloquear un país entero, esto funcionará de manera bastante efectiva
  2. Protección CSRF
    1. Estos tokens generalmente se generan para formularios para garantizar que la solicitud provenga de una página que realmente se generó, puede hacer lo mismo para cualquier información que sea, pero eso no impedirá que un atacante vuelva a cargar la página para generar un nuevo token usando el mismo script

¿Entonces entiendo que se trata de un script de raspado que se ejecuta en sus servidores? ¿Entonces solo está raspando páginas que son visibles públicamente? ¿A quien le importa? Proporcione una API para los datos que no le interesan y Autentique los datos que le interesan. NUNCA detendrá los rascadores. Apoyé rascadores para sitios de juego durante años y tan pronto como me bloquearon, tuve una miríada de técnicas para volver a raspar en poco tiempo. No pierdas tu tiempo tratando de detenerlos. ¡Todo lo que harás es bloquear usuarios legítimos! En cambio, comprenda por qué quieren sus datos y proporcione una forma de dárselos que también lo beneficie a usted.

Oh, lo he hecho algunas veces. Te puedo decir que la lista negra de IP probablemente no tendrá efecto (¡mira todos los maravillosos servidores y proxys gratuitos!) Y la cadena de agente de usuario se falsifica aún más fácilmente (estoy creando la solicitud, por el amor de Dios, puedo poner lo que sea Quiero entrar ahí).

Entonces, técnicas que pueden ralentizar a ese tipo o molestarlo lo suficiente como para darse por vencido:

  • Limite el número de solicitudes por IP, su mejor opción sería mostrar un captcha en lugar de cortar el tráfico de esa dirección de inmediato. Esto es bastante doloroso, pero si el tipo está lo suficientemente determinado y tiene una lista lo suficientemente larga de poderes, puede rotarlos. Pero a menos que esa información sea muy valiosa para él, dudo que valga la pena. Solo tenga cuidado de no molestar a los visitantes habituales.
  • Encuentra lo que quiere, luego no lo dejes tenerlo. Tendría que ver patrones en el comportamiento y el objetivo final de su script, luego restringir el acceso si no está destinado a estar disponible públicamente, o combinarlo con el primer punto para reconocer el script y mostrar captcha antes.

Pero primero, pregúntate: ¿por qué te está molestando? Cada vez que eliminé un sitio web, fue para recopilar información que ya estaba disponible para el público (por lo tanto, no confidencial) y quería hacer algo interesante, generalmente algún tipo de estadísticas que sería demasiado doloroso recopilar. manualmente o, alternativamente, para realizar un seguimiento de los cambios en las páginas cuando tenía muchas ganas de leerlos tan pronto como salgan. Si está generando demasiado tráfico, entonces sería bastante fácil limitar la velocidad; de lo contrario, piense por qué está tan decidido a cortarlo.

El script siempre puede comportarse como un humano navegando por el sitio, excepto que puede hacerlo en órdenes de magnitud más rápido y no puede resolver captchas (generalmente).

Paso 1: desconecte su servidor de Internet público, o solo permítase el acceso. Si alguien dice que esto no se puede hacer por X, Y o Z, simplemente abandone . Sus clientes y / o jefes deben comprender que la seguridad de su hardware y sus datos es el aspecto más importante del funcionamiento de un sitio.

Paso 2: descubra cómo se accede a los datos. En general, esto quedará claro por los medios de ataque, por ejemplo, la URL que está siendo golpeada.

Paso 3: corrija el acceso / incumplimiento de datos no autorizados

Paso 4: abre / permite el acceso.

Paso 5: Realice una auditoría completa de su sistema. Contrata a alguien que sepa cómo entrar en los servidores para probarlo.

Ha puesto un servidor en Internet público con el fin de servir datos en respuesta a solicitudes de cualquier máquina remota.

Ahora, una máquina remota se conecta a su servidor, solicitando datos y, en respuesta, su máquina envía datos según lo solicitado.

Parece que todo funciona al 100% según lo diseñado. No hay problema, esto es lo que se supone que deben hacer los servidores ubicados en Internet público.

Hay literalmente miles de millones de dispositivos conectados a Internet público, y es completamente irracional esperar que pueda controlar el comportamiento de cada uno de ellos.

Debe encontrar algún tipo de recursos e información del sistema IDS / IDP. Para hacerlo, necesita encontrar algún tipo de patrón, como si se transfieren 5 GB de datos de entrada / salida de una dirección IP / CIDR por pocas sucesiones y su carga normal es de 25 MB, puede detener esto. La mayoría de la empresa de hosting tiene este tipo de solución para los ataques DDOS.

En última instancia, si los datos son públicos, tendrá que aceptar que eventualmente se eliminarán. Incluso si lo sirve solo a usuarios autenticados, pueden obtener una cuenta falsa o incluso pagar una legítima solo con el propósito del raspado, siempre que estén tan motivados.

Dicho esto, hay algunas ideas geniales aquí y si los datos no son estáticos (es decir, una fuente de noticias de algún tipo), puede ser muy poco práctico usar algunos de ellos.

Otro método que he usado es estrangular las solicitudes para que solo se puedan cumplir en un momento en que un ser humano normalmente podría mirarlas. Si pone incluso un retraso de 1 segundo entre las respuestas hasta un límite máximo de, por ejemplo, 200 por hora con un reinicio de 1 hora, solo pueden obtener 4800 registros en un día y pueden abandonar la búsqueda a menos que tengan un deseo realmente intencionado de obtener sus datos específicamente

Es posible que desee reconsiderar el equilibrio de importancia entre hacer que estos datos estén disponibles públicamente y hacer que las personas lo soliciten a través de un proceso más rígido. Al final, público es público, y de una forma u otra será legible por máquina.

  1. Podrías (suponiendo que la IP del chico sea la verdadera, lo cual dudo mucho), enviar un correo electrónico a su ISP, solicitando que se suspenda su cuenta.
  2. Podrías cambiar gradualmente el código, haciendo que sea más difícil para este tipo raspar tu sitio web.
  3. Puede implementar reglas específicas de firewall / IDS-IPS que eliminen todo el tráfico que responda a los patrones específicos resaltados en este script.
  4. Podrías poner en la lista negra a ciertos países (donde se supone que se encuentra el tipo) por completo, negándoles totalmente el acceso.
  5. Puede crear un nuevo servidor más seguro muy rápido y abrirlo, desmontando el antiguo hasta que comprenda lo que está sucediendo.
  6. Podrías crear un honeypot y estudiar qué está haciendo este cabrón.
  7. Podrías contratar a alguien como yo.

También es una pregunta un poco vaga. ¿Qué tipo de servicio se ve afectado y qué tipo de datos? Como en, ¿son datos públicos? Si es así, es bastante difícil evitar por completo el acceso a estos datos públicos, bueno, públicamente .

Si no es un servicio público, tiene un problema mayor. Entonces su configuración de seguridad necesita ser ajustada. No debería haber ninguna razón para que sus datos no públicos sean accesibles. No debe permitir ninguna conexión directa al servidor, punto, ni siquiera con un esquema de autenticación. El servidor / servicio debe estar detrás de un servidor de seguridad, y el servidor de seguridad debe ejecutar un servidor de servicio de enrutamiento cifrado (comúnmente conocido como VPN). El servicio solo debe ser accesible a través de claves, certificados y contraseñas específicas de cada usuario.

Sería útil saber un poco más sobre la instalación y configuración.

En primer lugar, si el script no genera más daño que robar datos, comete una falta para que ya no funcione con tus datos reales, pero no tanto como para que el pirata informático todavía piense que está funcionando. Ahora, úsalo para buscar cómo se ha realizado el exploit.

  • ¿Cómo llegó el guión allí?
  • ¿Está él / ella accediendo de manera concurrente?
  • ¿Está él / ella dentro de la empresa (lo creas o no, la mayoría de ellos están …)?
  • ¿Ha sido copiado manualmente o automáticamente por un administrador de sistemas distraído (archivos adjuntos de correo electrónico, etc.)?
  • ¿Cómo está obteniendo esa dirección IP? ¿Qué tan seguro está de que es su dirección IP real?

Básicamente, trata de sacar el máximo provecho de esa mala situación.

Si los datos son de dominio público, esto continuará sucediendo, de una forma u otra. Puedes presentar ..

  • Capture después de un cierto número de solicitudes desde la misma IP
  • Aceleración basada en IP
  • Descubra el agente de usuario y vea si puede usarlo para bloquear las solicitudes

Ponga los datos fuera de la “carpeta web pública” y tenga un script DL que entregará el contenido solo a los usuarios autenticados adecuados. Encontré este ejemplo que está basado en PHP: script de descarga de archivos PHP

También hay cosas como “X-sendfile” que se pueden usar, encontré un ejemplo rápido aquí: Jasny · desarrollo web

Al final, lo que supongo que es lo que quiere es entregar el contenido solo a los usuarios autorizados adecuados, luego debe sacar los archivos del “dominio público” y encontrar una manera de entregar el contenido solo a estas personas, el ejemplo anterior sería Haz eso.

Pruebe cloudflare.com, tiene varias opciones para ayudar con problemas como este. Scrapeshield especialmente es interesante.