java - significa - ssl pinning android
Cómo detener el ataque de hack/DOS en la API web (6)
Aquí hay un par de ideas. Además, hay una serie de estrategias, pero esto debería ayudarlo a comenzar. También tenga en cuenta que Amazon recibe ddos''d con frecuencia y que sus sistemas tienden a tener algunas heurísticas que los endurecen (y, por lo tanto, a usted) a causa de estos ataques, especialmente si usa el equilibrio de carga elástico, que de todos modos debería usar.
- Use un CDN: a menudo tienen formas de detectar y defenderse contra ddos. Akamai, maestría o amazonas poseen frente de nube.
- Usa iptables para poner en la lista negra ips ofensivos. Cuantas más herramientas tenga a su alrededor, más rápido podrá bloquear / desbloquear
Utilice mecanismos de aceleración para evitar un gran número de solicitudes
Denegar automáticamente las solicitudes que son muy grandes (digamos más de 1 MB a menos que tenga un servicio de carga de fotos o similar) antes de que lleguen a su aplicación
Evite las fallas en cascada al poner un límite en la cantidad total de conexiones a otros componentes en su sistema; por ejemplo, no permita que su servidor de base de datos se sobrecargue abriendo mil conexiones a este.
Mi sitio web ha estado experimentando un ataque de denegación de servicio / pirateo durante la última semana. El ataque está golpeando nuestra API web con claves API inválidas generadas aleatoriamente en un bucle.
No estoy seguro de si están intentando adivinar una clave (matemáticamente imposible como claves de 64 bits) o si intentan atacar el servidor en DOS. El ataque se distribuye, por lo que no puedo prohibir toda la dirección IP, como ocurre con cientos de clientes.
Supongo que es una aplicación de Android de las IP, por lo que alguien tiene algo de malware en una aplicación de Android y usa todas las instalaciones para atacar mi servidor.
El servidor es Tomcat / Java, actualmente la API web solo responde 400 a claves inválidas y almacena en caché direcciones IP que han realizado varios intentos de claves no válidas, pero aún necesita procesar algo para cada solicitud incorrecta.
¿Alguna sugerencia de cómo detener el ataque? ¿Hay alguna forma de identificar la aplicación Android que realiza la solicitud desde el encabezado HTTP?
La mejor manera es evitar el acceso a sus servicios por completo para aquellas direcciones IP que han fallado digamos 3 veces. Esto tomará la mayor parte de la carga de su servidor ya que el atacante se bloquea antes de que Tomcat tenga que iniciar un hilo para este usuario.
Una de las mejores herramientas para lograr esto se llama fail2ban ( http://www.fail2ban.org ). Se proporciona como un paquete en todas las principales distribuciones de Linux.
Lo que tienes que hacer es básicamente registrar los intentos fallidos en un archivo y crear un filtro personalizado para fail2ban. Darryn van Tonder tiene un buen ejemplo sobre cómo escribir su propio filtro en su blog: https://darrynvt.wordpress.com/tag/custom-fail2ban-filters/
Para un ataque dirigido y altamente distribuido de DOS, la única solución práctica (aparte de proporcionar la capacidad de absorberla) es perfilar el ataque, identificar los "rumores" y enrutar ese tráfico a un manejador de bajo recurso.
Su pregunta tiene algunos comentarios: que la solicitud no es válida, pero es probable que haya demasiado costo para determinarlo. Que las solicitudes se originan en un grupo específico de redes y que presumiblemente ocurren en ráfagas.
En sus comentarios nos ha contado al menos otro tell: el agente de usuario es nulo.
Sin agregar ningún componente adicional, puede comenzar por el tarpitting de la conexión: si aparece una solicitud que coincida con el perfil, continúe y valide la clave, pero luego deje que el código duerma durante uno o dos segundos. Esto reducirá la tasa de solicitudes de estos clientes a un pequeño costo.
Otra solución sería usar fallas de registro que coincidan con tell y usar fail2ban para reconfigurar su firewall en tiempo real para descartar todos los paquetes de la dirección de origen por un tiempo.
No, es poco probable que pueda identificar la aplicación sin obtener un dispositivo afectado.
Si D-DOS es un ataque grave, las comprobaciones de nivel de aplicación no funcionan en absoluto. Los clientes de D-DOS consumirán todo el ancho de banda y no se activarán las comprobaciones de nivel de su aplicación. Prácticamente su servicio web no funciona en absoluto.
Si tiene que mantener su aplicación a salvo de severos ataques D-DOS, no tiene otra opción que confiar en herramientas de terceros pagando dinero. Una de las herramientas del proveedor de tuberías limpias (que envía solo buen tráfico) de la que puedo contar desde mi experiencia pasada: Neustar
Si el ataque de D-DOS es leve en su sitio web, puede implementar verificaciones de nivel de aplicación. Por ejemplo, la configuración siguiente restringirá la cantidad máxima de conexiones de una sola IP como se cita en Restringir llamadas de una sola IP
<Directory /home/*/public_html> -- You can change this location
MaxConnPerIP 1
OnlyIPLimit audio/mpeg video
</Directory>
Para obtener más información sobre el ataque D-DOS, visite el enlace Wiki . Proporciona una lista de herramientas preventivas y receptivas que incluye: cortafuegos, conmutadores, enrutadores, prevención basada en IP, defensas basadas en D-DOS
y finalmente
Limpiar tuberías (Todo el tráfico pasa a través de un "centro de limpieza" o un "centro de depuración" a través de varios métodos, como proxies, túneles o incluso circuitos directos, que separa el tráfico "malo" (DDoS y otros ataques comunes a Internet) y solo envía buen tráfico más allá del servidor)
Puede encontrar 12 distribuidores de tubos limpios.
Si es lo suficientemente grande, no puedes detenerlo solo. Puede hacer toda la optimización que desee a nivel de aplicación, pero seguirá bajando. Además de la seguridad a nivel de la aplicación para la prevención (como en la respuesta de FSQ), debe usar soluciones comprobadas que dejen el trabajo pesado a los profesionales (si es serio acerca de su negocio). Mi consejo es:
- Regístrese en CloudFlare o Incapsula . Esto es día a día para ellos.
- Considere usar la puerta de enlace API de AWS como la segunda etapa para sus solicitudes de API. Disfrutará de filtrado, aceleración, seguridad, escalado automático y HA para su API a escala de Amazon . Luego puede reenviar las solicitudes válidas a sus máquinas (dentro o fuera de Amazon)
Internet -> CloudFlare / Incapsula -> AWS API Gateway -> Su servidor API
0,02
PD: Creo que esta pregunta pertenece a Sec
Prevención de ataques de fuerza bruta:
Existe una amplia gama de herramientas y estrategias disponibles para ayudarlo a hacer esto, y que para usar depende completamente de la implementación y los requisitos de su servidor.
Sin usar un firewall, IDS u otras herramientas de control de red, realmente no puede detener un DDOS de, bueno, negando el servicio a su aplicación. Sin embargo, puede modificar su aplicación para hacer que un ataque de fuerza bruta sea mucho más difícil.
La forma estándar de hacerlo es implementando un bloqueo o un retraso progresivo . Un bloqueo impide que una IP haga una solicitud de inicio de sesión por X minutos si no pueden iniciar sesión N veces. Un retraso progresivo agrega un retraso cada vez mayor para procesar cada solicitud de inicio de sesión incorrecta.
Si está utilizando el sistema de autenticación de Tomcat (es decir, tiene un elemento <login-constraint>
en la configuración de su webapp), debe usar Tomcat LockoutRealm , que le permite colocar fácilmente direcciones IP en un bloqueo una vez que hacen una serie de solicitudes incorrectas .
Si no está utilizando el sistema de autenticación de Tomcat, entonces debería publicar más información sobre lo que está utilizando para obtener información más específica.
Finalmente, puede simplemente aumentar la longitud de sus claves API. 64 bits parece un espacio de teclado insuperablemente enorme para buscar, pero está infraponderado según los estándares modernos. Varios factores podrían contribuir a que sea mucho menos seguro de lo que esperaba:
- Una botnet (u otra red grande) podría hacer decenas de miles de intentos por segundo, si no tiene protecciones en su lugar.
- Dependiendo de cómo esté generando sus claves y reuniendo entropía, su espacio de claves de facto podría ser mucho más pequeño.
- A medida que aumente el número de claves válidas, la cantidad de claves que se debe intentar para encontrar una válida (al menos en teoría) disminuye considerablemente.
Aumentar la longitud de la clave API a 128 (o 256, o 512) no costará mucho, y aumentará tremendamente el espacio de búsqueda (y por lo tanto, la dificultad) de cualquier ataque de fuerza bruta.
Mitigar los ataques DDOS:
Para mitigar los ataques DDOS, sin embargo, debe hacer un poco más de trabajo preliminar. Es difícil defenderse de los ataques DDOS, y es especialmente difícil si no controlas la red en la que se encuentra tu servidor.
Dicho esto, hay algunas cosas del lado del servidor que puede hacer:
- Instalar y configurar un firewall de aplicación web, como mod_security , para rechazar las conexiones entrantes que violan las reglas que usted defina.
- Configurar un sistema IDS, como Snort , para detectar cuándo se está produciendo un ataque DDOS y dar los primeros pasos para mitigarlo
- Consulte la publicación de @Martin Muller para otra excelente opción, fail2ban
- Creando su propia
Valve
Tomcat, como se describe here , para rechazar solicitudes entrantes por susUser-Agents
(o cualquier otro criterio) como última línea de defensa.
Al final, sin embargo, hay mucho que puedes hacer para detener un ataque DDOS de forma gratuita. Un servidor tiene solo mucha memoria, tantos ciclos de CPU y tanto ancho de banda de red; con suficientes conexiones entrantes, incluso el firewall más eficiente no evitará que baje. Podrá invertir mejor los ataques DDOS si invierte en una conexión a Internet con mayor ancho de banda y más servidores, o si implementa su aplicación en Amazon Web Services , o si compró uno de los muchos productos de mitigación de DDOS para consumidores y empresas ( @ SDude tiene algunas excelentes recomendaciones en su publicación ). Ninguna de esas opciones es barata, rápida o fácil, pero son lo que está disponible.
Línea de fondo:
Si confías en el código de tu aplicación para mitigar un DDOS, ya has perdido