Estadísticas de uso en Linux con Sysstat

Cada vez tengo mas clara una cosa, hacer scripts es entretenido y se aprende bastante, pero hay veces que no hace falta reinventar la rueda, o bien por que no interesa, o bien por que no hay tiempo y necesitas una solución rápida.

Este es el caso de Sysstat: en este caso he visto numerosos scripts para hacer lo que ya hace Sysstat y dejan mucho que desear. Sysstat lo hace bien, y creedme que lo hace muy bien. Al final sacar estadísticas de uso cada X minutos, uso de disco, de red, estadísticas de CPU, memoria, etc…

Para instalar Sysstat es muy fácil, solo ejecutamos:

[/] # yum -y install sysstat

El comando para visualizar los datos recogidos es: sar, pero si lo ejecutamos nos indicará:

[/] # sar
Cannot open /var/log/sysstat/sa20: No such file or directory
Please check if data collecting is enabled

Como se puede visualizar, el comando busca el fichero de logs: /var/log/sysstat/sa[dd], donde dd es el día actual, en este caso el 20. Antes de poder visualizar algún contenido en este fichero, primero debemos escribir datos en él, para ello debemos ejecutar dos binarios:

 /usr/lib/sysstat/sa1
 /usr/lib/sysstat/sa2

Al binario sa1 debemos pasarle dos opciones: el intervalo y el numero de veces que queremos ejecutarlo, por ejemplo:

 /usr/lib/sysstat/sa1 1 1

En el caso sa2, este es un binario que escribirá un reporte diario en el fichero de log /var/log/sysstat/sa[dd] y podría ser ejecutado una vez al día. Por ejemplo:

/usr/lib/sysstat/sa2 -A

Estos dos binarios no se ejecutan de manera automática, por lo que una buena forma de automatizar esto, es añadiéndolos al cron del usuario ,dejando algo parecido a lo siguiente:

*/5 * * * * root /usr/lib/sysstat/sa1 1 1
59 23 * * * root /usr/lib/sysstat/sa2 –A

Así, ejecutaremos cada 5 minutos el binario sa1 y una vez al día el binario sa2, justo antes de las 00:00.

Una vez el binario sa1 haya sido ejecutado al menos una vez, podremos ejecutar el comando sar, el cual sin ninguna opción nos mostrará algo parecido a lo siguiente:

También podremos visualizar otras estadísticas, como estadísticas de las interfaces de red:

Es decir que cada vez que ejecutamos el binario sa1 se guardan en ese instante de tiempo un montón de datos interesantes. Hay algunos datos que no se registran en el fichero de log, por defecto, por lo que habria que modificar la linea del cron que creamos antes, y añadir las opciones correspondientes:

# ./sa1 -h
Usage: /usr/lib/sysstat/sadc [ options ] [ <interval> [ <count> ] ] [ <outfile> ]
Options are:
[ -C <comment> ] [ -D ] [ -F ] [ -L ] [ -V ]
[ -S { INT | DISK | IPV6 | POWER | SNMP | XDISK | ALL | XALL } ]

Podéis echarle un vistazo a la página man del comando sar, que como veréis hay una infinidad de opciones interesantes, que demuestran que este Sysstat es una herramienta muy potente y que debemos tener en cuenta para poner en todos aquellos sistemas de los que queramos conocer un poco más.

Comando free: ¿Cache, Buffers, Shared?

La salida del comando free, puede tornarse difícil de interpretar en algunas ocasiones, por ejemplo: lo ejecutamos en un server en el que corren dos procesos esenciales que no deberían de usar más del 30% del total de la memoria RAM, pero vemos que la columna “free” nos indica: 80MB, no es posible ¿donde han ido nuestros 4GB, 8GB o 10GB de memoria RAM restantes?

Vamos a intentar entenderlo.

Continuar leyendo “Comando free: ¿Cache, Buffers, Shared?”

SSH activado por defecto en tu Raspberry con Raspbian

La entrada de hoy es rápida pero muy útil, hace poco vengo haciendo varias pruebas con mi Raspberry, por lo que he reinstalado Raspbian en numerosas ocasiones.

La imagen que utilizo es la que se puede descargar desde la pagina oficial https://www.raspberrypi.org/downloads/raspbian/:

Una vez descargada la imagen, para grabarla en la SD utilizo Windows y el software Balena Etcher, que se puede descargar desde aquí: https://www.balena.io/etcher/

Continuar leyendo “SSH activado por defecto en tu Raspberry con Raspbian”

Message Of The Day (MOTD) personalizado para Raspberry

Imagen 1. MOTD personalizado

El famoso MOTD es un mensaje personalizado, o no, que se muestra al iniciar sesión en la terminal de Linux, si iniciamos sesión por SSH podemos ver dos mensajes más: Una advertencia de SSH y la información de la última conexión realizada. Estos mensajes son en parte algo informativos, pero con los siguientes pasos conseguiremos tener algo mucho más útil y verdaderamente informativo.

Si queremos mostrar información en texto plano, es decir, que no haya interpretación de comandos, podemos hacerlo fácilmente editando el fichero /etc/motd, pero si en cambio queremos algo más completo, como en la portada de esta entrada debemos realizar los siguientes pasos:

Continuar leyendo “Message Of The Day (MOTD) personalizado para Raspberry”

Airbnb y su Password Length Restriction que no tenía nada de restrictive

Imagen 1. Airbnb logo.

Por fin me han dado full disclosure en este fallo y ahora puedo publicarlo.

Un fallo en la restricción de longitud de contraseña de Airbnb podía provocar que con un numero de peticiones concretas se pudiese tirar uno de sus servidores abajo, mejor dicho, que pudieses hacer un Denial of Service de toda la vida.

Como bien sabemos un DoS teniendo los medios para hacerlo puede llegar a resultar bastante sencillo y esto era lo que ocurría con Airbnb. Ellos tenían un sistema de restricción de longitud de contraseña, que tenia un máximo 128 caracteres, este sistema funcionaba correctamente en el proceso de creación de una cuenta y en el de cambio de contraseña, si te pasabas de los 128 caracteres el propio formulario te indicaba que no se podían insertar más.

Continuar leyendo “Airbnb y su Password Length Restriction que no tenía nada de restrictive”

Script para envío de comandos en paralelo a hosts remotos – Linux

Imagen 1. En paralelo

He estado un poco alejado del blog por que he estado trabajando en un pequeño proyecto que me ha quitado mas del tiempo esperado.

Con lo que respecta a este script, comentar que nace de la necesidad de ejecutar varios comandos a la vez en varias maquinas remotas por SSH. Antes de tener este script, lo que estaba haciendo era conectarme a las maquinas remotas por SSH y ejecutar los comandos en serie, es decir, tenía un script con un bucle para ejecutar ‘X‘ y ‘Z‘ comando en todas la maquinas remotas, el problema de esto era que los comandos debían ser ejecutados sobre 3000 maquinas, con previsión de tener que hacerlo hasta en un total de 6000

Con este script lo que he conseguido es enviar uno o varios comandos hasta un total de 8000 dispositivos a la vez. Para ver mejor la problemática: tenia que conectarme por SSH al dispositivo, realizar unas modificaciones en ciertos ficheros del sistema y a continuación reiniciar el dispositivo, esto con 3000 dispositivos tomaba hasta 1 h 30 min el proceso era el siguiente:

Continuar leyendo “Script para envío de comandos en paralelo a hosts remotos – Linux”