"Después del juego es antes del juego"
Sepp Herberger

miércoles, 27 de mayo de 2020

Filtrando publicidad con powerdns (II)

Ya vimos como configurar nuestro powerdns para bloquear la publicidad en nuestra red. Ha estado funcionando un par de semanas sin problemas antes del caos de la COVID-19.

Lo que hicimos entonces fue coger el fichero gravity.list de nuestra Raspberry Pi y su pi-hole, convertirlo al formato .lua y meterlo en nuestro powerdns.

Dejamos pendientes dos cosas:

  • Probar listas de bloqueo mas grandes: he probado con varias mas descargadas de Internet y no se nota una mejora apreciable. Además muchas no son de publicidad, sino de otro tipo de contenidos inadecuados que en nuestro caso filtra el firewall corporativo. La istas que trae pi-hole son más que suficientes.
  • No depender del gravity.list de pi-hole. Escribir un script que baje las listas referenciadas en adlists.list y construir un blocklist.lua de forma automática. Eso es lo que he hecho y cuento en este artículo.

El script sería:
# cat /usr/local/bin/blacklist-powerdns.sh 
#!/bin/bash

#Crea fichero de bloqueos de publicidad y sitios web para powerdns.

#Descargamos listados de sitios web de publicidad a bloquear.
cp /dev/null /tmp/filter-hosts

wget -N -O /tmp/hosts  https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts
grep "^0.0.0.0" /tmp/hosts |  awk '{print $2}' >> /tmp/filter-hosts
echo "" >> /tmp/filter-hosts

wget -N -O /tmp/hosts http://sysctl.org/cameleon/hosts
grep "^127.0.0.1" /tmp/hosts | awk '{print $2}' >> /tmp/filter-hosts
echo "" >> /tmp/filter-hosts

wget -N -O /tmp/hosts https://mirror1.malwaredomains.com/files/justdomains
cat /tmp/hosts >> /tmp/filter-hosts
echo "" >> /tmp/filter-hosts

wget -N -O /tmp/hosts https://s3.amazonaws.com/lists.disconnect.me/simple_tracking.txt
cat /tmp/hosts >> /tmp/filter-hosts
echo "" >> /tmp/filter-hosts

wget -N -O /tmp/hosts https://s3.amazonaws.com/lists.disconnect.me/simple_ad.txt
cat /tmp/hosts >> /tmp/filter-hosts
echo "" >> /tmp/filter-hosts

#Este enlace está muerto
#wget -N -O /tmp/hosts https://hosts-file.net/ad_servers.txt
#cat /tmp/hosts >> /tmp/filter-hosts

#Añadimos lista negra de dominios mantenida por nosotros
if [ -f /etc/powerdns/bloqueados.list ]
then
  cat /etc/powerdns/bloqueados.list >> /tmp/filter-hosts
  echo "" >> /tmp/filter-hosts
fi

#Ordenamos y quitamos dominios repetidos. Borramos comentarios.
cp /tmp/filter-hosts /tmp/filter-hosts2
sort -u -o /tmp/filter-hosts /tmp/filter-hosts
sed -i '/^localhost$/d' /tmp/filter-hosts
sed -i '/^#/d' /tmp/filter-hosts

#Generamos el fichero blocklist.lua compatible con powerdns
echo "return {" > /tmp/blocklist.lua
for i in $(cat /tmp/filter-hosts)
do
   echo \"$i\", >> /tmp/blocklist.lua
done
echo "}" >> /tmp/blocklist.lua

#Copiamos fichero de bloqueo DNS y reiniciamos servicio.
/etc/init.d/pdns-recursor stop
/etc/init.d/pdns stop
cp -f /etc/powerdns/blocklist.lua /etc/powerdns/blocklist.lua.bak
cp -f /tmp/blocklist.lua /etc/powerdns/blocklist.lua
/etc/init.d/pdns start
/etc/init.d/pdns-recursor start

exit 0
Este script descarga listas de DNS de las mismas fuentes que pi-hole. Realmente la única importante es https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts, que se actualiza con mucha frecuencia. El resto son anecdóticas.

