Estadísticas de las IPs atacantes en el hosts.deny de un servidor
Después de más de un año con un servidor configurado para almacenar en el /etc/hosts.deny el listado de todas las IPs que intentan acceder por fuerza bruta, ha llegado el momento de ver algunas estadísticas referentes a estos ataques.
El servidor se instaló hace más de un año y de las primeras cosas que instalé fue el DenyHosts, por lo que llevará un número muy próximo al uptime (si no igual)
# uptime 08:40:39 up 463 days, 6:07, 1 user, load average: 1.09, 1.09, 1.08
Primero de todo veremos de cuantas IPs estamos hablando:
# cat /etc/hosts.deny | grep -v "^#" | awk '{ print $NF }' | grep -v "^$" | sort | uniq | wc -l
1059
Podemos hacer la media y nos salen a 2 ataques por día:
# echo "1059/463" | bc -l 2.28725701943844492440
Evidentemente habrá días con muchas IPs añadidas y otros sin ninguna.
Cada IP agregada me genera un correo, por lo que si no he borrado ninguno se pueden sacar otros datos. Por ejemplo, los 10 días con más IPs añadidas:
24 02-09-09
22 04-09-09
19 17-08-09
19 01-12-09
18 21-08-09
17 30-08-09
17 09-09-09
16 28-09-09
15 16-08-09
15 06-09-09
A continuación me pregunto si los atacantes trabajan todos los días por igual:
282 Sunday
276 Saturday
274 Wednesday
265 Monday
260 Friday
258 Thursday
250 Tuesday
En gráfico de barras sería lo siguiente:
Los números son muy similares, por lo que no parece relevante. He comprobado la suma y no cuadra porque seguramente estoy cogiendo también datos de otros servidores. No lo afino a este servidor en concreto porque lo que se trata es de ver un poco los datos generales, no me importa que sea de un servidor o de dos. En este caso la muestra es de 1865 reports del DenyHosts.
Resulta curioso como el fin de semana es cuando relativamente más ataques hay. ¿Quizás es el factor humano de gente que se aburre? El resto de días asumo que más bien se trata prácticamente exclusivamente de bots.
Podemos ver también por meses y años:
2009-09 381 2009-08 300 2009-12 203 2009-10 191 2009-11 186 2009-06 139 2009-07 126 2009-05 79 2008-11 79 2008-10 50 2009-04 48 2008-12 46 2009-03 20 2008-09 7 2009-01 6 2009-02 4
Podemos ver la evolución a lo largo del tiempo:
Finalmente puede ser interesante verlo por países origen según el whois de la IP. Evidentemente puede no estar disponible el origen o ser falso:
# for i in $(cat /etc/hosts.deny | grep -v "^#" | awk '{ print $NF }' | sort | grep -v "^$" ); do whois $i | grep country | head -n1 | sed 's/#.*$//g' | awk '{ print $NF}'; done | tr [:upper:] [:lower:] | sort | uniq -c | sort -rn
141 cn
106 fr
39 de
37 in
31 ru
27 gb
25 pl
25 it
18 kr
17 ro
15 nl
15 jp
13 es
11 th
11 hu
11 hk
11 cz
10 tr
10 br
8 co
8 bg
7 ua
7 se
7 my
7 at
6 eu
5 mx
5 id
5 ar
4 gr
4 ec
4 dk
4 be
3 za
3 vn
3 no
3 lk
3 il
3 ie
3 cl
2 tw
2 si
2 sg
2 rs
2 pt
2 pa
2 lu
2 ir
2 fi
2 ch
2 bd
2 ae
1 ve
1 uy
1 us
1 tz
1 tn
1 sy
1 sk
1 sd
1 sa
1 ph
1 pe
1 nz
1 mz
1 mv
1 mu
1 mk
1 md
1 lv
1 lt
1 kz
1 kg
1 jo
1 is
1 hr
1 ge
1 ee
1 dz
1 bs
1 au
1 ad
No se porque no me extraña que el país del que más ataques se originen sea china.
Relacionados
Imprimir


