knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) knitr::opts_chunk$set(out.width='750px', dpi=200)
options(width = 80)
Este trabajo se basa en el análisis de logs ocurridos en un servidor que tiene habilitado el servicio SSH. Los logs se corresponde a un periodo de tres semanas. El propósito es contestar éstas preguntas:
En este trabajo hemos utilizado unos repositorios. Hemos facilitado las localizaciones de las IP's gracias al repositorio "https://lite.ip2location.com/database/ip-country-region-city-latitude-longitude". Cuando queríamos realizar las correlaciones entre IP y geolocalización, nos encontramos con el problema de que las bases de datos de geolocalización eran muy grandes, y tardabamos mucho tiempo en sacar los resultados. Al final tomamos la decisión de usar el package "IPCountry" obtenido del repositorio "https://github.com/gitronald/IPtoCountry". Una vez obtenidas las direcciones, con sus coordenadas, pudimos empezar a hacer el estudio de los datos según el país. Aprovechando los datos decidimos crear un shiny app que mostrara con más detalle el orígen de los ataques.
Ejecutar shiny app. Importante, para ejecutarlo hay que abrir el "GroupAssignmentTemplate.Rproj". Y desde la mísma consola de Rstudio.
install.packages("shiny") library("shiny") runApp("map")
Hemos considerado los análisis de aquellos logs que contenían información de IP's. Además hemos diferenciado dos tipos de ataques específicos:
Para empezar nos interesaba ver la distribución de los ataques en los días para saber si exixtían picos o si era todo más homogeneo.
source('R/graphics/time.R') source('R/graphics/Graphic.R')
histogramAllIps()
Hemos detectado dos picos relevantes el final de la primera semana y los comienzos de la segunda semana.Además en la última semana los ataques disminuyeron muchísimo en comparación al resto. Si analizamos separando por el tipo de ataque:
histogramUsers()
histogramPortScan()
Además hemos querido ver la distribución de los ataque segun la línea temporal de un día:
getTopDateGraphic()
Aprobechando que LoginAttempt nos ofrece información sobre el tipo de usuario que más se usa en este tipo de ataques, hemos realizado unas estadísticas basándo nos en esta información. Primero, hemos extraído el top de usuarios más usados:
tablaUserTop()
Una vez obtenida la tabla, quisimos ver la distribución del tiempo en los ataques:
densidadUserTop()
Sucede lo mísmo que los histogramas, en los finales de la primera semana y principios de la segunda semana, la densidad es mayor. A lo largo de la segunda semana hay una caída, y en la tercera semana empieza la actividad.
Tal como hemos hecho con los usuarios hemos creado una tabla relacionando países con los ataques, y de ahí hemos sacado el top de países representantes:
tableTopCountry()
Una vez obtenida la tabla, hemos querido hacer lo mísmo que hemos hecho anteriormente:
getCountryTopGraphic()
Finalmente hemos llegado a unas conclusiones de que los ataques son homogeneos durante el día, pero no durante el transcurso de las semanas. Dado que existen picos de intensidad bastante pronunciados. No nos hemos sorprendido al ver que el usuario más usado es "admin", pero si al ver que el usuario "guest" específico del linux también se ha repetido varias veces. Con especial sorpresa de ver que los ataques ambién se originan no solo en lugares conocidos como China e India, sino también en lugares como Grecia.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.