analisis
This commit is contained in:
commit
f257dea4d1
5 changed files with 113 additions and 0 deletions
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
header.tsv
|
||||
x.sqlite
|
||||
x.tsv
|
17
graph.sql
Normal file
17
graph.sql
Normal file
|
@ -0,0 +1,17 @@
|
|||
with amounts as (
|
||||
select
|
||||
tls_version,
|
||||
count(*) as count
|
||||
from logs
|
||||
group by tls_version
|
||||
),
|
||||
max as (
|
||||
select max(count) as value
|
||||
from amounts
|
||||
)
|
||||
select
|
||||
tls_version,
|
||||
count,
|
||||
printf('%.' || (count * 30 / max.value) || 'c', '*') as bar
|
||||
from amounts, max
|
||||
order by tls_version;
|
19
graph_useragent.sql
Normal file
19
graph_useragent.sql
Normal file
|
@ -0,0 +1,19 @@
|
|||
with amounts as (
|
||||
select
|
||||
user_agent,
|
||||
count(*) as count
|
||||
from logs
|
||||
where tls_version = "TLSv1" OR tls_version = "TLSv1.1"
|
||||
group by user_agent
|
||||
),
|
||||
max as (
|
||||
select max(count) as value
|
||||
from amounts
|
||||
)
|
||||
select
|
||||
user_agent,
|
||||
count,
|
||||
printf('%.' || (count * 30 / max.value) || 'c', '*') as bar
|
||||
from amounts, max
|
||||
order by count;
|
||||
|
1
header_done.tsv
Normal file
1
header_done.tsv
Normal file
|
@ -0,0 +1 @@
|
|||
uuid dominio http_version method path status_code encoding accept-encoding lang user_agent tls_version tls_algos tls_algos2
|
|
73
readme.md
Normal file
73
readme.md
Normal file
|
@ -0,0 +1,73 @@
|
|||
# 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](https://blog.mozilla.org/security/2018/10/15/removing-old-versions-of-tls/) al resto de nuestrxs usuarixs.
|
||||
|
||||
1. sincronizar archivos
|
||||
|
||||
```fish
|
||||
rsync -vP root@gethen.sutty.nl:/srv/sutty/srv/panel.sutty.nl/_storage/'*.psql.gz' .
|
||||
```
|
||||
|
||||
2. descomprimir logs
|
||||
|
||||
```fish
|
||||
gunzip -d *.gz
|
||||
```
|
||||
|
||||
3. convertir en un TSV gigante (NOTA: esto está escrito en [fish](https://fishshell.com/), aunque no debería ser tan complicado adaptar a otras shells)
|
||||
|
||||
```fish
|
||||
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 ;)
|
||||
|
||||
4. 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`
|
||||
|
||||
```fish
|
||||
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
|
||||
```
|
||||
|
||||
5. importar TSV a una base de datos SQLite (inspirado en [SQLite no es una base de datos de juguete](https://sysarmy.com/blog/posts/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
|
||||
```
|
||||
|
||||
6. (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 ;)
|
||||
|
||||
7. 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)"`.
|
Loading…
Reference in a new issue