30. December 2009 at 11:14 am :
Yo mantengo un servidor en RedIris al que hace un par de meses tuve que borrar el fichero hosts.deny porque sobrepasaba 1Mbyte. En estos dos meses ha recogido ya cerca de 10.000 nuevas direcciones de atacantes.
30. December 2009 at 11:23 am :
No esta nada mal. Yo hablo de un servidor pequeño en un hosting de francia, los servidores que tengo en producción en el trabajo no tienen el SSH abierto a internet (en el firewall) por lo que no puedo hacer lo mismo para ellos
Es una lastima que lo borraras, sino estaría bien hacer lo mismo para ese servidor. Para el tema de la fecha lo he echo con los correos en un maildir, si los conservas estaría bien sacar algunos datos de allí, ya que hay mas “chicha”
30. December 2009 at 12:02 pm :
Me he imaginado que no era una IP “de riesgo” cuando he visto los datos. Los bloques de direcciones conflictivas (RedIris tiene un ancho de banda fabuloso y hay muchos organismos que usan direcciones IP públicas en todas sus máquinas de usuario sin ningún tipo de control) suelen estar muy, muy solicitadas. Te lo guardo entonces para dentro de 10 meses
30. December 2009 at 12:08 pm :
Te tomo la palabra para el ficherito
En el trabajo anterior tenia un cluster (en RedIRIS también) que necesitaba tener el SSH abierto para que los usuarios se conectaran remotamente. En ese caso pusimos una permanencia de unos días para que no se llenara demasiado. Es una lastima que no tenga datos de entonces.
30. December 2009 at 12:10 pm :
Y no, los correos no los conservo (¡son miles!) pero podría hacerlo a partir de ahora con alguna regla para que me los mueva automaticamente de la carpeta de entrada a otra donde no molesten. Me pongo a ello.
30. December 2009 at 12:14 pm :
Yo lo tengo así con una regla de procmail:
(...) DENYHOSTS=${MAILDIR}/.DenyHosts :0 * ^X-Envelope-From: denyhosts@systemadmin\.es | /usr/local/bin/safecat "${MAILDIR}/tmp" "${DENYHOSTS}/new" (...)Si lo tiene que hacer tu cliente de correo lo tendrás que quitar porque te va a ralentizar un montón la descarga de correos
30. December 2009 at 7:13 pm :
Hola Jordi,
Muy interesante el artículo. Trabajo en un ISP y se cumple la misma conclusión: “Cuando el diablo no tiene nada que hacer, con el rabo mata moscas”, los fines de semana y la época de verano es cuando mas ataques se registran.
Por otra parte, te quería preguntar.. ¿Que software utilizas para hacer las gráficas? Gracias!
Saludos,
31. December 2009 at 3:19 pm :
Hola Santi,
Los gráficos los he hecho con el Google Docs a mano. Pero si quieres puedes automatizarlo con la Google Chart API:
http://code.google.com/apis/chart/
saludos,
3. January 2010 at 12:18 am :
Hola.
Pregunta tonta, por qué no cuentas las entradas en el denyhosts directamente:
En general, abusas de:
En lugar de:
O también:
En lugar de:
directamente.
Espero que no te sienten mal las críticas (si es que las ves fundadas), en general es un blog interesante, que parece sigue bastante gente, es importante ya que lamentablemente mucha gente infrautiliza la capacidad de la shell y comandos varios asociados, al tratar ficheros muy grandes, esos detalles son muy importantes, por lo menos según lo veo yo.
Gracias por el artículo.
Saludos.
3. January 2010 at 8:10 pm :
Para nada me tiene que sentar mal una cosa así. Es totalmente cierto que tengo ciertas malas costumbres, siendo la que mas canta el cat con el grep.
En este caso concreto no me paré a mirar mucho como quedó el resultado porque es algo que hice a medida veia los resultados. En el caso de scripts me miro un poco más a que queden las cosas bien hechas.
Abres un tema interesante, porque es muy cierto que si haces un time de un cat fichero | grep patrón vs un grep fichero patrón hay diferencia, por lo que se debe tener en cuenta.