Además, añade al bloqueo los dominios del fichero local /etc/powerdns/bloqueados.list, por si queremos bloquear dominios a mano (por ejemplo, instagram o whatsapp) en la red del centro.

Con todo ello hace una lista de bloqueos, que unifica y ordena para pasar a generar un /etc/powerdns/blocklist.lua.

Este script se ejecuta semanalmente en la madrugada del domingo mediante un crontab:
# cat /etc/crontab
...
...
#Actualiza la lista de bloqueos de publicidad y otros dominios para powerdns
#Por defecto se hace los domingos de madrugada
00 2 * * 7    root     /usr/local/bin/blacklist-powerdns.sh
...
...
Y ya está. Con esto tendremos la lista de bloqueos actualizada semanalmente.

Hoy, 27 de mayo de 2020, SpaceX lanza la Crew Dragon en un Falcon 9 con dos astronautas norteamericanos rumbo a la ISS. Aquí una animación de lo que debe pasar hoy a las 22.33.



Si todo va bien tendremos un competidor nuevo para las estupendas Soyuz. A ver si hay suerte y puedo añadir un vídeo real después de este texto.
Actualización 28-05-2020: nada, el tiempo no acompañó en Florida. Se intentará de nuevo el sábado 30.
Actualización 31-05-2020: lo hicimos!


Viendo el lanzamiento en directo desde casa:


El booster aterrizado de forma autónoma y segura en la barcaza "Of Course I Still Love You", listo para ser reutilizado en un futuro próximo en otro lanzamiento.


Es estupendo que al menos un país occidental pueda de nuevo mandar astronautas al espacio sin necesitar de tecnología comunista. ¡Bravo, Elon!

jueves, 21 de mayo de 2020

Calcular y mostrar en orden el tamaño de los "home" de los usuarios

Estamos en buena época para hacer limpieza de home de los usuarios y para ello lo mas adecuado es tener un listado del ranking de ocupación, obteniendo así la información necesaria para decidir que hacer con cada usuario.

Veamos los comandos. El primero nos muestra en tamaño decreciente el tamaño de cada carpeta:
# cd /home
# du -hs * | sort -h -r
108G kane
2,5G ripley
1,8G ash
867M dallas
71M  lambert
65M  parker 
32M  brett
El problema del comando anterior es que no nos muestra las carpetas ocultas (en Unix las que comienzan por "."). Dentro de los homes de los usuarios es allí donde está muchas veces toda la grasa (en forma de cachés, papeleras y ficheros temporales) que hace que ocupen tanto. Para incluir en el listado ese espacio sería:
cd /home/kane
# du -sch .[!.]* * | sort -h -r
108G total
70G  .xenomorfo
8,5G 01-office
5,2G .local
2,1G Descargas
1,3G Desktop
345M .mozilla
304M .wine
161M 99-misc
117M .config
116M .capturas
114M Documentos
103M 03-project
13M .thunderbird
5,1M .exe
3,8M .SMART Technologies Inc
....
Por último, si nos interesa localizar los ficheros mas tochos, filtrando por un tamaño mínimo, podemos usar el comando find:
# cd /home/ripley
# find . -type f -size +100M
Con esto saldrán los ficheros cuyo tamaño sea superior a 100M.

Una vez tengamos toda esta información ya podemos decidir si limpiamos nosotros o damos aviso a los usuarios para que vayan haciendo limpieza ellos mismos.

viernes, 15 de mayo de 2020

Cacharreo (II): problemas con el alargador USB en las Siatic

En nuestra instalación de pizarras digitales, llamadas SIATIC, nos encontramos que el PC está situado en una caja metálica bajo la pizarra, de la cual sale un cable USB de varios metros que va canalizado hasta la mesa del profesor, con un hub USB de baja calidad donde va conectado teclado, ratón y un par de conectores para pinchar los pendrives.

La distancia a través de las canaletas entre mesa y pizarra es variable, pero normal son 3 o más metros. El alargador USB está apantallado, pero a veces no alcanza y durante el montaje se acoplaron dos alargadores USB sujetos con cinta aislante para llegar hasta donde hiciese falta.

