Cómo reducir la velocidad de un hacker

17

Algunos niños del guión en Delhi, India, han intentado hackear nuestro sitio desde anoche. Escribió un script de navegador que realiza solicitudes de nuestro servidor en bucles anidados masivos, probando todo bajo el sol.

No está llegando a ninguna parte, y no está pasando incluso nuestras defensas básicas (pero está llenando nuestros archivos de registro).

Estamos enviando de vuelta 403 Unauthorizeda sus solicitudes casi tan pronto como llegan, pero cuanto más rápido bloqueamos sus solicitudes, más rápido se ejecuta su script.

Nos gustaría introducir un "retraso" de algún tipo antes de enviar la respuesta 403. Cuanto más largo, mejor.

Pregunta: ¿Cómo podemos retrasar los intentos de pirateo sin afectar el resto del sitio?

  • Supongo que un Sleep (15000) en su hilo sería una mala noticia para otros visitantes del sitio.
  • Girar un nuevo hilo solo para él parece una exageración.
  • ¿Hay otra forma de enviar una respuesta retrasada?
  • ¿Cuánto tiempo podemos obligar a su navegador a esperar? Supongo que no me importa mucho si recibe el 403 Unauthorizederror o si finalmente agota el tiempo, por lo que probablemente podríamos incluso hacer una espera indefinida / infinita.
Flipster
fuente
36
¿Hay alguna razón por la que no pueda simplemente configurar su firewall para eliminar el tráfico proveniente de su dirección IP? Este problema se resolvería mejor a nivel de red que a nivel de aplicación. Dejar caer el tráfico significará que tendrá que sentarse allí hasta que se agote el tiempo de espera de la solicitud de conexión. Y no responder en absoluto es mucho más efectivo que devolver respuestas "no autorizadas", ya que no le proporciona efectivamente información para inspeccionar.
cdhowie
3
¿Por qué no simplemente bloquear su ip?
Hogan
2
Desenchufe su servidor.
Sayed Ibrahim Hashimi
Mire mi respuesta: esta es una cosa estándar, me sorprende que no haya recibido una respuesta que apunte a algún sistema de detección de intrusos antes.
razón
@ Dijo, desconectar su servidor es una de las peores cosas que puede hacer. Además de DoSing, consulte también security.stackexchange.com/q/181/33
AviD

Respuestas:

37

Debe haber un firewall separado en algún lugar frente a su servidor web. Desea bloquear las solicitudes allí para que nunca lleguen a su servidor, de modo que, en lo que respecta a su IP, su servidor ya no exista.

Joel Coel
fuente
1
Hola Joel, esta es la respuesta "aceptada", pero dado que la pregunta se transfirió desde StackOverflow, parece que no tengo la autoridad para aceptarla realmente. Di tu respuesta +1. Esto es justo lo que haré.
Flipster
2
@flip, haga clic en su nombre y luego en el enlace 'cuentas' a la mitad de la página a la derecha. Eso le permitirá volver a asociar esto a su cuenta de desbordamiento de pila y recuperar la propiedad de la pregunta.
Joel Coel
1
pero también desea hacerlo automáticamente, no tiene sentido tratar tales problemas caso por caso. (ver mi respuesta)
razón
5

Existen sistemas de detección de intrusos reales, grandes y pequeños, que harán esto automáticamente por usted dependiendo de los diversos filtros, honeypots y otros mecanismos.

Por ejemplo, consulte fail2ban que se puede configurar para realizar acciones basadas en el análisis de registros.

De esta manera puedes

  • filtra fácilmente una sola dirección IP desde la que se produce un ataque sin influir en otros usuarios de tu sitio
  • puedes escribir tu propia expresión regular para analizar registros
  • Puedes definir tus propias acciones (acelerador en lugar de prohibición, etc.)

Hay otras herramientas más grandes, vea la sección ver también en wikipedia.

Como su pregunta está marcada como asp.net, supongo que su plataforma de servidor es Windows. Aún así, si usar el firewall de Linux es una opción, puede probar lo anterior

  • poner un firewall de Linux entre WAN y su servidor
  • dar acceso a la máquina de firewall a sus registros de IIS
  • escribir expresiones regulares para analizarlo
  • conéctelo a las plantillas existentes para prohibir

Dicho firewall se puede ejecutar en hardware extremadamente modesto; piense incluso en algo como los enrutadores de Linksys (consulte aquí ) para obtener anchos de banda de enlace muy decentes.

Insensatez
fuente
4

Si provienen de una dirección IP específica o bloque de direcciones, es posible que desee agregarle una ruta de agujero negro:

ip ro add blackhole 10.69.96.0/24
ip ro flush cache

También puede lograr esto mediante el uso de una regla de iptables, pero tenga en cuenta que las reglas de iptables se atraviesan linealmente, por lo que si comienza a agregar reglas de iptables para cada creyente que aparece, puede comenzar a consumir mucha CPU. Las tablas de enrutamiento están optimizadas para manejar muchas, muchas entradas. Por ejemplo, uno de mis cuadros tiene 350K entradas en su tabla de enrutamiento sin ningún problema. Pero si tuviera reglas de 3K iptables, la caja seguramente se caería.

