Servidor bajo ataque DDOS: ¿cómo averiguar las IP?


20

Mi servidor está bajo ataques DDOS y quiero bloquear la IP que lo está haciendo, ¿qué registros debo buscar para determinar la IP del atacante?


2
¿Cómo es que has determinado que el servidor está bajo ataque? Me parece que necesitaría mirar algún tipo de tabla de sesión TCP (netstat en Windows) para hacer esta determinación y al hacerlo vería las direcciones IP de los hosts que se conectan a su servidor, lo que haría su pregunta discutible.
joeqwerty

Respuestas:


43
tail -n 10000 yourweblog.log|cut -f 1 -d ' '|sort|uniq -c|sort -nr|more

Echa un vistazo a las principales direcciones IP. Si alguno se destaca de los demás, esos serían los de firewall.

netstat -n|grep :80|cut -c 45-|cut -f 1 -d ':'|sort|uniq -c|sort -nr|more

Esto examinará las conexiones activas actualmente para ver si hay alguna IP que se conecte al puerto 80. Es posible que deba modificar el corte -c 45- ya que la dirección IP puede no comenzar en la columna 45. Si alguien estaba haciendo una inundación UDP para su servidor web, esto también lo recogería.

En caso de que ninguno de estos muestre ninguna IP que esté excesivamente fuera de la norma, deberá asumir que tiene una botnet que lo ataca y necesitaría buscar patrones particulares en los registros para ver qué están haciendo. Un ataque común contra los sitios de WordPress es:

GET /index.php? HTTP/1.0

Si revisa los registros de acceso de su sitio web, puede hacer algo como:

cut -f 2 -d '"' yourweblog.log|cut -f 2 -d ' '|sort|uniq -c|sort -nr|more

que le mostraría las URL más utilizadas. Es posible que descubra que están ejecutando un script en particular en lugar de cargar todo el sitio.

cut -f 4 -d '"' yourweblog.log|sort|uniq -c|sort -nr|more

le permitiría ver los UserAgents comunes. Es posible que estén utilizando un único UserAgent en su ataque.

El truco es encontrar algo en común con el tráfico de ataque que no existe en su tráfico normal y luego filtrarlo a través de iptables, mod_rewrite o upstream con su webhost. Si está siendo golpeado con Slowloris, Apache 2.2.15 ahora tiene el módulo reqtimeout que le permite configurar algunos ajustes para proteger mejor contra Slowloris.


Muchas gracias, definitivamente lo investigaré este fin de semana.
Webnet

excelente. muy útil y simplemente genial ... sigue así y que Dios te bendiga. Allinonescript.com ( allinonescript.com ) Desarrolladores de todo el mundo El conocimiento adquiere conocimiento.
Vadivel S

Siempre que configure su acceso_log correctamente: tail -n 10000 / var / log / httpd / access_log | cut -f 1 -d '' | sort | uniq -c | sort -nr | more Esto debería funcionar. Trabajó para mí,
dustbuster

7

FYI: debe intentar trabajar con su ISP para ver si pueden bloquearlo aguas arriba.


4

Algunos buenos consejos aquí. También agregaría esto:

netstat -an | grep ESTABLISHED | awk '\''{print $5}'\'' | awk -F: '\''{print $1}'\'' | sort | uniq -c | awk '\''{ printf("%s\t%s\t",$2,$1); for (i = 0; i < $1; i++) {printf("*")}; print ""}'\''

Ponga esto bajo un alias (nn, por ejemplo). Esto le dará una perspectiva "gráfica" de los ips con conexiones más establecidas.

Espero que esto ayude.

Para aquellos que no pudieron hacer que esto funcione, he corregido la sintaxis para que se ejecute para mí en Ubuntu:

netstat -an|grep ESTABLISHED|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|awk '{ printf("%s\t%s\t",$2,$1); for (i = 0; i < $1; i++) {printf("*")}; print ""}'

3

Mis archivos de registro favoritos para verificar ataques de DOS son / var / log / secure (en Redhat / Centos / Fedora ....) y /var/log/auth.log (en ubuntu, debian ...). Verá intentos fallidos de inicio de sesión desde la IP de origen del atacante, la mayoría de las veces ataques basados ​​en el diccionario.


1

para proteger mi servidor, uso Fail2Ban, un script simple

analiza archivos de registro como / var / log / pwdfail o / var / log / apache / error_log y prohíbe la IP que genera demasiadas fallas de contraseña. Actualiza las reglas del firewall para rechazar la dirección IP.

http://www.fail2ban.org/wiki/index.php/Main_Page


0

¿Qué distribución?

Creo que el registro está en /var/log/apache2/access.log con Ubuntu ... Posiblemente Debian también.

Ejecute updatedb como sudo y luego ubique access.log desde la línea de comandos.

EDITAR: creo que esto solo sucederá si lo están golpeando, ya sea solicitando páginas o directamente a través del puerto 80. Si están llegando a otros puertos, no verá la información que necesita allí, deberá verificar y ver qué proceso es ejecutándose en ese puerto y eche un vistazo a los registros de conexión para ese proceso.


0

podría usar tcpdump para ver qué dirección es $ tcpdump -vv puerto X si sospecha de un puerto en particular


0

Si está bajo un DOS distribuido, ciertamente hay más de una IP para bloquear y las IP pueden ser falsificadas, es mejor que pregunte a su ISP como dijo mfinni . Además, esto puede ser más que un DOS contra su servidor, pero un señuelo para ocultar el ataque real de ser detectado, así que verifique que todos sus servicios expuestos sean ejecutados por software actualizado. También te puede interesar mod_dosevasive para apache.


2
Las IP son muy difíciles de falsificar para ataques web. Dado que una conexión web válida requiere un apretón de manos syn / ack, tendría que tener la suerte de tener la dirección IP falsificada con el número de secuencia correcto para que su carga útil del sitio de ataque forjado funcione. El tráfico UDP / ICMP no tiene conexión y permite paquetes falsificados, pero la mayoría de los hosts bloquean esos paquetes.
user6738237482

0

Primero tienes que determinar el tipo de DOS. Algunos ataques son muy sigilosos pero efectivos (slowloris), algunos son tan pesados ​​que podrían derribar un ISP (inundación ICMP desde un ancho de banda mayor que el de su fuente de ISP).

Después de determinar el tipo de DOS, llame a su ISP y pregúntele si puede filtrar el tráfico.

He visto inundaciones ICMP tan fuertes que tuvimos que pedirle al ISP aguas arriba que filtre la IP de destino a través de una comunidad BGP.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.