Todo esto un cóctel perfecto para que falle teclado/ratón con facilidad si el cable es demasiado largo, especialmente al pinchar un pendrive y no poder suministrar suficiente potencia sin pérdida. Voy a contar varias soluciones que he implementado:

1. Alargador corto independiente para pendrives.

Para los pendrives o discos duros externos la longitud del alargador viene fatal, con muchos fallos frecuentes. Al final opté por poner un pequeño alargador USB de medio metro pinchado en un puerto USB trasero del PC y que salía junto con el resto de cables de la caja:


Como se ve, lo sujeto en el lateral con varias bridas:


Como es un cable corto y directo no hay problema en pinchar discos externos ni pendrives. Solo hay que avisar a los usuarios de que está. Esto lo tengo montado en casi todas las aulas del centro.

2. Hub USB con Alimentacion.

En un caso concreto además de teclado y ratón teníamos que conectar una impresora y otros dispositivos en la mesa del profesor, necesitándose potencia extra. Para ello cambiamos el USB por uno con fuente de alimentación externa:


Este tipo de dispositivos vienen bien amplificar la señal e inyectar mas potencia de alimentación. Muy útil para, por ejemplo, conectar discos duros externos. El inconveniente es que necesitamos un enchufe de corriente libre donde conectar la fuente de alimentación.

3. Añadir alargador.

Como caso extremo debido a lo tedioso de la instalación: levantar las canaletas y meter otro alargador USB desde el PC a la mesa, de tal manera que nos llegan dos. Es otra posibilidad más, pero nada aconsejable.

4. USB dos machos + una hembra.

Este cacharro:


Tiene dos conectores machos y una hembra. Lo que hace es utilizar los 2 machos para obtener el doble de potencia eléctrica, que es inyectada por la hembra. Se usa habitualmente para conectar discos duros externos que necesitan potencia extra para funcionar.

Cuestan 3 o 4 euros y si los ponemos en la caja del PC, conectando a la hembra el principio del alargador USB veremos que inyecta más potencia al otro extremo, suministrando la suficiente energía para funcionar bien. Esto lo he montado en un par de aulas con los cables excepcionalmente largos donde simplemente el teclado y el ratón daban problemas aleatorios de conexión.

Bueno, pues estas son las opciones. Si se me ocurre alguna más las pondré aquí.

jueves, 14 de mayo de 2020

Cacharreo (I): sustitución de rodillo de alimentación en impresora Samsung ML-1210

Ya va para 15 años que nos pusieron en los centros educativos las impresoras Samsung ML-1210:


Tras todo este tiempo han aguantado maltrato de usuarios, tóner genérico, polvo de tiza y cuerpos extraños introducidos por los alumnos en el mecanismo sin mayores problemas, pero poco a poco han ido fallando. Descartados sabotajes y averías eléctricas, el fallo mas común es de alimentación del papel: cuando intenta coger una hoja para imprimir el rodillo gira y gira y no llega agarrar el folio, o bien cuando lo coge se lleva varios folios de golpe y se atasca.

El problema está en las 2 piezas que realizarn la alimentación de papel: JC72-00124A Separation Pad y JC73-00018A Pickup Roller


Las piezas tienen los códigos de fabricante JC72-00124A y JC73-00018A, que son los que los identifican. Como se ve, en Aliexpress se consiguen por unos 5-6 euros. Si se compran en lotes de 5 o 10 salen mas baratos.

Vamos a ver como desmontar la impresora para sustituir esas piezas. Es muy aconsejable tener siempre a mano el Manual de Servicio de la impresora, donde vienen las referencias de todas las piezas y los pasos del desmontaje. Normalmente en https://www.manualslib.com se pueden encontrar muchos de estos manuales.

Bueno, pues esto es lo que nos llega en el paquete desde el País del Centro:


El rodillo de alimentación o pickup roller:



Y la almohadilla de separación o separation pad (en ocasiones viene acompañada de 2 muelles, en este caso no venía así que tendremos que reutilizar los que tenga la separation pad ya instalada en la impresora):



Bueno, vayamos por partes, como diría Jack el Destripador. Primero quitamos los 2 tornillos de la parte trasera (círculos rojos) y soltamos las pestañas (círculos verdes):


