.gitignore | ||
graph.sql | ||
graph_useragent.sql | ||
header_done.tsv | ||
readme.md |
analisis de datos de access logs de sutty
mi teoría es que el uso de TLSv1 y TLSv1.1 es muy baja, y deberíamos desactivarla para no poner en riesgo al resto de nuestrxs usuarixs.
-
sincronizar archivos
rsync -vP root@gethen.sutty.nl:/srv/sutty/srv/panel.sutty.nl/_storage/'*.psql.gz' .
-
descomprimir logs
gunzip -d *.gz
-
convertir en un TSV gigante (NOTA: esto está escrito en fish, aunque no debería ser tan complicado adaptar a otras shells)
for i in *.psql grep -E '.{8}-.{4}-.{4}-.{4}-.{12}' $i end > x.tsv # limpiar espacio.. rm *.psql
tarea para lx lectorx: se pueden combinar estos tres pasos en uno y ahorrar en espacio de disco y tiempo ;)
-
generar un archivo de un par de entries para especificar las key/value de cada cosa. ya lo hice, podés saltear este paso y usar
header_done.tsv
head x.tsv > header.tsv # editar header.tsv para tener valores de key al menos para los valores que nos importan # usé libreoffice calc para hacerlo
-
importar TSV a una base de datos SQLite (inspirado en SQLite no es una base de datos de juguete)
sqlite x.sqlite > .mode tabs > .import "|cat header_done.tsv x.tsv" logs # van a haber errores... pero no son tantos # a partir de cierto punto hay columnas de mas.. se ignoran
-
(opcional) ¿usas btrfs? forzalo a comprimir la BD de SQLite con ZSTD:
sudo btrfs filesystem defragment -czstd x.sqlite
esto me lo deja a tan solo 11% del tamaño del archivo original ;)
-
correr query que retora gráfico (también inspirado en el artículo de arriba)
sqlite3 x.sqlite "$(cat graph.sql)"
esto devuelve varias "tls_version" basura.. las filtro de lo próximo, que total son pocas requests:
|1206821|**** TLSv1|1689|* TLSv1.1|24|* TLSv1.2|1222869|**** TLSv1.3|8805130|******************************
la primera línea son requests sin HTTPS. es normal, porque se usan para redirigir de HTTP a HTTPS y para Tor (porque tiene su propio cifrado).
las requests de TLSv1 y v1.1 son algo así como 0.2%... no solo eso, sino que parecen provener generalmente de bots o navegadores que no soportamos de todas maneras (como Internet Explorer 9, 8 u 7), que se puede ver con
sqlite3 x.sqlite "$(cat graph_useragent.sql)"
.