Si intenta hacer algo donde su aplicación duerme durante muchos segundos en estas conexiones, puede terminar atando suficientes recursos para que las solicitudes legítimas no puedan obtener ningún recurso.

Sean Reifschneider
fuente
1
+1. Me gustó su información sobre la eficacia relativa del enrutamiento frente a netfilter en esta situación. iptablesen un núcleo con ipsetcapacidad puede coincidir muy eficientemente con grandes listas de direcciones IP, pero parece que ninguna de las principales distribuciones habilita ipseten sus núcleos.
Steven lunes
Buen punto, ipset es algo que parece ser útil para este tipo de cosas, pero simplemente no está disponible. Hay otro sistema llamado nf-hipac que era un optimizador de iptables más general, pero la última publicación en la lista de correo y la última versión es de 2005.
Sean Reifschneider
3

Usted no quiere detenerlo porque él ralentizar de forma incorrecta se llevará a su sitio abajo como si fuera bajo un ataque DoS porque sus hilos serán 'ocupado' atender las solicitudes de esta persona. Lo que quieres hacer es bloquear su IP y terminar con eso. No hay razón para molestar a la persona que lo hace.

sybreon
fuente
2

Lo que estás buscando es el módulo Apache mod_evaisve.

En distribuciones basadas en Debian, instálelo usando

apt-get install libapache2-mod-evasive

CentOS / RHEL

yum install mod_evasive

mod_evasive realiza un seguimiento de las solicitudes que llegan a Apache y prohíbe la IP mediante iptables que pasan el valor umbral. Es una herramienta definitiva contra ataques DoS basados ​​en HTTP e incluso ataques DoS distribuidos cuando eres atacado por una gran red de bots con miles de IP diferentes.

Se ejecuta como un módulo Apache cargado durante el tiempo de ejecución y no como un demonio separado.

Sin embargo, un atacante inteligente con control de una gran red de bots aún puede derribar su servidor web cronometrando las solicitudes enviadas por cada zombie en la red de bots para que ninguna de las IP pase el valor umbral.

En ese caso, debe usar IDS basados ​​en anomalías y probablemente entrenar el sistema usted mismo. Pero es muy poco probable que esto suceda a menos que tenga algunos enemigos realmente grandes o alguien con una agenda corporativa.

vagarwal
fuente
0

Si está utilizando Linux, use iptables para limitar al tipo a que le guste 1 byte / s con grandes retrasos y hacer que se demore para siempre para obtener una solicitud. Si se distribuye, eso no ayudará mucho.

No estoy seguro de cómo lo haría en Windows, pero puede encontrar algunas opciones similares en su enrutador o firewall de hardware, si tiene uno.

EDITAR: De acuerdo con lo anterior, esto es más como una pregunta de falla del servidor.

Robert
fuente
2
Esta técnica a veces se usa en ataques DDoS, por parte del atacante. Hacer esto en el servidor es algo contraproducente. <_ <
p-static
No es correcto decir que se usa en ataques DDoS: este tipo de efecto es el objetivo de los ataques DDoS. Hacerlo en el servidor / firewall, pero solo para atacar computadoras es la única defensa real (AFAIK).
razón
0

Si la dirección IP del tipo es bastante constante, podría crear un HttpModule personalizado, conéctelo a través de un cambio en el archivo web.config y tenga un retraso cuando se reconozca como esta dirección IP. O puede enviarle algunos códigos 404 o hacer que lo redirijan a otro lugar.

Kris van der Mast
fuente
0

Sabes que están en la India. ¿Su sitio tiene clientes indios importantes que impedirían simplemente bloquear todo su rango de IP en el nivel de firewall en incrementos hasta que se detenga el flujo? Ciertamente no es una solución firme, pero si solo se trata de un típico 'script kiddie', debería ser suficiente para desalentarlos y enviarlos a otro objetivo.

Aún mejor, si es de una IP, podría responder con su propio ataque de denegación de servicio :)

Nathan Chere
fuente
eso no es realmente una solución, cortar gelatina con un hacha. Y B, DDOS no es realmente una buena recomendación (aunque supongo que estabas bromeando), ¡no hay razón para a) hacer algo más b) poner más carga en tu servidor!
Trufa
0

Además de la respuesta que recibió, querrá guardar su documentación (registros, seguimientos) y proporcionarla a su proveedor de servicios. Esto es lo más efectivo durante el incidente ya que su proveedor puede presenciar la incursión. Aunque tenga éxito en sus medidas, es importante restringir los intentos adicionales y ayuda a su proveedor a escalar una solicitud al proveedor de servicios del atacante; Podría decirse que la acción más eficiente es que el proveedor del atacante rechace el servicio a su cliente, el atacante identificado.

corin
fuente
0

si eres un programador, podrías trabajar con el evento .net Begin_Request y poner tu "suspensión" allí

Vamos a comer almuerzo
fuente