Damos la vuelta, abrimos la tapa y sacamos el tóner. Desmontamos la parte superior quitando los 2 tornillos :



Así se ve con ambas partes (frontal y trasera) quitadas:


Esa pieza negra en la parte superior es la LSU (Laser Scanning Unit) y debajo está el rodillo y el pad a sustituir, como se ve en esta imagen:


Para acceder a ellos hay que retirar la LSU quitando 4 tornillos marcados en rojo. A partir de aquí debemos fijarnos bien en todo lo que quitamos y desenganchamos, para luego montarlo de nuevo igual al finalizar. Aconsejo hacer muchas fotos de todos los pasos complicados para luego poder ver como estaban antes de desmontarlas y no forzar nada:






Extraemos ahora la unidad:


Si le damos la vuelta está el rodillo atornillado en la estructura que lo sostiene:


Quitamos los 2 tornillos y sacamos el rodillo, poniendo el nuevo:




Montamos la pieza otra vez como estaba y lo atornillamos de nuevo a la parte inferior de la LSU. Vamos ahora a por el pad. Como se ve, el pad tiene encima una solapa que es donde se apoya el taco de folios. Esa parte hay que levantarla y girarla 180º por completo para poder acceder al pad, pero para ello hay que desenganchar el engranaje marcado en rojo:




Una vez levantamos esta solapa ya podemos extraer el pad. Simplemente hay que soltarlo de la parte trasera:


Una vez extraído ya podemos cambiarlo por el nuevo. Si no venía con muelles propios le ponemos los del antiguo pad. Esos muelles no suelen fallar y pueden reutilizarse.


Una vez hecho esto hay que volver a montar todo como estaba en orden inverso, por eso es importante fijarse bien (reitero: haciendo fotos si es necesario) durante el desmontaje. Una parte delicada es el rodillo bajo la LSU, que va unido al brazo que señalamos aqui:


Hace falta un poco de maña para engancharlo bien, quedar el roller acoplado al brazo como estaba y a la vez encajar la LSU, pero al final lo logramos.

Y...¿como va todo una vez cambiado?. Casi como nueva: hemos impreso tiradas de 200 o 300 folios sin problemas de ningún tipo. Si esto no falla podemos tener impresora para otros 10 o 15 años.

martes, 12 de mayo de 2020

Otra herramienta de control remoto: DWService

Bueno, seguimos caminando hacia la Era de la Nueva Normalidad tras la primera ola de la pandemia. Como las herramientas de acceso a ordenadores remotos tienen un gran futuro vamos a hablar de otra que he estado probando estos días: DWService.

A diferencia de TeamViewer, que ya vimos anteriormente, este es un producto gratuito, sencillo y Open Source. Su cliente-agente para compartir el escritorio es un programa portable/instalable para Linux, Windows y OSX. El acceso remoto se hace de forma transparente a través de routers privados tengan o no NAT sin necesidad de configurar firewalls ni abrir puertos.

Sorprendentemente, el programa que usamos para acceder al puesto remoto desde nuestra casa es simplemente el navegador web, sin ningún tipo de software adicional.

El usuario que quiere compartir su ordenador debe bajar y ejecutar el programa cliente desde la página de DWService. Para Windows y OSX es algo trivial, pero para Linux es algo mas complicado ya que es consiste en un script bash (de esos que contienen luego dentro código binario). Vamos a intentar explicarlo de forma sencilla para que cualquier usuario sin muchos conocimientos pueda hacerlo:

1. Descarga y ejecución del agente en Linux.

Podemos hacerlo de 3 maneras:

Método 1

Abrimos un terminal (con CTRL-T/CTRL-ALT-T o desde el lanzador del menú de inicio) y ejecutamos (copiando y pegando preferiblemente) estos tres comandos:
wget https://node364215.dwservice.net/getAgentFile.dw?name=dwagent_x86.sh -O "/tmp/dwagent.sh"
chmod +x /tmp/dwagent.sh
/tmp/dwagent.sh
Si todo va bien se abrirá la ventana del agente.

Método 2

Descargamos desde su web el cliente dwagent.sh. dando a "Guardar archivo:"


