jueves, septiembre 08, 2022

Setup de Cordobasur

Durante las semanas de vacaciones me he entretenido en activar la raspberry pi y medir la temperatura de casa diferentes habitaciones mediante los sensores de temperatura y humedad de Xiaomi LYWSD03MMC.

La ideal era solo eso, pero fue cambiando con el paso del tiempo para disponer de lo siguiente:

  • Conectividad desde el exterior de casa a la raspberry pi [SSH]
  • Conectividad desde el exterior mediante VPN para evitar tener que publicar puertos adicionales a otros recursos de casa [OPENVPN] en la raspberry pi
  • Encendido mediante Wake On LAN (WOL) de otros equipos de casa [Scripts + Apache]
  • Despliegue de un sistema de sondeo de los diferentes sensores de Xiaomi, que inicialmente fue MRTG pero luego lo cambie para utilizar [Cacti+MariaDB+Apache]
  • Sistema de notificación utilizando Telegram [script que llama a curl]
  • Protección del sistema de ataques por fuerza bruta de los puertos publicados en el router SSH/OPENVPN [Fail2ban]

Lo anterior son todas aquellas cosas que necesito tener funcionando las 24h. El consumo de la raspberry pi es muy bajo, por lo que no tiene apenas costo.

Luego, tengo otros servicios que requieren de mayor consumo de cpu y memoria por lo que no tienen cabida en la Raspberry Pi, por lo que tengo un Intel NUC con 64 GB, en donde he despliegue aquellos servicios que son bajo demando. Una vez encendido el equipo mediante WOL desde la rasbperry pi, he desplegado lo siguiente

  • Cluster de Kubernetes basado en tres nodos que levanto con virsh
  • Repositorios git [publicados en el apache].
  • Gitweb para una consulta rapida del contenido de los repositorios (no para realizar commits/push/pull, solo para verlo dentro del apache y poder navegar por sus contenidos)

Así que el primer problema consistía en obtener la IP del router y utilizar un servicio de IP dinámica (noip.com). De esa forma, obtengo un nombre DNS que apunta siempre a la IP pública del router.

El segundo paso ha sido poner una ip fija dentro de la LAN de casa para que la raspberry cuando se encendiera utilizara siempre lo mismo. Esto se puede hacer configurándola en la interfaz de red de la raspberry o mediante haciendo que el DHCP del router le asigne siempre la misma utilizando su mac-address. En mi caso he optado por la segunda opción. De hecho, el otro equipo que tengo (el intel nuc) también toma la ip por DHCP pero tiene una reserva con su mac-address.

El tercer paso ha sido publicar los puertos del SSH y de OPENVPN en el router para que desde el exterior se dirija la comunicación hacia los correspondientes servicios (SSH, OPENVPN). No he utilizado los tradicionales (22/tcp y 1194/udp) sino que he utilizado otros para evitar escaneos sencillos.

Como medida adicional he instalado fail2ban para que me detecte intentos de hacer login en los servicios SSH/OPENVPN y si superan el máximo numero de intentos (5), sea baneada la ip del equipo remoto durante un par de horas. Si ocurre algo de eso, es notificado por telegram.

También he habilitado el doble factor de autenticación en el SSH cuando se utiliza password. Podria haber deshabilitado el acceso mediante password y permitir solo el acceso con certificado SSH, pero mantengo los dos métodos de acceso.

El cuarto paso ha sido la creación de un script de notificación via telegram. El script permite mandar mensajes de texto a un canal de chat de Telegram utilizando un bot.

Para que Cacti pueda graficar los valores de temperatura de los sensores LYWSD03MMC, he hecho un script específico al que se la pasa la mac-address y desde la raspberry mediante bluetooth sondeo los valores de temperatura de los siete sensores que tengo instalados en cada habitación de la casa (cocina, salón, estudio, baño chico, baño grande, cuarto de invitados y dormitorio). Este sondeo se realiza cada cinco minutos.


Esto en lo que atañe a la raspberry pi y aquellos servicios consideras 24h. Como ya dije, los servicios on-demand están instalados en el Intel NUC. El encendido del mismo se puede hacer mediante un script que llama a WoL para encender el Intel NUC, pero también habilite en el apache un directorio desde el cual se permite ejecutar el script de WoL de Intel NUC, manteniendo dos formas de encenderlo (línea de comandos y apache).

