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 Unauthorized
a 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 Unauthorized
error o si finalmente agota el tiempo, por lo que probablemente podríamos incluso hacer una espera indefinida / infinita.
Respuestas:
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.
fuente
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
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
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.
fuente
Si provienen de una dirección IP específica o bloque de direcciones, es posible que desee agregarle una ruta de agujero negro:
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.
fuente
iptables
en un núcleo conipset
capacidad puede coincidir muy eficientemente con grandes listas de direcciones IP, pero parece que ninguna de las principales distribuciones habilitaipset
en sus núcleos.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.
fuente
Lo que estás buscando es el módulo Apache mod_evaisve.
En distribuciones basadas en Debian, instálelo usando
CentOS / RHEL
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.
fuente
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.
fuente
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.
fuente
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 :)
fuente
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.
fuente
si eres un programador, podrías trabajar con el evento .net Begin_Request y poner tu "suspensión" allí
fuente