Vamos al icono "Descargados" del navegador Firefox, en la parte superior derecha:


Abrimos la carpeta donde está el fichero descargado:


En el explorador de archivos, nos ponemos sobre el fichero dwagent.sh y con el botón derecho del ratón vamos a Propiedades-> Permisos-y marcar Permitir que este archivo se ejecute como un programa. Damos a cerrar.


Abrimos un terminal, vamos a la carpeta de descarga (esto seguramente sea lo más complicado para el usuario) y ejecutamos allí el programa descargado con el comando
./dwagent.sh
Si todo va bien se abrirá la ventana del agente.

Método 3.

La otra opcion es abrir un Buscador de Aplicaciones con ALT-F2 y pegando dentro este comando:
xfce4-terminal -x wget https://node364215.dwservice.net/getAgentFile.dw?name=dwagent_x86.sh -O "/tmp/dwagent.sh"


Damos al botón ejecutar y esto hará que se descargue el programa:


Luego abrimos de nuevo con ALT-F2 y pegamos:
bash -c "chmod +x /tmp/dwagent.sh;/tmp/dwagent.sh"


Una vez damos a ejecutar y transcurrido un rato se abrirá la ventana del agente.

2. Ejecución del agente en cualquier plataforma.

Una vez se abre el programa agente, aparece así:


Elegimos la opción "Ejecutar" ya que solo vamos a compartir el escritorio de forma ocasional y además así no necesitaremos permisos de administración del equipo.

Transcurrido un rato de conexión nos aparece:


El user y el password que aparecen es lo que daremos por email o cualquier otro medio a la persona con la que queremos compartir nuestro ordenador.

3. Acceso a ordenador remoto.

Desde nuestra casa, abrimos con nuestro navegador la página https://www.dwservice.net/ y en "Iniciar Sesión" ponemos el usuario y contraseña que nos ha comunicado el otro usuario:


En breve conecta con el PC remoto y nos muestra:


Es una página con varias opciones que se abren en pestañas, mucho mas variado que el escritorio remoto que ofrece TeamViewer:

  • Files and folders: permite acceder a los ficheros del PC remoto, un Explorador de Archivos remotos.
  • Text Editor: un editor de textos básico, que permite modificar ficheros en el ordenador remoto.
  • Log Watch: acceso al registro del sistema remoto.
  • Resources: acceso al uso de CPU, procesos y otros recursos del equipo remoto.
  • Screen: acceso al escritorio remoto del otro equipo. Seamos sinceros: va lento, no es tan fluido como TeamViewer, pero se puede trabajar con él.
  • Shell: terminal remoto, como una conexión ssh.

Y ya está. Con esto controlamos en un periquete el ordenador del usuario remoto desde nuestra casa usando un software sencillo y Open Source. Solo hay que conseguir que sea capaz de descargar y lanzar el cliente.


No teniendo suficiente con tener doblegada la pandemia de COVID-19, nuestra admirada China han anunciado con su discreción habitual que proyectan un vuelo tripulado a la Luna:


Un chino o china en la Luna: si Mao se levantase y lo viese se caería muerto de nuevo en el mausoleo.

jueves, 7 de mayo de 2020

Renovación del certificado digital de la FNMT sin morir en el intento

Este año me tocaba renovar el certificado digital, como ya he hecho varias veces desde que lo saqué a principios de siglo. Hasta ahora no había tenido problemas, ya que es lógico que pueda ser renovada desde casa una herramienta que sirve para realizar trámites oficiales a distancia sin tener que moverse físicamente a ningún sitio.

Pero esta vez no ha sido fácil. Al intentar renovarlo con Manjaro Linux y Firefox me encuentro con:


Vaya, necesito Firefox 68 o Internet Explorer. No valen Chrome, Safari, Edge ni Firefox modernos. Tiene que ser Firefox ESR en lugar de mi Firefox 75. Recuerdo haber leído algo referido a que Firefox había cambiado su sistema de gestión de extensiones hace tiempo y muchos procesos de la FNMT ya no funcionaban.