El primer paso fue habilitar WOL en la UEFI para que si llegaba un paquete de WOL a la red de la tarjeta del Intel NUC. El mensaje de WOL hace uso de lo que se denomina paquete mágico que no es más que un mensaje de red formado por una cadena de seis bytes con valor hexadecimal FF FF FF FF FF FF seguida de 16 repeticiones de la dirección MAC del destino para poder arracarlo. El mensaje de red se envía a los puertos 7 o 9 UDP.

Cuando la tarjeta de red del equipo destino detecta el paquete, comprueba que las 16 MAC corresponden con la suya, enviando una señal eléctrica a la placa base para que encienda.

Es lógico que para utilizar esta forma de arranque remoto es necesario conocer la dirección MAC-ADDRESS del destino.

Posteriormente, se instalan las herramientas de git para gestionar el repositorio y el apache para publicar por HTTP, permitiendo el acceso remoto al repositorio. Una vez creado el repositorio se agrega gitweb para publicar un visor del repositorio en el apache y accesible mediante el navegador.

sábado, agosto 13, 2022

Lou Grant

Le pase a un amigo un artículo de Jot Down Magazine sobre la serie Lou Grant que es notable por la utilización del artículo para trazar los problemas de una profesión que considero importante pero también es un gran engaño perpetrado por ellos mismos (o por sus dueños).

En cualquier caso hay algo en lo que no caen los periodistas. Para que el conjunto de ellos hagan un buen trabajo es necesario que sus lectores sean muy infieles. Los lectores debemos ser muy promiscuos, de lo contrario la cagaremos al permitirnos ver solo un lado de la verdad (o de la mentira) que nos cuenten.

sábado, marzo 05, 2022

GOTO SanlucarBarrameda:

Técnicamente empezó hace dos años. Lo que parecía una ruta loca cuando escuché que había gente que la hacía, sobre todo por el modo tan faltó de preparación. Hacer 110 km no es algo que se deba improvisar o por lo menos así lo pienso.

Lo primero que hice fue mirar por qué caminos iban. El camino no parece que tenga mucha complicación. Una primera parte en la que cruzas Sevilla de Este a Oeste (Km 13) para llegar al corredor natural del río Guadaira que circula paralelo. Siguiendo el corredor damos con la desembocadura del Guadaira en el Guadalquivir (Km 40). Posteriomente te separas del río para adéntrate en los campos de cereales hasta que retomas el camino pegado al río Guadalquivir en la antigua carretera del práctico (Km 55). Allí hasta el Km 90 el río es un fiel compañero mientras se sigue lla ruta del práctico que se deja atrás para adentrarse en el parque del Pinar de Algaida. Cuando se sale del mismo solo quedan 10 Km mal contados hasta llegar a Sanlúcar de Barrameda y completar los 110 Km.

Sabiendo esto solo hay que preparar físicamente para aguantar sin problemas seis horas en bici que se necesitan. Con cuatro horas de media semanal en bici estática es suficiente. El ritmo que debes seguir debe ser el más alto que puedas llevar durante una hora. Otra cuestión es no llevar culotes acolchados. Es mejor no acostumbrarse. Luego en la ruta llevarás uno y se notará. Otra cosa sera es el agua y comida. Dos litros y dos bocadillos es suficiente.

Hay que tener en cuenta que se tiene que regresar a casa. Para eso se me ocurrió ir el día de antes. Dejar el coche en Sanlúcar y regresar en autobús que lleva a Jerez y en Jerez coger el tren de media distancia de Cadiz-Jaen. Con Google Maps se puede bichear bien.

El día 22 de enero fue el primer intento. El cuál fue terminado con éxito y con un viento de noroeste que acompañó todo el viaje. Ese es un aspecto fundamental. No encontrar viento de cara que vuelven la aventura algo criminal. En esta ocasión el viento me irá acompañando de lado lo que ayudará pero tampoco perjudicará. windfind es tu amigo.


Cómo utilizar el servicio Secrets Manager para guardar las claves privadas de SSH

Para guardar la clave privada en el servicio Secrets Manager como un secreto en modo texto sin formato, sigue estos pasos Supongamos que la ...