Esto obliga al usuario normal, sea cual sea su nivel, a descargar e instalar (o descomprimir, si es una versión portable y no instalable) una versión antigua de Firefox, con los problemas que puede traer esto al tener 2 Firefox en activo en la misma máquina. Además podría tener que verse obligado a instalar su certificado digital personal en el perfil del nuevo Firefox, ya que no siempre aparece el que está instalado en Firefox moderno.

No se preocupen hay un rayo de esperanza: en la página de aviso anterior aparece: "CERES-FNMT ultima el diseño de una herramienta para obtener y renovar el certificado digital desde cualquier navegador y sistema operativo", con este enlace, que te lleva a:


Vamos, que no tienen contratado ni el dominio de la herramienta neutra de renovación de certificado. Vamos bien.

Venga, ya está descargado e instalado Firefox 68, vamos a pedir la renovación. Esta vez no se queja del navegador y nos deja elegir certificado, pero llegamos a:



No me lo puedo creer. Da problemas SEC_ERROR_UNKNOWN_ISSUER con el certificado de apuc20.cert.fnmt.es y no me deja seguir. Buscando en Internet aconsejan entrar en "about:config" del Firefox y cambiar el parámetro security.enterprise_roots.enabled de true a false:


Lo cambio, reinicio el navegador y repito los pasos. Nada, ni con esas. Un compañero me sugirió descargar y reinstalar todos los certificados raíz de la FNMT y lo cierto es que en uno de esos intentos, tras haber limpiado el perfil del Firefox por completo borrando el directorio .mozilla me dejó avanzar un poco más, pidiéndome actualizar datos para renovar el certificado, pero se paraba todo al ir a firmar la petición, dejándome una ventana de navegador en blanco.

Cambié de estrategia y abandoné Linux para probar con Firefox 68 en OSX y Windows, y Explorer en Windows. Nada, el mismo error de SEC_ERROR_UNKNOWN_ISSUER.

Solución.

Para todo hay una solución: en este caso es usar LinuxAE. LinuxAE es "una distribución para realizar trámites con la Administración Electrónica de España", como cuentan con detalle aquí.

Lo bueno es que no se pierde una mañana instalando: es una imagen .OVA de máquina virtual, que se descarga, importa y ejecuta con VirtualBox de una forma rápida. Una vez la arrancamos nos sale en una ventana un Debian virtualizado (en el que entramos con las credenciales "ciudadano/ciudadano") que está especialmente tuneado y afinado para trabajar con la administración electrónica española. Tras importar mi certificado digital en su navegador Firefox no tuve problema en renovarlo y descargarlo en menos de 10 minutos.

Desde luego, LinuxAE es un excelente trabajo que además es actualizado con frecuencia por su autor. Creo que incluso ha logrado el imposible de hacer funcionar el DNIe en Linux, lo cual es ya de sobresaliente alto.

Una pista: en una parte del proceso me piden firmar la petición con AutoFirma. Aunque en la página de la FNMT de renovación no se dice en ningún lado y durante los intentos previos no se avisaba de nada, quizá sea necesario tenerlo instalado para completar el proceso de firma. Demasiado tarde, con LinuxAE ya viene de serie y no hemos tenido que toquetear nada.

Conclusión.

Es intolerable que la FNMT obligue a realizar todos estos estrambóticos pasos a un usuario medio para renovar su certificado. Todo me recuerda este antiguo caso que posteé aquí en 2015. Esto aleja la Administración Electrónica del ciudadano y da una imagen de caos interno. ¿Alguna vez tendremos un panorama homogéneo y actualizado para usar estas herramientas? Les doy otros 5 años.


Esta es una foto de la Luna tomada desde España y desde Chile, el mismo día y a la misma hora solar.


Como se puede apreciar, la Luna se ve girada y reflejada de eje debido a que una foto es en el hemisferio norte y la otra en el hemisferio sur. La imagen de España está tomada apuntando al sudeste, la de Chile apuntando al nordeste.

Sencillo experimento científico para demostrar por uno mismo que la Tierra es esférica, y si no lo es que me lo expliquen los terraplanistas.

A ver si encuentro otra prueba equivalente para los conspiranoicos del SARS-CoV-2.