Podcast de Eduardo Collado

By Eduardo Collado

Redes, hosting y sistemas. Networking, Linux y más en español.

  1. 1.
    Integrated IS-IS
    36:28
  2. 2.
    Encarnaciones de Filesystems llenos con Linuxdoesmatter
    1:40:45
  3. 3.
    IPv4+
    19:56
  4. 4.
    Pssh con LinuxDoesMatter
    56:10
  5. 5.
    Selección de rutas
    21:54
  6. 6.
    Censura en Internet, qué es y cómo evitarla
    36:49
  7. 7.
    Representación numérica alternativa de direcciones IP
    14:52
  8. 8.
    Encrypted ClientHello (ECH)
    35:43
  1. 9.
    Wifi con Víctor de la Nuez
    1:19:32
  2. 10.
    Docker personal
    32:18
  3. 11.
    Conectarse a Internet no siempre es seguro
    21:48
  4. 12.
    Cisco vPC (virtual Port Channel)
    27:49
  5. 13.
    TTL y Hop Limit
    19:55
  6. 14.
    Cómo funciona traceroute
    18:05
  7. 15.
    Controlar el tráfico de SNI con Mikrotik
    18:02
  8. 16.
    El efecto del marketing online en nuestros servidores
    22:27
  9. 17.
    Gestión de paquetes en python con poetry
    30:55
  10. 18.
    Entornos virtuales con Python e instalación de scripts
    31:09
  11. 19.
    Bloqueo de webs aprovechando SNI
    28:52
  12. 20.
    Investigar vuestro hosting
    45:03
  13. 21.
    Resource Public Key Infrastructure (RPKI)
    25:54
  14. 22.
    Algoritmos de cifrado en SSH
    23:26
  15. 23.
    DNS sobre HTTPS con Adrian Almenar
    47:34
  16. 24.
    Seguridad personal y privacidad en Internet
    42:15
  17. 25.
    Introducción a Ansible
    1:00:17
  18. 26.
    Introducción a Ceph
    33:36
  19. 27.
    CDP y LLDP
    20:41
  20. 28.
    NC – NetCat
    38:41
  21. 29.
    SSHFS
    15:20
  22. 30.
    Ejecución remota de comandos con ssh
    18:43
  23. 31.
    Limpieza de vlans
    24:19
  24. 32.
    Incidencia por la expiración del antiguo certificado raíz de AddTrust
    19:44
  25. 33.
    Instalación y configuración de servidor FTP vsftp en Debian 10
    16:34
  26. 34.
    Cisco CoPP Policy
    19:43
  27. 35.
    HTTP/3 y QUIC
    31:07
  28. 36.
    Instalación y configuración de Jitsi
    32:34
  29. 37.
    SEO y direccionamiento IP
    17:13
  30. 38.
    Cumulus Linux – Primeros pasos con la maqueta
    28:26
  31. 39.
    Fichero /etc/network/interfaces en Debian
    20:29
  32. 40.
    Cumulus Linux – Introducción
    33:24
  33. 41.
    Flags de TCP
    26:27
  34. 42.
    Teletrabajo con Eduardo Taboada
    32:45
  35. 43.
    Maximizar el uso de WordPress en un servidor
    15:26
  36. 44.
    Arrancar un software como servicio en Debian
    18:22
  37. 45.
    Timeout y Keep Alive Timer de TCP
    18:25
  38. 46.
    Introducción a Nebula
    24:51
  39. 47.
    Tamaño de Ventana en TCP
    24:07
  40. 48.
    Mesa redonda sobre redes de gestión
    49:02
  41. 49.
    Configuración de WireGuard en Debian 10
    22:23
  42. 50.
    VPN y Hosting
    19:17

Listen to Podcast de Eduardo Collado now.

Listen to Podcast de Eduardo Collado in full in the Spotify app

\n
Tweet
\n\n\n\n

El otro dia, creo que el 25 o el 26 de Febrero me llegó un mensaje vía Telegram de la existencia del un draft sobre IPv4+ (https://tools.ietf.org/html/draft-tang-ipv4plus-06), un draft en el que se hablaba de una nueva forma de implementar IPv4 para como dice textualmente el draft:

\n\n\n\n

… IPv4 is very successful,simple and elegant continuation and expansion of the IPv4 is necessary …

https://tools.ietf.org/html/draft-tang-ipv4plus-06
\n\n\n\n

Y se define en el texto unas modificaciones sobre IPv4 para poder asumir más direccionamiento y lo hacen gracias a añadir los campos de Door Address:

\n\n\n\n
\"\"
Cabecera de IPv4+
\n\n\n\n

En concreto se añaden los campos Source Door Address y Destination Door Address.

\n\n\n\n

Estas “puertas” al estilo StarGate nos comunican replicas del direccionamiento IPv4, es decir, tendremos un direccionamiento IPv4 completo para la puerta 1 y otro direccionamiento IPv4 completo para la puerta 2, así pues podríamos ir desde la 192.168.1.1 de la puerta 1 a la 192.168.1.1 de la puerta 2.

\n\n\n\n

Es una forma bastante sencilla de entender el crecimiento del direccionamiento, e incluso ya se ofrece en el draft un esquema del direccionamiento donde a los países se les ha dado ya direccionamiento:

\n\n\n\n
1.67|0.0.0.0/0       ES  Spain\n\n1.251|0.0.0.0/0      The Moon\n\n1.252|0.0.0.0/0      Mars
\n\n\n\n

Y con esta solución ya está, ya no se acaban las direcciones IP, si un país necesitara más se le asigna otra puerta y ya está, la verdad es que es una solución fácil y sencilla.

\n\n\n\n

Entonces si es algo tan sencillo ¿por qué contesté yo lo siguiente?

\n\n\n\n
\n

A mi me parece una chapuza, pero vamos, ya han salido anteriormente cosas parecidas.

— Eduardo Collado @::1 \"🇪\"\"🇦🇪\"\"🇺\"\"🎤\"\"☁\" (@ecollado) March 2, 2021
\n
Mi contestación
\n\n\n\n

Realmente la propuesta de IPv4+ no es nueva y lleva dando vueltas desde 2018, yo ya la había visto antes, pero es algo a lo que no le dediqué tiempo ni esfuerzo y por eso no hablé de ello, pero en este caso me preocupa porque en muchos sitios se está hablando de esto como una solución y no lo es.

\n\n\n\n

IPv6 es cierto, tiene muchas direcciones, pero la gracia de IPv6 no es solamente tener muchas direcciones es mucho más e IPv4+ lo único que nos ofrece son más direcciones, que está muy bien, pero usamos IPv6 por muchos más motivos.

\n\n\n\n

Así de cabeza y sin pensar mucho IPv6 nos proporciona:

\n\n\n\n\n\n\n\n

En fin, ir a IPv6 no es sólo ir a más direcciones, es mucho más y es algo que tendríamos que valorar, y la verdad es que IPv4+ me recuerda a ese dicho castellano que dice “Más vale burro grande ande o no ande”, es decir, tener muchas direcciones.

\n\n\n\n

Además, lo de las puertas es maravilloso, así es más fácil que nunca bloquear países para censura y esas cosas, ya sabéis, nos permitiría tener Internets independientes por países muy fácil de implementar, la verdad es que es la única “ventaja” que le veo sobre IPv6, pero a mi no me parece ninguna ventaja, sino todo lo contrario.

\n\n\n\n

Si os parece vamos a hacer un repaso de las ventajas de IPv6 sobre IPv4 y por ende sobre IPv4+:

\n\n\n\n\n\n\n\n

Foto de cottonbro en Pexels

\n

La entrada IPv4+ se publicó primero en Eduardo Collado.

","id":"7dbvqtVXIhiZ9COUFJIqhI","images":[{"height":640,"url":"https://i.scdn.co/image/bc2b688f0aaec8d51b96cf555116f8c9f649ad6b","width":640},{"height":300,"url":"https://i.scdn.co/image/c5e4488aa2ac4b4a82abfbf0779a4a5547c0389d","width":300},{"height":64,"url":"https://i.scdn.co/image/05a1b3c7136ce4ca0a050245f17b7d97ec7d67e5","width":64}],"is_externally_hosted":false,"is_paywall_content":false,"is_playable":true,"language":"es","languages":["es"],"name":"IPv4+","release_date":"2021-03-05","release_date_precision":"day","type":"episode","uri":"spotify:episode:7dbvqtVXIhiZ9COUFJIqhI"},{"audio_preview_url":"https://p.scdn.co/mp3-preview/91bb657087cedf92b47365eeda516293059a3b31","content_type":"PODCAST_EPISODE","description":"Hoy nos visita LinuxDoesMatter para hablarnos de pssh y de cómo utilizarlo en producción, en la vida real, para migrar un NAS. pssh y el set completo de herramientas que viene con el paquete: pssh … La entrada Pssh con LinuxDoesMatter se publicó primero en Eduardo Collado.","duration_ms":3370436,"explicit":false,"external_urls":{"spotify":"https://open.spotify.com/episode/4FXxefmF69B4GjY61QoeRQ"},"href":"https://api.spotify.com/v1/episodes/4FXxefmF69B4GjY61QoeRQ","html_description":"

Hoy nos visita LinuxDoesMatter para hablarnos de pssh y de cómo utilizarlo en producción, en la vida real, para migrar un NAS.

\n\n\n\n

pssh y el set completo de herramientas que viene con el paquete:

\n\n\n\n\n\n\n\n

Usando comandos ssh tradicionales podríamos realizar una tarea en 350 servidores simplemente dedicando una línea a cada uno, pero como se puede ver no es la forma más óptima.

\n\n\n\n
ssh root@host01 ‘mkdir /ora_backup;chmod 0755 /ora_backup;chown -R group:oinstall /ora_backup’
ssh root@host02 ‘mkdir /ora_backup;chmod 0755 /ora_backup;chown -R group:oinstall /ora_backup’
….
ssh root@host350 ‘mkdir /ora_backup;chmod 0755 /ora_backup;chown -R group:oinstall /ora_backup’
\n\n\n\n

Solución:

\n\n\n\n

Antes de nada explicamos qué es el usuario para accionas masivas, útil tb para ansible/pssh/otros:

\n\n\n\n

1.- Lo vamos a llamar por ejemplo linuxadm.

\n\n\n\n

2.- Todas las máquinas tienen desplegado este usuario linuxadm y la máquina de salto desde donde voy a hacer la accion masiva accede con este usuario sin contraseña a todas las maquinas impactadas. La clave pública de linuxadm esta trasmitida en todas las maquinas a las que se da soporte.

\n\n\n\n

Las máquinas se despliegan así, con la clave pública de linuxadm en

\n\n\n\n

/home/linuxadm/.ssh/authorized_keys.

\n\n\n\n

3.- En todas las máquinas de destino linuxadm es usuario sudoer y puede escalar sin contraseña

\n\n\n\n

#cat /etc/sudoers.d/linuxadm o la lines de abajo tb en /etc/sudoers (visudo)

\n\n\n\n
linuxadm ALL=(ALL) NOPASSWD: ALL en las máquinas de destino
\n\n\n\n

Una vez hechos estos tres primeros pasos vamos a la máquina de salto:

\n\n\n\n

Estamos en la máquina de salto…

\n\n\n\n

me convierto en linuxadm $ sudo su – linuxadm (intro)

\n\n\n\n

$whoami
linuxadm
$ cat hosts.txt
host01
host02

host350
$cat hosts.txt | wc -l
350
$

\n\n\n\n

llegó el momento:

\n\n\n\n
$ pssh -h hosts.txt -o out_mkdir -e error_mkdir -i “sudo mkdir /ora_backup”
\n\n\n\n
$ pssh -h hosts.txt -o out_chmod -e error_chmod -i “sudo chmod 0755 /ora_backup”
\n\n\n\n
$ pssh -h hosts.txt -o out_tchown -e error_chown -i “sudo chown oracle:oinstall /ora_backup”
\n\n\n\n

Comprobar

\n\n\n\n
$ pssh -X -q -h hosts.txt -i “sudo ls -l /ora_backup”
\n\n\n\n

Recordatorio. Linea en /etc/fstab capturando un share NFS

\n\n\n\n
server01:/usr/local/pub /pub nfs nfs auto,noatime,nolock,bg,intr,tcp,actimeo=1800 0 0
\n\n\n\n

para desmontar a mano:

\n\n\n\n
umount /pub o bien umount -l /pub (fozarlo) >>> comentar lsof o fuser
\n\n\n\n

Tarea “migracion de nas”

\n\n\n\n

La cabina (o el servidor NFS) server01 va a ser migrada a srvnew05

\n\n\n\n

En esos 350 servidores toda linea como esta:

\n\n\n\n
server01:/usr/local/pub /pub nfs nfs auto,noatime,nolock,bg,intr,tcp,actimeo=1800 0 0
\n\n\n\n

tiene que acabar como esta:

\n\n\n\n
srvnew05:/usr/local/pub /pub nfs nfs auto,noatime,nolock,bg,intr,tcp,actimeo=1800 0 0
\n\n\n\n

Acciones a emprender…

\n\n\n\n

1.- Crear una ventana de downtime para el cambio. Tal día a tal hora los aplicativos que usan esos shares NFS deben estar parados. El downtime o ventana de tiempo hay que a ser posible respetarlo. Puede prolongarse si fuerza mayor

\n\n\n\n

2.- Copiamos un script para desmontar los shares en las 350 máquinas. pscp

\n\n\n\n
$ pscp -h hosts.txt -o out_copy -e err_copy umount.sh /tmp
\n\n\n\n

3.- Desmontamos todas la entradas implicadas. pssh

\n\n\n\n
$ pssh -X -q -h hosts.txt -o out_umount -e error_umount -i sudo /tmp/umount.sh
\n\n\n\n

Copiamos o copiarán los contenidos de la cabina server01 a la cabina srvnew05
Se respetan el nombre de los shares nfs.

\n\n\n\n

Esto tomará su tiempo pueden ser horas… dentro del periodo de downtime o ventana de mantenimiento.

\n\n\n\n

Recordad que sed -i cambiaría cada ocurrencia de server01 por srvnew05. En todfos los /etc/fstab impactados. El script a tal efecto hará esto cuando toque.

\n\n\n\n

4.- Subimos el script que cambia server01 por srvnew05 en los /etc/fstab y vuelve a montar

\n\n\n\n
$ pscp -h hosts.txt -o out_copy2 -e err_copy2 newname_remount.sh /tmp
\n\n\n\n

Ejecutamos que acabamos de subir a todas las máquinas el script que cambia cada ocurrencia de server01 en cada /etc/fstab por srvnew05 y volverá a montar los filesystems

\n\n\n\n
$ pssh -X -q -h hosts.txt -o out_newremo -e error_newremo -i sudo /tmp/newname_remount.sh
\n\n\n\n

Y eso es todo… puedo comentar lo de la herramienta de tiquets las subtareas y dptos implicados

\n\n\n\n

Comunicar el fin de la tarea a todos los “stakeholders”.

\n\n\n\n

Los reponsables de los aplicativos impactados por el cambio arrancarán sus programas/aplicaciones para ver si todo funciona correctamente.

\n

La entrada Pssh con LinuxDoesMatter se publicó primero en Eduardo Collado.

","id":"4FXxefmF69B4GjY61QoeRQ","images":[{"height":640,"url":"https://i.scdn.co/image/bc2b688f0aaec8d51b96cf555116f8c9f649ad6b","width":640},{"height":300,"url":"https://i.scdn.co/image/c5e4488aa2ac4b4a82abfbf0779a4a5547c0389d","width":300},{"height":64,"url":"https://i.scdn.co/image/05a1b3c7136ce4ca0a050245f17b7d97ec7d67e5","width":64}],"is_externally_hosted":false,"is_paywall_content":false,"is_playable":true,"language":"es","languages":["es"],"name":"Pssh con LinuxDoesMatter","release_date":"2021-02-20","release_date_precision":"day","type":"episode","uri":"spotify:episode:4FXxefmF69B4GjY61QoeRQ"},{"audio_preview_url":"https://p.scdn.co/mp3-preview/740e2bf3e493b2fc5db156f7468026ea3074af1a","content_type":"PODCAST_EPISODE","description":"La selección de rutas es un proceso bastante sencillo que siempre funciona igual, solamente tenemos una extensión a este proceso en BGP. El otro día en el grupo de Telegram surgió por parte de una … La entrada Selección de rutas se publicó primero en Eduardo Collado.","duration_ms":1314795,"explicit":false,"external_urls":{"spotify":"https://open.spotify.com/episode/3uN1uaUp0R4uJt5ank0PVx"},"href":"https://api.spotify.com/v1/episodes/3uN1uaUp0R4uJt5ank0PVx","html_description":"

La selección de rutas es un proceso bastante sencillo que siempre funciona igual, solamente tenemos una extensión a este proceso en BGP.

\n\n\n\n

El otro día en el grupo de Telegram surgió por parte de una persona una duda sobre si una ruta al redistribuirse de un protocolo a otro podría degenerar en bucle.

\n\n\n\n

En cualquier tabla de rutas, incluidas las de un PC, tenemos 5 datos fundamentales por cada ruta:

\n\n\n\n\n\n\n\n

Esto funciona exactamente igual en IPv4 y en IPv6, no hay ninguna diferencia, el procedimiento es el mismo.

\n\n\n\n

La dirección de destino

\n\n\n\n

La ruta es al dirección que identifica la red, por ejemplo 192.168.10.0, esta dirección como ya sabéis por si misma no identifica nada, pues necesita la máscara de red.

\n\n\n\n

Máscara de red

\n\n\n\n

La máscara de red identifica cómo de restrictiva es la ruta.

\n\n\n\n

No es lo mismo 192.168.10.0/24 que 192.168.10.0/25, en el primer caso hay 256 direcciones en la red y en segundo 128. En este caso el segundo caso, el /25 sería más específico o restrictivo.

\n\n\n\n

En una tabla de rutas podemos tener las siguientes rutas como ejemplo:

\n\n\n\n
DirecciónMáscaraProtocoloMétricaSiguiente salto
192.168.10.024OSPF1010.10.10.1
192.168.10.025OSPF1010.10.10.2
192.168.10.026OSPF1010.10.10.3
Ejemplo de tabla de ruta
\n\n\n\n

La primera decisión se tomará en función de lo específica o restrictiva que sea la ruta.

\n\n\n\n

Si queremos ir a la 192.168.10.4 veremos que está en la red 192.168.10.0 y ahí tenemos tres opciones, la de la /24, la de la /25 y la de la /26, pues bien, elegiremos la de la /26 porque es más específica, hay menos direcciones en esa red. El siguiente salto sería la 10.10.10.3.

\n\n\n\n

Si quisiéramos ir a la 192.168.10.66 iríamos por la de la /25 y la 192.168.10.140 iríamos por la de la /24

\n\n\n\n

Protocolo

\n\n\n\n

Cada protocolo tiene una prioridad diferente y a esa prioridad nos referiremos como distancia administrativa. Normalmente se asume el estándar de Cisco, pero puede ser diferente como es en el caso de Huawei.

\n\n\n\n
Protocolo de RuteoHuawei Route PreferenceCisco Administrative distance
Directamente conectada00
OSPF10110
IS-IS15115
ESTATICO601
RIP 100120
OSPF EXTERNO (ASE)150110
OSPF NSSA150110
IBGP255200
EBGP25520
vía: https://forum.huawei.com/enterprise/es/comparaci%C3%B3n-route-preference-vs-administrative-distance/thread/495955-100235
\n\n\n\n

Lo normal será utilizar las distancias de cisco, aunque el valor de las distancias administrativas siempre se puede fijar.

\n\n\n\n

Elegiremos siempre la de menor distancia administrativa.

\n\n\n\n

Métrica

\n\n\n\n

La métrica se refiere al coste de esa ruta en ese protocolo concreto, por ejemplo si estamos en RIP pues son saltos, en OSPF es 108/ancho_de_banda bps, etc.

\n\n\n\n

Aquí también se elegirá al que tenga la métrica o coste más bajo.

\n\n\n\n

Selección de rutas

\n\n\n\n

La selección de ruta se hará de la siguiente manera:

\n\n\n\n
  1. Seleccionaremos la ruta más específica (Máscara con más bits).
  2. Con dos igual de específicas elegiremos el protocolo con menor distancia administrativa.
  3. Si hay empate, elegiremos la que tenga menor coste.
  4. Si seguimos teniendo empate lo normal (depende de la plataforma) será que el tráfico se balancee, en cisco hasta en 6 caminos paralelos.
\n

La entrada Selección de rutas se publicó primero en Eduardo Collado.

","id":"3uN1uaUp0R4uJt5ank0PVx","images":[{"height":640,"url":"https://i.scdn.co/image/bc2b688f0aaec8d51b96cf555116f8c9f649ad6b","width":640},{"height":300,"url":"https://i.scdn.co/image/c5e4488aa2ac4b4a82abfbf0779a4a5547c0389d","width":300},{"height":64,"url":"https://i.scdn.co/image/05a1b3c7136ce4ca0a050245f17b7d97ec7d67e5","width":64}],"is_externally_hosted":false,"is_paywall_content":false,"is_playable":true,"language":"es","languages":["es"],"name":"Selección de rutas","release_date":"2021-01-30","release_date_precision":"day","type":"episode","uri":"spotify:episode:3uN1uaUp0R4uJt5ank0PVx"},{"audio_preview_url":"https://p.scdn.co/mp3-preview/64119112ec8580a93191c076fa64c08e89fa1d7c","content_type":"PODCAST_EPISODE","description":"La línea que separa la censura y la protección es fina, muy fina, la censura en Internet a veces es necesaria, pero es extremadamente difícil mantenerse dentro de la necesidad. Está claro que no todo … La entrada Censura en Internet, qué es y cómo evitarla se publicó primero en Eduardo Collado.","duration_ms":2209451,"explicit":false,"external_urls":{"spotify":"https://open.spotify.com/episode/2BFh3jF56ZsPUqtRC3nqPQ"},"href":"https://api.spotify.com/v1/episodes/2BFh3jF56ZsPUqtRC3nqPQ","html_description":"

La línea que separa la censura y la protección es fina, muy fina, la censura en Internet a veces es necesaria, pero es extremadamente difícil mantenerse dentro de la necesidad.

\n\n\n\n

Está claro que no todo el contenido de Internet debe ser accesible y hay que proteger a los usuarios. El problema es que las operadoras ya tienen las herramientas y los usuarios lo único que podemos hacer es confiar que esas herramientas son para protegernos.

\n\n\n\n

De todos modos este es un podcast técnico y ahora mismo no me interesa hacer un alegato moral ni filosófico ni nada parecido, simplemente quiero explicaros en qué consiste y cómo evitarla en la medida de lo posible la censura en Internet.

\n\n\n\n

Neutralidad de la Red

\n\n\n\n

¿Qué es una red?, una estructura formada por dispositivos, enlaces y protocolos que transporta información de un lugar a otro.

\n\n\n\n

Nos da igual el contenido, de hecho, el contenido no afecta en lo más mínimo más allá de seleccionar un protocolo u otro dependiendo de si queremos establecer una sesión o no, si queremos retransmisión a tiempo real o no, y cosas así, pero nunca nos metemos en el contenido en si.

\n\n\n\n

A ese concepto es a lo que se llama Neutralidad de la Red, a poner a disposición de los usuarios una red para transportar información, sea la que sea.

\n\n\n\n

En muchas redes sin embargo se bloquea, se filtra o incluso se degrada determinado tráfico.

\n\n\n\n

Esto lo hacen operadoras, universidades, colegios, autoridades o incluso padres, realmente cualquiera que gestione una red o que tenga poder sobre una gestión de red.

\n\n\n\n

Técnicas de Bloqueo

\n\n\n\n

Las técnicas para bloquear o filtrar contenido son las siguientes:

\n\n\n\n\n\n\n\n

Controlar la censura

\n\n\n\n

Hay que tener cuidado de no confundir caídas de servicio con censura y hay que tener en cuenta que lo normal es que desde nuestro punto de vista no haya ninguna diferencia, un servicio que no funciona y ya está, aunque a veces tenemos mensajes o incluso el famoso error 451, que yo nunca he visto,

\n\n\n\n

Para saber si hay censura o no disponemos de herramientas que realizan una monitorización como netblocks u OONI aunque muchas veces se puede deducir por las respuestas que nos de el servidor.

\n\n\n\n

Luego tenemos los famosos informes de transparencia de Google y de otras empresas que los publican.

\n\n\n\n

Anonimato

\n\n\n\n

Para evitar la censura tenemos varias opciones, obviamente también hay métodos para evitarlas, ahí es donde radica un poco la complejidad.

\n\n\n\n

Lo primero de todo es entender que en Internet el anonimato no existe, sobre todo en las conexiones sin encriptación extremo a extremo, y aún en las conexiones encriptadas podemos saber origen y destino.

\n\n\n\n

De todos modos, en muchas webs se puede extraer una gran cantidad de información como el fingerprint que hace que podamos identificar navegadores de forma unívoca y con ese fingerprint podemos trackear usuarios, así que cuidado con esto si queréis mantener un anonimato.

\n\n\n\n

Según los navegadores tenéis distintas formas de evitar todo esto con plugins y configuraciones.

\n\n\n\n

En cuanto a otras cosas ya sabéis que no es buena idea usar según qué buscadores, etc… pero esto realmente no afecta a la censura, así que no es motivo de discusión aquí.

\n\n\n\n

Evitar la censura

\n\n\n\n

Básicamente podemos hacer tres cosas para intentar evitar la censura:

\n\n\n\n\n\n\n\n

Cambio de DNS

\n\n\n\n

El Cambio de DNS es muy sencillo, consiste en hacer las peticiones de DNS a otro resolutor, pero mucho cuidado porque como ya os comenté en su momento una petición de DNS al puerto 53 puede ser capturada y redirigida a otro servidor de DNS.

\n\n\n\n

Así que el instalarse un Pi-Hole y ya está en casa puede no valer para nada, el configurarse en el ordenador otro DNS, como el 1.1.1.1 también puede no valer para nada. Es necesario asegurar la respuesta del servidor DNS, es decir, tenemos que asegurarnos que el servidor de DNS que nos responde es quien dice ser y además tenemos que asegurarnos que esa respuesta no ha sido modificada.

\n\n\n\n

Para eso tenemos el DNSoHTTPS o incluso el DNSoTLS, aunque este último es muy fácilmente bloqueable con un firewall muy sencillo.

\n\n\n\n

Lo importante es usar un servidor de DNS en el que confiéis y asegurar la conexión con protocolo, con vpn o como sea.

\n\n\n\n
\n
Configurar DNS por HTTPS en Pi-hole
\n
Configuración de DNSoHTTPS en Pi-Hole
\n\n\n\n

VPN

\n\n\n\n

Esto es fundamental, pero no asegura nada tampoco si usáis cualquier VPN. (Comentar vpn de google)

\n\n\n\n

La VPN sirve para que punto de exposición vuestro se cambie de lugar. Es muy importante asegurar donde os conectáis porque la VPN sólo asegura el tráfico desde vuestro lugar hasta el punto de salida.

\n\n\n\n

Tor

\n\n\n\n

Tor tiene la gracia de dividir el conocimiento de la conexión de forma que nadie conoce el origen y el destino a la vez pasando por tres nodos, lo cual le hace bastante seguro y es una capa que puede ser interesante.

\n\n\n\n

Hay que tener en cuenta que el tráfico de Tor también puede ser bloqueado y que sólo sirve para el tráfico TCP.

\n\n\n\n

Foto de Karolina Grabowska en Pexels

\n

La entrada Censura en Internet, qué es y cómo evitarla se publicó primero en Eduardo Collado.

","id":"2BFh3jF56ZsPUqtRC3nqPQ","images":[{"height":640,"url":"https://i.scdn.co/image/bc2b688f0aaec8d51b96cf555116f8c9f649ad6b","width":640},{"height":300,"url":"https://i.scdn.co/image/c5e4488aa2ac4b4a82abfbf0779a4a5547c0389d","width":300},{"height":64,"url":"https://i.scdn.co/image/05a1b3c7136ce4ca0a050245f17b7d97ec7d67e5","width":64}],"is_externally_hosted":false,"is_paywall_content":false,"is_playable":true,"language":"es","languages":["es"],"name":"Censura en Internet, qué es y cómo evitarla","release_date":"2021-01-08","release_date_precision":"day","type":"episode","uri":"spotify:episode:2BFh3jF56ZsPUqtRC3nqPQ"},{"audio_preview_url":"https://p.scdn.co/mp3-preview/98decfac31c79922d4e31544b13844a1cb27d1e5","content_type":"PODCAST_EPISODE","description":"Me pasan el siguiente enlace titulado Fun with IP address parsing (Representación numérica alternativa de direcciones IP) y que hace que te explote la cabeza. ¿Quién lo ha encontrado? Mi compañero Javier que últimamente lo … La entrada Representación numérica alternativa de direcciones IP se publicó primero en Eduardo Collado.","duration_ms":892885,"explicit":false,"external_urls":{"spotify":"https://open.spotify.com/episode/46Y7Npl4J1UxgM0VRQRXmZ"},"href":"https://api.spotify.com/v1/episodes/46Y7Npl4J1UxgM0VRQRXmZ","html_description":"

Me pasan el siguiente enlace titulado Fun with IP address parsing (Representación numérica alternativa de direcciones IP) y que hace que te explote la cabeza.

\n\n\n\n

¿Quién lo ha encontrado? Mi compañero Javier que últimamente lo encuentra de todo y me lo ha pasado mi compañero Adrian.

\n\n\n\n
[edu@andromeda ~]$ ping 192.11010305\nPING 192.11010305 (192.168.1.1) 56(84) bytes of data.\n[edu@andromeda ~]$ ping 192.168.257\nPING 192.168.257 (192.168.1.1) 56(84) bytes of data.\n[edu@andromeda ~]$ ping 192.168.1.1\nPING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
\n\n\n\n

Seguro que habéis visto en algún momento eso de:

\n\n\n\n
[edu@andromeda ~]$ ping 127.1\nPING 127.1 (127.0.0.1) 56(84) bytes of data.\n[edu@andromeda ~]$ ping 127.0.1\nPING 127.0.1 (127.0.0.1) 56(84) bytes of data.
\n\n\n\n

Pues todo esto es porque se puede usar otra nomenclatura para las direcciones IP, no hay problema, aunque no os recomiendo usar esta nomenclatura porque no es clara, y además, no todos los equipos lo soportan, por ejemplo, los equipos Mikrotik o los Nexus de Cisco que yo he probado no lo soportan.

\n\n\n\n

¿Y esto para qué sirve? Esta nomenclatura es muy útil para hacer pequeños scripts que trabajen con direcciones IP, aunque es cierto, que hay otras formas de hacerlo, las librerías existen y hay muchas para hacer esto mismo en cualquier lenguaje, pero esta opción está y se puede usar.

\n\n\n\n

Foto de Black ice en Pexels

\n

La entrada Representación numérica alternativa de direcciones IP se publicó primero en Eduardo Collado.

","id":"46Y7Npl4J1UxgM0VRQRXmZ","images":[{"height":640,"url":"https://i.scdn.co/image/bc2b688f0aaec8d51b96cf555116f8c9f649ad6b","width":640},{"height":300,"url":"https://i.scdn.co/image/c5e4488aa2ac4b4a82abfbf0779a4a5547c0389d","width":300},{"height":64,"url":"https://i.scdn.co/image/05a1b3c7136ce4ca0a050245f17b7d97ec7d67e5","width":64}],"is_externally_hosted":false,"is_paywall_content":false,"is_playable":true,"language":"es","languages":["es"],"name":"Representación numérica alternativa de direcciones IP","release_date":"2020-12-28","release_date_precision":"day","type":"episode","uri":"spotify:episode:46Y7Npl4J1UxgM0VRQRXmZ"},{"audio_preview_url":"https://p.scdn.co/mp3-preview/25fffc401708b668935fda783481254652334e7a","content_type":"PODCAST_EPISODE","description":"Imaginad que estáis en casa tranquilamente, ha sido un día duro y es el momento de ponerte a descansar. Ahora os ponéis a leer algo que no necesite quemar neuronas y desconectar. Entonces te encuentras … La entrada Encrypted ClientHello (ECH) se publicó primero en Eduardo Collado.","duration_ms":2143509,"explicit":false,"external_urls":{"spotify":"https://open.spotify.com/episode/0efzRkA7XHSfTJ5CubNcC0"},"href":"https://api.spotify.com/v1/episodes/0efzRkA7XHSfTJ5CubNcC0","html_description":"

Imaginad que estáis en casa tranquilamente, ha sido un día duro y es el momento de ponerte a descansar. Ahora os ponéis a leer algo que no necesite quemar neuronas y desconectar.

\n\n\n\n

Entonces te encuentras que mi compañero en Tecnocrática Javier va y pone el siguiente enlace Good-bye ESNI, hello ECH!, y claro empiezas a leer y una cosa lleva a la otra y la tarde se te va sin querer.

\n\n\n\n

Hoy voy a contaros lo que he podido averiguar sobre el ECH y que tiene de novedoso respecto a tecnologías como ESNI.

\n\n\n\n

SNI ya sabemos los problemas que tiene y es voz populi, incluso se habla de ello en bandaancha. (Visto también en el grupo de Telegram), pero todavía podemos hacer algo.

\n\n\n\n

Por otro lado ECH realmente sale por primera vez en un draft de la IETF de Octubre de 2020, así que está calentito todavía y recién salido del horno, si es que podemos considerarlo como ya salido del horno.

\n\n\n\n

Si nos leemos el Draft todo es más o menos normal hasta que llegamos a la siguiente frase

\n\n\n\n

ECH permite al cliente cifrar extensiones ClientHello sensibles,p. ej., SNI, ALPN, etc., bajo la clave pública del cliente servidor.

draft-ietf-tls-esni-08 – https://tools.ietf.org/html/draft-ietf-tls-esni-08
\n\n\n\n

Y claro, aquí el interés se dispara.

\n\n\n\n

La comunicación en Internet puede ir cifrada, es lo ideal, y para que ese cifrado pueda establecerse se requiere de claves, una pareja de claves que no puedan ser averiguadas por alguien que esté en medio.

\n\n\n\n

El protocolo utilizado para realizar esta función es TLS.

\n\n\n\n

TLS por otro lado es un protocolo maravilloso y que hace de maravilla su trabajo. El problema de TLS es que hay partes de la negociación que se realizan en claro, sin encriptar.

\n\n\n\n

La información que se puede ver sin encriptar incluye información como el origen y el destino y claro, eso a ojos de alguien que esté viendo todos y cada uno de los paquetes que viajan por la red es una autentica mina.

\n\n\n\n

Los bloqueos de SNI son precisamente por esto, alguien que está en medio decide viendo los parámetros no encriptados en la negociación en claro del handshake bloquear el destino que se puede ver porque no va encriptado.

\n\n\n\n

Esto a nivel técnico es lo que es, pero a nivel social pues imaginad lo que puede representar el tener la capacidad de bloquear tráfico https contra webs que no nos interese que vean nuestros usuarios/clientes. Páginas de descargas de música, páginas de empresas de la competencia, páginas de partidos políticos, en fin … las posibilidades a nivel técnico son muchísimas, censura al fin y al cabo.

\n\n\n\n

Pero podemos hacer algo para que no se negocie nada en plano y que esté todo encriptado y por tanto que nuestra información no pueda ser inspeccionada por elementos intermedios.

\n\n\n\n

La opción del ESNI está ahí, pero ahora estamos en el desarrollo de algo, que a mis ojos, es muchísimo mejor, y es el ECH (Encrypted ClientHello).

\n\n\n\n

El ECH hace que el handshake del TLS se mantenga secreto, y esto solucionaría el problema del SNI, pero no se queda en solucionar el problema del SNI, sino que soluciona todos los problemas generados por la negociación en plano del handshake del TLS.

\n\n\n\n

La extensión de TLS ALPN que decide qué protocolo superior se usará una vez realizado el handshake de TLS también se solucionaría con el ECH pues ya no se podrá ver en los paquetes al ir encriptada.

\n\n\n\n

Buscar una opción al problema del SNI y a los bloqueos indiscriminados que estamos sufriendo por parte de algunas de las grandes operadoras, al menos en España, es una labor de todos y cada uno puede aportar su pequeño granito de arena, y hoy estoy aquí para hablaros de opciones de mejora del TLS.

\n\n\n\n

La problemática

\n\n\n\n

Entre el cliente y el servidor no sólo hay un intercambio de claves, es algo mucho más complejo y por tanto sensible.

\n\n\n\n

Entre cliente y servidor en TLS se intercambian una serie de características y parámetros:

\n\n\n\n\n\n\n\n

Esa información es crítica y es necesario preservarla al máximo.

\n\n\n\n

Ya sabéis que la extensión SNI se utiliza por el cliente para indicar al servidor a qué sitio web quiere acceder.

\n\n\n\n

La extensión ALPN se utiliza para decidir el protocolo de capa de aplicación a utilizar cuando finalice la conexión TLS.

\n\n\n\n

En fin, es un tema sensible preservar la privacidad de esta información que a día de hoy no se encripta.

\n\n\n\n

Para poder encriptar toda esa información y evitar las fugas de información o de privacidad se hace necesario disponer de cifrado en el handshake, pero claro, esto es lo del huevo y la gallina.

\n\n\n\n

¿Cómo el cliente y el servidor pueden elegir una clave de cifrado para el handshake si precisamente el handshake es para obtener eso mismo?

\n\n\n\n

La solución podría pasar por utilizar menos parámetros, evitando los más sensibles, porque al final para negociar unas claves algo de información en claro pasará.

\n\n\n\n

TLS 1.3

\n\n\n\n

Antes de TLS 1.3 no había cifrado de enlace en TLS, a nadie se le ocurrió, y de hecho fue en 2013, tras las revelaciones de Snowden, cuando la comunidad de la IETF se puso en marcha para considerar cómo contrarrestar la amenaza de la vigilancia masiva.

\n\n\n\n

En 2014 comenzó el proceso de estandarización de TLS 1.3 y el objetivo era claro, cifrar la cantidad de información posible, pero no se consiguió cifrar todo y quedaron parámetros sin cifrar, entre ellos nuestro amigo SNI.

\n\n\n\n

Antes de seguir dejadme describir cómo funciona TLS 1.3.

\n\n\n\n\n\n\n\n

A partir de aquí el cliente ya conoce su llave y la del servidor, con lo que ya se puede encriptar porque ya hemos tenido el intercambio de llaves

\n\n\n\n\n\n\n\n

Vamos a parar aquí un momento.

\n\n\n\n

Hemos dicho que tanto el ClientHello como el ServerHello van sin encriptar y es porque hasta que no tenemos esos dos mensajes no podemos tener el par de llaves necesarias para la encriptación.

\n\n\n\n

Pero podemos pensar que sería buena idea sacar del ClientHello el SNI y lo transmitimos más tarde, pero si no tenemos el SNI no podemos ver el host, con lo que no podemos generar las llaves para el certificado. Esta es la razón por la que la información de SNI se envía sin encriptar en TLS 1.3.

\n\n\n\n

ESNI

\n\n\n\n

Todos tenemos en mente las siglas ESNI (Encrypted Server Name Indicator), que es una opción que haría que el SNI fuera encriptado, pero no soluciona nada más, no solucionamos el problema de ALPN, sólo el SNI.

\n\n\n\n

¿Cómo funcionario?, pues realmente la única diferencia con TLS con SNI sería que utilizaremos un DNS para dejar ahí un registro TXT con la clave pública del cifrado del ESNI.

\n\n\n\n

Juntando la posibilidad e encriptar el SNI con una llave pública del servidor que luego colgaríamos del DNS y con la posibilidad de utilizar DNSoHTTPS pues en principio deberíamos de tener ya algo funcional.

\n\n\n\n

Una limitación que tiene ESNI consiste en que si falla el descrifrado por la razón que sea la conexión se aborta.

\n\n\n\n

Algo que hay que tener con ESNI es la capacidad de ir rotando esa llave de vez en cuando, CloudFlare por ejemplo la rota cada hora parece ser.

\n\n\n\n

ECH

\n\n\n\n

Pero claro, si queremos una solución más completa ESNI no nos vale por lo que hemos dicho antes, no cifra todo, sólamente la extensión SNI, así que la opción buena es cifrar el ClientHello en si, algo que no se puede hacer.

\n\n\n\n

Si no podemos encriptar el ClientHello sí que podemos convertirlo en ClientHelloOuter (sin cifrar) y ClientHelloInner (cifrado) y siguiendo un esquema parecido al de ESNI, la diferencia es que aquí sí que terminamos cifrando todo y aunque fallase el descifrado no se abortaría la conexión.

\n\n\n\n

Vamos a verlo con más detenimiento.

\n\n\n\n

En el ClientHelloInner(el cifrado) el cliente indica los parámetros que necesita para la conexión, incluyendo el SNI origen del servidor al que quiere llegar, la lista ALPN.

\n\n\n\n

En el ClientHelloOutter (el no cifrado) no se usa para la conexión real y la información se completa de forma automática, el servidor indicará al cliente que no pudo llegar a si destino previsto por error en el descifrado, pero enviando la llave pública del ECH correcta. De esta forma el cliente puede volver a enviar el mensaje corrigiendo la configuración.

\n\n\n\n

El objetivo de ECH es que las peticiones realizadas a un proveedor de servicio sean indistinguibles entre si

\n\n\n\n

Todo esto todavía está bastante verde todavía y a partir del próximo borrador se comenzarán ya a hacer pruebas.

\n\n\n\n

Foto de Dan Nelson en Pexels

\n

La entrada Encrypted ClientHello (ECH) se publicó primero en Eduardo Collado.

","id":"0efzRkA7XHSfTJ5CubNcC0","images":[{"height":640,"url":"https://i.scdn.co/image/bc2b688f0aaec8d51b96cf555116f8c9f649ad6b","width":640},{"height":300,"url":"https://i.scdn.co/image/c5e4488aa2ac4b4a82abfbf0779a4a5547c0389d","width":300},{"height":64,"url":"https://i.scdn.co/image/05a1b3c7136ce4ca0a050245f17b7d97ec7d67e5","width":64}],"is_externally_hosted":false,"is_paywall_content":false,"is_playable":true,"language":"es","languages":["es"],"name":"Encrypted ClientHello (ECH)","release_date":"2020-12-13","release_date_precision":"day","type":"episode","uri":"spotify:episode:0efzRkA7XHSfTJ5CubNcC0"},{"audio_preview_url":"https://p.scdn.co/mp3-preview/9d786c8ed483c34310dd6bce0199f740aff1d2a1","content_type":"PODCAST_EPISODE","description":"Hoy una charla formativa de Wifi a cargo de Víctor de la Nuez de WifiCanaras. La charla de hoy que os dejo aquí en vídeo y en audio la grabamos ayer en directo en Twitch. … La entrada Wifi con Víctor de la Nuez se publicó primero en Eduardo Collado.","duration_ms":4772139,"explicit":false,"external_urls":{"spotify":"https://open.spotify.com/episode/6NuWHxFoxNPdve23swxDta"},"href":"https://api.spotify.com/v1/episodes/6NuWHxFoxNPdve23swxDta","html_description":"

Hoy una charla formativa de Wifi a cargo de Víctor de la Nuez de WifiCanaras.

\n\n\n\n

La charla de hoy que os dejo aquí en vídeo y en audio la grabamos ayer en directo en Twitch.

\n\n\n\n

En la charla Víctor nos da un repaso de los conceptos de Wifi más necesarios para poder montar una red en condiciones, incluso hablando de superposición de plantas, por si queréis dar Wifi en un emplazamiento con varias plantas.

\n\n\n\n

Podéis seguir a Víctor en:

\n\n\n\n\n\n\n\n

Mi parte del audio no quedó muy bien esta vez, pero por suerte lo importante es lo que contaba Víctor, espero que os guste.

\n\n\n\n
\n\n
\n\n\n\n

Foto de P C en Pexels

\n

La entrada Wifi con Víctor de la Nuez se publicó primero en Eduardo Collado.

","id":"6NuWHxFoxNPdve23swxDta","images":[{"height":640,"url":"https://i.scdn.co/image/bc2b688f0aaec8d51b96cf555116f8c9f649ad6b","width":640},{"height":300,"url":"https://i.scdn.co/image/c5e4488aa2ac4b4a82abfbf0779a4a5547c0389d","width":300},{"height":64,"url":"https://i.scdn.co/image/05a1b3c7136ce4ca0a050245f17b7d97ec7d67e5","width":64}],"is_externally_hosted":false,"is_paywall_content":false,"is_playable":true,"language":"es","languages":["es"],"name":"Wifi con Víctor de la Nuez","release_date":"2020-12-13","release_date_precision":"day","type":"episode","uri":"spotify:episode:6NuWHxFoxNPdve23swxDta"},{"audio_preview_url":"https://p.scdn.co/mp3-preview/7443c9101106b5b2573f1b18648fcf717db89c7e","content_type":"PODCAST_EPISODE","description":"Cuando pensamos en cualquier tipo de virtualización por alguna razón pensamos en grandes servidores, empresas de hosting, grandes empresas, pero pocas veces pensamos en nuestros portátiles y para eso tenemos el Docker Personal. Como ya … La entrada Docker personal se publicó primero en Eduardo Collado.","duration_ms":1938645,"explicit":false,"external_urls":{"spotify":"https://open.spotify.com/episode/4owWPi07G3xYBjnfu9qPpa"},"href":"https://api.spotify.com/v1/episodes/4owWPi07G3xYBjnfu9qPpa","html_description":"

Cuando pensamos en cualquier tipo de virtualización por alguna razón pensamos en grandes servidores, empresas de hosting, grandes empresas, pero pocas veces pensamos en nuestros portátiles y para eso tenemos el Docker Personal.

\n\n\n\n

Como ya sabéis hay muchos tipos de virtualización o de paravirtualización, KVM, VMware, LXC, Docker … en fin hay muchas soluciones en esa línea.

\n\n\n\n

Y al final todas estas soluciones sirven para ayudar a grandes empresas, a PyMES, a cualquier otro tipo de organización y por supuesto, a personas individuales.

\n\n\n\n

Las personas individuales también podemos usar algún tipo de virtualización si es que nos es útil y nos puede servir como herramienta.

\n\n\n\n

La virtualización personal no es solo virtualbox, de hecho es probable que necesitéis algún tipo de virtualización ligera para hacer alguna tarea específica o para tener distintas configuraciones.

\n\n\n\n

Docker es una herramienta maravillosa y muy ligera que nos permite virtualizar lo que se llaman contenedores en cualquier sitio, incluso nuestro portátil.

\n\n\n\n

¿Para qué uso yo docker?

\n\n\n\n

Evidentemente cada caso es un mundo y cada uno usa las herramientas que tiene disponible de manera diferente.

\n\n\n\n

En mi caso para poder realizar mi trabajo necesito una serie de herramientas instaladas en el ordenador y tardo un rato cada vez que tengo que utilizar una máquina diferente en dejarla preparadita.

\n\n\n\n

Una solución maravillosa para eso es docker.

\n\n\n\n

Si utilizara, por ejemplo, Virtualbox, podría instalar una debian virtualizada y luego con Ansible hacer esto mismo, pero los recursos necesarios en docker y el tiempo de provisión no tiene nada que ver y si me sirve docker entocnes docker es la solución.

\n\n\n\n

En mi caso lo único que necesito es un debian con cinc workstation, y un par de paquetes más. Las versiones tienen que ser muy concretas y tengo que incluir las configuraciones de todo esto.

\n\n\n\n

Hay varias formas de hacerlo, pero quizás la más sencilla es un Dockerfile.

\n\n\n\n

El Dockerfile

\n\n\n\n

El Dockerfile no es más que un fichero donde le indicamos a docker como generar la imagen que necesitamos.

\n\n\n\n

Una configuración muy simple sólo requiere 4 tipos de comandos diferentes:

\n\n\n\n\n\n\n\n

Lo primero que tenemos que decirle a nuestro Dockerfile es la imagen que vamos a tomar como base, porque lo que normalmente se hace es utilizar una imagen base y a partir de ahí añadir o modificar todo lo que sea necesario.

\n\n\n\n

En mi caso la imagen base es la última de debian, así que pongo

\n\n\n\n
FROM debian:latest
\n\n\n\n

Así cada vez que se actualice Debian y que genere de nuevo mi imagen a partir del Dockerfile la generará con la debian actualizada.

\n\n\n\n

Ese FROM deberá de ser la primera línea.

\n\n\n\n

Una cosa que yo siempre hago es añadir un usuario para no trabajar directamente como root, esto lo hacemos con el comando RUN seguido de la instrucción en bash para hacer esto:

\n\n\n\n
 RUN useradd -rm -d /home/eduardo -s /bin/bash -g eduardo -G sudo -u 1000 eduardo
\n\n\n\n

Y le ponemos una password:

\n\n\n\n
RUN echo 'eduardo:mi_password' | chpasswd
\n\n\n\n

Y acto seguido actualizar el sources.list para que use los repositorios españoles:

\n\n\n\n
RUN sed -i 's/\\/\\/deb./\\/\\/ftp.es./g' /etc/apt/sources.list
\n\n\n\n

Con eso ya tenemos los repositorios más cerca y nos irá mejor.

\n\n\n\n

Ahora simplemente actualizar e instalar los paquetes que queramos:

\n\n\n\n
RUN apt update\nRUN apt upgrade -y\nRUN apt install openssh-server vim-nox  dnsutils whois mtr-tiny wget  -y
\n\n\n\n

Es muy importante ese -y en el apt install para que no haga preguntas y se instale siempre todo.

\n\n\n\n

Ahora podemos hacer wget con RUN o dpkg -i también con RUN o lo que queramos, pero lo importante es que podemos añadir ficheros.

\n\n\n\n

Lo ideal es tener un fichero tar.xz con los ficheros que queramos y este lo incluiremos dentro de nuestro contenedor:

\n\n\n\n
ADD configuraciones.tar.xz /home/eduardo/
\n\n\n\n

Este comando, el ADD descomprimirá todo el tar y lo hará en el directorio /home/eduardo. Va a descomprimer directorios y archivos de forma recursiva

\n\n\n\n

Luego vais haciendo todo lo que tengáis que hacer, modificar PATH, crear enlace simbólicos, etc… lo que sea.

\n\n\n\n

Y para finalizar arrancaremos ssh, hay varias formas, pero la que yo uso es siendo la última línea con un ENTRYPOINT:

\n\n\n\n
ENTRYPOINT service ssh restart && bash
\n\n\n\n

Con esto ya tendríamos la imagen y sólo tendríamos que desplegarla.

\n\n\n\n

Para generar la imagen:

\n\n\n\n
docker build -t nombre-de-la-imagen .
\n\n\n\n

Desplegar el contenedor

\n\n\n\n

Hay muchas formas de desplegar el contenedor, pero entiendo que quien necesite este tutorial ni es un experto en docker ni tiene ningún interés en serlo, así que vamos a usar Portainer, un GUI maravilloso para docker.

\n\n\n\n

Para instalar portainer simplemente ir a https://www.portainer.io/installation/ y seguir los pasos, no tiene mayor ciencia y el copiar una línea.

\n\n\n\n

Una vez abierto portainer pincharemos en la barra izquierda donde pone Containers (la imagen estará en Images) y Add Container.

\n\n\n\n

Le pondremos un nombre y le pondremos el nombre de la imagen, el nombre que le hemos dado antes al ejecutar docker build.

\n\n\n\n

Y abajo del todo pincharemos en la opción Command and Logging y ahí en Interactive & TTY (-i -t).

\n\n\n\n

Luego en la opción Network le pondremos un hostname y un DNS, a mi me gusta indicar esto aunque no es necesario.

\n\n\n\n

Y luego en restart policy yo le doy normalmente a este tipo de contenedores Unless Stopped.

\n\n\n\n

Y desplegar máquina.

\n\n\n\n

Lo normal es que tu máquina tenga la UP 172.17.0.3, porque la .2 será Portainer y podrás hacerle ssh si es que has instalado el ssh en el dockerfile. Si no has instalado el servidor ssh podrás entrar con un

\n\n\n\n
docker attach nombre-de-la-máquina
\n\n\n\n

Y ya lo tendriáis

\n

La entrada Docker personal se publicó primero en Eduardo Collado.

","id":"4owWPi07G3xYBjnfu9qPpa","images":[{"height":640,"url":"https://i.scdn.co/image/bc2b688f0aaec8d51b96cf555116f8c9f649ad6b","width":640},{"height":300,"url":"https://i.scdn.co/image/c5e4488aa2ac4b4a82abfbf0779a4a5547c0389d","width":300},{"height":64,"url":"https://i.scdn.co/image/05a1b3c7136ce4ca0a050245f17b7d97ec7d67e5","width":64}],"is_externally_hosted":false,"is_paywall_content":false,"is_playable":true,"language":"es","languages":["es"],"name":"Docker personal","release_date":"2020-11-23","release_date_precision":"day","type":"episode","uri":"spotify:episode:4owWPi07G3xYBjnfu9qPpa"},{"audio_preview_url":"https://p.scdn.co/mp3-preview/8d805900d803c93edea11fa7df6e3729d0ab4db4","content_type":"PODCAST_EPISODE","description":"Ya sabéis que soy un defensor a ultranza de Internet y lo que representa, pero lamentablemente conectarse a Internet no siempre es seguro y es necesario tomar medidas de protección. Quizás el pensamiento naif de … La entrada Conectarse a Internet no siempre es seguro se publicó primero en Eduardo Collado.","duration_ms":1308395,"explicit":false,"external_urls":{"spotify":"https://open.spotify.com/episode/79ManbImbdgj2Kwh4IVeZx"},"href":"https://api.spotify.com/v1/episodes/79ManbImbdgj2Kwh4IVeZx","html_description":"

Ya sabéis que soy un defensor a ultranza de Internet y lo que representa, pero lamentablemente conectarse a Internet no siempre es seguro y es necesario tomar medidas de protección.

\n\n\n\n

Quizás el pensamiento naif de los primeros pobladores de Internet nos haya llevado a esta situación en la que hay que ir con mucho cuidado para no exponer nuestros datos y que puedan convertirse en mercancia con la que otros puedan utilizarnos.

\n\n\n\n

No estoy hablando ni de Mad Max ni de ningún futuro postapocaliptico, sino de un presente que está aquí y que vivimos todos los días.

\n\n\n\n

Os imagináis que en vuestra vida física le estuvierais diciendo constantemente a cualquiera qué habéis mirado, con quien habéis hablado, qué habéis comprado, cuánto os ha costado, qué piensas sobre política, religión o fútbol … en fin, podría tirarme horas así.

\n\n\n\n

Es inaceptable el pensar que tuviéramos que vivir así, pero en Internet es lo que ocurre cada vez que arrancas el ordenador, móvil, tablet o sea lo que sea con lo que te conectes a Internet.

\n\n\n\n

Y aunque os parezca increíble, a mi al menos me lo parece, hay mucha gente que no le importa y no le da importancia y a mi me parece una barbaridad.

\n\n\n\n

Hoy simplemente quiero hablaros de la necesidad de proteger nuestra conexión a Internet y de proteger nuestra privacidad todo lo que podamos, los nuestros y los de todos los que dependan de nosotros, familia, amigos, clientes …

\n\n\n\n

No se si os acordáis, pero hace algún tiempo os estuve comentando que Orange estaba limitando el acceso a distintas webs aprovechando el problemilla de SNI con la negociación del TLS.

\n\n\n\n
\n\n
\n\n\n\n

Si están escuchando todos los paquetes que pasan y filtran aquellos en los que en la negociación del TLS aparece la web que quieren filtrar saben quien ha hecho la petición, saben la IP y las IPs de los clientes de Orange las asigna el propio Orange.

\n\n\n\n

Es decir, pueden saber nombre y apellidos de la persona que ha hecho la petición y no se molestan en ocultarlo pues nos bloquean la web y vete a saber si se guarda un registro con esa información.

\n\n\n\n

DNS

\n\n\n\n

¿Vosotros estaríais cómodos ante un registro de quien ha visitado ciertas webs? y claro, estoy dando por supuesto no se usa el DNS de la operadora, con el DNS ya no hay ninguna limitación en conocer cosas.

\n\n\n\n

En cualquier conexión a Internet hay dos cosas que son fundamentales para conocer lo que hacen los usuarios: la conexión en si y el DNS.

\n\n\n\n

Si tenemos control del DNS sabemos las peticiones que se hacen y es más, podemos saber qué equipos hay en esa casa porque un alexa hace unas peticiones concretas, un google home hace otras o un móvil de xiaomi hace otras y siempre son las mismas.

\n\n\n\n

¿De verdad queréis que alguien sepa qué tenéis en vuestra casa y por donde navegáis?

\n\n\n\n

A mi no me tranquiliza mucho saber que ese perfil se puede sacar fácilmente.

\n\n\n\n

¿Qué hace la gente para intentar minimizar la información que se puede obtener por DNS?

\n\n\n\n\n\n\n\n

Al final tenemos un tema de confianza.

\n\n\n\n

Conexión

\n\n\n\n

Otro tema es la conexión, ¿os fiáis de vuestra conexión?

\n\n\n\n

Ya os he contado lo que sucede con Orange, en otros proveedores seguramente será igual, así que tenéis que encontrar uno que os de garantías o salir por otro sitio a Internet.

\n\n\n\n

Para salir por otro sitio la opción que hay es o una VPN o Tor. O incluso una VPN que conecta con otra VPN y así.

\n\n\n\n

Ahí tenemos que confiar en quien nos facilita la VPN, otra vez tenemos el tema de la confianza.

\n\n\n\n

Pero ahora que Google empieza a ofrecer servicio de VPN, ¿En serio veis a Google como un proveedor confiable de VPN? antes sólo podían ver el DNS de aquellos que usaran su magnífico (nótese la ironía) 8.8.8.8 y ahora además podrán ver el tráfico completo.

\n\n\n\n

Por supuesto los operadores de telecomunicaciones no quieren que uses VPNs pues dejan de ver el tráfico y los gobiernos, bueno, es cuestión de tiempo que caigan.

\n\n\n\n

En cuanto a Tor la confianza es algo todavía más fuerte, pero es una opción aunque últimamente se está comentando que la red tor está empezando a ser controlada. (https://www.xataka.com/seguridad/alguien-se-esta-haciendo-tor-controla-10-nodos-salida-que-permiten-interceptar-trafico-red)

\n\n\n\n

¿Qué hago yo?

\n\n\n\n

En mi caso utilizo varias vpns y varios sevicios de DNS.

\n\n\n\n

Por un lado utilizo el servicio de DNS que ofrece NextDNS y también utilizo unos servidores de Neodigit, porque trabajo ahí, sé cómo están montados y se que no problemas para su uso.

\n\n\n\n

Aquí de nuevo, yo lo se, pero si fuera externo tendría que fiarme.

\n\n\n\n

Habrá muchos sitios más que sus DNSs no se utilicen para inspeccionar el tráfico de los usuarios, pero ¿cómo saber quienes son?, ahí radica parte del problema.

\n\n\n\n

En cuanto a las VPNs pues también tengo una con mi casa, también tengo un servicio de VPN (Wireguard) de Neodigit y también tengo alguna propia en algún servidor mío, pero mi tráfico nunca sale por un sitio que no quiero.

\n\n\n\n

El mayor peligro el desconocimiento y “el pasar de todo”

\n\n\n\n

No hay peor ciego que aquel que no quiere ver” dice el dicho, pues es tal cual, por desgracia no hay una cultura de mantener una mínima privacidad en Internet.

\n\n\n\n

Buena parte de nuestro trabajo consiste en explicarle a la gente que las VPNs no son sólo para el trabajo y que el DNS es importantísimo, no tan sólo una comodity.

\n\n\n\n

Y luego es cierto que cualquier empresa de Internet es capaz de ver el tráfico que tiene, pero el tema es ver qué se hace con esa información, porque no es lo mismo tener la información en un netflow para atajar ataques de denegación de servicio que para hacer perfiles de los usuarios.

\n\n\n\n

Pero de todos modos vosotros pensar que si estáis en un servidor de VPNs, con más usuarios y que no guarde el tráfico de sus usuarios.

\n\n\n\n

Desde fuera no se puede saber qué usuario ha hecho la petición a la Internet pública por el NAT que suele haber en los servidores de VPN, evidentemente todo lo que quede dentro de la VPN no se ve por ningún lado, incluídas las peticiones de DNS.

\n\n\n\n

\n\n\n\n

Foto de Mike Navolta en Pexels

\n

La entrada Conectarse a Internet no siempre es seguro se publicó primero en Eduardo Collado.

","id":"79ManbImbdgj2Kwh4IVeZx","images":[{"height":640,"url":"https://i.scdn.co/image/bc2b688f0aaec8d51b96cf555116f8c9f649ad6b","width":640},{"height":300,"url":"https://i.scdn.co/image/c5e4488aa2ac4b4a82abfbf0779a4a5547c0389d","width":300},{"height":64,"url":"https://i.scdn.co/image/05a1b3c7136ce4ca0a050245f17b7d97ec7d67e5","width":64}],"is_externally_hosted":false,"is_paywall_content":false,"is_playable":true,"language":"es","languages":["es"],"name":"Conectarse a Internet no siempre es seguro","release_date":"2020-11-15","release_date_precision":"day","type":"episode","uri":"spotify:episode:79ManbImbdgj2Kwh4IVeZx"},{"audio_preview_url":"https://p.scdn.co/mp3-preview/50020a0cef594ec16a186733b214aab33330f33d","content_type":"PODCAST_EPISODE","description":"Hoy vamos a hablar de Cisco vPC (virtual Port Channel), que no es lo mismo a VSS (Virtual Switching System), aunque la idea subyacente sea muy parecida. Cisco vPC (virtual Port Channel) es lo que … La entrada Cisco vPC (virtual Port Channel) se publicó primero en Eduardo Collado.","duration_ms":1669611,"explicit":false,"external_urls":{"spotify":"https://open.spotify.com/episode/3bfn4C90rZZQaoX1V9tXx6"},"href":"https://api.spotify.com/v1/episodes/3bfn4C90rZZQaoX1V9tXx6","html_description":"

Hoy vamos a hablar de Cisco vPC (virtual Port Channel), que no es lo mismo a VSS (Virtual Switching System), aunque la idea subyacente sea muy parecida.

\n\n\n\n

Cisco vPC (virtual Port Channel) es lo que se conocía desde hacía mucho tiempo como Multichassis Etherchannel, es decir, un port-channel construido sobre dos chasis diferentes.

\n\n\n\n

En otras palabras podemos tener un switch top of the rack conectado a dos switches de distribución diferentes para temas de redundancia, pero nuestro switch ToR pensará que está unido sólo a un switch.

\n\n\n\n

Esto tiene muchísimas ventajas como quitarnos de encima a Spanning Tree, o la posibilidad de utilizar los dos uplinks de forma simultánea y no un activo pasivo.

\n\n\n\n

Un port-channel, o un bond, dependiendo de la plataforma que estéis utilizando es una técnica que permite balancear el tráfico entre varios puertos permitiendo aumentar el ancho de banda, aumentar la redundancia y por supuesto, como ya os he comentado evitar problemas de bucles y por tanto evitar que spanning tree esté bloqueando puertos y demás.

\n\n\n\n

Antes de empezar con vPC permitidme comentar que si en VSS tenemos un único equipo a nivel lógico que se gestiona desde un único punto, en vPC cada switch se gestiona de forma independiente, es otra forma de atacar problemas similares.

\n\n\n\n

Componentes de vPC

\n\n\n\n
\"\"
Arquitectura de vPC
\n\n\n\n

vPC tiene una serie de componentes que es necesario conocer para poder entenderlo y posteriormente configurarlo:

\n\n\n\n\n\n\n\n

Luego tenemos que tener en cuenta que es posible que tengamos unos puertos definidos en una de vPC pero no es un member port. El problema con esta configuración es que si falla algún vPC se suspenderán los member ports, pero este que no es un member port en si no se suspenderá. Así que es muy importante utilizar en ese caso el comando vpc orphan-port suspend.

\n\n\n\n

El caso de los puertos huérfanos puede suceder en el momento en el que haya un equipo que sólo tenga un interfaz por ejemplo.

\n\n\n\n

Configuración de vPC

\n\n\n\n

Configurar el interfaz de gestión y la ruta por defecto para la gestión.

\n\n\n\n
Nexus-1(config)# int mgmt 0\nNexus-1(config-if)# ip address 172.25.182.51/24\nNexus-1(config-if)# vrf context management\nNexus-1(config-vrf)# ip route 0.0.0.0/0 172.25.182.1
\n\n\n\n

Tenemos que habilitar vPC y LACP porque por defecto en los Nexus viene deshabilitadas estas dos características:

\n\n\n\n
Nexus-1(config)# feature vpc\nNexus-1(config)# feature lacp
\n\n\n\n

Creamos una vlan:

\n\n\n\n
Nexus-1(config)#vlan 101
\n\n\n\n

Creamos el vPC domain 1:

\n\n\n\n
Nexus-1(config)# vpc domain 1
\n\n\n\n

Configuramos el keepalive link contra otro nexus utilizando la interfaz de gestión:

\n\n\n\n
Nexus-1(config-vpc-domain)# peer-keepalive destination 172.25.182.52
\n\n\n\n

Configuramos el vPC peerlink:

\n\n\n\n
Nexus-1(config-vpc-domain)# int ethernet 1/17-18\nNexus-1(config-if-range)# channel-group 1 mode active\nNexus-1(config-if-range)# int po1\nNexus-1(config-if)# vpc peer-link\nNexus-1(config-if)# switchport mode trunk\nNexus-1(config-if)# switchport trunk allowed vlan 1,101
\n\n\n\n

Creamos el vPC member port:

\n\n\n\n
Nexus-1(config-if)# int ethernet 100/1/1\nNexus-1(config-if)# channel-group 10\nNexus-1(config-if)# int po10\nNexus-1(config-if)# vpc 10\nNexus-1(config-if)# switchport access vlan 101
\n\n\n\n

Al configurar el vPC member port hemos usado el comando vpc 10 esto es lo que indica el vpc en si y obviamente en ambos lados tiene que ser igual.

\n\n\n\n

En este punto configuraremos en el Nexus-2 lo mismo, la única diferencia será el

\n\n\n\n
Nexus-2(config-vpc-domain)#peer-keepalive destination 172.25.182.51
\n\n\n\n

Cuidado porque aquí la IP ha cambiado porque el Nexus-2 tiene ahora de peer-keepalive el Nexus-1 que tiene la IP que termina en 51.

\n\n\n\n

En los switches de downstream configuraremos un port-channel normal y moliente, la única diferencia es que la mitad de los cables irán a un switch y otra mitad a otro.

\n\n\n\n

Gestión del vPC

\n\n\n\n

La gestión del vPC se realizará mediante los comandos:

\n\n\n\n
show vpc brief\nshow vpc peer-keepalive\nsh vpc consistency-parameters vpc 30\nsh vpc orphan-ports
\n\n\n\n

Foto de Brett Sayles en Pexels

\n

La entrada Cisco vPC (virtual Port Channel) se publicó primero en Eduardo Collado.

","id":"3bfn4C90rZZQaoX1V9tXx6","images":[{"height":640,"url":"https://i.scdn.co/image/bc2b688f0aaec8d51b96cf555116f8c9f649ad6b","width":640},{"height":300,"url":"https://i.scdn.co/image/c5e4488aa2ac4b4a82abfbf0779a4a5547c0389d","width":300},{"height":64,"url":"https://i.scdn.co/image/05a1b3c7136ce4ca0a050245f17b7d97ec7d67e5","width":64}],"is_externally_hosted":false,"is_paywall_content":false,"is_playable":true,"language":"es","languages":["es"],"name":"Cisco vPC (virtual Port Channel)","release_date":"2020-11-09","release_date_precision":"day","type":"episode","uri":"spotify:episode:3bfn4C90rZZQaoX1V9tXx6"},{"audio_preview_url":"https://p.scdn.co/mp3-preview/630856a1750d3ebce6f8525666bdef20e9399184","content_type":"PODCAST_EPISODE","description":"TTL y Hop Limit, su homólogo en IPv6, definen un concepto que tocamos el otro día cuando hablábamos de traceroute. En cualquier red queremos garantizar que los paquetes puedan circular por ella, pero no queremos … La entrada TTL y Hop Limit se publicó primero en Eduardo Collado.","duration_ms":1195755,"explicit":false,"external_urls":{"spotify":"https://open.spotify.com/episode/2EVVYJ83uIYKNSAGCI9OOD"},"href":"https://api.spotify.com/v1/episodes/2EVVYJ83uIYKNSAGCI9OOD","html_description":"

TTL y Hop Limit, su homólogo en IPv6, definen un concepto que tocamos el otro día cuando hablábamos de traceroute.

\n\n\n\n

En cualquier red queremos garantizar que los paquetes puedan circular por ella, pero no queremos que puedan circular eternamente, así que es necesario definir de alguna manera el tiempo que pueden permanecer en la red.

\n\n\n\n

Pero más que definir el tiempo que pueden permanecer nos interesa definir el número de saltos de nivel 3 que pueden atravesar, es decir, el número de redes a atravesar.

\n\n\n\n

En el capítulo de “cómo funciona el traceroute” ya comentamos que se empezaba con un número de saltos definido en el campo TTL de la cabecera y que se iría decrementando en uno por cada nivel 3 que se atravesara.

\n\n\n\n

Si os fijáis en la cabecera de Ipv4 tenemos el campo TTL, pero en la cabecera de Ipv6 tenemos el Hop Limit, en ambos caso 8 bits, así que el número máximo a definir será de 255.

\n\n\n\n
\"\"
Cabeceras IPv4 e IPv6
\n\n\n\n

TTL y Hop Limit en sus RFCs

\n\n\n\n

Lo primero será leernos las RFCs asociadas para ver qué es exactamente el TTL tanto en IPv4 como en IPv6, y aquí nos llevamos la primera sorpresa y es que el TTL en IPv4 se ideó para ser usado con segundos y no con saltos,

\n\n\n\n

TTL en IPv4

\n\n\n\n

Obviamente era muy complicado medir el tiempo en segundos en la cabecera de Ipv4, así que se optó por saltos.

\n\n\n\n

Tiempo de vida: 8 bits

Este campo indica el tiempo máximo que se permite que el datagrama permanecer en el sistema de Internet. Si este campo contiene el valor cero, entonces el datagrama debe destruirse. Este campo está modificado en el procesamiento de encabezados de IP. El tiempo se mide en unidades de segundos, pero dado que cada módulo que procesa un datagrama debe disminuir el TTL en al menos uno incluso si procesa el datagrama en menos de un segundo, el TTL debe considerarse solo como un ligado al tiempo que puede existir un datagrama. La intención es que los datagramas que no se pueden entregar deben descartarse y así limitar el máximo de vida útil del datagrama.

TTL en la RFC 791 – IPv4
\n\n\n\n

En IPv6 sin embargo viene mejor descrito, pero entre la RFC 2460, la original de Diciembre de 1998 y la RFC 8200 de Julio de 2017 hay un cambio significativo que nos afecta muchísimo.

\n\n\n\n

Hop Limit en IPv6

\n\n\n\n

Mientras en la primera versión se establecía que en el momento en el que el Hop Limit llegara a 0 se descartaba en la modificación de 2017 se establece que en el caso que el paquete llegue a Hop Limit de 0 si ha llegado al destino entocnes debe procesarse el paquete y no descartarlo.

\n\n\n\n

Hop Limit

Entero sin signo de 8 bits. Decrementado en 1 por cada nodo que reenvía el paquete. El paquete se descarta si el límite de saltos se reduce a cero.

Hop Limit en la RFC 2460 – IPv6 (obsoleta)
\n\n\n\n

Hop Limit

Entero sin signo de 8 bits. Decrementado en 1 por cada nodo que reenvía el paquete. Al reenviar, el paquete se descarta si el límite de saltos era cero cuando se recibe o se reduce a cero. Un nodo que es el destino de un paquete no debe descartar un paquete con límite de saltos igual a cero; debería procesar el paquete normalmente.

Hop Limit en la RFC 8200 – IPv6
\n\n\n\n

Tanto en IPv4 como en IPv6 en el caso de descartar un datagrama se puede contestar con un “Time Exceeded Message” que viene definido para IPv4 en la RFC 792 en la página 6 y para IPv6 viene definido en la RFC 4443 en la sección 3.3 de la página 11.

\n\n\n\n

Traceroute en Ipv6

\n\n\n\n

Una vez explicado todo esto comentaros que el traceroute en IPv6 utiliza el Hop Limit para su funcionamiento, el resto es igual.

\n\n\n\n

Os dejo aquí un vídeo para que podáis ver la captura de los paquetes de un traceroute con ipv6, se ha colado algún paquete de más, pero se ve claro el tracerotue.

\n\n\n\n
\n\n
\n\n\n\n

MTR

\n\n\n\n

En el caso de MTR no se utiliza UDP, sino que simplemente ICMP y el TTL o el Hop Count.

\n\n\n\n

Foto de cabecera Jill Wellington en Pexels

\n

La entrada TTL y Hop Limit se publicó primero en Eduardo Collado.

","id":"2EVVYJ83uIYKNSAGCI9OOD","images":[{"height":640,"url":"https://i.scdn.co/image/bc2b688f0aaec8d51b96cf555116f8c9f649ad6b","width":640},{"height":300,"url":"https://i.scdn.co/image/c5e4488aa2ac4b4a82abfbf0779a4a5547c0389d","width":300},{"height":64,"url":"https://i.scdn.co/image/05a1b3c7136ce4ca0a050245f17b7d97ec7d67e5","width":64}],"is_externally_hosted":false,"is_paywall_content":false,"is_playable":true,"language":"es","languages":["es"],"name":"TTL y Hop Limit","release_date":"2020-11-04","release_date_precision":"day","type":"episode","uri":"spotify:episode:2EVVYJ83uIYKNSAGCI9OOD"},{"audio_preview_url":"https://p.scdn.co/mp3-preview/39a76e7aa6bd101e283df6b53732d9f9300182e0","content_type":"PODCAST_EPISODE","description":"¿Cómo funciona traceroute?. Mucha gente cree erróneamente que traceroute es algo muy parecido al ping y que funcionan de forma análoga, pero la verdad es que tienen muy poco que ver aunque en muchos casos … La entrada Cómo funciona traceroute se publicó primero en Eduardo Collado.","duration_ms":1085227,"explicit":false,"external_urls":{"spotify":"https://open.spotify.com/episode/42uIaQXzxWAgEDbKUf5FfY"},"href":"https://api.spotify.com/v1/episodes/42uIaQXzxWAgEDbKUf5FfY","html_description":"

¿Cómo funciona traceroute?. Mucha gente cree erróneamente que traceroute es algo muy parecido al ping y que funcionan de forma análoga, pero la verdad es que tienen muy poco que ver aunque en muchos casos puedan ser utilizados en entornos similares.

\n\n\n\n

El objetivo de este post es explicar traceroute porque es una herramienta de troubleshooting, fantástica. Por cierto, troubleshooting en español significa solución de problemas

\n\n\n\n

Ping

\n\n\n\n

Ping es el más conocido por todos y utiliza el protocolo ICMP. En ping se utilizan mensajes echo request y echo reply entre origen y destino.

\n\n\n\n

Ping es sencillo y nos sirve para comprobar la conectividad entre dos puntos siempre y cuando haya conectividad directa entre ellos.

\n\n\n\n

Traceroute

\n\n\n\n

Traceroute es una herramienta mucho más elaborada que ping y nos ofrece muchísima más información.

\n\n\n\n

Utilizar traceroute nos ofrece la siguiente información:

\n\n\n\n\n\n\n\n

Para que traceroute funcione correctamente es necesario antes de nada conocer el campo de la cabecera IP llamado TTL.

\n\n\n\n
\"\"
Cabecera IP
\n\n\n\n

¿Qué es el TTL?

\n\n\n\n

El TTL no es más que un contador de saltos, en el caso de un traceroute por defecto el campo TTL tiene un valor de 30, esto significa que cada vez que sale a otro nodo se decrementará en 1, así hasta que llegue a 1, si es que llega, y se descarte el paquete.

\n\n\n\n

Si os fijáis cuando ejecutáis un traceroute os dice que 30 es el número máximo de saltos, pues ese número de saltos no es más que el valor del TTL definido.

\n\n\n\n
edu@andromeda:~$ traceroute 8.8.8.8\ntraceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
\n\n\n\n

El datagrama IP se irá enviando entre routers decrementándose cada vez en 1 el TTL hasta que llegue a uno con un valor de TTL de 1. En el caso de un router recibir un datagrama con un valor de TTL de 1 va a remitir al original un mensaje especial denominado “mensajes ICMP TTL excedidos”.

\n\n\n\n

Como ese mensaje de TTL excedido lo enviará el router que reciba el datagrama con TTL de 1 al origen, en el momento de llegar al origen este ya sabe cual es la dirección del remitente.

\n\n\n\n

Es un mecanismo muy sencillo pero muy inteligente.

\n\n\n\n

Pues este es el sistema que utiiliza traceroute para descubrir los nodos intermedios, los “mensajes ICMP TTL excedidos”.

\n\n\n\n

Ahora la pregunta es cómo consigue Traceroute conocer las IPs de los nodos intermedios, porque al principio hemos comentado que uno de los objetivos de traceroute es mostrar los nodos intermedios que componen una ruta a un destino.

\n\n\n\n

¿Cómo funciona Traceroute?

\n\n\n\n

En el momento en el que lanzamos un traceroute contra un destino enviaremos datagramas UDP, porque traceroute funciona con UDP, con el siguiente contenido:

\n\n\n\n\n\n\n\n

Lo primero será enviar ese detagrama a mi destino pero con un TTL de 1, entonces cuando llegue a mi router este responderá con un “mensajes ICMP TTL excedidos” y es así como el origen sabrá la IP del primer salto, e iremos subiendo el TTL enviando otro y otro datagrama.

\n\n\n\n

De esta manera mandaremos datagramas con TTL de 1, de 2, de 3 …. y así hasta que lleguemos al destino.

\n\n\n\n

¿Cómo sabemos que hemos llegado al destino? Pues simplemente porque el destino tendrá que responder a un puerto UDP aleatóreo entre el 33434 y el 33534 y como lo más probable es que el destino no responda a esos puertos responderá con un “menaje de puerto ICMP de destino inalcanzable”

\n\n\n\n

Esto si abris un wireshark o un tcpdump mientras hacéis el traceroute podréis verlo sin problemas.

\n\n\n\n
sudo tcpdump -Knnvvi any '(udp and dst port 53) or (udp and dst portrange 33434-33534) or icmp[icmptype] == 11'
\n\n\n\n

Foto de cabecera de Brett Sayles en Pexels

\n

La entrada Cómo funciona traceroute se publicó primero en Eduardo Collado.

","id":"42uIaQXzxWAgEDbKUf5FfY","images":[{"height":640,"url":"https://i.scdn.co/image/bc2b688f0aaec8d51b96cf555116f8c9f649ad6b","width":640},{"height":300,"url":"https://i.scdn.co/image/c5e4488aa2ac4b4a82abfbf0779a4a5547c0389d","width":300},{"height":64,"url":"https://i.scdn.co/image/05a1b3c7136ce4ca0a050245f17b7d97ec7d67e5","width":64}],"is_externally_hosted":false,"is_paywall_content":false,"is_playable":true,"language":"es","languages":["es"],"name":"Cómo funciona traceroute","release_date":"2020-10-31","release_date_precision":"day","type":"episode","uri":"spotify:episode:42uIaQXzxWAgEDbKUf5FfY"},{"audio_preview_url":"https://p.scdn.co/mp3-preview/a27ec0bdd8d5aebee25c40fbbd17c9e60cd04dd7","content_type":"PODCAST_EPISODE","description":"El audio de hoy Configuración de bloqueo de SNI en Mikrotik viene después de que el otro día grabé un vídeo en directo en YouTube sobre este asunto. Podéis verlo en Bloquear Webs con SNI … La entrada Controlar el tráfico de SNI con Mikrotik se publicó primero en Eduardo Collado.","duration_ms":1082901,"explicit":false,"external_urls":{"spotify":"https://open.spotify.com/episode/36NumCAoofEVIxpN3588h1"},"href":"https://api.spotify.com/v1/episodes/36NumCAoofEVIxpN3588h1","html_description":"

El audio de hoy Configuración de bloqueo de SNI en Mikrotik viene después de que el otro día grabé un vídeo en directo en YouTube sobre este asunto.

\n\n\n\n

Podéis verlo en Bloquear Webs con SNI usando un Mikrotik, pero hoy quiero contaros en el podcast como bloquear el tráfico y cómo limitar la velocidad.

\n\n\n\n

Por supuesto para hacer esto tenéis que deshabilitar el fasttrack que si lo tenéis está en el filter del firewall.

\n\n\n\n

Vamos a ver la configuración de bloqueo de SNI en Mikrotik:

\n\n\n\n

Opción 1: Cortar el tráfico

\n\n\n\n

Primero marcaremos la conexión

\n\n\n\n
/ip firewall mangle\nadd action=mark-connection chain=prerouting comment=\"Mark eduardocollado.com SNI connection\" disabled=\\\nyes dst-port=443 new-connection-mark=SNI_Connection passthrough=yes protocol=tcp tls-host=\\\n*.loquesea.com\n
\n\n\n\n

En este punto podemos poner una regla de firewall para tirar todo ese tráfico:

\n\n\n\n
/ip firewall filter\nadd action=drop chain=forward connection-mark=SNI_Connection
\n\n\n\n

Opción 2: Limitar velocidad

\n\n\n\n

Ahora marcaremos los paquetes de la conexión, para esto es necesario que primero marquemos la conexión, tal y como hemos hecho arriba:

\n\n\n\n
/ip firewall mangle\nadd action=mark-packet chain=prerouting comment=\"Mark eduardocollado.com SNI packet\" connection-mark=\\\nSNI_Connection disabled=yes new-packet-mark=SNI_Packet passthrough=yes
\n\n\n\n

Y ahora podemos limitar el tráfico con un simple queue:

\n\n\n\n
/queue simple\nadd disabled=yes limit-at=64k/64k max-limit=64k/64k name=\"Trafico SNI\" packet-marks=SNI_Packet
\n\n\n\n

Foto de Chris Peeters en Pexels

\n

La entrada Controlar el tráfico de SNI con Mikrotik se publicó primero en Eduardo Collado.

","id":"36NumCAoofEVIxpN3588h1","images":[{"height":640,"url":"https://i.scdn.co/image/bc2b688f0aaec8d51b96cf555116f8c9f649ad6b","width":640},{"height":300,"url":"https://i.scdn.co/image/c5e4488aa2ac4b4a82abfbf0779a4a5547c0389d","width":300},{"height":64,"url":"https://i.scdn.co/image/05a1b3c7136ce4ca0a050245f17b7d97ec7d67e5","width":64}],"is_externally_hosted":false,"is_paywall_content":false,"is_playable":true,"language":"es","languages":["es"],"name":"Controlar el tráfico de SNI con Mikrotik","release_date":"2020-10-24","release_date_precision":"day","type":"episode","uri":"spotify:episode:36NumCAoofEVIxpN3588h1"},{"audio_preview_url":"https://p.scdn.co/mp3-preview/451f94fee2d0e88a00ececba46f586fd34da04c2","content_type":"PODCAST_EPISODE","description":"Quizás lo normal sea que queramos que nuestras webs puedan llegar al máximo número posible de visitas dentro de nuestro target y para eso tenemso que tener en cuenta el efecto del marketing online en … La entrada El efecto del marketing online en nuestros servidores se publicó primero en Eduardo Collado.","duration_ms":1347520,"explicit":false,"external_urls":{"spotify":"https://open.spotify.com/episode/689w5a9iJEY94svTqLF6tO"},"href":"https://api.spotify.com/v1/episodes/689w5a9iJEY94svTqLF6tO","html_description":"

Quizás lo normal sea que queramos que nuestras webs puedan llegar al máximo número posible de visitas dentro de nuestro target y para eso tenemso que tener en cuenta el efecto del marketing online en nuestros servidores

\n\n\n\n

Es muy probable que queráis que vuestra web sea visitada lo máximo posible, pero por aquella gente a la que le puede interesar.

\n\n\n\n

El interés en nuestro contenido es lo principal porque que tengamos muchas visitas de gente que no le interesa nuestro contenido pues a lo mejor no nos interesa tanto.

\n\n\n\n

Al final cada visita tiene un coste para nosotros. Por visita es un coste muy pequeño, pero es un coste y no es lo mismo dimensionar un servicio web para 10 visitas que para 10.000 al día.

\n\n\n\n

Y evidentemente no es lo mismo 10 visitas que cargan 10 elementos que 10 visitas que cargan 200 elementos. Hasta aquí estamos todos de acuerdo.

\n\n\n\n

También es cierto que el contenido debe de tener un interés para que nos visite la gente.

\n\n\n\n

Y también es cierto que nuestra web debe de funcionar, los enlaces tienen que apuntar a algún sitio, no tienen que estar rotos, hay que evitar bucles y cosas así.

\n\n\n\n

¿Cómo sabemos si el contenido es interesante o no? pues es un trabajo que no todos podemos hacer y que requiere un conocimiento del sector del que se hable y un conocimiento de cómo decir las cosas.

\n\n\n\n

Luego en las webs está el tema de que sea agradable a la vista y que esté bien organizada y por último hay un punto muy importante y es que la web esté montada sobre una infraestructura que la soporte sin problemas.

\n\n\n\n

Hoy he estado viendo una web que tenía en total unos 500 accesos limpios al día, pero realmente tiene más de 30.000, obviamente los 29.500 que sobran el usuario no los tiene ni en mente.

\n\n\n\n

Muchas veces es complicado explicar al dueño de una web que su web de 500 accesos tiene 30.000 y tiene 30.000 principalmente porque el propio usuario lo ha decidido sin saberlo.

\n\n\n\n

¿Cuántas webs con 500 accesos puede gestionar un servidor?, pues exactamente 60 veces más que webs con 30.000 accesos.

\n\n\n\n

El problema está en el momento en el que se dimensiona un servidor para unas peticiones y recibe 60 veces más, si al menos los usuarios fueran consciente de eso no pasaría nada.

\n\n\n\n

El problema es que los usuarios muchas veces no son conscientes de ese problema.

\n\n\n\n

Hoy estaba trabajando con unos servidores y me ha dado por mirar un log de una web concreta que me ha llamado la atención por otro tema que no tenía nada que ver, pero me ha permitido sacar información que creo que puede ser interesante.

\n\n\n\n

Lo primero que sepáis es que se trataba de un WordPress y me ha llamado la atención que tenía 2000 peticiones del fichero xmlrpc.php, que es ese fichero que se usa para conectar al API de nuestro WordPress.

\n\n\n\n

El xmlrpc.php se utiliza principalmente para los clientes de WordPress y para el plugin de Jetpack, y de estas dos cosas la mayoría usa el xmlrpc.php únicamente para el jetpack o directamente no lo usan.

\n\n\n\n

Este en concreto no debería de usar el xmlrpc.php y esos 2000 accesos no eran otra cosa que intentos de acceso a ese wordpress.

\n\n\n\n

Para evitar esto simplemente se puede bloquear en el .htaccess cualquier acceso que no venga desde la red de Automattic que es desde donde accede el Jetpack.

\n\n\n\n
<Files xmlrpc.php>\norder deny,allow \ndeny from all \nallow from 192.0.64.0/18\n</Files
\n\n\n\n

A partir de este punto me he puesto a mirar y en un paso visual por el access.log me ha llamado la atención que casi todo el tráfico venía bing, de semrush y de una cosa llamado dotbot.

\n\n\n\n
Bing12182
DotBot8114
Semrush7393
xmlrpc2000
Google383
wp-cron134
Qwant69
Spider17
Otros501
Accesos por elemento
\n\n\n\n

Después de mirar los logs hasta las 5 de la tarde he visto que de 30.793 accesos realmente sólo podrían llegar a ser útiles 501, los otros 30.292 eran tráfico no humano, cada visita humana o asimilada teníamos 60 visitas no humanas.

\n\n\n\n

En este caso el usuario puede decir que tiene 500 accesos realizados y limpiando un poco esa información he llegado a la conclusión que la web hoy ha sido visitada por 12 personas distintas.

\n\n\n\n

Así que 12 personas y 30.000 accesos, evidentemente aquí hay algo mal hecho.

\n\n\n\n

Las visitas al xmlrpc.php ya os he dicho como evitarlas porque no deberían de estar ahí.

\n\n\n\n

De Google 383 y eso es lo que google estaba indexando con su spider y el tráfico proveniente de Google, que teniendo en cuenta que es el más utilizado con mucho no está mal.

\n\n\n\n

Qwant 69 accesos, otro buscador, está bien, una cosa normal.

\n\n\n\n

Y ahora a ver si es necesario que bing nos haya generado 12.182 accesos, ¿no se le puede decir a Bing que vaya más lento o que no vaya?, pero bueno, al menos es un buscador.

\n\n\n\n

Pero ahora llegamos a lo mejor 8.114 de DotCom que es crawler de Moz y 7.393 de Semrush.

\n\n\n\n

Tanto Moz como Semrush nos ofrecen un servicio para ver si tenemos algún enlace roto y cosas así, obviamente también dan una serie de herramientas al marketing online que nos pueden interesar más o menos, pero es que la mitad de todo es el SEO y el Marketing online, todo lo demás son todos los buscadores, los spiders, las visitas y nuestros problemas varios.

\n\n\n\n

Así que la mitad del coste de la web, o del servidor se lo podemos imputar directamente al Marketing Online y teniendo en cuenta que hay unas 12 IPs que parecen buenas no se si compensa.

\n\n\n\n

Ahora imaginad que tenemos un servidor pequeñito con 20 webs y de repente le ponemos los plugins del WordPress de Moz y de Semrush y empezamos a usar el servicio en las 20 webs, pues el gasto de recursos va a ser enorme y muy difícil de justificar.

\n\n\n\n

Esto obviamente genera más gasto eléctrico, huella de carbono y si eso os da igual va a hacer que vuestro hosting sea más caro.

\n\n\n\n

Si queréis que las webs os vayan bien y gastar menos controlar vuestro marketing online, controlar los enlaces rotos, pero no uséis servicios que os hacen miles y miles de peticiones innecesarias.

\n

La entrada El efecto del marketing online en nuestros servidores se publicó primero en Eduardo Collado.

","id":"689w5a9iJEY94svTqLF6tO","images":[{"height":640,"url":"https://i.scdn.co/image/bc2b688f0aaec8d51b96cf555116f8c9f649ad6b","width":640},{"height":300,"url":"https://i.scdn.co/image/c5e4488aa2ac4b4a82abfbf0779a4a5547c0389d","width":300},{"height":64,"url":"https://i.scdn.co/image/05a1b3c7136ce4ca0a050245f17b7d97ec7d67e5","width":64}],"is_externally_hosted":false,"is_paywall_content":false,"is_playable":true,"language":"es","languages":["es"],"name":"El efecto del marketing online en nuestros servidores","release_date":"2020-10-23","release_date_precision":"day","type":"episode","uri":"spotify:episode:689w5a9iJEY94svTqLF6tO"},{"audio_preview_url":"https://p.scdn.co/mp3-preview/5ad3a93741fe861a1c2db003f1947e84fd5eff37","content_type":"PODCAST_EPISODE","description":"Poetry (python poetry) es una herramienta que se encarga de la gestión de las dependencias y los paquetes en Python y que resulta muy conveniente usar en tus proyectos. No hace falta ser desarrollador para … La entrada Gestión de paquetes en python con poetry se publicó primero en Eduardo Collado.","duration_ms":1855723,"explicit":false,"external_urls":{"spotify":"https://open.spotify.com/episode/1WLeChXEOVDARmbVm3O5Xa"},"href":"https://api.spotify.com/v1/episodes/1WLeChXEOVDARmbVm3O5Xa","html_description":"

Poetry (python poetry) es una herramienta que se encarga de la gestión de las dependencias y los paquetes en Python y que resulta muy conveniente usar en tus proyectos.

\n\n\n\n

No hace falta ser desarrollador para crear algunos paquetes que puedan sernos útiles. Hay muchas tareas que queremos automatizar a lo largo del día y lo hacemos con scripts, cada uno en el lenguaje que mejor se adapte a nuestras necesidades o simplemente el que mejor conozcamos.

\n\n\n\n
\n\n
\n\n\n\n

Uno de esos lenguajes y con los que en un tiempo relativamente bajo se pueden empezar a hacer cosas es Python, pero para los scripts no todo es el lenguaje.

\n\n\n\n

Las librerías son fundamentales o las herramientas de gestión. Pero hay un detalle que es el responsable de que se puedan llegar a romper nuestros scripts y son las dependencias.

\n\n\n\n

Una dependencia no es más que un software que se usa para componer otros, como un puzzle. Por ejemplo, para poder leer un fichero YAML se utiliza un paquete llamado PyYAML.

\n\n\n\n

En nuestros scripts para leer un fichero YAML simplemente usaremos la función yaml.load(), así que tendremos que importar pyyaml para que nuestro script funcione.

\n\n\n\n

Esa función no sabemos lo qué hace ni las dependencias que tiene a su vez y si una de las dependencias que pudiera tener pyyaml se rompiera nuestro script podría romperse sin que hubiéramos tocado absolutamente nada.

\n\n\n\n

Para evitar todas estas cosas lo que hacemos es un paquete y para hacer eso de forma fácil y sencilla en Python tenemos varias herramientas, pero existe una que hace esta función especialmente fácil y se llama Poetry.

\n\n\n\n

Poetry lo he descubierto gracias a Walter (w4c0s) que fue el que me lo comentó y le estoy muy agradecido la verdad.

\n\n\n\n

La instalación de Poetry es bastante sencilla y aunque podemos instalarlo mediante un paquete, por ejemplo pip install poetry el método recomendado es usar el script de instalación:

\n\n\n\n

En linux y mac:

\n\n\n\n
curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python -
\n\n\n\n

En Windows:

\n\n\n\n
(Invoke-WebRequest -Uri https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py -UseBasicParsing).Content | python -
\n\n\n\n

De todos modos en la web del proyecto tenéis los métodos de instalación y su funcionamiento:

\n\n\n\n

Simplemente decir que a nivel genérico los comandos importantes son:

\n\n\n\n

poetry new -> Creamos un proyecto
poetry shell -> Ejecutamos una shell con los valores de poetry
poetry init -> Crea el fichero pyproject.toml
poetry build -> Generamos el paquete(.whl y .tar.gz)
poetry publish -> Lo publicamos en pypi.org

\n\n\n\n
\n\n
Presentación en la PyGotham 2019 de Nueva York donde se presentaba poetry
\n

La entrada Gestión de paquetes en python con poetry se publicó primero en Eduardo Collado.

","id":"1WLeChXEOVDARmbVm3O5Xa","images":[{"height":640,"url":"https://i.scdn.co/image/bc2b688f0aaec8d51b96cf555116f8c9f649ad6b","width":640},{"height":300,"url":"https://i.scdn.co/image/c5e4488aa2ac4b4a82abfbf0779a4a5547c0389d","width":300},{"height":64,"url":"https://i.scdn.co/image/05a1b3c7136ce4ca0a050245f17b7d97ec7d67e5","width":64}],"is_externally_hosted":false,"is_paywall_content":false,"is_playable":true,"language":"es","languages":["es"],"name":"Gestión de paquetes en python con poetry","release_date":"2020-10-19","release_date_precision":"day","type":"episode","uri":"spotify:episode:1WLeChXEOVDARmbVm3O5Xa"},{"audio_preview_url":"https://p.scdn.co/mp3-preview/9194fbc7778a6facd1ba1b8a2f639cfd914cefd6","content_type":"PODCAST_EPISODE","description":"Estos días he estado un poco malo y me he dedicado a preparar unos cuantos scripts, para el trabajo y para la comunidad, los de la comunidad los he dejado en mi perfil de GitHub. … La entrada Entornos virtuales con Python e instalación de scripts se publicó primero en Eduardo Collado.","duration_ms":1869056,"explicit":false,"external_urls":{"spotify":"https://open.spotify.com/episode/775PZDAGO4wZtoa7PLkcQk"},"href":"https://api.spotify.com/v1/episodes/775PZDAGO4wZtoa7PLkcQk","html_description":"

Estos días he estado un poco malo y me he dedicado a preparar unos cuantos scripts, para el trabajo y para la comunidad, los de la comunidad los he dejado en mi perfil de GitHub.

\n\n\n\n

Son dos scrits, uno que es un cliente de DNS dinámico con un dominio en Neodigit y el otro un generador de feeds para podcasts, pero me he dado cuenta que quizás la primera barrera es que mucha gente no sabía como instalar el software, así que esa es la razón por la que he creado este audio.

\n\n\n\n

Paso 1: Clonar el proyecto

\n\n\n\n

Ir al repositorio deseado y clonarlo:

\n\n\n\n
$ git clone http://github.com........
\n\n\n\n

Paso 2: Crear un Entorno Virtual de Python en Ubuntu

\n\n\n\n
$ sudo apt install python3-venv
\n\n\n\n

Una vez instalado el paquete python3-venv creamos un directorio donde vayamos a trabajar.

\n\n\n\n

Dentro del directorio:

\n\n\n\n
$ python3 -m venv my-project-env
\n\n\n\n

Y para activar ese entorno virtual

\n\n\n\n
$ source my-project-env/bin/activate\n(my-project-env) $
\n\n\n\n

Ahora ya podemos instalar los pip que queramos

\n\n\n\n
(venv) $ pip install requests 
\n\n\n\n

Paso 3: Ejecutar el script

\n\n\n\n

Para ello simplemente nos fijaremos en lo que diga el README.MD

\n

La entrada Entornos virtuales con Python e instalación de scripts se publicó primero en Eduardo Collado.

","id":"775PZDAGO4wZtoa7PLkcQk","images":[{"height":640,"url":"https://i.scdn.co/image/bc2b688f0aaec8d51b96cf555116f8c9f649ad6b","width":640},{"height":300,"url":"https://i.scdn.co/image/c5e4488aa2ac4b4a82abfbf0779a4a5547c0389d","width":300},{"height":64,"url":"https://i.scdn.co/image/05a1b3c7136ce4ca0a050245f17b7d97ec7d67e5","width":64}],"is_externally_hosted":false,"is_paywall_content":false,"is_playable":true,"language":"es","languages":["es"],"name":"Entornos virtuales con Python e instalación de scripts","release_date":"2020-10-17","release_date_precision":"day","type":"episode","uri":"spotify:episode:775PZDAGO4wZtoa7PLkcQk"},{"audio_preview_url":"https://p.scdn.co/mp3-preview/807eac0753a0eb008cc0d377526953b25fd264ae","content_type":"PODCAST_EPISODE","description":"El bloqueo de webs aprovechando SNI es una de las formas de bloquear webs más sofisticados que existen ahora mismo a nivel de operadora. Conozco una web desde la que se pueden descargar libros y … La entrada Bloqueo de webs aprovechando SNI se publicó primero en Eduardo Collado.","duration_ms":1732800,"explicit":false,"external_urls":{"spotify":"https://open.spotify.com/episode/6YBoFMDj2Ozg2AFB7actoj"},"href":"https://api.spotify.com/v1/episodes/6YBoFMDj2Ozg2AFB7actoj","html_description":"

El bloqueo de webs aprovechando SNI es una de las formas de bloquear webs más sofisticados que existen ahora mismo a nivel de operadora. Conozco una web desde la que se pueden descargar libros y que desde hace unos días al entrar se puede leer:

\n\n\n\n

Contenido bloqueado por requerimiento de la Autoridad Competente, comunicado a esta Operadora

\n\n\n\n

Este mensaje es curioso porque yo sí he visto cómo se bloquean webs y se cambia el DNS y sale una página de la Guardia Civil, ni más ni menos, pero un mensaje cutre como el que he visto no me parece normal.

\n\n\n\n

Ahí quedó la cosa, pero al cabo de unos días, no recuerdo la razón estaba conectado a la VPN del trabajo y vi que esa web funcionaba, así que desde mi conexión a Internet no y desde la vpn del trabajo sí.

\n\n\n\n

Lo primero que pensé es que eran los DNS, de hecho llegué a pensar que la culpa era de nextdns, incluso lo llegué a dar por hecho, pero no, no era eso.

\n\n\n\n

Así que no se me ocurría qué podía ser y lo comenté en el grupo y ahí comentaron que seguro que era el SNI y sí, efectivamente, por ahí iban los tiros.

\n\n\n\n

Antes de nada vamos a hablar de certificados.

\n\n\n\n

Los certificados para una web tienen una limitación, o tenían una limitación, y es que el certificado iba asociado a la dirección IP, lo cual a lo mejor no parece un problema, pero en un servidor se pueden poner muchas páginas web, de hecho lo normal es que en un servidor tenga muchas páginas web sirviéndose en la misma IP.

\n\n\n\n

Para solucionar este problema se inventó una extensión que se llama SNI (Server Name Indication), esta extensión permite que se pueda instalar un certificado en un dominio que comparte la IP con otros dominios.

\n\n\n\n

Gracias a SNI a día de hoy podemos tener certificados para todas las webs sin necesitar usar una IP por web y esto es un gran avance sin duda.

\n\n\n\n

El funcionamiento de SNI tiene sin embargo un detallito que hace que aquí tengamos un problema bastante serio.

\n\n\n\n

En HTTPS antes de iniciarse la conversación HTTP se realiza el handshake de TLS y una vez realizado el handshake se inicia la conversación HTTP, la cual se encripta, por eso es HTTPS, pero el handshake de TLS se ha realizado antes.

\n\n\n\n

Es en ese punto, entre el handshake de TLS y la conversación HTTP en el que se puede saber cual es el hostname con el que queremos conectarnos sin encriptar y ahí es donde todo el problema radica.

\n\n\n\n

En nuestro caso abrimos la web en cuestión con https y se inicia la conexión contra la IP que indica correctamente el DNS, en ese momento el tráfico llega al servidor destino y pide el certificado del dominio que sea y ahí, aún sin encriptar es cuando el operador de turno nos captura el tráfico y nos devuelve un certificado invalido y un contenido que nada tiene que ver con el que queremos.

\n\n\n\n

Si nos fijamos en el certificado que nos devuelve nuestra operadora favorita Sparrow Telecom nos damos cuenta que es un certificado generador por alguien llamado allot.com, un fabricante de equipos de deep inspection muy muy caros.

\n\n\n\n
\"\"
\n\n\n\n

Conclusión, Sparrow Telecom se ha gastado una pasta para hacer deep inspection de nuestro tráfico y así poder bloquear nuestro tráfico, en este caso una web de descarga, en otros podrá ser otra cosa por ejemplo una web de temas políticos, de la competencia, vete a saber, las posibilidades son inmensas.

\n\n\n\n

Esto se podrá solucionar con una nueva versión de SNI llamada ESNI (Encrypted SNI) o utilizando un servicio de VPN, como por ejemplo el de Neodigit.

\n\n\n\n

Actualización

\n\n\n\n

Tras publicara el audio y el post me comenta un compi del grupo (no se si puedo poner aquí el nombre) que se puede habilitar el firefox tanto el esni como el secure DNS porque por defecto, al menos en Ubuntu 20.04 con Firefox 81, tendremos esto:

\n\n\n\n
\"\"
\n\n\n\n

Y me comenta lo siguiente:

\n\n\n\n

en Firefox, podemos activar el Encrypted SNI entrando en about:config y marcando como true la opción network.security.esni.enabled, igual que activar el Secure DNS estableciendo el valor «2» a la opción network.trr.mode.

Compañero en el grupo de Telegram
\n\n\n\n

Y al aplicar estos cambios el resultado es este:

\n\n\n\n
\"\"
\n\n\n\n

Con estos cambios ya no tenemos el problema del Allot en Sparrow Telecom, una solución bastante sencilla, pero como todo, hay que saberla.

\n\n\n\n

Muchísimas gracias por la información!!!!

\n

La entrada Bloqueo de webs aprovechando SNI se publicó primero en Eduardo Collado.

","id":"6YBoFMDj2Ozg2AFB7actoj","images":[{"height":640,"url":"https://i.scdn.co/image/bc2b688f0aaec8d51b96cf555116f8c9f649ad6b","width":640},{"height":300,"url":"https://i.scdn.co/image/c5e4488aa2ac4b4a82abfbf0779a4a5547c0389d","width":300},{"height":64,"url":"https://i.scdn.co/image/05a1b3c7136ce4ca0a050245f17b7d97ec7d67e5","width":64}],"is_externally_hosted":false,"is_paywall_content":false,"is_playable":true,"language":"es","languages":["es"],"name":"Bloqueo de webs aprovechando SNI","release_date":"2020-09-29","release_date_precision":"day","type":"episode","uri":"spotify:episode:6YBoFMDj2Ozg2AFB7actoj"},{"audio_preview_url":"https://p.scdn.co/mp3-preview/1b8b923e450f377f9cd50958b7a222eb84bfd75a","content_type":"PODCAST_EPISODE","description":"Hoy os traigo un audio para que podáis investigar vuestro hosting, para que podáis saber donde está, qué hay detrás y si es verdad lo que cuentan de el. El capítulo de hoy está planteado … La entrada Investigar vuestro hosting se publicó primero en Eduardo Collado.","duration_ms":2703872,"explicit":false,"external_urls":{"spotify":"https://open.spotify.com/episode/4qJ8rypwWLlBUY8de8j0qB"},"href":"https://api.spotify.com/v1/episodes/4qJ8rypwWLlBUY8de8j0qB","html_description":"

Hoy os traigo un audio para que podáis investigar vuestro hosting, para que podáis saber donde está, qué hay detrás y si es verdad lo que cuentan de el.

\n\n\n\n

El capítulo de hoy está planteado en plan taller y necesitaréis las siguientes herramientas:

\n\n\n\n\n\n\n\n

Los enlaces de los que hablamos son:

\n\n\n\n\n\n\n\n

Espero que el audio de hoy os resulte interesante.

\n\n\n\n

Actualización: Os dejo aquí un vídeo resumen por si os sirve de ayuda también, no es el mismo contenido que el audio.

\n\n\n\n
\n\n
\n\n\n\n

Foto de Andrea Piacquadio en Pexels

\n

La entrada Investigar vuestro hosting se publicó primero en Eduardo Collado.

","id":"4qJ8rypwWLlBUY8de8j0qB","images":[{"height":640,"url":"https://i.scdn.co/image/bc2b688f0aaec8d51b96cf555116f8c9f649ad6b","width":640},{"height":300,"url":"https://i.scdn.co/image/c5e4488aa2ac4b4a82abfbf0779a4a5547c0389d","width":300},{"height":64,"url":"https://i.scdn.co/image/05a1b3c7136ce4ca0a050245f17b7d97ec7d67e5","width":64}],"is_externally_hosted":false,"is_paywall_content":false,"is_playable":true,"language":"es","languages":["es"],"name":"Investigar vuestro hosting","release_date":"2020-09-15","release_date_precision":"day","type":"episode","uri":"spotify:episode:4qJ8rypwWLlBUY8de8j0qB"},{"audio_preview_url":"https://p.scdn.co/mp3-preview/b6bc21602e62c9755015d2b4a7002a4aef9ae4b1","content_type":"PODCAST_EPISODE","description":"RPKI permite a los titulares de direccionamiento público IP declarar sus recursos de forma verificada gracias a una cadena de certificados. El motivo de utilizar RPKI es conseguir que el encaminamiento en Internet sea más … La entrada Resource Public Key Infrastructure (RPKI) se publicó primero en Eduardo Collado.","duration_ms":1554821,"explicit":false,"external_urls":{"spotify":"https://open.spotify.com/episode/0gJifjtrHNAkLUzAGCu9qv"},"href":"https://api.spotify.com/v1/episodes/0gJifjtrHNAkLUzAGCu9qv","html_description":"

RPKI permite a los titulares de direccionamiento público IP declarar sus recursos de forma verificada gracias a una cadena de certificados.

\n\n\n\n

El motivo de utilizar RPKI es conseguir que el encaminamiento en Internet sea más seguro.

\n\n\n\n

RPKI está siendo promovido por mucha gente, desde desarrolladores de software libre, proveedores de hardware, podcasters, ¿verdad que sí?, y por supuesto los cinto RIR (Registros Regionales de Internet): ARIN, APNIC, AFRINIC, LACNIC y por supuesto nuestro RIPE NCC

\n\n\n\n

Actualmente, RPKI se utiliza para permitir que el titular legítimo de un bloque de direccionamiento IP haga una declaración autorizada sobre qué AS está autorizado para originar su prefijo en BGP. Además, todo el Mundo puede descargar y validar estas declaraciones y tomar decisiones de enrutamiento basadas en ellas. Este proceso se conoce como validación del origen de la ruta (ROV – Route Origin Validator).

\n\n\n\n

El objetivo final de RPKI no es más que proporcionar la validación de los prefijos en Internet.

\n\n\n\n

ROA

\n\n\n\n

Antes de nada tenemos que saber qué es el ROA (Route Origin Authorization). Una ROA es una declaración firmada que consta de un prefijo, una longitud máxima de prefijo y un ASN de origen.

\n\n\n\n
\"\"
Porción de la lista de ROAs de Tecnocrática en el Lir Portal de RIPE NCC
\n\n\n\n

Por cada prefijo podemos tener el ROA en tres posibles estados:

\n\n\n\n\n\n\n\n

Una vez que ya sabemos lo que es el ROA ya podemos empezar con RPKI. En RPKI, los certificados de los recursos dan fe de la asignación por parte del emisor de direcciones IP o números de AS al usuario final.

\n\n\n\n

Jerarquía RIR y certificados

\n\n\n\n

Como resultado, la jerarquía de certificados en RPKI sigue la misma estructura que la jerarquía de asignación de recursos de números de Internet, con la excepción del nivel IANA porque claro, IANA en el tema de RPKI está fuera.

\n\n\n\n

En cambio, cada uno de los cinco RIR ofrece un CA raíz del que se deriva una cadena de confianza para los recursos que administra cada uno de ellos.

\n\n\n\n
\"\"
Sistema de CA raíz para los RPKI
\n\n\n\n

Algo más que tenemos que saber es que los certificados digitales utilizados en RPKI están basados ​​en X.509,

\n\n\n\n

Algo que podría alguien decir es que los certificados X.509 se utilizan para autenticar individuos o webs y claro, en RPKI los certificados no tienen información de identidad.

\n\n\n\n

BGP y RPKI

\n\n\n\n

Otro tema a saber cuando se habla de RPKI es BGP, nuestro protocolo de routing favorito, pero como ya hemos hablado bastante de BGP no vamos a volver a liarnos la manta a la cabeza.

\n\n\n\n

Llegados a este punto tenemos que pensar en cómo vamos a securizar BGP, porque RPKI nos va a servir básicamente para validar si una ruta es de quien dice ser o no, para evitar entre otras cosas secuestro de prefijos BGP o BGP hijacking.

\n\n\n\n

Vamos a imaginar que hemos recibido el prefijo 217.18.32.0/22 generado en el AS15954, es decir Tecnocrática.

\n\n\n\n

Pues vamos a ver el ROA y el ROA nos dice que ese rango se tiene que generar en el AS que hemos dicho, pero el most specific length allowed es de 20 y en el prefijo recibido es de 22, así que tendríamos un problema porque el prefijo no coincidiría con la información del ROA con lo cual la ruta sería invalida.

\n\n\n\n

Este es el ejemplo podemos ver cómo un fallo de configuración o de definición del ROA puede hacer que nuestro anuncio BGP sea invalido.

\n\n\n\n

Esto normalmente no pasa, si en el LIR Portal defines que vas a anunciar un /20 se supone que es lo que vas a hacer.

\n\n\n\n

Pero ahora imaginad que ese direccionamiento llega anunciado por el AS1234, que obviamente no es el bueno, no es el definido en el ROA, en ese caso RPKI sería invalido y en este caso estaríamos hablando de un secuestro de prefijo de BGP.

\n\n\n\n

Ahora, es nuestro trabajo decidir si cuando nos llega un prefijo invalido lo descartamos o no. Mi consejo es descartarlo siempre, si es un error en el AS origen se van a dar cuenta y si es un secuestro pues nos ahorraremos problemas.

\n\n\n\n

Routinator 3000

\n\n\n\n

Pero claro, eso es en un Mundo ideal y fantástico en el que todos los routers del Mundo soportan RPKI, y a día de hoy no todos soportan RPKI, de hecho aún son una minoría, creciente, pero minoría.

\n\n\n\n

¿Qué software hace todo esto? Pues el software que nos va a servir como validador de RPKI es Routinator 3000,

\n\n\n\n

Este software se puede descargar de NLNetlabs y será el encargado de validar los prefijos. El software es gratuito y libre distribuido con licencia BSD en Github.

\n\n\n\n

Idealmente deberíais de tener un par de Routinator a los que puedan consultar vuestros routers, y es interesante tener dos, en plataformas diferentes si usáis virtualización para evitar problemas.

\n\n\n\n

Foto de mark glancy en Pexels

\n

La entrada Resource Public Key Infrastructure (RPKI) se publicó primero en Eduardo Collado.

","id":"0gJifjtrHNAkLUzAGCu9qv","images":[{"height":640,"url":"https://i.scdn.co/image/bc2b688f0aaec8d51b96cf555116f8c9f649ad6b","width":640},{"height":300,"url":"https://i.scdn.co/image/c5e4488aa2ac4b4a82abfbf0779a4a5547c0389d","width":300},{"height":64,"url":"https://i.scdn.co/image/05a1b3c7136ce4ca0a050245f17b7d97ec7d67e5","width":64}],"is_externally_hosted":false,"is_paywall_content":false,"is_playable":true,"language":"es","languages":["es"],"name":"Resource Public Key Infrastructure (RPKI)","release_date":"2020-09-07","release_date_precision":"day","type":"episode","uri":"spotify:episode:0gJifjtrHNAkLUzAGCu9qv"},{"audio_preview_url":"https://p.scdn.co/mp3-preview/591a50209dee177d2acc659d3d9d0fa0ad58ad69","content_type":"PODCAST_EPISODE","description":"El otro día mirando los algoritmos de cifrado en SSH cayó en mi mano un artículo que empezaba con la siguiente frase: ¿Qué es peor que una clave privada insegura? Una clave pública insegura. Me parece … La entrada Algoritmos de cifrado en SSH se publicó primero en Eduardo Collado.","duration_ms":1406165,"explicit":false,"external_urls":{"spotify":"https://open.spotify.com/episode/0nmz2nw6GIHUMG1eh0MJw8"},"href":"https://api.spotify.com/v1/episodes/0nmz2nw6GIHUMG1eh0MJw8","html_description":"

El otro día mirando los algoritmos de cifrado en SSH cayó en mi mano un artículo que empezaba con la siguiente frase:

\n\n\n\n

¿Qué es peor que una clave privada insegura? Una clave pública insegura.

\n\n\n\n

Me parece una frase maravillosa y me pareció un tema muy bueno, lo suficiente como para dedicarle un largo rato de estudio al tema.

\n\n\n\n

Como administradores de sistemas sabemos qué es SSH, o como mínimo si no sabemos qué es sabemos para qué sirve y cómo usarlo.

\n\n\n\n

Sabemos que SSH significa “SHell Segura“, Shell es el interprete de comandos, donde escribimos, pero aquí ¿qué significa segura?

\n\n\n\n

Cuando hablamos de “segura” en ssh nos estamos refiriendo a una combinación de hash, cifrado simétrico y cifrado asimétrico.

\n\n\n\n

Así pues ya sabemos lo que es SSH, y lo utilizaremos para conectar clientes y servidores.

\n\n\n\n

SSH se basa en la Infraestructura de clave pública, conocida por sus siglas en inglés PKI (Public Key Infrastructure)

\n\n\n\n
\"\"
Infraestructura de clave pública:
CA: Autoridad de Certificación
VA: Autoridad de Validación
RA: Autoridad de Registro
\n\n\n\n

A día de hoy los algoritmos criptográficos asimétricos más utilizados en el mundo PKI son RSA, DSA, ECDSA y EdDSA.

\n\n\n\n

Vamos a ver cada uno de ellos y vamos a ver cuando nos interesa usar uno u otro.

\n\n\n\n

Aunque lo primero será saber cómo SSH establece la conexión segura y esto lo hace en la negociación y conexión y posteriormente continuará con la autenticación.

\n\n\n\n

Neogicación y autenticación de SSH

\n\n\n\n

En SSH se podrá establecer la negociación y la conexión siempre y cuando se cumplan una serie de requisitos:

\n\n\n\n

Las versiones de SSH tienen que ser las mismas, aunque lo normal sería que se utiilizara SSH versión 2.0.

\n\n\n\n

Una vez negociada la versión de SSH las máquinas involucradas tendrán que negociar una clave simétrica para cifrar la conexión.

\n\n\n\n

La clave simétrica para cifrar la conexión no es lo mismo que las claves utilizadas para la autenticación, sino que se genera una clave compartida a través del intercambio de claves de Diffie-Helman.

\n\n\n\n

Se utilizan las claves públicas del cliente y la privada del servidor para generar la clave compartida, de esta forma el cliente ya ha autenticado al servidor.

\n\n\n\n

En cuanto a la autenticación se desarrolla una vez que el canal es confiable, en el punto en el que el cliente ha autenticado al servidor, pero el servidor aún no ha autenticado al cliente

\n\n\n\n

Normalmente se utiliza la autenticación de clave pública y esto implica una clave pública y una privada. La gracia es que cualquiera de las dos se puede utilizar para encriptar un mensaje, pero se tiene que desencriptar con la otra.

\n\n\n\n

Lo normal es que si A encripta un mensaje con la llave pública de B, el mensaje sólo lo podrá desencriptar B con su llave privada.

\n\n\n\n

Es con este método con el que se autentica la identidad. Esto tiene el problema de la gestión de llaves, si una llave se distribuye erróneamente: entonces se podrá comprometer dicha llave.

\n\n\n\n

El procedimiento es bastante simple:

\n\n\n\n
  1. El cliente inicia la conexión SSH.
  2. El servidor envía un mensaje aleatório.
  3. El cliente devuelve ese mensaje encriptado.
  4. Si el servidor lo recibe correctamente entonces se produce la autenticación.
\n\n\n\n
\"\"
Autenticación en SSH
\n\n\n\n

Cifrado asimétrico

\n\n\n\n

La razón por la que el cifrado asimétrico sea tan usado por su fortaleza radica en que con la clave privada se puede obtener la clave pública, pero no al revés, así que la clave pública puede distribuirse sin que exista un riesgo teórico, ahora si se consiguiera romper el cifrado tendríamos un problema, por lo que siempre es recomendable ir cambiando la clave de vez en cuando.

\n\n\n\n

Para generar las claves públicas se pueden utilizar tres tipos principales de cifrado:

\n\n\n\n\n\n\n\n

La integridad de cada una de las opciones viene dada por la naturaleza matemática que constituye el núcleo de cada algoritmo y por tanto la naturaleza matemática utilizada para la generación de las claves públicas.

\n\n\n\n

RSA, DSA, ECDSA y EdDSA

\n\n\n\n

Empezamos por RSA que fue utilizado por primera vez en 1978. La criptografía RSA se basa en la creencia matemática de que factorizar grandes números semiprimos es difícil por naturaleza.

\n\n\n\n

Por ejemplo: factorizar 6 es fácil es 2 * 3, fatorizar 2261 ya es más complicado, pero es 7 * 17 * 19, pero si utilizamos números enormes podemos tardar años porque no existe ninguna formula para factorizar un número compuesto en sus factores primos el tiempo de extracción de la clave es muy elevado.

\n\n\n\n

Por otro lado tenemos DSA, que es un algoritmo más complejo. A groso modo podemos decir que DSA tiene en cuenta un número aleatorio que se utiliza con la firma del mensaje, es decir, va un paso más allá.

\n\n\n\n

Y finalmente tenemos los algoritmos de curvas elipticas.

\n\n\n\n

Al hablar de algoritmos de curvas elípticas nos estamos refiriendo a ECDSA y EdDSA. Estos algoritmos se basan en el supuesto de que no existe una solución eficiente para resolver un problema de logaritmos discretos, igual que DSA.

\n\n\n\n

La diferencia está en que DSA utiliza una operación matemática llamada exponenciación modular y los algoritmos de curvas elípticas usan curvas elípticas.

\n\n\n\n

Las curvas elípticas que se han usado entre otras cosas para solucionar el Teorema de Fermat se definen mediante ecuaciones cúbicas (de tercer grado)

\n\n\n\n
\"\"
Representación gráfica en un sistema de coordenadas cartesianas de curvas elípticas sobre \"\\mathbb{R}\".
\n\n\n\n

Conclusión

\n\n\n\n

Llegados a este punto ya sabemos diferenciar los algoritmos, ahora tendremos que ver cual elegir en cada caso.

\n\n\n\n

En el caso de RSA tenemos la ventaja de que está implementado en todos o prácticamente todos los sistemas ya que lleva entre nosotros 42 años.

\n\n\n\n

Además RSA ha sabido adaptarse perfectamente a la Ley de Moore que define la evolución de la potencia de proceso. En RSA para lograr una seguridad de 128 bits es necesaria una clave con una longitud de 3072 bits.

\n\n\n\n

Cuando hablamos de una seguridad de 128 bits significa que tendríamos que hacer 2 ^ 128 intentos.

\n\n\n\n

En el caso de DSA nos encontramos ante un problema y es la generación de ese número aleatório ya que en computación los números realmente aleatorios son muy complicados de conseguir, así que aquí tenemos un tema que va a hacer que no seleccionemos DSA.

\n\n\n\n

Si hablamos de curvas elípticas nos vamos a encontrar una mayor velocidad manteniendo el mismo nivel de seguridad que con RSA, el problema es que EdDSA no está tan extendido como RSA.

\n\n\n\n

Si tuviéramos que elegir lo suyo sería EdDSA y si en el caso requerido no se pudiera usar porque no fuera soportado por alguno de los extremos entonces iremos a RSA.

\n

La entrada Algoritmos de cifrado en SSH se publicó primero en Eduardo Collado.

","id":"0nmz2nw6GIHUMG1eh0MJw8","images":[{"height":640,"url":"https://i.scdn.co/image/bc2b688f0aaec8d51b96cf555116f8c9f649ad6b","width":640},{"height":300,"url":"https://i.scdn.co/image/c5e4488aa2ac4b4a82abfbf0779a4a5547c0389d","width":300},{"height":64,"url":"https://i.scdn.co/image/05a1b3c7136ce4ca0a050245f17b7d97ec7d67e5","width":64}],"is_externally_hosted":false,"is_paywall_content":false,"is_playable":true,"language":"es","languages":["es"],"name":"Algoritmos de cifrado en SSH","release_date":"2020-08-28","release_date_precision":"day","type":"episode","uri":"spotify:episode:0nmz2nw6GIHUMG1eh0MJw8"},{"audio_preview_url":"https://p.scdn.co/mp3-preview/9e637d97065ffd8bdab35b2f289c9000c78047e9","content_type":"PODCAST_EPISODE","description":"Hoy os traigo a Adrian Almenar, un buen amigo que ya ha estado más veces por aquí, y vamos a hablar un ratillo sobre DNS sobre HTTPs, de DNS sobre TLS y demás. A día … La entrada DNS sobre HTTPS con Adrian Almenar se publicó primero en Eduardo Collado.","duration_ms":2854201,"explicit":false,"external_urls":{"spotify":"https://open.spotify.com/episode/5aEABEkbJnL41ZJPc2QxUz"},"href":"https://api.spotify.com/v1/episodes/5aEABEkbJnL41ZJPc2QxUz","html_description":"

Hoy os traigo a Adrian Almenar, un buen amigo que ya ha estado más veces por aquí, y vamos a hablar un ratillo sobre DNS sobre HTTPs, de DNS sobre TLS y demás.

\n\n\n\n

A día de hoy tenemos dos nuevas opciones de protocolo disponibles para el transporte seguro de DNS en Internet, estas dos opciones son DNS sobre HTTPS y DNS sobre TLS.

\n\n\n\n

En el audio de hoy os contamos un poco qué es y como funciona y además al final os cuento como configurar vuestro router mikrotik para tener DNS sobre HTTPS.

\n\n\n\n

Si queréis consultar más sobre DNS sobre HTTPS os dejo ahí un enlace a un post de hace algún tiempo en el que también hablamos un poco sobre ello.

\n

La entrada DNS sobre HTTPS con Adrian Almenar se publicó primero en Eduardo Collado.

","id":"5aEABEkbJnL41ZJPc2QxUz","images":[{"height":640,"url":"https://i.scdn.co/image/bc2b688f0aaec8d51b96cf555116f8c9f649ad6b","width":640},{"height":300,"url":"https://i.scdn.co/image/c5e4488aa2ac4b4a82abfbf0779a4a5547c0389d","width":300},{"height":64,"url":"https://i.scdn.co/image/05a1b3c7136ce4ca0a050245f17b7d97ec7d67e5","width":64}],"is_externally_hosted":false,"is_paywall_content":false,"is_playable":true,"language":"es","languages":["es"],"name":"DNS sobre HTTPS con Adrian Almenar","release_date":"2020-08-20","release_date_precision":"day","type":"episode","uri":"spotify:episode:5aEABEkbJnL41ZJPc2QxUz"},{"audio_preview_url":"https://p.scdn.co/mp3-preview/c48ae51d0d57c6f773186a3b392c1b8c2d087c72","content_type":"PODCAST_EPISODE","description":"Seguridad personal y privacidad en Internet La entrada Seguridad personal y privacidad en Internet se publicó primero en Eduardo Collado.","duration_ms":2535936,"explicit":false,"external_urls":{"spotify":"https://open.spotify.com/episode/5eAm2XllVmfLQKNZZdKlf8"},"href":"https://api.spotify.com/v1/episodes/5eAm2XllVmfLQKNZZdKlf8","html_description":"

Seguro que a muchos de vosotros os han preguntado por la seguridad personal y privacidad en Internet.

\n\n\n\n

El capítulo de hoy no es extremadamente técnico, pero sí que espero que sea útil, la idea es dejar unos cuantos consejos básicos para nuestro día a día o incluso para poder explicárselos a alguien y que puedan ser de utilidad.

\n\n\n\n

Si consigo que ese audio sea de utilidad a alguien a alguien que no sea especialmente técnico me habrá dado por contento, obviamente también es interesante para aquellos que somos técnicos, pero que quizás haya alguna cosa que se nos escape.

\n\n\n\n

E-mail

\n\n\n\n

El e-mail es la fuente número 1 de problemas para los usuarios, de momento. Por e-mail pueden llegar correos en los que nosotros creamos que el origen es alguien que realmente no lo es, ¿qué podemos hacer? lo primero es leer bien los correos y fijarnos bien en quien lo manda si vemos algo raro como fallos sintácticos, semánticos.

\n\n\n\n

Luego si nos manda un correo una empresa, banco o similar, tened en cuenta que siempre sabrán nuestro nombre, no es normal que un correo del banco empiece con un “Estimado cliente”, porque yo no me llama cliente, me llamo Eduardo.

\n\n\n\n

Para protegernos de que lo que nosotros enviamos no puede ser enviado desde otros sitios siempre tenemos DKIM o DMARC que junto con DNSSec siempre va a ayudar muchísimo a proteger nuestros correos, pero claro, esto tendríamos que hacerlo todos.

\n\n\n\n

Las macros de office no se ejecutan nunca salva en muy contadas ocasiones porque básicamente es ejecutar un programa en nuestro ordenador.

\n\n\n\n

Mensajería instantánea y SMSs

\n\n\n\n

La mensajería instantánea tiene el problema que todo lo que recibimos gana en puntos de confianza porque nos lo ha enviado una persona conocida y no tiene porque ser así, pensad si nuestra aplicación de mensajería encripta extremo a extremo nuestras comunicaciones o si no lo hacen, si es posible que estén escuchando desde otro sitio …

\n\n\n\n

Es importante tener en cuenta qué información se envía por ahí y sobre todo no pinchar en toda esa porquería que nos mandan disfrazada de noticias de la que luego hablaremos.

\n\n\n\n

Las llamadas telefónicas

\n\n\n\n

Pocas cosas menos tecnológicas que una llamada, pero claro, aquí la ingeniería social actúa, desde las típicas llamadas que se hacen pasar por alguien que no es para hacer la gracia, que no tiene ninguna, hasta aquellas que te dicen que hagas algo en nombre del CEO o la del soporte de microsoft.

\n\n\n\n

Ramsonware y minería

\n\n\n\n

Es una curiosa mezcla que me atreva a mezclar ramsonware y minería, pero desde el punto de vista del usuario empieza de la misma manera, pero ambas cosas se generan al instalar algo que no debemos.

\n\n\n\n

Por un lado el ransomware lo que hará será encriptar los datos de nuestro ordenador solicitando un rescate y la minería no lo hace, realmente no hace nada malo excepto usar nuestros recursos, pero si usa nuestros recursos puede hacer otras cosas.

\n\n\n\n

Gestión de contraseñas

\n\n\n\n

Es necesario tener un gestor de contraseñas, el postit o tener siempre la misma contraseña es una idea malísima y por supuesto logarnos en todas partes con nuestra cuenta de google o de facebook también es malísima idea como cuento en el audio.

\n\n\n\n

Autenticación de doble factor

\n\n\n\n

Esto es fundamental

\n\n\n\n

Encriptar la información

\n\n\n\n

Otra de las cosas importantes, siempre que se pueda encriptar la información hasta un destino conocido y confiable

\n\n\n\n

Fake news

\n\n\n\n

No todas son iguales y hay que intentar ver quien gana con una noticia.

\n\n\n\n

Redes Sociales

\n\n\n\n

Quizás la gente no se de cuenta, pero son un peligro enorme para nosotros ya que lo saben todo de nosotros.

\n

La entrada Seguridad personal y privacidad en Internet se publicó primero en Eduardo Collado.

","id":"5eAm2XllVmfLQKNZZdKlf8","images":[{"height":640,"url":"https://i.scdn.co/image/bc2b688f0aaec8d51b96cf555116f8c9f649ad6b","width":640},{"height":300,"url":"https://i.scdn.co/image/c5e4488aa2ac4b4a82abfbf0779a4a5547c0389d","width":300},{"height":64,"url":"https://i.scdn.co/image/05a1b3c7136ce4ca0a050245f17b7d97ec7d67e5","width":64}],"is_externally_hosted":false,"is_paywall_content":false,"is_playable":true,"language":"es","languages":["es"],"name":"Seguridad personal y privacidad en Internet","release_date":"2020-08-17","release_date_precision":"day","type":"episode","uri":"spotify:episode:5eAm2XllVmfLQKNZZdKlf8"},{"audio_preview_url":"https://p.scdn.co/mp3-preview/1c82d208ab2aa2c2a0267b1080032bfdf92daaf5","content_type":"PODCAST_EPISODE","description":"¿Qué es Ansible? ¿Cómo funciona? ¿Para qué sirve?. En el audio de hoy os traigo una introducción a Ansible que posteriormente habrá que ir ampliando y enfocando, quizás en vídeo dependiendo de la acogida de … La entrada Introducción a Ansible se publicó primero en Eduardo Collado.","duration_ms":3617344,"explicit":false,"external_urls":{"spotify":"https://open.spotify.com/episode/6PzztKacSaXuIRws8ybgbw"},"href":"https://api.spotify.com/v1/episodes/6PzztKacSaXuIRws8ybgbw","html_description":"

¿Qué es Ansible? ¿Cómo funciona? ¿Para qué sirve?. En el audio de hoy os traigo una introducción a Ansible que posteriormente habrá que ir ampliando y enfocando, quizás en vídeo dependiendo de la acogida de este audio.

\n\n\n\n

Así que si veo que el audio tiene una acogida interesante empezaré con los vídeos porque Ansible aunque creo que puede encajar perfectamente en este podcast no se si todo el mundo estará de acuerdo.

\n\n\n\n

La automatización a día de hoy no es una cosa opcional sino que es una cosa necesaria, al final la automatización va a ser un requisito en cualquier trabajo de sistemas y Ansible ahí es uno de los reyes

\n\n\n\n

Foto de Elina Krima en Pexels

\n

La entrada Introducción a Ansible se publicó primero en Eduardo Collado.

","id":"6PzztKacSaXuIRws8ybgbw","images":[{"height":640,"url":"https://i.scdn.co/image/bc2b688f0aaec8d51b96cf555116f8c9f649ad6b","width":640},{"height":300,"url":"https://i.scdn.co/image/c5e4488aa2ac4b4a82abfbf0779a4a5547c0389d","width":300},{"height":64,"url":"https://i.scdn.co/image/05a1b3c7136ce4ca0a050245f17b7d97ec7d67e5","width":64}],"is_externally_hosted":false,"is_paywall_content":false,"is_playable":true,"language":"es","languages":["es"],"name":"Introducción a Ansible","release_date":"2020-07-29","release_date_precision":"day","type":"episode","uri":"spotify:episode:6PzztKacSaXuIRws8ybgbw"},{"audio_preview_url":"https://p.scdn.co/mp3-preview/8de98f8f01197e7bd86d97a80085fd248139a18c","content_type":"PODCAST_EPISODE","description":"Ya hemos dedicado dos capítulos a temas relacionados con Ceph, por un lado Alta disponibilidad en Cluster de Proxmox con Ceph y por otro lado Ceph en Proxmox, pero no habíamos dedicado ningún capítulo específico … La entrada Introducción a Ceph se publicó primero en Eduardo Collado.","duration_ms":2016981,"explicit":false,"external_urls":{"spotify":"https://open.spotify.com/episode/6AdViiCz9exdaDUdY7xA3e"},"href":"https://api.spotify.com/v1/episodes/6AdViiCz9exdaDUdY7xA3e","html_description":"

Ya hemos dedicado dos capítulos a temas relacionados con Ceph, por un lado Alta disponibilidad en Cluster de Proxmox con Ceph y por otro lado Ceph en Proxmox, pero no habíamos dedicado ningún capítulo específico para hacer de una Introducción a Ceph.

\n\n\n\n

¿Qué es Ceph?

\n\n\n\n

Lo primero será decir que Ceph es un sistema unificado que ofrece almacenamiento por bloques, por ficheros y por objetos.

\n\n\n\n\n\n\n\n

RADOS significa Reliable Autonomous Distributed Object Store.

\n\n\n\n

Los clientes establecerán las conexiones con los OSDs, lo cual también elimina cualquier punto único de cuello de botella.

\n\n\n\n\n\n\n\n

Y la distribución de la información se realiza mediante CRUSH que es un algoritmo para almacenar la información en el cluster, es decir, la información se almacena de forma ordenada gracias a este algoritmo, es totalmente predecible.

\n\n\n\n\n\n\n\n

Es importante comentar que Ceph es un sistema SDS (Software Defined Storage)

\n\n\n\n

¿Cómo funciona Ceph?

\n\n\n\n

El punto central de Ceph es RADOS (Reliable Autonomous Distributed Object Store) y el nivel de RADOS consiste en el número de OSDs (Object Storage Daemons).

\n\n\n\n

Cada OSD normalmente está mapeado a un único disco. Cada OSD es totalmente independiente y forma relaciones peer-to-peer para formar un cluster con otros OSDs.

\n\n\n\n

Otro componente en un cluster de Ceph son los monitores, los cuales son los encargados de formar el consenso o quorum del cluster a través del uso de Paxos.

\n\n\n\n\n\n\n\n

Los monitores no están involucrados en la decisión de por donde va a ir la información y no tienen los mismos requisitos de rendimiento que los OSDs.

\n\n\n\n

Los cluster maps se utilizan por los componentes del cluster de ceph para describir la topología del cluster.

\n\n\n\n

Por último tenemos al manager que es el responsable de la configuración y las estadísticas.

\n\n\n\n

Como ya hemos comentado el algoritmo encargado de situar los grupos dentro de los OSDs es CRUSH.

\n\n\n\n

En último lugar tenemos a librados que es una librería de ceph que puede ser utilizada para construir aplicaciones que interactúen directamente con el cluster de RADOS para almacenar y recuperar objetos.

\n\n\n\n

Discos

\n\n\n\n

Hay que tener en cuenta que la elección de los discos adecuados es una decisión muy importante dentro de Ceph y no todos los discos son iguales.

\n\n\n\n

Hay gente que considera que poner SSDs es suficiente, pero puede ser hasta contraproducente poner según qué discos SSD.

\n\n\n\n

Por poner un ejemplo en discos SSD el bloque de flash normalmente es de 128k y aunque sólo queramos escribir 4 k en ellos el bloque entero tiene que ser leído y luego escrito, esto lleva mucho tiempo.

\n\n\n\n

Los discos buenos tienen una memoria y un firmware que se encarga de estas tareas, por tanto nos podemos desentender, sin embargo los discos SSD de consumo domestico no hacen esto y es el procesador el que tiene que encargarse de esto, con lo que el rendimiento se viene abajo.

\n\n\n\n

En cuanto a otros discos, tenemos que tener en cuenta que la limitación más grave no es el espacio, sino las IOPs (Input/Output Operations Per Second) del disco de un tamaño de 4k (es el estándar)

\n\n\n\n\n\n\n\n

Lista obtenida de Javierin.com, ahí tenéis más información sobre IOPS y discos muy interesante.

\n\n\n\n

En el momento el que tengamos que diseñar un cluster es más importante conocer las IOPS que el espacio total, porque si podemso meter más discos a veces será siempre preferible meter más discos y no sólo por las IOPS.

\n\n\n\n

Imaginad un cluster con 10 discos de 1TB donde uno falla con 500G de información, ahora tenemos que recolocar esos 500G entre los 9 discos restantes, si la red nos da 20MB/s tardaremos unos 45 minutos en hacerlo. Pero si el cluster fuera de 100 discos distribuir esos 500G entre 99 discos nos llevaría sólo 4 minutos a la misma velocidad de red. Como veis las IOPs son importantes, pero no lo único.

\n\n\n\n

Memoria

\n\n\n\n

Las recomendaciones de memoria son bastantes laxas, pero por lo general se establece que deberíamos de tener 3GB por cada OSD HDD y 5GB por cada OSD SSD, aunque realmente esto depende mucho del uso que se haga y sólo la experiencia con nuestro tipo de instalación y uso del almacenamiento nos dirá lo que tenemos que usar en cuanto a memoria.

\n\n\n\n

De todos modos la documentación oficial nos dice algo tan fácil como que cuanta más RAM mejor.

\n\n\n\n

CPU

\n\n\n\n

La documentación oficial de Ceph nos indica que las siguientes recomendaciones mínimas por OSD:

\n\n\n\n\n\n\n\n

Tenemos que tener en cuenta que Ceph es un SDS (Software Defined Storage), así que la latencia también va a verse afectada por la CPU.

\n\n\n\n
\"\"
Requisitos mínimos según la documentación oficial de Ceph: https://docs.ceph.com/docs/master/start/hardware-recommendations/
\n\n\n\n

Red

\n\n\n\n

En Ceph tener una red de 10G es muy recomendable, con una red de 1G funcionará, pero en el peor de los casos debido al aumento de latencia algunos OSDs podrían darnos timeout causando inestabilidades en el cluster, así que si no tenéis 10G Ceph no es para vosotros.

\n\n\n\n

El RTT para un paquete de 4k en una red de 10G suele ser de unos 90us, mientras que en una red de 1G es de 1ms.

\n\n\n\n

Recuperación ante fallos

\n\n\n\n

Las tecnologías de almacenamiento tradicionales suponen una fiabilidad del hardware del 100%, por eso controladoras redundantes, bandejas redundantes, etc…

\n\n\n\n

En Ceph los fallos de hardware están previstos y la forma de enfrentarse a ellos.

\n\n\n\n

Obviamente con clusters más pequeños más impacto habrá ante fallos y cuanto más grandes menos simplemente porque el porcentaje de información afectada será menor si hay muchos más nodos.

\n\n\n\n

Implementación mínima

\n\n\n\n

La implementación mínima tendrá en las variables del pool en size=3 y en min_size=2.

\n\n\n\n\n\n\n\n

BlueStore

\n\n\n\n

Cuando estuvimos instalando Ceph con proxmox se montaron los OSDs con tipo BlueStore, de hecho si vais en vuestro proxmox a un nodo, luego a Ceph y finalmente a OSD es muy probable que en la columna OSD Type veáis que todos los OSDs son de tipo BlueStore y ninguno de tipo FileStore.

\n\n\n\n

FileStore tenía entre otros problemas la escalabilidad o que necesitaba un interfaz para el sistema de ficheros, cosa que BlueStore no necesita. Estamos hablando de la versión de Ceph Luminous.

\n\n\n\n

BlueStore es el tipo de almacenamiento de bloques utilizado por Ceph. En Ceph los datos tienen asociados unos metadatos y es muy importante que tanto los datos como los metadatos puedan ser actualizados en una única transacción. Los datos serán los datos en si y los metadatos serán gestionados por RocksDB.

\n\n\n\n

Foto de Tiger Lily en Pexels

\n

La entrada Introducción a Ceph se publicó primero en Eduardo Collado.

","id":"6AdViiCz9exdaDUdY7xA3e","images":[{"height":640,"url":"https://i.scdn.co/image/bc2b688f0aaec8d51b96cf555116f8c9f649ad6b","width":640},{"height":300,"url":"https://i.scdn.co/image/c5e4488aa2ac4b4a82abfbf0779a4a5547c0389d","width":300},{"height":64,"url":"https://i.scdn.co/image/05a1b3c7136ce4ca0a050245f17b7d97ec7d67e5","width":64}],"is_externally_hosted":false,"is_paywall_content":false,"is_playable":true,"language":"es","languages":["es"],"name":"Introducción a Ceph","release_date":"2020-07-18","release_date_precision":"day","type":"episode","uri":"spotify:episode:6AdViiCz9exdaDUdY7xA3e"},{"audio_preview_url":"https://p.scdn.co/mp3-preview/1e8f3ddc3e7d33dc7dd7b1c321d1f530a7a952ef","content_type":"PODCAST_EPISODE","description":"Es muy probable que recordéis un protocolo propietario de Cisco llamado CDP (Cisco Discovery Protocol), pues tenemos otra opción llamada LLDP (Link Layer Discovery Protocol) que es algo parecido y que a nivel práctico nos … La entrada CDP y LLDP se publicó primero en Eduardo Collado.","duration_ms":1241109,"explicit":false,"external_urls":{"spotify":"https://open.spotify.com/episode/3BjvldShWMDuwlXeOWpOCA"},"href":"https://api.spotify.com/v1/episodes/3BjvldShWMDuwlXeOWpOCA","html_description":"

Es muy probable que recordéis un protocolo propietario de Cisco llamado CDP (Cisco Discovery Protocol), pues tenemos otra opción llamada LLDP (Link Layer Discovery Protocol) que es algo parecido y que a nivel práctico nos puede servir para lo mismo.

\n\n\n\n

Si queréis ver información más concreta sobre CDP y sobre LLDP lo mejor es que vayáis al blog de la empresa Irontec que tienen una entrada titulada CDP y LLDP, nuestros grandes aliados que está muy muy bien.

\n\n\n\n

Por defecto mikrotik vendrá con LLDP activado y nos va a ser de gran utilidad porque tendremos una compatibilidad con CDP también.

\n\n\n\n

En mi casa por ejemplo tengo un teléfono IP Cisco bastante antiguo pero que corre CDP y el mikrotik es capaz de detectarlo y de mostrarlo.

\n\n\n\n
\"\"
/ip/neighbor en Mikrotik
\n\n\n\n

Por supuesto también podemos mostrar los detalles de cada uno de los nodos descubiertos simplemente pinchando sobre el.

\n\n\n\n
\"\"
Detalle de un vecino lldp
\n\n\n\n

Todo esto está genial, pero ¿esto como se instala en un linux?.

\n\n\n\n

En el caso de un debian tendremos que instalar el demonio lldpd, para ello una instalación estándar.

\n\n\n\n
$ sudo apt install lldpd
\n\n\n\n

y una vez instalada le daremos compatibilidad con CDP, esto aunque no lo necesitéis en un principio es buena idea porque Ciscos hay y habrá muchos. PAra habilitar la compatibilidad:

\n\n\n\n
$ lldpd -c
\n\n\n\n

Y al cabo de un ratito porque tarda un ratito en empezar a detectar podremos ver los vecinos simplemente con lldpctl.

\n\n\n\n
\"\"
Salida de LLDPCTL en un Ubuntu
\n\n\n\n
\"\"
\n\n\n\n

En un cisco recordemos que es

\n\n\n\n
show cdp neighbors
\n\n\n\n

O si queréis ver los detalles

\n\n\n\n
show cdp neighbors detail 
\n\n\n\n

O si queréis ver un interfaz concreto

\n\n\n\n
show cdp neighbors gi1/1/1
\n\n\n\n

Sólo agregar un detallito y es que si queréis instalar lldp en un switch Nexus, ya que por defecto no viene, tendréis que decir:

\n\n\n\n
feature lldp
\n\n\n\n

Foto de Valentin Antonucci en Pexels

\n

La entrada CDP y LLDP se publicó primero en Eduardo Collado.

","id":"3BjvldShWMDuwlXeOWpOCA","images":[{"height":640,"url":"https://i.scdn.co/image/bc2b688f0aaec8d51b96cf555116f8c9f649ad6b","width":640},{"height":300,"url":"https://i.scdn.co/image/c5e4488aa2ac4b4a82abfbf0779a4a5547c0389d","width":300},{"height":64,"url":"https://i.scdn.co/image/05a1b3c7136ce4ca0a050245f17b7d97ec7d67e5","width":64}],"is_externally_hosted":false,"is_paywall_content":false,"is_playable":true,"language":"es","languages":["es"],"name":"CDP y LLDP","release_date":"2020-07-18","release_date_precision":"day","type":"episode","uri":"spotify:episode:3BjvldShWMDuwlXeOWpOCA"},{"audio_preview_url":"https://p.scdn.co/mp3-preview/2fce74e42c96272d28f98cba5f8c1578ab119ec9","content_type":"PODCAST_EPISODE","description":"En el capítulo de hoy vamos a ver un poco NC, NetCat o como queráis llamarlo, y vamos a ponerlo en contraposición a ssh en algunas cosas y siempre vamos a poder utilizar ssh con … La entrada NC – NetCat se publicó primero en Eduardo Collado.","duration_ms":2321237,"explicit":false,"external_urls":{"spotify":"https://open.spotify.com/episode/0v2Gk7a5O3ELdfMzGe12DK"},"href":"https://api.spotify.com/v1/episodes/0v2Gk7a5O3ELdfMzGe12DK","html_description":"

En el capítulo de hoy vamos a ver un poco NC, NetCat o como queráis llamarlo, y vamos a ponerlo en contraposición a ssh en algunas cosas y siempre vamos a poder utilizar ssh con nc para ejecutar comandos remotos.

\n\n\n\n

Netcat es un software de 1995 que tiene muchas utilidades, así que voy a pasar a enumeraros unas cuentas. Es importante escuchar el audio si estáis leyendo esto pues cada comando va en una máquina diferente.

\n\n\n\n

Ejemplo 1 – Crear un chat:

\n\n\n\n\n\n\n\n
nc -lp 1234\nnc x.x.x.x 1234
\n\n\n\n

Ejemplo 2 – Transferir un fichero

\n\n\n\n\n\n\n\n
nc -v -w 30 -p 1234 -l < fichero\nnc -v x.x.x.x 1234 > fichero
\n\n\n\n
\"NC
Imagen de la película “Tú a Bostón y yo a California” tuneada por Top
\n\n\n\n

Ejemplo 3 – Levantar una shell inversa

\n\n\n\n

Lo primero si usáis linux es instalar el paquete netcat-traditional porque por defecto viene el paquete netcat-openbsd. La diferencia es que el tradicional permite ejecución y el openbsd no. Esto nos dejará dos versiones de nc: nc.traditional y nc.openbsd donde nc será nc.openbsd.

\n\n\n\n\n\n\n\n
nc.traditional -vlp 5555 -e /bin/bash\nnc x.x.x.x 5555
\n\n\n\n

Ejemplo 4 – Escanear puertos

\n\n\n\n\n\n\n\n
nc.traditional -vu -w 1 x.x.x.x -z 1-100\nnc.traditional -v -w 1 x.x.x.x -z 1-100
\n\n\n\n
\"\"
Puerto Cerrado
\n\n\n\n
\"\"
Puerto abierto
\n\n\n\n

También podemos mezclarlo con un poco de bash y scripting:

\n\n\n\n\n\n\n\n
for i in {10..12}; do nc –vv –n –w 1 192.168.0.$i 21-25 –z; done
\n\n\n\n

Ejemplo 5 – Montar un syslog

\n\n\n\n

Para montar un syslog lo primero que necesitamos es una implementación de netcat que nos permita tener más de una conexión concurrente con el servidor y nc.traditional y nc.openbsd tienen la limitación de sólo una conexión concurrente.

\n\n\n\n

La implementación que permite tener conexiones concurrentes es ncat, la de https://nmap.org/ncat/, y esta es la que utilizaremos.

\n\n\n\n\n\n\n\n
ncat -m 100 -k -l -p 5000\nnc.traditional x.x.x.x 5000 -c \"tail -f /var/log/loquesea\"\nncat x.x.x.x 5000 -c \"tail -f /var/log/loquesea\"
\n\n\n\n

Ejemplo 6: Montar un servidor web

\n\n\n\n

Aquí montado el servidor web con ncat (permite varias conexiones) y con nc.traditional (sólo permite 1)

\n\n\n\n
ncat -lk -p 8080 --sh-exec \"echo -e 'HTTP/1.1 200 OK\\r\\n'; cat index.html\"\nnc.traditional -l -p 8080 -c \"echo -e 'HTTP/1.1 200 OK\\r\\n'; cat index.html\"
\n\n\n\n

Ejemplo 7: Modificar routers intermedios

\n\n\n\n

La cabecera de IP tiene un campo que se llama opciones y dentro de las opciones tenemos una llamada Loose Source Route (opción 131) que es muy probable que no hayáis visto todavía. En este caso lo que hacemos es especificar una lista de direcciones IP por las que el datagrama tiene que pasar, aunque esto no implique no pueda pasar por otro puntos no especificados. En el caso de Strict Source Routing por ejemplo sí tendríamos que pasar por sólo y exclusivamente esos puntos.

\n\n\n\n\n\n\n\n
nc.traditional -ulp 1234\nnc.traditional -u -g 1.1.1.1 -g 2.2.2.2 193.168.89.102 1234
\n\n\n\n
\"\"
Modificación de los saltos intermedios visto en wireshark
\n

La entrada NC – NetCat se publicó primero en Eduardo Collado.

","id":"0v2Gk7a5O3ELdfMzGe12DK","images":[{"height":640,"url":"https://i.scdn.co/image/bc2b688f0aaec8d51b96cf555116f8c9f649ad6b","width":640},{"height":300,"url":"https://i.scdn.co/image/c5e4488aa2ac4b4a82abfbf0779a4a5547c0389d","width":300},{"height":64,"url":"https://i.scdn.co/image/05a1b3c7136ce4ca0a050245f17b7d97ec7d67e5","width":64}],"is_externally_hosted":false,"is_paywall_content":false,"is_playable":true,"language":"es","languages":["es"],"name":"NC – NetCat","release_date":"2020-07-15","release_date_precision":"day","type":"episode","uri":"spotify:episode:0v2Gk7a5O3ELdfMzGe12DK"},{"audio_preview_url":"https://p.scdn.co/mp3-preview/6fc9ed1cffbb35a0043e6f958c5e346c05309748","content_type":"PODCAST_EPISODE","description":"SSHFS es un sistema que nos permite montar unidades remotas por ssh, esto es buena idea para cosas puntuales y a través de Internet, en redes locales hay opciones mucho más inteligentes e interesantes, pero … La entrada SSHFS se publicó primero en Eduardo Collado.","duration_ms":920853,"explicit":false,"external_urls":{"spotify":"https://open.spotify.com/episode/19krHjtPI6IzyCLLlt1DaM"},"href":"https://api.spotify.com/v1/episodes/19krHjtPI6IzyCLLlt1DaM","html_description":"

SSHFS es un sistema que nos permite montar unidades remotas por ssh, esto es buena idea para cosas puntuales y a través de Internet, en redes locales hay opciones mucho más inteligentes e interesantes, pero aquí os lo dejo. El procedimiento es el siguiente Lo primero es instalar sshfs

\n\n\n\n
sudo apt install sshfs
\n\n\n\n

Una vez instalado

\n\n\n\n
sudo mkdir /mnt/punto_de_montaje - Lugar donde queremos montar el servidor remoto\nsudo sshfs -o allow_other,default_permissions root@xxx.xxx.xxx.xxx:/ /mnt/punto_de_montaje
\n\n\n\n

O si tenemos que especificar la llave

\n\n\n\n
sudo sshfs -o allow_other,default_permissions,IdentityFile=~/.ssh/id_rsa root@xxx.xxx.xxx.xxx:/ /mnt/punto_de_montaje
\n\n\n\n

Para desmontar

\n\n\n\n
sudo umount /mnt/punto_de_montaje
\n\n\n\n

Para montarlo de forma permanente tenemos que añadir al fichero /etc/fstab

\n\n\n\n
sshfs#root@xxx.xxx.xxx.xxx:/ /mnt/punto_de_montaje\n
\n\n\n\n

Foto de Daniel Adesina en Pexels

\n

La entrada SSHFS se publicó primero en Eduardo Collado.

","id":"19krHjtPI6IzyCLLlt1DaM","images":[{"height":640,"url":"https://i.scdn.co/image/bc2b688f0aaec8d51b96cf555116f8c9f649ad6b","width":640},{"height":300,"url":"https://i.scdn.co/image/c5e4488aa2ac4b4a82abfbf0779a4a5547c0389d","width":300},{"height":64,"url":"https://i.scdn.co/image/05a1b3c7136ce4ca0a050245f17b7d97ec7d67e5","width":64}],"is_externally_hosted":false,"is_paywall_content":false,"is_playable":true,"language":"es","languages":["es"],"name":"SSHFS","release_date":"2020-07-09","release_date_precision":"day","type":"episode","uri":"spotify:episode:19krHjtPI6IzyCLLlt1DaM"},{"audio_preview_url":"https://p.scdn.co/mp3-preview/409ee848e2bc17dce1cb0d37043dca50e25a306a","content_type":"PODCAST_EPISODE","description":"Para realizar una ejecución remota de comandos con ssh lo primero que tenemos que hacer es añadir nuestra llave al fichero authorized_keys del usuario correspondiente del equipo remoto. El authorized_keys lo tenéis en el directorio … La entrada Ejecución remota de comandos con ssh se publicó primero en Eduardo Collado.","duration_ms":1123648,"explicit":false,"external_urls":{"spotify":"https://open.spotify.com/episode/0x406RVu7V5SYi9IYlwXNh"},"href":"https://api.spotify.com/v1/episodes/0x406RVu7V5SYi9IYlwXNh","html_description":"

Para realizar una ejecución remota de comandos con ssh lo primero que tenemos que hacer es añadir nuestra llave al fichero authorized_keys del usuario correspondiente del equipo remoto.

\n\n\n\n

El authorized_keys lo tenéis en el directorio ~/.ssh

\n\n\n\n

Otra opción es hacer un ssh-copy-id y con eso copiará nuestra llave.

\n\n\n\n

Una vez tengamos la llave ya podemos realizar ejecuciones remotas.

\n\n\n\n

Un ejemplo de ejecución remota es:

\n\n\n\n
ssh 198.51.100.4 \"uptime\"
\n\n\n\n

Ese comando nos dice el uptime de la máquina remota, sólo hace eso, pero siempre será más cómodo hacer eso que un ssh ejecutar el comando y luego salir.

\n\n\n\n

También podemos redirigir a un fichero, agregar a un fichero o lo que queráis para luego poder procesar eso.

\n\n\n\n
ssh 198.51.100.4 \"uptime\" > tiempo_levantado.txt
\n\n\n\n

Foto de Ketut Subiyanto en Pexels

\n

La entrada Ejecución remota de comandos con ssh se publicó primero en Eduardo Collado.

","id":"0x406RVu7V5SYi9IYlwXNh","images":[{"height":640,"url":"https://i.scdn.co/image/bc2b688f0aaec8d51b96cf555116f8c9f649ad6b","width":640},{"height":300,"url":"https://i.scdn.co/image/c5e4488aa2ac4b4a82abfbf0779a4a5547c0389d","width":300},{"height":64,"url":"https://i.scdn.co/image/05a1b3c7136ce4ca0a050245f17b7d97ec7d67e5","width":64}],"is_externally_hosted":false,"is_paywall_content":false,"is_playable":true,"language":"es","languages":["es"],"name":"Ejecución remota de comandos con ssh","release_date":"2020-07-03","release_date_precision":"day","type":"episode","uri":"spotify:episode:0x406RVu7V5SYi9IYlwXNh"},{"audio_preview_url":"https://p.scdn.co/mp3-preview/e2a740d5ef1452a99728a14f79890e7a50b9ce1a","content_type":"PODCAST_EPISODE","description":"Si gestionáis una red con varios switches y con muchas vlans es probable que con el tiempo ese número de vlans vaya creciendo, curiosamente nunca decreciendo, así que en este caso es fundamental la limpieza … La entrada Limpieza de vlans se publicó primero en Eduardo Collado.","duration_ms":1459840,"explicit":false,"external_urls":{"spotify":"https://open.spotify.com/episode/7c6qmbC5KvJN5AcBE0OvzD"},"href":"https://api.spotify.com/v1/episodes/7c6qmbC5KvJN5AcBE0OvzD","html_description":"

Si gestionáis una red con varios switches y con muchas vlans es probable que con el tiempo ese número de vlans vaya creciendo, curiosamente nunca decreciendo, así que en este caso es fundamental la limpieza de Vlans.

\n\n\n\n

Al cabo de un poco más de tiempo es posible que vayáis a configurar una nueva vlan y que vuestros flamantes switches de Cisco os digan que la vlan que estáis configurando no tendrá Spanning Tree.

\n\n\n\n

Efectivamente, si dejáis crecer el número de vlans es posible que lleguéis al número mágico de 128, el límite de instancias de PVST y ahí tendréis un problema.

\n\n\n\n

La solución no es otra que ir limpiando de vez en cuando.

\n\n\n\n

Al final la higiene y el orden más que nos pese es fundamental para todo.

\n\n\n\n

Una persona limpia, aseada e higiénica tendrá menos posibilidades de contraer el covid y una red ordenada y limpia funcionará mucho mejor.

\n\n\n\n

Las redes suelen utilizar un protocolo de nivel 2 llamado Spanning Tree que será el encargado de protegernos ante bucles, bueno, ya sabéis y si no en la web del podcast tenéis algún capítulo dedicado en exclusividad a Spanning Tree.

\n\n\n\n

Además el diseño de las redes suele estar hecho por bloques, ya sea siguiendo el típico y ya manido diseño de red por bloques que definió Cisco hace ya la un montón de años. Y si no usáis el diseño por bloques que propuso Cisco es muy probable que uséis un pseudo diseño por bloques aunque no lo sepáis.

\n\n\n\n

Una red estándar está compuesta por dos switches principales y luego un montón de switches que cuelgan de estos dos switches principales y luego seguramente tengáis cables que unen switches entre sí, y no sólo con los principales sino entre si, para cerra anillos, dar redundancias y todo este tipo de cosas.

\n\n\n\n

Al final tendréis un par de switches que tienen trunk a otro par de switches que están unidos entre sí y de los que cuelga otros switches.

\n\n\n\n

Algo así como si tuviéramos dos switches colgando de los switches principales y luego otro colgando de estos segundos switches y así replicado el modelo varias veces.

\n\n\n\n

Estoy pensando por ejemplo en una planta de un edificio en el que tengáis dos switches que cuelgan de los principales y luego alguno más dentro de la misma planta porque os hayáis quedado sin puertos o para hacer otra función, la que sea.

\n\n\n\n

Es como si tuviéramos los dos switches principales del edificio y luego dos switches más principales de cada planta

\n\n\n\n

El tema es que si tenéis replicado este modelo varias veces al final tendréis varios bloques, uno por planta.

\n\n\n\n

En este modelo es probable que paséis todas las vlans por todos los trunks de los switches principales por la razón que sea.

\n\n\n\n

Pero también es probable que no necesitéis todas las vlans en todos los switches de cada planta, pero que por comodidad las pasáis.

\n\n\n\n

Bueno, con el tiempo ya no sabréis qué vlan es necesaria en cada planta pues tendréis todas las vlans en todas las plantas.

\n\n\n\n

Esto a nivel conceptual no parece un problema, pero en el momento en el que un pequeño switch de esos secundarios de una planta se caiga o pase algo todos los switches del edificio tienen que recalcular Spanning Tree.

\n\n\n\n

Esto tampoco tiene por qué ser un problema, pero ahora imagina que por lo que sea un switch de esos secundarios se ha convertido en el root de spanning tree de una de esas vlans, de repente es muy probable que el trafico no vaya directamente a los switches principales sino a un switch secundario de planta porque se hayan bloqueado paths que no debieran.

\n\n\n\n

Esto obviamente si tenéis un mínimo de cuidado con Spanning Tree no debería de pasar, pero si tenemos la red bien limpia seguro que no pasa.

\n\n\n\n

Y luego como he comentado al inicio, si pasamos todas las vlans por todos los switches las limitaciones del PVST, si usamos Cisco nos impedirá tener más de 128 instancias de STP.

\n\n\n\n

Y por supuesto, el switch más limitado será el que limite toda la red, pero este no es el asunto de este audio.

\n\n\n\n

¿Qué tenemos que hacer para limpiar de vlans innecesarias nuestra red?

\n\n\n\n

Lo primero que tenemos que hacer para empezar a limpiar es empezar a limpiar desde afuera a adentro, es decir, en nuestro ejemplo, desde las plantas hasta los switches principales.

\n\n\n\n

El procedimiento sería algo parecido:

\n\n\n\n
  1. Se mira si hay macs dentro de la planta
  2. Se mira si hay puertos configurados en esa planta
  3. Si no hay ni macs ni puertos en esa planta se puede borrar de los switches de la planta y de los trunks a los switches principales.
  4. Si no hay macs, pero sí puertos configurados tendremos que mirar los servidores ahí conectados.
\n\n\n\n

Empezaremos por una planta y miraremos qué vlans tenemos en esa planta, ¿cómo lo hacemos? lo más fácil es mirar la configuración de los switches, si no tenemos ningún puerto configurado en esa vlan, ni en los trunks vamos bien, pero aún así puede ser que veamos alguna mac de esas vlans.

\n\n\n\n

¿Cómo es posible? porque puede ser que en ese switch no haya ningún puerto en esa mac, pero puede ser

\n\n\n\n

buscar macs en dichas vlans. Si sólo vemos macs de una vlan desde los uplinks a los switches principales del edificio y no vemos ninguna mac en la parte interna de la planta, salvo gloriosas excepciones significa que dentro de la planta no hay nada.

\n

La entrada Limpieza de vlans se publicó primero en Eduardo Collado.

","id":"7c6qmbC5KvJN5AcBE0OvzD","images":[{"height":640,"url":"https://i.scdn.co/image/bc2b688f0aaec8d51b96cf555116f8c9f649ad6b","width":640},{"height":300,"url":"https://i.scdn.co/image/c5e4488aa2ac4b4a82abfbf0779a4a5547c0389d","width":300},{"height":64,"url":"https://i.scdn.co/image/05a1b3c7136ce4ca0a050245f17b7d97ec7d67e5","width":64}],"is_externally_hosted":false,"is_paywall_content":false,"is_playable":true,"language":"es","languages":["es"],"name":"Limpieza de vlans","release_date":"2020-06-21","release_date_precision":"day","type":"episode","uri":"spotify:episode:7c6qmbC5KvJN5AcBE0OvzD"},{"audio_preview_url":"https://p.scdn.co/mp3-preview/efdb88a8834d8ba64ff5f020cb0e325a0cb4b86c","content_type":"PODCAST_EPISODE","description":"El pasado 30 de Mayo de 2020 tuvimos una Incidencia de AddTrust, caducó el certificado raíz y hubo mucha gente con sus sistemas no actualizados. Esto no es como aquel cambio del traspaso de la … La entrada Incidencia por la expiración del antiguo certificado raíz de AddTrust se publicó primero en Eduardo Collado.","duration_ms":1184533,"explicit":false,"external_urls":{"spotify":"https://open.spotify.com/episode/0Tp8YM6XTCzSjm4JjaLcwP"},"href":"https://api.spotify.com/v1/episodes/0Tp8YM6XTCzSjm4JjaLcwP","html_description":"

El pasado 30 de Mayo de 2020 tuvimos una Incidencia de AddTrust, caducó el certificado raíz y hubo mucha gente con sus sistemas no actualizados.

\n\n\n\n

Esto no es como aquel cambio del traspaso de la KSK que comentamos, sino algo que ha sucedido por software desactualizado de usuario.

\n\n\n\n

Introducción al problema

\n\n\n\n

Antes de nada comentar que el tema de los certificados se basa en confianza, ni más ni menos, es simplemente un tema de confianza.

\n\n\n\n

A grandes rasgos un certificado funciona, es válido, cuando otro certificado así nos lo dice y así llegamos a los certificados raíz.

\n\n\n\n

Los certificados raíz son aquellos que no tienen otro certificado superior que nos diga que ese certificado es válido, entonces, ¿eso como funciona?

\n\n\n\n

Los certificados raíz son autofirmados, así que el emisor y el sujeto son el mismo

\n\n\n\n

Los certificados raíz los tenemos en nuestros PCs, teléfonos, etc.. instalados.

\n\n\n\n

Esos certificados están físicamente en nuestros PCs y han sido instalados en él, obviamente cuando digo PC también me refiero a teléfonos, etc…

\n\n\n\n
\"\"
Certificados raiz en el directorio /usr/share/ca-certificates/mozilla de una Ubuntu
\n\n\n\n

El número de certificados raíz instalados es bastante alto y se van actualizando de vez en cuando, por ejemplo, en Ubuntu se actualizaron ayer, oh sorpresa.

\n\n\n\n

Entonces cada vez que vemos un certificado vendrá firmado por uno o varios, es importante esto, de nuestros certificados raíz instalados y si no coincide la comprobación pues se considera que el certificado es invalido.

\n\n\n\n

Para usar varios certificados raíz usaremos firma cruzada, que se utiliza para que los certificados tengan mayor respaldo, es decir, que se basen en varios certificados raíz.

\n\n\n\n

La firma cruzada se utiliza porque cuanto más antigua sea una cadena emisora más posibilidades hay de que esté mejor distribuida, recordad que los certificados raíz se instalan en los equipos de los usuarios, así que el proceso es lento. De esta manera tenemos más probabilidad de que nuestro certificado sea aceptado de forma más amplia.

\n\n\n\n

Con lo que os he contado hasta ahora hay dos cosas muy importantes que van a explicar la incidencia de los certificados iniciada el 30 de Mayo de 2020 a las 10:48:38 2020 GMT:

\n\n\n\n\n\n\n\n

Caducidad del CA de AddTrust

\n\n\n\n

El CA (certificado raíz) de AddTrust es el que caducó el 30 de Mayo y este era uno de los certificados utilizados para validar miles, o millones de certificados, entre otros muchos certificados wildcard.

\n\n\n\n

El tema es que los certificados intermedios utilizado por Sectigo tenían firma cruzada con UserTrust y AddTrust:

\n\n\n\n\n\n\n\n

Y claro UserTrust se introdujo en el año 2010 y poco a poco ha ido añadiéndose en los equipos, pero claro, aquellos que no se hayan actualizado desde entonces pues no lo tienen actualizado y falla.

\n\n\n\n

El tema es que no estamos hablando sólo de navegadores, sino de clientes de correo, aplicaciones de escritorio y móvil, o incluso servicios de correo externos muy conocidos.

\n\n\n\n

Pues todos esos servicios no actualizados fallaban.

\n\n\n\n

Además aquellos que recibiendo los dos certificados no sabían que hacer con ellos y daban fallo igualmente, en fin, un desastre y un despropósito.

\n\n\n\n

Y todo esto por no nombrar a las librerías empotradas de TLS.

\n\n\n\n

Solución a un problema ajeno

\n\n\n\n

Al final hay que poner soluciones a los problemas que son nuestros y a los que no, porque los usuarios al final lo que quieren es una solución a su problema y les da igual donde esté el problema y mucho menos les importa saber de quien es el problema, eso les da igual, quieren que su servicio funcione.

\n\n\n\n

En nuestro caso, en Neodigit no ha sido muy doloroso porque está todo super automatizado y es bastante fácil hacer cambios en masa, pero no quiero ni pensar en aquella gente que tenga servicios de hosting tradicionales, con cpanel, plesk o cualquier otra cosa.

\n\n\n\n

Sólo para que os hagáis una idea en nuestro caso hemos tenido que hacer cambio en más de 1000 servidores, eso sí, cambios automatizados.

\n\n\n\n

Lo primero ha sido hacer un reissue de unos certificados wildcard usados para correo. Al hacer el reissue de dichos certificados se ha dejado de incluir AddSTrust y se ha quedado sólo UserTrust, con lo cual sin problema.

\n\n\n\n

Ese certificado se ha instalado en todos los servidores que lo precisaban, principalmente servidores de hosting administrados por nosotros, en total más de 1000 y se ha hecho todo con una herramienta de automatización llamada chef.

\n\n\n\n

Luego se ha forzado la ejecución de chef en todos los servidores afectados y se han aplicado los cambios.

\n\n\n\n

Foto de cabecera Nejc Košir en Pexels

\n

La entrada Incidencia por la expiración del antiguo certificado raíz de AddTrust se publicó primero en Eduardo Collado.

","id":"0Tp8YM6XTCzSjm4JjaLcwP","images":[{"height":640,"url":"https://i.scdn.co/image/bc2b688f0aaec8d51b96cf555116f8c9f649ad6b","width":640},{"height":300,"url":"https://i.scdn.co/image/c5e4488aa2ac4b4a82abfbf0779a4a5547c0389d","width":300},{"height":64,"url":"https://i.scdn.co/image/05a1b3c7136ce4ca0a050245f17b7d97ec7d67e5","width":64}],"is_externally_hosted":false,"is_paywall_content":false,"is_playable":true,"language":"es","languages":["es"],"name":"Incidencia por la expiración del antiguo certificado raíz de AddTrust","release_date":"2020-06-02","release_date_precision":"day","type":"episode","uri":"spotify:episode:0Tp8YM6XTCzSjm4JjaLcwP"},{"audio_preview_url":"https://p.scdn.co/mp3-preview/ead183c31d1ea306a2df40105bc5c72495f87547","content_type":"PODCAST_EPISODE","description":"El capítulo de hoy es contar como sería una instalación de un servidor FTP en Debian10, en concreto vsftpd. En el audio de hoy no cuento ni como configurar el firewall ni nada parecido, así … La entrada Instalación y configuración de servidor FTP vsftp en Debian 10 se publicó primero en Eduardo Collado.","duration_ms":994219,"explicit":false,"external_urls":{"spotify":"https://open.spotify.com/episode/51Amvj1RWjjnpSOQkSV1za"},"href":"https://api.spotify.com/v1/episodes/51Amvj1RWjjnpSOQkSV1za","html_description":"

El capítulo de hoy es contar como sería una instalación de un servidor FTP en Debian10, en concreto vsftpd.

\n\n\n\n

En el audio de hoy no cuento ni como configurar el firewall ni nada parecido, así que todo eso queda fuera del alcance de este capítulo.

\n\n\n\n

Para instalar simplemente actualizamos e instalamos el paquete

\n\n\n\n
sudo apt update && sudo apt upgrade\nsudo apt install vsftpd
\n\n\n\n

Con eso termina todo lo que hay que instalar, ahora tendríamos que tocar el fichero /etc/vsftpd.conf y modificar las líneas:

\n\n\n\n
listen=YES\n..\nwrite_enable=YES\n..\n#connect_from_port_20=YES \nlisten_port=21
\n\n\n\n

Y para luego habilitar el chroot

\n\n\n\n
chroot_local_user=YES\nchroot_list_enable=YES\nchroot_list_file=/etc/vsftpd.chroot_list
\n\n\n\n
chroot_local_user=YES\nchroot_list_enable=YES\nchroot_list_file=/etc/vsftpd.chroot_list
\n\n\n\n

En este punto tendremos que editar el fichero /etc/vsftpd.chroot_list y añadir ahí los usuarios a los que quedamos dejar excluidos del chroot, si es que queremos dejar excluídos a alguno.

\n\n\n\n

Hay que recordar que para que funciona el servidor ftp con usuarios con chroot el directorio que contiene su home no puede tener permisos de escritura el usuario, lo más sencillo es cambiar el propietario a root si preferís.

\n\n\n\n
\n\n
\n\n\n\n

Foto de cabecera de Kevin Ku desde Pexels

\n

La entrada Instalación y configuración de servidor FTP vsftp en Debian 10 se publicó primero en Eduardo Collado.

","id":"51Amvj1RWjjnpSOQkSV1za","images":[{"height":640,"url":"https://i.scdn.co/image/bc2b688f0aaec8d51b96cf555116f8c9f649ad6b","width":640},{"height":300,"url":"https://i.scdn.co/image/c5e4488aa2ac4b4a82abfbf0779a4a5547c0389d","width":300},{"height":64,"url":"https://i.scdn.co/image/05a1b3c7136ce4ca0a050245f17b7d97ec7d67e5","width":64}],"is_externally_hosted":false,"is_paywall_content":false,"is_playable":true,"language":"es","languages":["es"],"name":"Instalación y configuración de servidor FTP vsftp en Debian 10","release_date":"2020-05-23","release_date_precision":"day","type":"episode","uri":"spotify:episode:51Amvj1RWjjnpSOQkSV1za"},{"audio_preview_url":"https://p.scdn.co/mp3-preview/d31cd50205e1f92b71d0e82e08eb3c721695183c","content_type":"PODCAST_EPISODE","description":"Cisco tiene una cosa llamada Cisco CoPP Policy que lo que hace es proteger el plano de control de los routers Cisco ante un supuesto ataque. Los conceptos de Plano de Control (control Plane) y … La entrada Cisco CoPP Policy se publicó primero en Eduardo Collado.","duration_ms":1183776,"explicit":false,"external_urls":{"spotify":"https://open.spotify.com/episode/4f1SzDQ3BHh6z0CwMxTCk0"},"href":"https://api.spotify.com/v1/episodes/4f1SzDQ3BHh6z0CwMxTCk0","html_description":"

Cisco tiene una cosa llamada Cisco CoPP Policy que lo que hace es proteger el plano de control de los routers Cisco ante un supuesto ataque.

\n\n\n\n

Los conceptos de Plano de Control (control Plane) y Plano de Datos (Data plane) se refieren a la separación lógica, y en algunos escenarios física, del trafico destinado a los Servicios (Data plane) y el tráfico que ocupan los Equipos de Red para gestionar, mantener y modificar el estado de la misma (Control Plane).

https://community.cisco.com/t5/discusiones-data-center/plano-de-control-y-plano-de-datos/td-p/2820763
\n\n\n\n

Por poner un ejemplo muy sencillo podemos estar inundando ICMPs contra la IP del router, ese tráfico lo tiene que procesar el propio router, la procesadora y eso al final va a afectar al plano de control ya que es ahí donde se ejecutan todas aquellas “cosas” que hacen que se pueda mover el tráfico con normalidad por el plano de datos.

\n\n\n\n

Si un PC a en un puerto del switch le manda un ping a un PC en otro puerto del switch ese tráfico irá sólo por el plano de datos del switch.

\n\n\n\n

Ahora, si un router está pinchado en un puerto de un switch y otro router está pinchado en otro puerto del mismo switch el tráfico entre ellos irá directo por el plano de datos, pero los servicios de red irán por el plano de control y en este caso los servicios de red serán mensajes de STP, VRRP, HSRP, OSPF, RIP ….

\n\n\n\n

Esto lo tenéis documentado en la propia web de Cisco en https://www.cisco.com/c/en/us/td/docs/switches/datacenter/nexus6000/sw/security/6x/b_6k_Security_Config_6x/b_6k_Security_Config_602N12_chapter_01101.pdf

\n\n\n\n

En equipos como los Nexus7k, el Data plane es procesado por los Módulos, sin tener que pasar por la Supervisora, quien se encarga de procesar el tráfico de Control Plane propio de la Red, por ejemplo, Updates de Routing Protocols, Mensajes de Fabricpath, OTV, etc.

https://community.cisco.com/t5/discusiones-data-center/plano-de-control-y-plano-de-datos/td-p/2820763
\n\n\n\n
\"\"
Planos de control, datos y gestión
\n\n\n\n

El otro plano que tenemos es el de gestión pero que en este capítulo vamos a obviarlo bastante.

\n\n\n\n

Hemos dicho que el objetivo es proteger a nuestra procesadora de tener que procesar aquello que no debiera y que debería de ser tratado por el ASIC correspondiente.

\n\n\n\n

Para proteger a nuestro router tendremos que indicar qué puerto queremos proteger, podemos hacerlo por puertos sueltos o mediante un puerto lógico llamado “Control Plane” que incluirá a todos los puertos del router o del switch.

\n\n\n\n

Al control plane le tendremos que aplicar un policing para limitar el tráfico que queremos que nos llegue.

\n\n\n\n

Para identificar el tráfico al que queremos hacer el rate limit tenemos que crear un class-map en nuestro cisco.

\n\n\n\n

Si el tráfico hace match con el class-map entonces tendremos que aplicar el polily-map para aplicar la política correspondiente, el rate limit.

\n\n\n\n

Y por último tenemos que decir donde aplicar esta política y esto lo podemos hacer en el control plane, es decir, todos los puertos y en los interfaces individuales.

\n\n\n\n

El primer paso con esto que hemos dicho es crear el class-map. Como ya sabéis el class-map en cisco se aplica sobre un access-list, así que definimos el access-list y luego aplicamos el class-map

\n\n\n\n
!\naccess-list 120 permit tcp any gt 1024 <router receive block> eq bgp\naccess-list 120 permit tcp any eq bgp <router receive block> gt 1024 established\naccess-list 120 permit tcp any gt 1024 <router receive block> eq 639\naccess-list 120 permit tcp any eq 639 <router receive block> gt 1024 established\naccess-list 120 permit tcp any <router receive block> eq 646\naccess-list 120 permit udp any <router receive block> eq 646\naccess-list 120 permit ospf any <router receive block> \naccess-list 120 permit ospf any host 224.0.0.5 \naccess-list 120 permit ospf any host 224.0.0.6 \naccess-list 120 permit eigrp any <router receive block> \naccess-list 120 permit eigrp any host 224.0.0.10 \naccess-list 120 permit udp any any eq pim-auto-rp\n---etc--- for other routing protocol traffic...\n!
\n\n\n\n

Con esto ya tendríamos creado el access-list 120 que lo vamos a usar para el tráfico de routing y ya podemos crear el class-map, que en este caso lo hemos llamado Routing.

\n\n\n\n
!\nclass-map match-all Routing\n match access-group 120\n!
\n\n\n\n

Perfecto, en este punto ya hemos identificado el tráfico que queremos limitar, al que queremos hacer rate limit. Ahora el policy-.map tiene una estructura un poco caprichosa:

\n\n\n\n
router(config) policy-map <service_policy_name>\nrouter(config-pmap) class <traffic_class_name>\nrouter(config-pmap-c) police [cir | rate] conform-action [transmit | drop] \n exceed-action [transmit | drop]\nwhere:\n* cir – Committed information rate (bits per second)\n* rate – Policy rate in packets per second (pps)
\n\n\n\n

En nuestro ejemplo con el tráfico de routing:

\n\n\n\n
!\npolicy-map RTR_CoPP\n class Undesirable\n police 8000 1500 conform-action drop exceed-action drop\n class Routing\n police 1000000 50000 conform-action transmitexceed-action transmit\n class Management\n police 100000 20000 conform-action transmit exceed-action drop\n class Normal\n police 50000 5000 conform-action transmit exceed-action drop\n class Catch-All-IP\n police 50000 5000 conform-action transmit exceed-action drop\n class class-default\n police 8000 1500 conform-action transmit exceed-action transmit\n!
\n\n\n\n

Aquí tenemos dos opciones para configurar el policy, una es con el Committed Information Rate in pps, el Committed Burst Size in packets y luego el conform o bien simplemente indicando el límite en pps.

\n\n\n\n

Y ya tenemos el policy-map, ahora tendremos que definir el service-policy.

\n\n\n\n
!\ncontrol-plane\n service-policy input RTR_CoPP\n!
\n\n\n\n

De esta forma ya tendríamos aplicado en el plano de control un service-policy que que en el tráfico de entrada tiene un policy-map que dice que al tráfico de Routing.

\n\n\n\n
\n\n
Audiograma del programa
\n

La entrada Cisco CoPP Policy se publicó primero en Eduardo Collado.

","id":"4f1SzDQ3BHh6z0CwMxTCk0","images":[{"height":640,"url":"https://i.scdn.co/image/bc2b688f0aaec8d51b96cf555116f8c9f649ad6b","width":640},{"height":300,"url":"https://i.scdn.co/image/c5e4488aa2ac4b4a82abfbf0779a4a5547c0389d","width":300},{"height":64,"url":"https://i.scdn.co/image/05a1b3c7136ce4ca0a050245f17b7d97ec7d67e5","width":64}],"is_externally_hosted":false,"is_paywall_content":false,"is_playable":true,"language":"es","languages":["es"],"name":"Cisco CoPP Policy","release_date":"2020-05-09","release_date_precision":"day","type":"episode","uri":"spotify:episode:4f1SzDQ3BHh6z0CwMxTCk0"},{"audio_preview_url":"https://p.scdn.co/mp3-preview/68de4668849a77313968829c1fe5895bb227e630","content_type":"PODCAST_EPISODE","description":"Resumen de HTTP/3 y QUIC La entrada HTTP/3 y QUIC se publicó primero en Eduardo Collado.","duration_ms":1867072,"explicit":false,"external_urls":{"spotify":"https://open.spotify.com/episode/16wJClka0NFL93xULjxKrX"},"href":"https://api.spotify.com/v1/episodes/16wJClka0NFL93xULjxKrX","html_description":"

Introducción a HTTP

\n\n\n\n

¿Qué es HTTP/3 y QUIC?, en este audio le dedico media hora para que puedas conocer qué es HTTP/3 y QUIC.

\n\n\n\n

En 1996 se creó HTTP/1 y fue en 2015 cuando se creó HTTP/2, así que tuvimos 19 años entre las dos versiones principales de HTTP, y cuando ya creíamos que eso era inmutable ahora nos vienen con HTTP/3.

\n\n\n\n

De hecho HTTP/3 viene del año 2015, así que tampoco es algo tan nuevo y el soporte en los navegadores está ya muy extendido.

\n\n\n\n

Seguro que sabes que HTTP es un protocolo que funciona sobre TCP, bueno, que funcionaba, ahora iremos entrando en materia.

\n\n\n\n

TCP ya sabéis que es un protocolo sobre IP. IP es el encargado de transportar los paquetes y TCP es el encargado de asegurar que esa conexión existe y de asegurar que esa comunicación se efectúa.

\n\n\n\n

Ya sabes, todo empieza con desafío en 3 vías y todas esas cosas de las que ya he hablado en el podcast alguna que otra vez.

\n\n\n\n

Una vez se ha establecido la conexión se convierte en una conexión totalmente confiable. Ya sabes que si se perdiera un paquete se pediría al origen que lo reenviara.

\n\n\n\n

Y todo esto es maravilloso porque hace que la información que el servidor nos envía después de hacer un GET llegue en un orden concreto y eso es estupendo porque tenemos la información completa.

\n\n\n\n

Al usar TCP puedo asegurar que es así y sabemos en qué orden tenemos que procesar los paquetes, bueno, segmentos porque hablamos de TCP.

\n\n\n\n

Este modo de funcionar nos parece tremendamente obvio, seguro que piensas que claro que es así y tienes razón, pero a ti y a mi nos suena tan obvio y tan lógico porque estamos usando esa forma de trabajar desde hace 30 años.

\n\n\n\n

HTTPS

\n\n\n\n

A día de hoy esto va evolucionando y a día de hoy tengo la impresión que lo que más usamos, con mucha diferencia, cuando navegamos por Internet, este podcast por ejemplo, es una cosa llamada HTTPS.

\n\n\n\n

HTTPS es http seguro, quizás esa sea la visión más simplista que existe y ya deberíamos de decir eso de que HTTPS es TCP + TLS + HTTP. Hemos añadido el Transport Layer Security sobre TCP

\n\n\n\n

Esta aproximación tampoco es muy profunda pero desde luego más que http seguro, y ya es un poco más seria, así que recuerda HTTPS es TCP + TLS + HTTP.

\n\n\n\n

Añadir TLS lo que hace es generar otro handshake, la misma filosofía que el desafío en 3 vías, para establecer la conexión TLS encima de TCP. Esto simplemente tenlo en la cabeza, sin más, pero eso es lo que nos añade la famosa seguridad, bueno y la privacidad también.

\n\n\n\n

Por eso que te acabo de contar se dice que HTTPS es HTTP seguro, bueno, si no lo sabías, ahora ya sabes de donde viene la S.

\n\n\n\n

Fíjate que cosa más buena, ahora puedo consultar una web que me da unos datos y nadie en medio puede leerlo porque el TLS se ha establecido entre tu ordenador, móvil o lo que sea, y el servidor.

\n\n\n\n

HTTP/1.1

\n\n\n\n

Volviendo al tema que me voy, el primer cambio realmente significativo en HTTP vino con la versión HTTP/1.1, en el año 1999.

\n\n\n\n

Hasta 1999 cualquier conexión HTTP era secuencial, es decir, no se podía transmitir el siguiente elemento hasta que no terminara con el que estaba, eso era terrorífico.

\n\n\n\n

Las webs en aquella época tampoco es que fueran muy sofisticadas, pero transmitir de forma secuencial en un sólo hilo no es lo más eficiente.

\n\n\n\n

Así pues en 1999 con la versión 1.1 de HTTP ya se podían abrir varias conexiones TCP en paralelo, eso así en frío es una buena idea, pero TCP no está diseñado para ese funcionamiento.

\n\n\n\n

En TCP la idea es levantar una sesión que quedará abierta durante un tiempo y se utilizará para enviar por ahí información, de hecho ese es el uso que la mayoría de los protocolos de aplicación sobre TCP hacen del protocolo, pero HTTP no.

\n\n\n\n

En HTTP se levantan sesiones TCP para cerrarlas casi automáticamente, así que el uso de TCP es francamente ineficiente y contrario a su filosofía obviamente.

\n\n\n\n

Pero aquí no vengo a hablar de la filosofía de TCP, aquí lo importante es que TCP no es un protocolo rápido, TCP necesita establecer la conexión, el tamaño de ventana y esas cosas.

\n\n\n\n

Realmente el inicio de TCP es lento y si estamos constantemente levantando sesiones TCP pues estamos haciendo un uso malo que al final lleva a que las webs carguen mucho más lentas de lo que debieran. Aunque luego tengamos sistemas como el TCP Fast Open que nos permite reutilizar conexiones TCP.

\n\n\n\n

Y aquí me puedes decir que HTTP/1.1 permite levantar varias sesiones TCP paralelas, es cierto, pero aquí tenemos un concepto muy chulo llamado Head-of-line blocking, el cual hace que una vez se agota el número de conexiones paralelas permitidas en el navegador (típicamente 6) tengamos el mismo efecto que si fueran conexiones secuenciales.

\n\n\n\n

Y en HTTP/2, del que ahora te hablaré, pasa algo parecido porque aunque HTTP/2 elimine el bloqueo nos da igual porque al final TCP va a tener el bloqueo, así que estamos un poco mejor, pero al final tenemos el bloqueo igual.

\n\n\n\n

Si perdemos un paquete de una de las conexiones multiplexadas al final va a afectar a todo.

\n\n\n\n

HTTP/2

\n\n\n\n

Para solucionar el problema de las múltiples conexiones TCP se inventó una cosa llamada HTTP/2 que multiplexaba las conexiones en una sólo, sólo una por host, de forma que ahora ya tenemos una conexión TCP que se alarga en el tiempo y no hay que ir creando y destruyendo conexiones.

\n\n\n\n

El rendimiento de TCP obviamente se dispara al no tener que establecer sesiones constantemente.

\n\n\n\n

Por ahí existe la idea de que HTTP/2 por defecto utiliza tráfico encriptado, pero no es verdad, lo que pasa es que muchos de los dispositivos que están entre el servidor y tu navegador no saben cómo tratar ese tipo de tráfico porque pueden ser equipos más antiguos que el protocolo.

\n\n\n\n

La solución es implementar TLS y así los nodos intermedios no tendrán nada que decir, esa es la razón por la que HTTP/2 se implementa únicamente sobre TLS.

\n\n\n\n

Así que oh! sorpresa, la razón principal para encriptar el tráfico en Internet no es la seguridad o la privacidad, sino para evitar las cajas intermedias, al menos nos soluciona el problema de los nodos intermedios.

\n\n\n\n

Ante los problemas del Fast Open, del Head-of-line blocking, en definitiva de los problemas asociados con TCP se pensó en cambiar de protocolo, pero las pruebas y los experimentos no fueron buenos.

\n\n\n\n

QUIC

\n\n\n\n

Para solucionar el problema de los nodos intermedios se inventó en Google un nuevo protocolo de transporte llamado QUIC, aunque en un inicio era de transporte y aplicación.

\n\n\n\n

Pero en 2016 cuando empezó el grupo de la IETF a funcionar se dividió en dos y QUIC quedó en la capa de transporte porque no podía haber un protocolo entre capas.

\n\n\n\n

Es importante tener esto en cuenta porque el protocolo QUIC de Google y el protocolo QUIC de la IETF no es lo mismo, pero la suerte es que cuando se habla de QUIC lo normal es hablar del QUIC bueno, el fetén, el de la IETF.

\n\n\n\n

El tener un nuevo protocolo de transporte permite muchas cosas como por ejemplo corregir el problema del Head-of-line blocking haciendo que cada paquete sepa a qué stream pertenece dentro de la sesión, y así no afectando a los demás en caso de pérdida.

\n\n\n\n

También se corrige el tema del hadshake, haciendolo más rápido y evitando el handshake del desafío en 3 vías y además el del TLS, se introduce el concepto de zero round-trip para el handshake.

\n\n\n\n

Pues esto del QUIC se construye sobre UDP porque es más fácil ponerlo sobre UDP que al mismo nivel que UDP ya que ese cambio sería masivo y no podría implementarse así alegremente.

\n\n\n\n

Recuerda que antes hemos hablado de TLS sobre TCP, ahora hablamos de QUIC sobre UDP.

\n\n\n\n
\"QUIC
QUIC sobre UDP
\n\n\n\n

En este caso QUIC es el que hace confiable la comunicación, obviamente UDP no puesto que UDP no es orientado a la conexión ni está pensado para esto, así que dejamos para QUIC encriptación, autenticación, establecimiento de sesión, control de flujo, corrección de errores y control de la congestión.

\n\n\n\n

Con QUIC tenemos soporte para los streams en el protocolo de transporte, esta es una diferencia importante porque con HTTP/2 los streams, la multiplexación, va a nivel de aplicación, ahora a nivel de transporte.

\n\n\n\n

Al tener los streams independientes a nivel de transporte eliminamos por completo el problema del Head of Line Blocking porque cada paquete sabe a qué stream pertenece de forma que cada stream es independiente a los demás.

\n\n\n\n

También hay que tener muy claro que QUIC es un protocolo de transporte y aunque a día de hoy esté muy relacionado con HTTP hay que tener en cuenta que QUIC podría funcionar con cualquier otro protocolo de aplicación, no está enlazado a HTTP más que nada porque ya de primeras la IETF decidió separarlo y trabajar con el QUIC de la capa de transporte.

\n\n\n\n

HTTP/3

\n\n\n\n

Y después de todo esto que te he contado por fin vamos a empezar a hablar de HTTP/3 que no es más que HTTP sobre QUIC.

\n\n\n\n

En HTTP/3 lo que se hace es más sencillo que en HTTP/2 porque la parte de multiplexación se encarga QUIC.

\n\n\n\n

Una cosa muy interesante es que QUIC implementa TLS 1.3, pero claro ese TLS al estar dentro de QUIC es sobre UDP, esto no deja de ser una curiosidad a tener en cuenta porque cuando hablamos de TLS lo normal es hablar de TLS sobre TCP.

\n\n\n\n

En cuanto a las diferencias entre HTTP/2 y HTTP/3 además de destacar que HTTP/2 va sobre TCP y HTTP/3 sobre QUIC, la que más interesante me parece es la del tratamiento de los Handshake gracias al 0-RTT handshake (zero round trip time resumption).

\n\n\n\n

Aunque el 0-RTT no es una característica de HTTP/3 sino de TLS1.3, así que podría ser habilitado en un servicio de HTTP/2 que utilizara TLS1.3, aunque claro hay una discusión todavía abierta sobre el problema del 0-RTT data replication y por eso a día de hoy no es normal encontrarlos en servidores con HTTP/2.

\n\n\n\n

Si te parece bien me gustaría ahora plantear un ejemplo práctico. Abres tu navegador porque quieres leer las notas de este programa y pones en tu navegador https://www.eduardocollado.com.

\n\n\n\n

Genial, https es puerto 443 sobre TCP, y si tengo el servidor con http/3 ¿qué pasa? porque http/3 hemos dicho que funciona sobre UDP y mi ordenador va a intentar conectarse a un puerto de TCP. Pues a mi que me llamen loco pero a priori veo un problema, mi navegador se quiere conectar por TCP pero el servicio es QUIC sobre UDP, así que el puerto será UDP.

\n\n\n\n

Bien, para este caso hay una solución bastante sencilla que es una redirección llamada alternative-service (alt-svc), que viene descrito en la RFC7838 de Abril de 2016.

\n\n\n\n

En la cual le indicamos al cliente que el servidor ofrece servicio http/3 y que lo ofrece en el puerto UDP que corresponda, que aunque no sea estándar se suele ofrecer en el puerto 443/UDP, aunque como tenemos esta cabecera no es necesario ofrecer ese puerto.

\n\n\n\n

La response header de Alt-Svc indicará servidor y puerto, ojo, el servidor no tiene porqué ser el mismo.

\n\n\n\n

Lecturas complementarias:

\n\n\n\n

QUIC Redefining Internet Transport

\n

La entrada HTTP/3 y QUIC se publicó primero en Eduardo Collado.

","id":"16wJClka0NFL93xULjxKrX","images":[{"height":640,"url":"https://i.scdn.co/image/bc2b688f0aaec8d51b96cf555116f8c9f649ad6b","width":640},{"height":300,"url":"https://i.scdn.co/image/c5e4488aa2ac4b4a82abfbf0779a4a5547c0389d","width":300},{"height":64,"url":"https://i.scdn.co/image/05a1b3c7136ce4ca0a050245f17b7d97ec7d67e5","width":64}],"is_externally_hosted":false,"is_paywall_content":false,"is_playable":true,"language":"es","languages":["es"],"name":"HTTP/3 y QUIC","release_date":"2020-05-03","release_date_precision":"day","type":"episode","uri":"spotify:episode:16wJClka0NFL93xULjxKrX"},{"audio_preview_url":"https://p.scdn.co/mp3-preview/3f0474c2fd2ff1996971bc8f4b9332a337874a45","content_type":"PODCAST_EPISODE","description":"Hoy tenemos un capítulo que va en audio y en vídeo sobre Jitsi, hoy instalación y configuración para conseguir: Certificados, Cambiar logo, Cambiar texto de la página inicial, Crear usuarios, Habilitar grabación local, Habilitar IPv6, Modificar resolución IPv6 La entrada Instalación y configuración de Jitsi se publicó primero en Eduardo Collado.","duration_ms":1954749,"explicit":false,"external_urls":{"spotify":"https://open.spotify.com/episode/4wZT8Ch3gKsKvz57UJviPz"},"href":"https://api.spotify.com/v1/episodes/4wZT8Ch3gKsKvz57UJviPz","html_description":"

Hoy tenemos un capítulo que va en audio y en vídeo sobre Jitsi, hoy instalación y configuración para conseguir:

\n\n\n\n\n\n\n\n

El servidor utilizado es un servidor cloud en Neodigit, Y recuerda que si quieres un Jitsi puedes contratarlo en Neodigit, o poniéndote en contacto conmigo te veas o no con fuerza para instalarlo tu mismo, no hay problema.

\n\n\n\n

Espero que os sirva de ayuda.

\n\n\n\n
\n\n
\n\n\n\n

Pasos para la instalación

\n\n\n\n

Instalar llave de Jitsi para el repositorio

\n\n\n\n
wget -qO - https://download.jitsi.org/jitsi-key.gpg.key | apt-key add -
\n\n\n\n

Añadir al sources.list.d

\n\n\n\n
vim /etc/apt/sources.list.d/jitsi-stable.list
\n\n\n\n

y añadir:

\n\n\n\n
deb https://download.jitsi.org stable/
\n\n\n\n

Ahora instalamos jitsi-meet

\n\n\n\n
apt update\napt install jitsi-meet
\n\n\n\n

Durante la instalación nos preguntará el nombre del host para instalar el let’s encrypt, aquí ya deberíamos de tener configurado el DNS

\n\n\n\n

Añadir el repositorio de Certbot, lo proporciona jitsi-meet
Antes: hay que instalar software-properties-common

\n\n\n\n
add-apt-repository ppa:certbot/certbot
\n\n\n\n

y lo instalamos

\n\n\n\n
apt install certbot
\n\n\n\n

E instalamos el certificado

\n\n\n\n
/usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh
\n\n\n\n

Ojo con dar una dirección de email al final del proceso

\n\n\n\n

Aquí ya funciona Jitsi

\n\n\n\n

Ahora vamos a poner password

\n\n\n\n
vim /etc/prosody/conf.avail/xyz.eduardocollado.com.cfg.lua
\n\n\n\n

buscamos la línea:

\n\n\n\n
authentication = \"anonymous\"
\n\n\n\n

y la cambiamos por:

\n\n\n\n
authentication = \"internal_plain\"
\n\n\n\n

Al final añadimos el virtualhost virtual para las autenticaciones

\n\n\n\n
VirtualHost \"guest.xyz.eduardocollado.com\"\nauthentication = \"anonymous\"\nc2s_require_encryption = false
\n\n\n\n

Ahora abrimos

\n\n\n\n
vim /etc/jitsi/jicofo/sip-communicator.properties
\n\n\n\n

Y añadimos la siguiente línea

\n\n\n\n
org.jitsi.jicofo.auth.URL=XMPP:xyz.eduardocollado.com
\n\n\n\n

Y añadimos usuarios

\n\n\n\n
prosodyctl register usuario xyz.eduardocollado.com password
\n\n\n\n

Para borrar los usuarios

\n\n\n\n
prosodyctl deluser usuario@xyz.eduardocollado.com
\n\n\n\n
\n\n\n\n

ACTUALIZACIÓN, Ojo que esto no sale en el vídeo.

\n\n\n\n

Me comenta David Marzal, con toda la razón, que antes de seguir tendremos que modificar el fichero /etc/jitsi/meet/xyz.eduardocollado.com-config.js y descomentar la siguiente línea, tiene que quedar como a continuación, sin // delante

\n\n\n\n
anonymousdomain: 'guest.xyz.eduardocollado.com'\n
\n\n\n\n
\n\n\n\n

Y reiniciamos servicios

\n\n\n\n
systemctl restart prosody.service
systemctl restart jicofo.service
systemctl restart jitsi-videobridge2.service
\n\n\n\n

Para personalizar el logo:

\n\n\n\n

El logo se llama watermark.png y se encuentra en el directorio

\n\n\n\n
/usr/share/jitsi-meet/images
\n\n\n\n

El texto está en el fichero, luego habrá que forzar el idioma en la configuración de meet

\n\n\n\n
/usr/share/jitsi-meet/lang/main-es.json
\n\n\n\n

Ahora todos estos cambios en

\n\n\n\n
/etc/jitsi/meet/jitsi.eduardocollado.com-config.js
\n\n\n\n

Luego forzar el idioma en:

\n\n\n\n
defaultLanguage: 'es'
\n\n\n\n

Para localRecording:

\n\n\n\n
localRecording: {\nformat: 'flac'\nenabled: true,\n},
\n\n\n\n

Para habilitar ipv6

\n\n\n\n
useIPv6: true,
\n\n\n\n

Para la resolución del vídeo

\n\n\n\n
constraints: {\nvideo: {\nheight: {\nideal: 480,\nmax: 720,\nmin: 240\n}\n}\n},
\n\n\n\n

\n

La entrada Instalación y configuración de Jitsi se publicó primero en Eduardo Collado.

","id":"4wZT8Ch3gKsKvz57UJviPz","images":[{"height":640,"url":"https://i.scdn.co/image/bc2b688f0aaec8d51b96cf555116f8c9f649ad6b","width":640},{"height":300,"url":"https://i.scdn.co/image/c5e4488aa2ac4b4a82abfbf0779a4a5547c0389d","width":300},{"height":64,"url":"https://i.scdn.co/image/05a1b3c7136ce4ca0a050245f17b7d97ec7d67e5","width":64}],"is_externally_hosted":false,"is_paywall_content":false,"is_playable":true,"language":"es","languages":["es"],"name":"Instalación y configuración de Jitsi","release_date":"2020-04-25","release_date_precision":"day","type":"episode","uri":"spotify:episode:4wZT8Ch3gKsKvz57UJviPz"},{"audio_preview_url":"https://p.scdn.co/mp3-preview/8c9483071f16d3b4b63b1d7c1aaf462411209065","content_type":"PODCAST_EPISODE","description":"Desconozco la razón por la que hay empresas de SEO que opinan que cambiando al dirección IP se puede posicionar mejor determinados temas, es curiosa la relación que comentan entre SEO y direccionamiento IP. De … La entrada SEO y direccionamiento IP se publicó primero en Eduardo Collado.","duration_ms":1033472,"explicit":false,"external_urls":{"spotify":"https://open.spotify.com/episode/7ludjVgWZ06dmCVttyrV91"},"href":"https://api.spotify.com/v1/episodes/7ludjVgWZ06dmCVttyrV91","html_description":"

Desconozco la razón por la que hay empresas de SEO que opinan que cambiando al dirección IP se puede posicionar mejor determinados temas, es curiosa la relación que comentan entre SEO y direccionamiento IP.

\n\n\n\n

De hecho ni Google ni nadie conocen el tamaño de la red, puesto que este va definido en la máscara de la red y esta no es visible desde fuera, así que no son capaces de saber ni el tamaño de la red ni la máscara.

\n\n\n\n

Entender que los tres primeros octetos de una dirección IP identifican la red es un error y por eso en 1985 se definió la RFC 950.

\n\n\n\n

En la RFC 950 donde se definía el funcionamiento de la máscara de red y del que ya hablé aquí hace tiempo.

\n\n\n\n

Además en el año 1993 el uso de octetos para definir redes quedó obsoleto en la RFC 1519 y que posteriormente fue actualizada en la RFC 4636.

\n\n\n\n

Es decir, las clases dejaron de ser utilizadas como segmentación de red en 1993.

\n\n\n\n

Desconozco es la razón por la que hay gente que todavía confunde clases con redes y también desconozco el porqué se relaciona SEO y direccionamiento IP.

\n\n\n\n

En concreto la máscara de red con SEO cuando ni Google ni nadie puede saber nunca cual es la red en la que está un host pues no conoce la máscara.

\n\n\n\n

De todos modos o bien no existe ningún documento oficial de Google que diga esto o yo no he sido capaz de encontrarlo, por eso me gustaría pedir ese documento si alguien lo tiene.

\n

La entrada SEO y direccionamiento IP se publicó primero en Eduardo Collado.

","id":"7ludjVgWZ06dmCVttyrV91","images":[{"height":640,"url":"https://i.scdn.co/image/bc2b688f0aaec8d51b96cf555116f8c9f649ad6b","width":640},{"height":300,"url":"https://i.scdn.co/image/c5e4488aa2ac4b4a82abfbf0779a4a5547c0389d","width":300},{"height":64,"url":"https://i.scdn.co/image/05a1b3c7136ce4ca0a050245f17b7d97ec7d67e5","width":64}],"is_externally_hosted":false,"is_paywall_content":false,"is_playable":true,"language":"es","languages":["es"],"name":"SEO y direccionamiento IP","release_date":"2020-04-10","release_date_precision":"day","type":"episode","uri":"spotify:episode:7ludjVgWZ06dmCVttyrV91"},{"audio_preview_url":"https://p.scdn.co/mp3-preview/afb5bfd535f8c20a5814ff7fd4114bac2d2d03e0","content_type":"PODCAST_EPISODE","description":"Puesta en marcha de la maqueta de Cumulus Linux en GNS3. VPCs con Virtual PC, Bonding, Spanning Tree y Valns. Explicación en audio, vídeo y texto. La entrada Cumulus Linux – Primeros pasos con la maqueta se publicó primero en Eduardo Collado.","duration_ms":1706736,"explicit":false,"external_urls":{"spotify":"https://open.spotify.com/episode/6cGELD88m5SNOy1QSvI9bS"},"href":"https://api.spotify.com/v1/episodes/6cGELD88m5SNOy1QSvI9bS","html_description":"

El otro día instalamos GNS3 con Virtualbox y levantamos unos switches con Cumulus Linux en GNS3.

\n\n\n\n

En mi caso he dejado la maqueta tal y como os muestro en la imagen:

\n\n\n\n
\"Maqueta
Maqueta inicial con GNS3
\n\n\n\n

Además de los tres switches Cumulus que añadí he procedido a añadir dos PCs con Virtual PC.

\n\n\n\n

La instalación es bastante trivial, no obstante os dejo aquí el procedimiento que he seguido en mi Debian 10 por si os sirve.

\n\n\n\n

Instalar Virtual PC para GNS3 en Debian 10

\n\n\n\n

Lo primero que tienes que hacer para poder añadir PCs en tu GNS3 es disponer de ellos. La opción más sencilla y ligera consiste en instalar Virtual PC.

\n\n\n\n

Virtual PC sólo necesita 2Mb de RAM para ejecutar cada PC, así que es una solución óptima.

\n\n\n\n

Puedes descargar el software desde https://sourceforge.net/projects/vpcs/files/ y ahí puedes descargar la versión 0.8 (la última a día de hoy).

\n\n\n\n

En mi caso he descargado la última versión y no me ha funcionado bien el teclado, así que he tenido que descargar una versión anterior que ha funcionado sin problema, la 0.8a que se puee descargar desde https://sourceforge.net/projects/vpcs/files/0.8/old/.

\n\n\n\n

De todos modos prueba y que cada uno se descargue la versión que necesite.

\n\n\n\n

Una vez descargado el ejecutable le das permisos de ejecución y agregas su ubicación a tu GNS3.

\n\n\n\n
\"Configuración
Configuración de VPC en GNS3
\n\n\n\n

Por defecto intenta arrancar el telnet al Virtual PC con xterm, esto se puede cambiar si quieres.

\n\n\n\n

Si quieres cambiar la consola, como ha sido mi caso, que uso como terminal el software teminator he ido a la configuración y en General, en la pestaña de Console Applications he puesto:

\n\n\n\n

terminator -T \"%d\" -e \"telnet %h %p\"

\n\n\n\n
\"Configuración
Configuración de Consola en GNS3
\n\n\n\n

Y con esto ya tienes los switches y los PCs para funcionar.

\n\n\n\n

El fichero /etc/network/interfaces

\n\n\n\n

Lo primero que tienes que hacer es entender que esto no funciona como un router al “estilo clásico, es decir, olvídate de abrir un vtysh de frrouting, un cli de cisco, o algo similar, esto es un Debian y hay que entenderlo como tal.

\n\n\n\n

Si quieres profundizar un poco más puedes escucharte el audio que dediqué a esto mismo en El audio sobre el fichero /etc/network/interfaces/.

\n\n\n\n

La configuración inicial podemos hacerla en el fichero /etc/network/interfaces.

\n\n\n\n

Por defecto en GNS3 os vais a encontrar lo siguiente en el fichero /etc/netowrk/interfaces:

\n\n\n\n
# The loopback network interface\nauto lo\niface lo inet loopback\n\n# The primary network interface\nauto eth0\niface eth0 inet dhcp\n    vrf mgnt\n\nauto mgnt\niface mgnt\n    address 127.0.0.1/8\n    address ::1/128\n    vrf-table auto
\n\n\n\n

En ese fichero podéis ver varias cosas.

\n\n\n\n

La primer cosa que veis es que tenemos un interfaz de loopback llamado lo.

\n\n\n\n

La segunda cosa es que tenéis un interfaz llamado eth0 que es cliente de dhcp y que está en la vrf llamada mgnt. Esto es debido a que la eth0 de todos los switches Cumulus es el interfaz de gestión.

\n\n\n\n

Y luego podéis ver que está la configuración de la vrf de gestión.

\n\n\n\n

Pero nos faltan todos los demás interfaces, aquí no están y que tendremos que ir añadiendo.

\n\n\n\n

Si se trata de la versión para GNS3 podremos añadirlos sin problemas, ahora, si tienes un switch físico tendrás que incluir la licencia.

\n\n\n\n

Como curiosidad comentaros que las licencias de Cumulus, hasta donde yo se, no son por hardware sino por tipo de switch, es decir, si tienes una licencia de switch con puertos de 100G y se te rompe puedes poner otro switch y mover la licencia, lo cual no está mal.

\n\n\n\n

Así que vamos a seguir con Cumulus Linux en GNS3.

\n\n\n\n

En el fichero /etc/network/interfaces configuraremos lo referente a nivel 2 OSI y muchas de las cosas de nivel 3.

\n\n\n\n\n\n\n\n

Configuración de Bonding

\n\n\n\n

Aquí me he encontrado un problema con mi maqueta y es que mi máquina virtual no para de reiniciarse al configurar el LACP, entiendo que los interfaces de VirtualBox no soportan bonding. Este es un problema en Cumulus Linux en GNS3

\n\n\n\n

En switches físicos el bonding es muy estable, así que no hay que preocuparse si tu maqueta se cuelga en este punto.

\n\n\n\n

La configuración que he utilizado es la siguiente

\n\n\n\n
# The loopback network interface\nauto lo\niface lo inet loopback\n\n# The primary network interface\nauto eth0\niface eth0 inet dhcp\n    vrf mgnt\n\nauto mgnt\niface mgnt\n    address 10.1.1.1/24\n    vrf-table auto\n\nauto swp1\niface swp1\n\nauto swp2\niface swp2\n\nauto swp3\niface swp3\n\nauto bond0\niface bond0\n    bond-slaves swp2 swp3\n    bond-mode 802.3ad\n    bond-miimon 100\n    bond-lacp-rate slow\n    bond-min-links 1
\n\n\n\n

En el otro lado la configuración es igual excepto la IP de gestión.

\n\n\n\n

La configuración de bond en Cumulus Linux en GNS3 tiene los siguientes comandos:

\n\n\n\n\n\n\n\n

Para ver la información del interfaz podemos utilizar el comando net show interface bond0 o bien el comando de linux sudo cat /proc/net/bonding/bond0.

\n\n\n\n

Sólo agregar que Cumulus Linux tiene una cosa muy chula que es el Multi-Chassis Link Aggregation (MLAG). Esto permite crear un bonding contra interfaces de switches diferentes, guardando todas las distancias el efecto sería como conectar un switch a un VSS de Cisco, desde el punto de vista del cliente, no del VSS. Esto en Cumulus Linux en GNS3 no lo he podido probar.

\n\n\n\n

Si os interesa este tema podéis hojearlo en la documentación de Cumulus.

\n\n\n\n

Configuración de vlans y Spanning Tree

\n\n\n\n

Una de las cosas totalmente necesarias en cualquier switch es la configuración de vlans y spanning tree.

\n\n\n\n

Cuando vienes del mundo Cisco y similares tienes en mente que una vlan es una instancia de Spanning Tree, y es así porque por defecto tienes PVST funcionando.

\n\n\n\n

Y en el mundo Cisco el concepto de bridge directamente no existe como aquí, así que bridge y vlan son equivalentes. Pero en Cumulus o en linux en general no es así.

\n\n\n\n

En GNU/Linux el spanning tree se ejecuta en los bridges y las vlans son subinterfaces, esto es muy importante y hay que tenerlo muy claro antes de ponerse a trabajar con Cumulus.

\n\n\n\n

Para configurar lo primero que tienes que tener claro es cómo quieres el spanning tree, algo que a mi no me acaba de gustar ya que no hay, o yo no conozco, una forma sencilla de reorganizar toda la estructura de spanning tree y vlans.

\n\n\n\n

Ya sabéis en Cumulus Linux cada bridge tiene una instancia de Spanning Tree, así que si ponemos todas las vlans en el mismo bridge tendremos una configuración VLAN-aware.

\n\n\n\n

La otra opción que tenemos es crear bridges con el modelo de bridge tradicional haciendo que cada vlan tenga su propia instancia de spanning tree.

\n\n\n\n

Pero esto ya da para otro audio y otro día seguiremos hablando de esto.

\n\n\n\n
\n\n
Audiograma del capítulo del podcast
\n

La entrada Cumulus Linux – Primeros pasos con la maqueta se publicó primero en Eduardo Collado.

","id":"6cGELD88m5SNOy1QSvI9bS","images":[{"height":640,"url":"https://i.scdn.co/image/bc2b688f0aaec8d51b96cf555116f8c9f649ad6b","width":640},{"height":300,"url":"https://i.scdn.co/image/c5e4488aa2ac4b4a82abfbf0779a4a5547c0389d","width":300},{"height":64,"url":"https://i.scdn.co/image/05a1b3c7136ce4ca0a050245f17b7d97ec7d67e5","width":64}],"is_externally_hosted":false,"is_paywall_content":false,"is_playable":true,"language":"es","languages":["es"],"name":"Cumulus Linux – Primeros pasos con la maqueta","release_date":"2020-03-23","release_date_precision":"day","type":"episode","uri":"spotify:episode:6cGELD88m5SNOy1QSvI9bS"},{"audio_preview_url":"https://p.scdn.co/mp3-preview/7a570a1e805069374edcb47b185e7d55eb8cbb8f","content_type":"PODCAST_EPISODE","description":"Uno de los ficheros más utilizados en Debian es el /etc/network/interfaces. Este fichero se encuentra en varias distribuciones de GNU/Linux y muchas veces es lo primero que tocamos en un servidor al instalarlo. En el … La entrada Fichero /etc/network/interfaces en Debian se publicó primero en Eduardo Collado.","duration_ms":1229064,"explicit":false,"external_urls":{"spotify":"https://open.spotify.com/episode/2iI76VA5UXCgrhf5aW4fKk"},"href":"https://api.spotify.com/v1/episodes/2iI76VA5UXCgrhf5aW4fKk","html_description":"

Uno de los ficheros más utilizados en Debian es el /etc/network/interfaces.

\n\n\n\n

Este fichero se encuentra en varias distribuciones de GNU/Linux y muchas veces es lo primero que tocamos en un servidor al instalarlo.

\n\n\n\n

En el fichero /etc/network/interfaces es donde configuramos la red de nuestros servidores y lo hacemos siguiendo una sintaxis específica:

\n\n\n\n

Una configuración podría ser la siguiente

\n\n\n\n
# cat /etc/network/interfaces\nauto lo\niface lo inet loopback\n\nauto eth0\niface eth0 inet static\n\taddress 192.0.2.2\n\tnetmask 255.255.255.0\n\tgateway 192.0.2.1\niface eth0 inet6 static\n\taddress 2001:DB8:1:3::1\n\tnetmask 56\n\tgateway 2001:DB8:1::
\n\n\n\n

En esta configuración vemos varias palabras clave:

\n\n\n\n\n\n\n\n

Esta es la configuración más sencilla que podemos poner en un fichero /etc/network/interfaces y a parte de esto podemos indicar muchas más cosas.

\n\n\n\n

Para aplicar cualquier cambio tenemos que reiniciar el servicio de networking:

\n\n\n\n

sudo service networking restart

\n\n\n\n

El problema de reiniciar el servicio de networkinig es que tirará todos los interfaces.

\n\n\n\n

También es interesante conocer las posibilidades que tenemos para trabajar con un par de interfaces.

\n\n\n\n

La primera posibilidad será la de definir un bridge, es decir, hacer que dos puertos participen de la misma red y que lo que entre por uno salga por el otro:

\n\n\n\n
auto br0\niface br0 inet static\n        address 192.0.2.2/24\n        gateway 192.0.2.1\n        bridge_ports eth0 eth1\n        up /usr/sbin/brctl stp br0 on
\n\n\n\n\n\n\n\n

En este ejemplo hemos definido un interfaz br0 (bridge 0) que está formado por los puertos eth0 y eth1 y donde tenemos el spanning tree activado.

\n\n\n\n

También puedes querer poner más de una dirección IP en el mismo interfaz. Esto se solía hacer definiendo interfaces del estilo eth0:1, pero con iproute2 ya no es necesario, ahora sería de la siguiente manera:

\n\n\n\n
auto eth0\nallow-hotplug eth0\niface eth0 inet static\n    address 192.0.2.2/24\n    gateway 192.0.2.1\n\niface eth0 inet static\n    address 192.0.2.22/24\n\niface eth0 inet static\n    address 198.51.100.2/24\n\niface eth0 inet static\n    address 203.0.113.14/24
\n\n\n\n

Y finalmente me gustaría mostrar el ejemplo que nos da la documentación de Debian:

\n\n\n\n
# onboard network interface\nauto enp4s0\niface enp4s0 inet manual\n# PCIe nic\nauto enp8s0\niface enp8s0 inet manual\n# bond inteface\nauto bond0\niface bond0 inet manual\n        slaves enp4s0 enp8s0\n        bond-mode 802.3ad\n# bridge interface\nauto br0\niface br0 inet static\n        address 192.168.1.17\n        netmask 255.255.255.0\n        network 192.168.1.0\n        broadcast 192.168.1.255\n        gateway 192.168.1.1\n        bridge_ports bond0\n        bridge_stp off\n        bridge_fd 0\n        bridge_maxwait 0
\n\n\n\n

Este ejemplo es muy bueno porque tenemos dos interfaces enp4s0 y enp8s0 que son los que forman el bond (agregación de puertos con lacp) utilizando IEEE 802.3ad.

\n\n\n\n
iface bond0 inet manual\n        slaves enp4s0 enp8s0\n        bond-mode 802.3ad
\n\n\n\n

A continuación en esa configuración se ve que se desactiva Spanning Tree (bridge_stp off) y se ponen los temporizadores de forwarding delay a 0 segundos (bridge_fd 0) y de max wait a 0 (bridge_maxwait 0).

\n\n\n\n
\n\n
Audiograma del capítulo del podcast
\n\n\n\n

Foto de portada de Harry Cunningham @harry.digital en Pexels

\n

La entrada Fichero /etc/network/interfaces en Debian se publicó primero en Eduardo Collado.

","id":"2iI76VA5UXCgrhf5aW4fKk","images":[{"height":640,"url":"https://i.scdn.co/image/bc2b688f0aaec8d51b96cf555116f8c9f649ad6b","width":640},{"height":300,"url":"https://i.scdn.co/image/c5e4488aa2ac4b4a82abfbf0779a4a5547c0389d","width":300},{"height":64,"url":"https://i.scdn.co/image/05a1b3c7136ce4ca0a050245f17b7d97ec7d67e5","width":64}],"is_externally_hosted":false,"is_paywall_content":false,"is_playable":true,"language":"es","languages":["es"],"name":"Fichero /etc/network/interfaces en Debian","release_date":"2020-03-22","release_date_precision":"day","type":"episode","uri":"spotify:episode:2iI76VA5UXCgrhf5aW4fKk"},{"audio_preview_url":"https://p.scdn.co/mp3-preview/3b13518704f61f0ec2497c3a5e7fb1005ef757af","content_type":"PODCAST_EPISODE","description":"Capítulo de podcast de Introducción a Cumulus Linux La entrada Cumulus Linux – Introducción se publicó primero en Eduardo Collado.","duration_ms":2004384,"explicit":false,"external_urls":{"spotify":"https://open.spotify.com/episode/2Iidsx8PANeN0Fwrg9H6cj"},"href":"https://api.spotify.com/v1/episodes/2Iidsx8PANeN0Fwrg9H6cj","html_description":"

¿Por qué Cumulus Linux?

\n\n\n\n

Quieres tener una red abierta, ágil y escalable, por eso has acabado aquí y porque sabes que Cumulus Linux puede ser una solución.

\n\n\n\n

De esta manera podrás añadir aplicaciones o reemplazar hardware sin depender de ningún fabricante.

\n\n\n\n

No estamos atados al fabricante ni en hardware ni en software.

\n\n\n\n

Es decir, los equipos de red sólo pueden correr el sistema operativo de su fabricante, con Cumulus Linux no pasa.

\n\n\n\n

Así pues en Cumulus Linux tenemos una arquitectura abierta y junto con el Sistema Operativo GNU/Linux conseguimos un entorno ágil y muy escalable.

\n\n\n\n

Podemos instalar cualquier software disponible sin necesidad de esperar a que el fabricante lo implemente, utilizando software de la comunidad.

\n\n\n\n

Y por supuesto ese entorno nos permite ahorrar costes y sobre todo no estar atados a ningún fabricante.

\n\n\n\n

La lista de compatibilidades va ampliándose cada día y puedes visitarla en https://cumulusnetworks.com/products/hardware-compatibility-list/.

\n\n\n\n

Cuando instalamos Cumulus en un hardware vamos a mirar la versión mínima y la plataforma para instalarlo.

\n\n\n\n

Por ejemplo, a día de hoy, un HP Altoline 6960 necesitará que le instales al menos la versión 3.1 de la arquitectura x86.

\n\n\n\n

ONIE – Open Network Install Environment

\n\n\n\n

ONIE es el instalador que se puede usar en todos los switches soportados por Cumulus Linux.

\n\n\n\n

El instalador ONIE es algo parecido al PXE. ONIE proporciona un entorno de instalación abierto para ejecutar en un switch.

\n\n\n\n

ONIE permite que los usuarios puedan instalar el sistema operativo en los switches soportados.

\n\n\n\n

Arquitectura de Cumulus Linux

\n\n\n\n

Cumulus Linux es una distribución de GNU/Linux basada en Debian, realmente es un Debian.

\n\n\n\n

Cumulus Linux funciona como un Debian permitiendo hacer todo lo que puedes hacer con un Debian.

\n\n\n\n

La única diferencia de utilizar Cumulus Linux en un switch con un PC es que en el switch tienes ASICs que permiten aceleración por hardware.

\n\n\n\n

Si utilizas aceleración por hardware conseguirás que el switch conmute a velocidad de línea, cosa que en un PC no conseguirás en la vida.

\n\n\n\n

Repositorios

\n\n\n\n

Cuando descargues Cumulus Linux vas a descargar un binario que se descompondrá en muchos paquetes específicos para realizar funciones específicas.

\n\n\n\n

También puedes instalar más sofware desde el repositorio principal, el de addons, el de testing o desde la comunidad de Debian.

\n\n\n\n

El repositorio principal (repo.cumulusnetworks.com) es el que contiene las actualiaciones de seguridad y todo lo que hay ahí está 100% soportado y no te debería de dar problemas.

\n\n\n\n

También tenemos el repositorio de addons es el que contiene paquetes de terceros, como por ejemplo chef o puppet, ansible por ejemplo está en el principal.

\n\n\n\n

Otro sería el repositorio de testing es el que contiene aquellas aplicaciones que tienen un funcionamiento teóricamente bueno, pero que deben de ser probados por los usuarios.

\n\n\n\n

Este repositorio contiene softare experimental que deberá de salir en versiones futuras.

\n\n\n\n

La última opción de instalación de paquete será desde la comunidad de Debian, ahí podéis descargar cualquier paquete para Debian, a vuestro propio riesgo ya que están soportados por la comunidad.

\n\n\n\n

Tienes que tener cuidado con los paquetes descargados desde la comunidad porque al igual que en los servidores o PCs puede ser que estos paquetes requieran ajustes como librerías, dependencias, etc…

\n\n\n\n

En cuanto a paquetes tenemos FRRouting para el routing; puppet, chef, ansible, cfengine … para automatización, aunque aquí el más usado es sin duda Ansible. Pero también tenemos software de monitorización, de virtualización, etc…

\n\n\n\n

Detalles de la arquitectura

\n\n\n\n
\"Arquitectura
Arquitectura de Cumulus Linux
\n\n\n\n

Espacio de Usuario: Este es el lugar donde se interactúa con el usuario y aquí se configuran los protocolos de routing o de switching.

\n\n\n\n

Kernel de Linux: Aquí es donde se realiza la configuración en el sistema de lo que el usuario a introducido en el Espacio de Usuario.

\n\n\n\n

Abstracción de Hardware: Una vez la instrucción llega al Kernel de Linux este tiene que meterlo en el hardware porque aquí hay ciertas tareas que las va a realizar directamente el ASIC que corresponda.

\n\n\n\n

switchd: Este es el único software propietario que hay en la solución y es el responsable de la abstracción del hardware. En Cumulus Linux cuando un usuario hace una petición esta pasa al kernel y se genera un netlink que se traduce a información para el ASIC correspondiente por switchd, esta es la diferencia fundamental entre un servidor y un switch usando Cumulus Linux.

\n\n\n\n

Virtualización de Cumulus con Cumulus VX

\n\n\n\n

Antes de empezar a trabajar con Cumulus Linux es buena idea que puedas familiarizarte un poco con el entorno y el sistema.

\n\n\n\n

No es necesario que practiques en un siwtch completo sino que puedes utilizar la versión virtualizada directamente en tu PC.

\n\n\n\n

También te puede servir para probar nuevas funcionalidades, para hacer desarrollo o cualquier otra cosa que se te ocurra.

\n\n\n\n

Para descargar Cumulus VX tendrás que ir a https://cumulusnetworks.com/products/cumulus-vx/download/ y registrarte.

\n\n\n\n

Una vez estés registrado y confirmado el correo electrónico podrás descargar la versión para el sistema de virtualización que prefieras de entre los disponibles.

\n\n\n\n

Si quieres utilizar GNS3 como voy a hacer yo tendrás que descargar la versión de Virtualbox.

\n\n\n\n
\"Descarga
Descarga de Cumulus VX
\n\n\n\n

Si prefieres la oficial la tienes en https://docs.cumulusnetworks.com/, eso sí, a día de hoy te vas a descargar la versión 4.0.0 y la documentación es sobre la versión 3.7, pero sirve.

\n\n\n\n

Cumulus VX en Virtualbox

\n\n\n\n

Como acabo de comentar voy a utilizar Virtualbox para instalar Cumulus VX para posteriormente integrarlo con GNS3.

\n\n\n\n

Lo primero es descargar la imagen OVA, entiendo que la has descargado, para ello hay que abrir Virtualbox e ir a Archivo -> Importar servicio virtualizado.

\n\n\n\n
\"Importar
Importar servicio virtualizado en Virtualbox
\n\n\n\n

Obviamente con un sólo switch no vais a tendrás suficiente para jugar, así que una vez lo tengas importado te recomiendo darle a clonar y clonación completa para tener más switches.

\n\n\n\n

Es buena costumbre cuando importes el OVA de Cumulus decirle a Virtualbox que es Debian64.

\n\n\n\n

Instalación de GNS3 en Debian 10

\n\n\n\n

En mi caso tengo como equipo de sobremesa un Debian 10 y GNS3 no está disponible en los repositorios oficiales de Debian 10, así que tengo que seguir los siguientes pasos porque no es muy intuitivo el proceso:

\n\n\n\n

Lo primero será instalar esto:

\n\n\n\n

sudo apt update
sudo apt install -y python3-pip python3-pyqt5 python3-pyqt5.qtsvg \\
python3-pyqt5.qtwebsockets \\
qemu qemu-kvm qemu-utils libvirt-clients libvirt-daemon-system virtinst \\
wireshark xtightvncviewer apt-transport-https \\
ca-certificates curl gnupg2 software-properties-common

\n\n\n\n

Ahora instalaremos GNS3 de Pypi (tarda un ratito):

\n\n\n\n

pip3 install gns3-server
pip3 install gns3-gui

\n\n\n\n

Importamos la clave de Docker:

\n\n\n\n

curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -

\n\n\n\n

Añadimos el repositorio “edge”

\n\n\n\n

sudo add-apt-repository \\
\"deb [arch=amd64] https://download.docker.com/linux/debian \\
$(lsb_release -cs) \\
stable edge\"

\n\n\n\n

Ahora instalamos docker-ce:

\n\n\n\n

sudo apt update
sudo apt install -y docker-ce

\n\n\n\n

Añadimos a nuestro /etc/apt/sources.list:

\n\n\n\n

deb http://ppa.launchpad.net/gns3/ppa/ubuntu bionic main
deb-src http://ppa.launchpad.net/gns3/ppa/ubuntu bionic main 

\n\n\n\n

Y añadimos la clave

\n\n\n\n

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F88F6D313016330404F710FC9A2FD067A2E3EF7B

\n\n\n\n

Ahora instalamos sólo estos dos paquetes:

\n\n\n\n

sudo apt-get update
sudo apt install dynamips ubridge

\n\n\n\n

Y quitamos del sources.list

\n\n\n\n

#deb http://ppa.launchpad.net/gns3/ppa/ubuntu bionic main
#deb-src http://ppa.launchpad.net/gns3/ppa/ubuntu bionic main

\n\n\n\n

Ahora añadimos nuestro usuario a los grupos necesarios:

\n\n\n\n

edu@andromeda:~$ sudo usermod -aG kvm edu
edu@andromeda:~$ sudo usermod -aG libvirt edu
edu@andromeda:~$ sudo usermod -aG ubridge edu
edu@andromeda:~$ sudo usermod -aG wireshark edu

\n\n\n\n

En este punto reiniciamos el PC.

\n\n\n\n

Creamos un enlace simbólico para python 3.5 utilizando python3.7:

\n\n\n\n

sudo ln -s /usr/bin/python3.7 /usr/bin/python3.5

\n\n\n\n

Instalamos python-pip y python3-pip para utilizar gns3:

\n\n\n\n

sudo apt install python-pip python3-pip

\n\n\n\n

Instalamos gns3 desde Pypi:

\n\n\n\n

sudo pip3 install gns3-server
sudo pip3 install gns3-gui

\n\n\n\n

E instalamos las dependencias adiciones:

\n\n\n\n

sudo apt install python3-pyqt5.QtSvg python3-pyqt5.qtwebsockets dynamips

\n\n\n\n

Con esto ya tenemos instalado GNS3 en nuestro Debian 10. La verdad es que en Debian 10 es una tortura instalar GNS3, pero en otras distribuciones es automático y en Windows también.

\n\n\n\n

Importar switch de Virtualbox en GNS3

\n\n\n\n

Una vez tengas el GNS3 instalado puedes importar tus switches en GNS3 yendo a Editar -> Preferencias y luego en la columna de la izquierda seleccionar Virtualbox VMs y dando New y seleccionando del desplegable.

\n\n\n\n
\"Importar
Importar switch de Virtualbox en GNS3
\n\n\n\n

Una vez están los switches tenemos que ponerles interfaces a los switches en GNS3. Eso se hace desde la misma pantalla donde los hemos importado dando Edit, yendo a la pestaña Network y poniendo 4 interfaces de tipo virtio-net.

\n\n\n\n

Ojo tienes que acordarte de marcar la casilla que permite a GNS3 gestionar las interfaces de Virtualbox:

\n\n\n\n
\"Poner
Poner interfaces en GNS3
\n\n\n\n

Ahora podemos empezar a crear la topología, por defecto los switches van a estar en la categoría End Devices, pero puedes cambiarlo editando el switch donde antes y poniéndolo en switches, como yo lo he hecho.

\n\n\n\n
\"GNS3
GNS3 maqueta
\n\n\n\n

Llegados a este punto ya está la maqueta montada y se puede empezar a trabajar con ella.

\n\n\n\n
\n\n
\n\n\n\n

Foto de cabecera de James Wheeler en Pexels

\n

La entrada Cumulus Linux – Introducción se publicó primero en Eduardo Collado.

","id":"2Iidsx8PANeN0Fwrg9H6cj","images":[{"height":640,"url":"https://i.scdn.co/image/bc2b688f0aaec8d51b96cf555116f8c9f649ad6b","width":640},{"height":300,"url":"https://i.scdn.co/image/c5e4488aa2ac4b4a82abfbf0779a4a5547c0389d","width":300},{"height":64,"url":"https://i.scdn.co/image/05a1b3c7136ce4ca0a050245f17b7d97ec7d67e5","width":64}],"is_externally_hosted":false,"is_paywall_content":false,"is_playable":true,"language":"es","languages":["es"],"name":"Cumulus Linux – Introducción","release_date":"2020-03-19","release_date_precision":"day","type":"episode","uri":"spotify:episode:2Iidsx8PANeN0Fwrg9H6cj"},{"audio_preview_url":"https://p.scdn.co/mp3-preview/29722740a00871e66b95d82682b605c1ec0bf86f","content_type":"PODCAST_EPISODE","description":"Al final del post tenéis el audio en vídeo. El otro día en el grupo de Telegram del podcast que está en t.me/grupopodcast el usuario @TalkToMeAboutTheSolutions, lo siento, no se el nombre, sólo el nick … La entrada Flags de TCP se publicó primero en Eduardo Collado.","duration_ms":1587192,"explicit":false,"external_urls":{"spotify":"https://open.spotify.com/episode/4dhckwtn4vophg0JPPJ1ub"},"href":"https://api.spotify.com/v1/episodes/4dhckwtn4vophg0JPPJ1ub","html_description":"

Al final del post tenéis el audio en vídeo.

\n\n\n\n

El otro día en el grupo de Telegram del podcast que está en t.me/grupopodcast el usuario @TalkToMeAboutTheSolutions, lo siento, no se el nombre, sólo el nick de Telegram, me preguntó si ya había hablado en algún audio de los flags de TCP, y la verdad es que no lo había hecho, así que si os parece bien, vamos a dedicar este capítulo número 205 a los flags de TCP.

\n\n\n\n

Por supuesto como siempre, si os interesa el tema y os queréis quedar conmigo un ratito yo encantado intentaré hablaros un poco de los 9 flags que hasta donde yo se hay, pero eso no quiere decir que en un futuro no pueda haber más.

\n\n\n\n

No se si recordáis la cabecera de TCP, pero además de puertos de origen y destino, números de secuencia o tamaño de ventana teníamos unos campos destinados para flags.

\n\n\n\n

Dependiendo del libro que tengáis el campo para flags puede tener 6, 8 o incluso 9 bits, y claro el campo de reservado puede ser de 5, 4 o 3 bits.

\n\n\n\n

A mi personalmente me gusta más la versión en la que podemos ver los 9 bits de flags y sólo 3 en reservado.

\n\n\n\n

Os pongo esa imagen para que podáis tenerla en el podcatcher, si no podéis verla ya sabéis que en las notas del programa en eduardocollado.com os lo dejo como siempre.

\n\n\n\n
\"\"
Imagen de Stackoverflow
\n\n\n\n

¿Qué son los flags?

\n\n\n\n

Pero eso de los flags ¿qué es? Una vez leí en algún lugar que lamentablemente no recuerdo que cuando pensemos en los flags de TCP tenemos que pensar en algo más sencillo como señales de tráfico.

\n\n\n\n

Cuando vais conduciendo en la carretera os vais a ir encontrando señales de tráfico que os van indicando el estado de la misma, si hay una curva cerrada, si hay un paso de cebra, si hay una glorieta más delante, etc.

\n\n\n\n

En definitiva os van dando pistas de los cambios que puede ir teniendo la carretera y que pueden afectar a vuestra conducción.

\n\n\n\n

Los flags de TCP tienen la misma función que esas señales de tráfico y es indicarnos los cambios de situación o condición que tienen que tener los peers entre ellos en su comunicación extremo a extremo.

\n\n\n\n

En la formación clásica de TCP nos encontramos sólo 6 flags, por lo menos eso es lo que nos cuentan y son:

\n\n\n\n\n\n\n\n

Luego si habéis continuado profundizado con TCP es probable que os hayáis encontrado con:

\n\n\n\n\n\n\n\n

Y luego seguramente os hayáis encontrado con otro nuevo que es

\n\n\n\n\n\n\n\n

No os preocupéis que vamos a ir hablando de todos estos uno a uno.

\n\n\n\n

De momento vamos con el primer grupo, los 6 más conocidos:

\n\n\n\n

SYN: Synchronisation

\n\n\n\n

¿Tenéis en mente el desafío en tres vías de TCP? Recordad que era el mecanismo aquel por el que se establecía la conexión entre dos hosts.

\n\n\n\n

De todos modos tener en cuenta que en el desafío en 3 vías entran más parámetros que hoy sacaremos a la luz aunque sólo sea superficialmente.

\n\n\n\n

En ese proceso se enviaba un SYN, es decir, se marcaba el bit de SYN en esa comunicación y era el establecimiento de la conexión.

\n\n\n\n

Luego el host de destino tenía que establecer también la conexión con otro SYN de vuelta, pero marcando también el ACK

\n\n\n\n
\"\"
Fuente Wikimedia
\n\n\n\n

ACK: Acknowledgment

\n\n\n\n

Este bit se marca para “agradecer” la recepción, en el proceso de desafío en 3 vías es lo que se envía para confirmar que hemos recibido el SYN inicial.

\n\n\n\n

Posteriormente se están enviando constantemente ACKs para confirmar la recepción de los segmentos enviados por el origen al destrino, seguro que si alguna vez habéis estado jugando con el wireshark habéis visto ACKs por todas partes.

\n\n\n\n

FIN: Finished

\n\n\n\n

El flag FIN indica que ya no hay más datos desde el origen, así que este es el flag que se utilizará en el último segmento enviado por el origen.

\n\n\n\n

RST: Reset

\n\n\n\n

Este flag se envía desde el destino al origen y se envía en el momento en el que el destino recibe un segmento que no se espera y que no debería de haber llegado.

\n\n\n\n

Me he encontrado con gente que confunde FIN con RST y fijaros que FIN indica una terminación normal desde el origen al destino indicando que es el último paquete y RST se envía al revés, desde el destino al origen cuando el destino ha recibido algo inesperado.

\n\n\n\n

Ambos indican un fin de la comunicación, pero de forma diferente

\n\n\n\n

PSH: Push

\n\n\n\n

El flag PSH indica al receptor que tiene que procesar los segmentos a medida que son recibidos y que no se deben de almacenar en un buffer.

\n\n\n\n

Hay que tener en cuenta que la capa de transporte, el protocolo TCP en nuestro caso, espera un tiempo antes de enviar el segmento a recibir suficientes datos de capas superiores y en el receptor pasa lo mismo pero al revés.

\n\n\n\n

Hablamos de aplicaciones interactivas principalmente, aquellas a tiempo real. Pues al usar el flag PSH lo que hacemos es que el receptor al recibir el segmento mande la información inmediatamente a las aplicaciones o protocolos de capa superior, como lo queráis llamar.

\n\n\n\n

URG: Urgent

\n\n\n\n

El flag URG es algo parecido a PSH, pero en este caso lo que hacemos es priorizar aquellos segmentos marcados como urgente sobre los no marcados.

\n\n\n\n

Este flag ha tenido muchos problemas y de hecho desde el año 2011 se indica claramente que no debe de utilizarse más en la RFC6093, la cual me he estado revisando para preparar el audio, y en la página 7 indica claramente “Las nuevas aplicaciones NO DEBEN emplear el mecanismo urgente TCP“.

\n\n\n\n

Se decidió dejarlo de usar porque había ambigüedades en RFCs anteriores en cuanto a la semántica del mismo y alguna cosilla más

\n\n\n\n

Así que hemos tenido 9 años para interiorizarlo, lo que pasa es que se tiene que mantener para temas de compatibilidad anterior.

\n\n\n\n

Si queréis que se procese algo directamente usad PSH.

\n\n\n\n

ECE: Explicit Congestion Notification [ECN]-Echo

\n\n\n\n

Este flag que quizás muchos no lo hayáis oído nombrar mucho lo que hace es indicar que el peer de TCP permite ECN (Explicit Congestion Notification).

\n\n\n\n

En ECN a día de hoy está soportado yo diría que por cualquier distribución de GNU/Linux y la idea de este mecanismo es evitar la pérdida de información en caso de congestión.

\n\n\n\n

Mientras se realiza el desafío en 3 vías una de las cosas que se hacen además del SYN, SYN/ACK, ACK es indicar que el nodo es compatible con ECN (Notificación de congestión explícita).

Este flag suelen marcarlo los dispositivos intermedios, como los rúters (La RAE dice que ahora digamos rúter), cuando el dispositivo intermedio tiene que tratar con mucha información que pueda generar congestión y pérdida de paquetes.

Cuando el emisor ve este flag lo que hace es reducir los datos que envía para intentar evitar en lo posible las pérdidas de información.

\n\n\n\n

CWR: Congestion Windows Reduced

\n\n\n\n

El host emisor establece el flag CWR para indicar que recibió un segmento TCP con el flag ECE.

\n\n\n\n

Cuando se marca el flag CWR se reduce a la mitad el tamaño de la ventana en envío con el objetivo de ralentizar el envío de información.

\n\n\n\n

NS: Nonce Sum

\n\n\n\n

El flag NS es un flag experimental que se utiliza contra envíos maliciosos por parte del origen todavía están viendo cómo utilizarlo, así que tampoco me preocuparía demasiado.

\n\n\n\n

En la RFC 3540, en el punto 5 viene a poner lo siguiente:

\n\n\n\n

la suma inicial de nonce es 1 y se incluye en SYN / ACK y ACK del desafío de tres vías. Esto permite que el otro punto final infiera soporte nonce, pero no es una negociación, ya que el receptor de SYN / ACK no necesita verificar si NS está configurado para decidir si establecer NS en el ACK posterior.

RFC3540 punto 5
\n\n\n\n

Antes de despedirme permitidme comentaros algo que ayer me enteré y no lo sabía y es que en Tecnocrática estamos en la posición 36 del ranking de conectividad ipv6 a nivel mundial, así que no os imagináis lo contento que esto estoy.

\n\n\n\n

Llevamos mucho tiempo, años realmente, ya dando por defecto a todo el mundo en los servidores IPv6 nativo y poco a poco el tráfico va aumentando, el tráfico de salida y el de entrada, así que poco a poco vamos avanzando.

\n\n\n\n
\n\n
\n\n\n\n

Foto de cabecera de Mike en Pexels

\n

La entrada Flags de TCP se publicó primero en Eduardo Collado.

","id":"4dhckwtn4vophg0JPPJ1ub","images":[{"height":640,"url":"https://i.scdn.co/image/bc2b688f0aaec8d51b96cf555116f8c9f649ad6b","width":640},{"height":300,"url":"https://i.scdn.co/image/c5e4488aa2ac4b4a82abfbf0779a4a5547c0389d","width":300},{"height":64,"url":"https://i.scdn.co/image/05a1b3c7136ce4ca0a050245f17b7d97ec7d67e5","width":64}],"is_externally_hosted":false,"is_paywall_content":false,"is_playable":true,"language":"es","languages":["es"],"name":"Flags de TCP","release_date":"2020-03-13","release_date_precision":"day","type":"episode","uri":"spotify:episode:4dhckwtn4vophg0JPPJ1ub"},{"audio_preview_url":"https://p.scdn.co/mp3-preview/b0e51c1f5cd06e82b6f01c1ca90782856588465d","content_type":"PODCAST_EPISODE","description":"En el capítulo de hoy cuento con Eduardo Taboada de Ateinco y hemos estado charlando de forma distendida media horita sobre las posibilidades del teletrabajo. Hoy el capítulo viene sin música y sólo la voz … La entrada Teletrabajo con Eduardo Taboada se publicó primero en Eduardo Collado.","duration_ms":1965708,"explicit":false,"external_urls":{"spotify":"https://open.spotify.com/episode/6nmnfS3a0UIjc6EEmZmWKQ"},"href":"https://api.spotify.com/v1/episodes/6nmnfS3a0UIjc6EEmZmWKQ","html_description":"

En el capítulo de hoy cuento con Eduardo Taboada de Ateinco y hemos estado charlando de forma distendida media horita sobre las posibilidades del teletrabajo. Hoy el capítulo viene sin música y sólo la voz de ambos.

\n\n\n\n

Las ventajas para la empresa, para el empleado, para la huella de carbono …

\n\n\n\n

Posibilidades como teletrabajar desde casa a día de hoy con la que nos está cayendo con el Corona Virus están muy bien, pero personal técnico tenemos que ser los que propongamos qué posibilidades hay y montarlo para que luego la dirección si lo considera oportuno pueda utilizarlo. Lo que está claro es que si no lo tenemos montado no se podrá utilizar y no se puede mantener una empresa a base de mensajes de whatsapp.

\n\n\n\n

Una de las cosas que se comentan en el audio es este script para montar de forma fácil un WireGuard:

\n\n\n\n

https://github.com/complexorganizations/wireguard-manager

\n\n\n\n

Foto de Andrea Piacquadio en Pexels

\n

La entrada Teletrabajo con Eduardo Taboada se publicó primero en Eduardo Collado.

","id":"6nmnfS3a0UIjc6EEmZmWKQ","images":[{"height":640,"url":"https://i.scdn.co/image/bc2b688f0aaec8d51b96cf555116f8c9f649ad6b","width":640},{"height":300,"url":"https://i.scdn.co/image/c5e4488aa2ac4b4a82abfbf0779a4a5547c0389d","width":300},{"height":64,"url":"https://i.scdn.co/image/05a1b3c7136ce4ca0a050245f17b7d97ec7d67e5","width":64}],"is_externally_hosted":false,"is_paywall_content":false,"is_playable":true,"language":"es","languages":["es"],"name":"Teletrabajo con Eduardo Taboada","release_date":"2020-03-12","release_date_precision":"day","type":"episode","uri":"spotify:episode:6nmnfS3a0UIjc6EEmZmWKQ"},{"audio_preview_url":"https://p.scdn.co/mp3-preview/81eedf83dd54bd132689e61df70d34c1c3ff2464","content_type":"PODCAST_EPISODE","description":"En el blog de Tecnocrática he publicado una entrada en la que comentaba este tema: En el capítulo de hoy os cuento cómo podemos reducir el uso de cpu de un servidor con muchos sitios … La entrada Maximizar el uso de WordPress en un servidor se publicó primero en Eduardo Collado.","duration_ms":926736,"explicit":false,"external_urls":{"spotify":"https://open.spotify.com/episode/7HWixUCGEf3VnBet60svIX"},"href":"https://api.spotify.com/v1/episodes/7HWixUCGEf3VnBet60svIX","html_description":"

En el blog de Tecnocrática he publicado una entrada en la que comentaba este tema:

\n\n\n\n
\n
Alojar más webs con WordPress en un servidor sin aumentar recursos
\n
\n\n\n\n

En el capítulo de hoy os cuento cómo podemos reducir el uso de cpu de un servidor con muchos sitios hechos con WordPress. Para ello podemos ver aquellas webs en las que no sea necesario tener funcionando el wp-cron.php.

\n\n\n\n

Recordemos que el cron en WordPress se encarga entre otras cosas de:

\n\n\n\n\n\n\n\n

Si tenemos webs en las que no es necesario tener constantemente un cron funcionando podemos pasar la funcionalidad al crontab del sistema operativo y en vez de estar comprobando constantemente podemos ejecutarlo una vez al día, para eso podemos usar el crontab de linux.

\n\n\n\n

Y el crontab de linux si usáis Neodigit recordad que lo podéis modificar desde el panel, desde el alojamiento en Opciones -> Tareas de Cron

\n\n\n\n
\"\"
\n\n\n\n

En el vídeo podréis ver las imágenes que están incluidas en el audio

\n\n\n\n
\n\n
\n

La entrada Maximizar el uso de WordPress en un servidor se publicó primero en Eduardo Collado.

","id":"7HWixUCGEf3VnBet60svIX","images":[{"height":640,"url":"https://i.scdn.co/image/bc2b688f0aaec8d51b96cf555116f8c9f649ad6b","width":640},{"height":300,"url":"https://i.scdn.co/image/c5e4488aa2ac4b4a82abfbf0779a4a5547c0389d","width":300},{"height":64,"url":"https://i.scdn.co/image/05a1b3c7136ce4ca0a050245f17b7d97ec7d67e5","width":64}],"is_externally_hosted":false,"is_paywall_content":false,"is_playable":true,"language":"es","languages":["es"],"name":"Maximizar el uso de WordPress en un servidor","release_date":"2020-03-05","release_date_precision":"day","type":"episode","uri":"spotify:episode:7HWixUCGEf3VnBet60svIX"},{"audio_preview_url":"https://p.scdn.co/mp3-preview/2db9481cba4cd5cafced6e6c5146d8716ef2f1fa","content_type":"PODCAST_EPISODE","description":"En estos últimos capítulos hemos dedicado algún tiempo a algún software sobre la distribución de Linux Debian, primero hablamos de Wireguard, el fantástico servicio de VPN y luego de Nebula, un software para poder disponer … La entrada Arrancar un software como servicio en Debian se publicó primero en Eduardo Collado.","duration_ms":1102800,"explicit":false,"external_urls":{"spotify":"https://open.spotify.com/episode/2zECTm39hpcrNkJLUxEIGs"},"href":"https://api.spotify.com/v1/episodes/2zECTm39hpcrNkJLUxEIGs","html_description":"

En estos últimos capítulos hemos dedicado algún tiempo a algún software sobre la distribución de Linux Debian, primero hablamos de Wireguard, el fantástico servicio de VPN y luego de Nebula, un software para poder disponer de nuestra propia SDN.

\n\n\n\n

No se si os acordaréis pero en la instalación de Nebula teníamos que arrancar a mano tanto en el servidor como en el cliente el propio Nebula, lo cual es terrible. Seguro que os gustaría muchísimo más que al arrancar ya estuviera Nebula corriendo solito, sin tener que hacer absolutamente nada.

\n\n\n\n

Mi forma preferida de tener un software corriendo siempre es definirlo como servicio utilizando systemd en Debian que es la distribución que utilizo.

\n\n\n\n

Así que el capítulo de hoy va a ir justo de eso, de definir servicios en systemd y vamos a definir el servicio de Nebula para poder hacerlo con algo concreto.

\n\n\n\n
\n\n
\n\n\n\n

Pero antes de empezar quiero comentaros un pequeño cambio que he hecho en el podcast y que creo que puede ser muy interesante a nivel de usabilidad del contenido. A partir de este capítulo vais a poder encontrar capítulos que os van a permitir saltar a la parte del contenido que más os interese o saltaros aquello que no os interese en lo más mínimo.

\n\n\n\n

Entiendo que vuestro tiempo vale mucho y no quiero obligar a nadie a navegar por el audio hasta que encuentre justo aquello que le interesa.

\n\n\n\n

Los marcadores no están disponibles para todos aquellos que utilicéis iVoox tanto como podcatcher o a aquellos que estén suscritos al feed de iVoox, simplemente por una limitación de la propia plataforma, así que si queréis poder utilizar los marcadores os tendréis que suscribir directamente al feed de https://www.eduardocollado.com/podcast/feed, de todos modos tenéis un enlace en la parte derecha de la web donde poner “Suscríbete al podcast“.

\n\n\n\n

Los podcatchers o clientes de podcast que lo soportan son muchos como Podcast Addict, Pocket Casts, Antennapod para Android u Overcast y el propio Pocket Casts para iOS, y muchos otros que no he podido ni probar o que ni se de su existencia, así que lo mejor es que miréis en vuestro podcatcher si disponéis de esta opción.

\n\n\n\n

Donde seguro que no está la opción es en la app de iVoox y en cualquier app que utilice el feed de iVoox que aunque lo tengo oculto hay algo menos de 500 personas que lo usan según lo que me dice Podcast Addict. Además, el feed de iVoox sirve los audios a 64kbps mientras que en eduardocollado.com los sirvo a 128kbps y con capítulos. Ahora, el contenido es el mismo, así que si estáis contentos con iVoox seguid con la app, lo único que no podréis ir a la parte del audio que más os interese gracias a los capítulos ni podréis disfrutar de los 128kbps, aunque mi voz tampoco es que mejore enormemente al subir el bit rate.

\n\n\n\n

Ahora no quiero entreteneros más o vamos a charlar sobre cómo crear servicios en Debian utilizando systemd, para ello crearemos el servicio nebula.

\n\n\n\n

Si os interesa el tema y os queréis quedar conmigo un ratito recordad que esto es eduardocollado.com y que este es el capítulo 202, por cierto, hoy es 15 de Diciembre de 2019.

\n\n\n\n

El otro día realizamos una instalación de Nebula que consistía básicamente en copiar un ejecutable en Debian y a crear un pequeño fichero de configuración.

\n\n\n\n

El problema es que para ejecutarlo teníamos que poner en cada uno de los ordenadores que componían nuestra SDN:

\n\n\n\n
./nebula -config /path/to/config.yaml
\n\n\n\n

Y dejar el terminal abierto, algo terrorífico, lo ideal sería que pudiéramos poner algo del estilo

\n\n\n\n
service nebula start
\n\n\n\n

Eso sería lo idea, que funcionase como si fuera por ejemplo un servidor Apache, e incluso mejor, nos gustaría que arrancase solo, sin tener que hacer nada, pues eso se consigue gracias a los servicios.

\n\n\n\n

Crear servicios en Debian no es tan complicado como mucha gente pueda pensar.

\n\n\n\n

Lo que tendremos que hacer es crear un fichero llamado nebula.service, ahora si me estáis escuchando mirad el móvil, crearemos el fichero en el directorio /etc/systemd/system con el siguiente contenido:

\n\n\n\n
[Unit]\nDescription=nebula\nWants=basic.target\nAfter=basic.target network.target\n\n[Service]\nSyslogIdentifier=nebula\nStandardOutput=syslog\nStandardError=syslog\nExecReload=/bin/kill -HUP $MAINPID\nExecStart=/usr/local/bin/nebula -config /etc/nebula/config.yaml\nRestart=always\n\n[Install]\nWantedBy=multi-user.target
\n\n\n\n

Si estáis utilizando un podcatcher con capítulos ahora mismo estaréis viendo en vuestra pantalla el fichero en cuestión, si es un móvil en el móvil el fichero del que os hablo. La verdad es que esto de los capítulos es una pasada y nos permite hacer cosas como esta. Los que no estéis con un podcatcher, la app de escuchar podcasts, compatible ahora estaréis viendo seguramente la portada del podcast y tendréis que ir a las notas del programa en eduardocollado.com o en el propio podcatcher para poder ver el fichero que os digo.

\n\n\n\n

Hay una cosa que he hecho para que quede más bonito y elegante, y es ejecutar Nebula desde /usr/local/bin, aunque el software realmente lo tenga en /etc/nebula, para ello simplemente un enlace simbólico:

\n\n\n\n
ln -s /etc/nebula/nebula /usr/local/bin/nebula
\n\n\n\n

Es importante crear el enlace simbólico y no copiar directamente el fichero nebula porque en el momento en el que se actualice nebula, que ese día llegará, es probable que no os acordéis de actualizar la copia de /usr/local/bin.

\n\n\n\n

Y ahora simplemente nos quedará habilitar el servicio para que arranque a partir de ahora solo que lo haremos con:

\n\n\n\n
systemctl enable nebula
\n\n\n\n

Y arrancar el servicio por primera vez

\n\n\n\n
service nebula start
\n\n\n\n

Obviamente entiendo que antes de hacer esto habéis repasado que la configuración de nebula esté bien y lo habéis probado de la forma tradicional.

\n\n\n\n

Sólo comentaros que hay un error que a mi me trajo de cabeza durante un rato largo y fue que me salía el error:

\n\n\n\n
FATA[0000] no pki.ca path or PEM data provided 
\n\n\n\n

Esto no era un error de nebula, como dice mi amigo Adrián no es la flecha sino el indio y este error era porque estaba tratando de ejecutar:

\n\n\n\n
/usr/local/bin/nebula -config /etc/nebula/config.yml
\n\n\n\n

Y claro estaba ejecutándolo mal porque el fichero config.yml no existe es config.yaml, así que a veces pequeños errores de typo como estos pueden hacernos perder la cabeza durante un buen rato.

\n\n\n\n

Hasta aquí el programa de hoy, espero que os haya servido este pequeño recordatorio de administración de Linux y que os funcione correctamente todo el tema de los capítulos en el mp3 porque creedme que es un trabajo, creo que está bien invertido y le sacamos entre todos partido.

\n\n\n\n

Sin más, despedirme de vosotros y nos volvemos a escuchar en el próximo capítulo.

\n\n\n\n

Foto de Cosmin Paduraru en Pexels

\n

La entrada Arrancar un software como servicio en Debian se publicó primero en Eduardo Collado.

","id":"2zECTm39hpcrNkJLUxEIGs","images":[{"height":640,"url":"https://i.scdn.co/image/bc2b688f0aaec8d51b96cf555116f8c9f649ad6b","width":640},{"height":300,"url":"https://i.scdn.co/image/c5e4488aa2ac4b4a82abfbf0779a4a5547c0389d","width":300},{"height":64,"url":"https://i.scdn.co/image/05a1b3c7136ce4ca0a050245f17b7d97ec7d67e5","width":64}],"is_externally_hosted":false,"is_paywall_content":false,"is_playable":true,"language":"es","languages":["es"],"name":"Arrancar un software como servicio en Debian","release_date":"2019-12-15","release_date_precision":"day","type":"episode","uri":"spotify:episode:2zECTm39hpcrNkJLUxEIGs"},{"audio_preview_url":"https://p.scdn.co/mp3-preview/576cc5dd95e40fd704e6b24fdcc7a96a50e18847","content_type":"PODCAST_EPISODE","description":"Hoy tenemos un capítulo propuesto por Andreu Adrover de Securizando Podcast, el podcast de seguridad informática que podéis encontrarlo en securizando.com. Andreu el otro día en el grupo de telegram de este podcast, en t.me/elpodcast … La entrada Timeout y Keep Alive Timer de TCP se publicó primero en Eduardo Collado.","duration_ms":1105472,"explicit":false,"external_urls":{"spotify":"https://open.spotify.com/episode/1Ayee1mCBcdCMKWw5zw0hr"},"href":"https://api.spotify.com/v1/episodes/1Ayee1mCBcdCMKWw5zw0hr","html_description":"

Hoy tenemos un capítulo propuesto por Andreu Adrover de Securizando Podcast, el podcast de seguridad informática que podéis encontrarlo en securizando.com.

\n\n\n\n

Andreu el otro día en el grupo de telegram de este podcast, en t.me/elpodcast dejó una petición que venía a comentar que explicara porque existe el TCP Timeout y por qué sus compañeros no recibían respuesta cuando lanzaban una query a una base de datos que tardaba 2 horas en ejecutarse. Parece ser que Andreu les comentó la razón, pero no le creyeron, así que voy a contar mi punto de visto que puede o no coincidir con el de Andreu porque a decir verdad no hemos hablado de este tema.

\n\n\n\n

La verdad es que el tema de hoy es un poco extraño porque no es un asunto de redes puro e involucra enormemente a la parte del sistemas operativo desde donde se lanza esa query.

\n\n\n\n

Bueno, si os interesa el tema voy a tratar de comentarlo en los próximos minutos en este, por cierto, capítulo 201 del podcast, vamos allá

\n\n\n\n

Antes de empezar, si nos vamos a basar en el ejemplo de una query en una base de datos que no termina de ejecutarse o que no recibimos respuesta, tenemos que diferenciar varias cosas, una es el timeout de TCP , otra el tiempo máximo en segundos que una consulta puede ejecutarse antes de ser cancelada dentro de MySQL, a esa variable la llamaremos max_statement_time. Además, si esa query se ejecuta mediante una aplicación en php tenemos que tener en cuenta que en php también tenemos tiempos máximos de ejecución, el famoso max_execution_time.

\n\n\n\n

Por supuesto también puede ser que ese hilo en concreto no pueda terminar de ejecutarse porque se haya quedado sin memoria (muy típico en aplicaciones php) o cualquier otra cosa.

\n\n\n\n

Es decir, para que una query no responda pueden pasar muchísimas cosas y no tiene porque ser necesariamente el timeout de TCP.

\n\n\n\n

Esta es una incidencia compleja, no porque sea difícil encontrar la causa, sino porque afecta a los egos de las personas. Si tenemos una persona que lleva la red, otra que lleva la aplicación, otra que lleva la base de datos y otra que lleva el sistema operativo del servidor ya la hemos liado porque lo normal es que la gente piense que se busca un culpable cuando lo normal es que sólo se busque una solución. Aunque …. quien no ha oído alguna vez al típico jefe con la boina y la garrota diciendo eso de ¿entonces la culpa de quien ha sido? Pues eso no ayuda.

\n\n\n\n

Volvamos al tema y vamos a centrarnos en hablar sobre el timeout de TCP que es un muy buen tema, pero tener en cuenta que hay muchísimos más factores a tener en cuenta.

\n\n\n\n

Lo primero es saber qué es el timeout en TCP. El timeout es el tiempo pasado entre que se envía un segmento y no se recibe el ACK del mismo

\n\n\n\n
\"\"
Imagen de: https://www.dcs.bbk.ac.uk/~ptw/teaching/IWT/transport-layer/timeout.gif
\n\n\n\n

Una vez transcurrido el timeout lo normal es proceder a una retransmisión, como os podéis imaginar una vez pasado el timeout no se pierde la información a no ser que alguna cosa extraña suceda.

\n\n\n\n

El timeout puede existir porque TCP es un protocolo orientado a la conexión, por ejemplo hablar de timeout en UDP no tendría ningún sentido por la propia definición de un protocolo no orientado a la conexión.

\n\n\n\n

El timeout de TCP por definición se calcula en función del RTT, es decir, el Round Trip Time, el tiempo que tarda la información en ir y en volver.

\n\n\n\n

¿Sabéis cual es el problema? que cuando hablamos del timeout de TCP normalmente no estamos hablando del timeout de TCP, estamos hablando del Keep Alive Timer.

\n\n\n\n

El Keep Alive Timer es un temporizador que se utiliza para evitar conexiones ociosas durante demasiado tiempo. Una vez pasa este temporizador se envían cada 75 segundos sondas, si no se responde a 10 sondas se asume que el otro lado está caído finaliza la conexión.

\n\n\n\n

En mi PC el Keep Alive Timer está en 7200 segundos, es decir dos horas:

\n\n\n\n
edu@andromeda:~$ cat /proc/sys/net/ipv4/tcp_keepalive_time\n7200
\n\n\n\n

Cualquier conexión TCP que esté dos horas y cuarto (contando las sondas) sin datos se considerará que está ociosa y se terminará. Por supuesto este valor es modificable y se puede configurar en cualquier sistema operativo y por defecto suele estar en dos horas.

\n\n\n\n

Referencias:

\n\n\n\n\n\n\n\n

Foto de Donald Tong en Pexels

\n

La entrada Timeout y Keep Alive Timer de TCP se publicó primero en Eduardo Collado.

","id":"1Ayee1mCBcdCMKWw5zw0hr","images":[{"height":640,"url":"https://i.scdn.co/image/bc2b688f0aaec8d51b96cf555116f8c9f649ad6b","width":640},{"height":300,"url":"https://i.scdn.co/image/c5e4488aa2ac4b4a82abfbf0779a4a5547c0389d","width":300},{"height":64,"url":"https://i.scdn.co/image/05a1b3c7136ce4ca0a050245f17b7d97ec7d67e5","width":64}],"is_externally_hosted":false,"is_paywall_content":false,"is_playable":true,"language":"es","languages":["es"],"name":"Timeout y Keep Alive Timer de TCP","release_date":"2019-12-10","release_date_precision":"day","type":"episode","uri":"spotify:episode:1Ayee1mCBcdCMKWw5zw0hr"},{"audio_preview_url":"https://p.scdn.co/mp3-preview/2e38699aeacf886904449ee1cdf51d58f72d09d8","content_type":"PODCAST_EPISODE","description":"Para celebrar este capítulo 200 vamos a tratar un tema muy interesante, hoy voy a hablaros de Nebula, un software que ha liberado Slack en github (https://github.com/slackhq/nebula). Los binarios los tenéis en https://github.com/slackhq/nebula/releases. El software … La entrada Introducción a Nebula se publicó primero en Eduardo Collado.","duration_ms":1491179,"explicit":false,"external_urls":{"spotify":"https://open.spotify.com/episode/1CONDn8SaF2PXtxImgM9DB"},"href":"https://api.spotify.com/v1/episodes/1CONDn8SaF2PXtxImgM9DB","html_description":"

Para celebrar este capítulo 200 vamos a tratar un tema muy interesante, hoy voy a hablaros de Nebula, un software que ha liberado Slack en github (https://github.com/slackhq/nebula).

\n\n\n\n

Los binarios los tenéis en https://github.com/slackhq/nebula/releases.

\n\n\n\n

El software nos permite crear nuestra propia SDN sin tener que depender de servicios de terceros como puede ser el caso de una instalación estándar de Zero Tier .

\n\n\n\n

El software es muy sencillito y os va a permitir levantar vuestra SDN simplemente con un yaml como este (os marco en negrita lo que hay que tocar):

\n\n\n\n
This is the nebula example configuration file. You must edit, at a minimum, the static_host_map, lighthouse, and firewall sections\n Some options in this file are HUPable, including the pki section. (A HUP will reload credentials from disk without affecting existing tunnels)\n PKI defines the location of credentials for this node. Each of these can also be inlined by using the yaml \": |\" syntax.\n pki:\n   # The CAs that are accepted by this node. Must contain one or more certificates created by 'nebula-cert ca'\n   ca: /etc/nebula/ca.crt\n   cert: /etc/nebula/servidor.crt\n   key: /etc/nebula/servidor.key\n   #blacklist is a list of certificate fingerprints that we will refuse to talk to\n   #blacklist:\n   #  - c99d4e650533b92061b09918e838a5a0a6aaee21eed1d12fd937682865936c72\n The static host map defines a set of hosts with fixed IP addresses on the internet (or any network).\n A host can have multiple fixed IP addresses defined here, and nebula will try each when establishing a tunnel.\n The syntax is:\n \"{nebula ip}\": [\"{routable ip/dns name}:{routable port}\"]\n Example, if your lighthouse has the nebula IP of 192.168.100.1 and has the real ip address of 100.64.22.11 and runs on port 4242:\n static_host_map:\n   \"192.168.100.1\": [\"xxx.xxx.com:4242\"]\n lighthouse:\n   # am_lighthouse is used to enable lighthouse functionality for a node. This should ONLY be true on nodes\n   # you have configured to be lighthouses in your network\n   am_lighthouse: true\n   # serve_dns optionally starts a dns listener that responds to various queries and can even be\n   # delegated to for resolution\n   #serve_dns: false\n   # interval is the number of seconds between updates from this node to a lighthouse.\n   # during updates, a node sends information about its current IP addresses to each node.\n   interval: 60\n   # hosts is a list of lighthouse hosts this node should report to and query from\n   # IMPORTANT: THIS SHOULD BE EMPTY ON LIGHTHOUSE NODES\n   hosts:\n  #   - \"192.168.100.1\"\n Port Nebula will be listening on. The default here is 4242. For a lighthouse node, the port should be defined,\n however using port 0 will dynamically assign a port and is recommended for roaming nodes.\n listen:\n   host: 0.0.0.0\n   port: 4242\n   # Sets the max number of packets to pull from the kernel for each syscall (under systems that support recvmmsg)\n   # default is 64, does not support reload\n   #batch: 64\n   # Configure socket buffers for the udp side (outside), leave unset to use the system defaults. Values will be doubled by the kernel\n   # Default is net.core.rmem_default and net.core.wmem_default (/proc/sys/net/core/rmem_default and /proc/sys/net/core/rmem_default)\n   # Maximum is limited by memory in the system, SO_RCVBUFFORCE and SO_SNDBUFFORCE is used to avoid having to raise the system wide\n   # max, net.core.rmem_max and net.core.wmem_max\n   #read_buffer: 10485760\n   #write_buffer: 10485760\n Punchy continues to punch inbound/outbound at a regular interval to avoid expiration of firewall nat mappings\n punchy: true\n punch_back means that a node you are trying to reach will connect back out to you if your hole punching fails\n this is extremely useful if one node is behind a difficult nat, such as symmetric\n punch_back: true\n Cipher allows you to choose between the available ciphers for your network.\n IMPORTANT: this value must be identical on ALL NODES/LIGHTHOUSES. We do not/will not support use of different ciphers simultaneously!\n cipher: chachapoly\n Local range is used to define a hint about the local network range, which speeds up discovering the fastest\n path to a network adjacent nebula node.\n local_range: \"172.16.0.0/24\"\n sshd can expose informational and administrative functions via ssh this is a\n sshd:\n # Toggles the feature\n   #enabled: true\n   # Host and port to listen on, port 22 is not allowed for your safety\n   #listen: 127.0.0.1:2222\n   # A file containing the ssh host private key to use\n   # A decent way to generate one: ssh-keygen -t ed25519 -f ssh_host_ed25519_key -N \"\" < /dev/null\n   #host_key: ./ssh_host_ed25519_key\n   # A file containing a list of authorized public keys\n   #authorized_users:\n     #- user: steeeeve\n       # keys can be an array of strings or single string\n       #keys:\n         #- \"ssh public key string\"\n Configure the private interface. Note: addr is baked into the nebula certificate\n tun:\n   # Name of the device\n   dev: nebula1\n   # Toggles forwarding of local broadcast packets, the address of which depends on the ip/mask encoded in pki.cert\n   drop_local_broadcast: false\n   # Toggles forwarding of multicast packets\n   drop_multicast: false\n   # Sets the transmit queue length, if you notice lots of transmit drops on the tun it may help to raise this number. Default is 500\n   tx_queue: 500\n   # Default MTU for every packet, safe setting is (and the default) 1300 for internet based traffic\n   mtu: 1300\n   # Route based MTU overrides, you have known vpn ip paths that can support larger MTUs you can increase/decrease them here\n   routes:\n     #- mtu: 8800\n     #  route: 10.0.0.0/16\n TODO\n Configure logging level\n logging:\n   # panic, fatal, error, warning, info, or debug. Default is info\n   level: info\n   # json or text formats currently available. Default is text\n   format: text\n stats:\n #type: graphite\n   #prefix: nebula\n   #protocol: tcp\n   #host: 127.0.0.1:9999\n   #interval: 10s\n #type: prometheus\n   #listen: 127.0.0.1:8080\n   #path: /metrics\n   #namespace: prometheusns\n   #subsystem: nebula\n   #interval: 10s\n Nebula security group configuration\n firewall:\n   conntrack:\n     tcp_timeout: 120h\n     udp_timeout: 3m\n     default_timeout: 10m\n     max_connections: 100000\n # The firewall is default deny. There is no way to write a deny rule.\n   # Rules are comprised of a protocol, port, and one or more of host, group, or CIDR\n   # Logical evaluation is roughly: port AND proto AND ca_sha AND ca_name AND (host OR group OR groups OR cidr)\n   # - port: Takes 0 or any as any, a single number 80, a range 200-901, or fragment to match second and further fragments of fragmented packets (since there is no port available).\n   #   code: same as port but makes more sense when talking about ICMP, TODO: this is not currently implemented in a way that works, use any\n   #   proto: any, tcp, udp, or icmp\n   #   host: any or a literal hostname, ie test-host\n   #   group: any or a literal group name, ie default-group\n   #   groups: Same as group but accepts a list of values. Multiple values are AND'd together and a certificate would have to contain all groups to pass\n   #   cidr: a CIDR, 0.0.0.0/0 is any.\n   #   ca_name: An issuing CA name\n   #   ca_sha: An issuing CA shasum\n outbound:\n     # Allow all outbound traffic from this node\n     - port: any\n       proto: any\n       host: any\n inbound:\n     # Allow icmp between any nebula hosts\n     - port: any\n       proto: any\n       host: any\n
\n\n\n\n

Foto de Tobias Bjørkli en Pexels

\n

La entrada Introducción a Nebula se publicó primero en Eduardo Collado.

","id":"1CONDn8SaF2PXtxImgM9DB","images":[{"height":640,"url":"https://i.scdn.co/image/bc2b688f0aaec8d51b96cf555116f8c9f649ad6b","width":640},{"height":300,"url":"https://i.scdn.co/image/c5e4488aa2ac4b4a82abfbf0779a4a5547c0389d","width":300},{"height":64,"url":"https://i.scdn.co/image/05a1b3c7136ce4ca0a050245f17b7d97ec7d67e5","width":64}],"is_externally_hosted":false,"is_paywall_content":false,"is_playable":true,"language":"es","languages":["es"],"name":"Introducción a Nebula","release_date":"2019-11-29","release_date_precision":"day","type":"episode","uri":"spotify:episode:1CONDn8SaF2PXtxImgM9DB"},{"audio_preview_url":"https://p.scdn.co/mp3-preview/dd37783667e1e6caef706f9ba37acd99d929bcfa","content_type":"PODCAST_EPISODE","description":"En el audio de hoy os hablo del tamaño de ventana en TCP, la razón por la que es tan importante y qué es exactamente. ¿Cómo afecta el tamaño de ventana a la velocidad de … La entrada Tamaño de Ventana en TCP se publicó primero en Eduardo Collado.","duration_ms":1447275,"explicit":false,"external_urls":{"spotify":"https://open.spotify.com/episode/64zS2jO1ranZsSjo3vaUAk"},"href":"https://api.spotify.com/v1/episodes/64zS2jO1ranZsSjo3vaUAk","html_description":"

En el audio de hoy os hablo del tamaño de ventana en TCP, la razón por la que es tan importante y qué es exactamente.

\n\n\n\n

¿Cómo afecta el tamaño de ventana a la velocidad de transferencia? En el capítulo de hoy lo explico comparándolo con camines de mudanzas, espero que os sea útil.

\n\n\n\n

En el capítulo de hoy quería dar las gracias a Carlos y Josean !

\n\n\n\n

Foto de Fernanda Latronico en Pexels

\n

La entrada Tamaño de Ventana en TCP se publicó primero en Eduardo Collado.

","id":"64zS2jO1ranZsSjo3vaUAk","images":[{"height":640,"url":"https://i.scdn.co/image/bc2b688f0aaec8d51b96cf555116f8c9f649ad6b","width":640},{"height":300,"url":"https://i.scdn.co/image/c5e4488aa2ac4b4a82abfbf0779a4a5547c0389d","width":300},{"height":64,"url":"https://i.scdn.co/image/05a1b3c7136ce4ca0a050245f17b7d97ec7d67e5","width":64}],"is_externally_hosted":false,"is_paywall_content":false,"is_playable":true,"language":"es","languages":["es"],"name":"Tamaño de Ventana en TCP","release_date":"2019-11-22","release_date_precision":"day","type":"episode","uri":"spotify:episode:64zS2jO1ranZsSjo3vaUAk"},{"audio_preview_url":"https://p.scdn.co/mp3-preview/41bf08894c57e50e6bb23da64df4b80da6982845","content_type":"PODCAST_EPISODE","description":"Hoy nos hemos sentado virtualmente en una mesa para charlar sobre redes de gestión. Nos hemos sentado Quique, Rafa, Javi, Samuel y yo y hemos estado charlando una horita. Hoy el capítulo es más relajado, … La entrada Mesa redonda sobre redes de gestión se publicó primero en Eduardo Collado.","duration_ms":2942433,"explicit":false,"external_urls":{"spotify":"https://open.spotify.com/episode/4mWrdsh5TEUvPafuDmF9IA"},"href":"https://api.spotify.com/v1/episodes/4mWrdsh5TEUvPafuDmF9IA","html_description":"

Hoy nos hemos sentado virtualmente en una mesa para charlar sobre redes de gestión.

\n\n\n\n

Nos hemos sentado Quique, Rafa, Javi, Samuel y yo y hemos estado charlando una horita.

\n\n\n\n

Hoy el capítulo es más relajado, simplemente charla.

\n

La entrada Mesa redonda sobre redes de gestión se publicó primero en Eduardo Collado.

","id":"4mWrdsh5TEUvPafuDmF9IA","images":[{"height":640,"url":"https://i.scdn.co/image/bc2b688f0aaec8d51b96cf555116f8c9f649ad6b","width":640},{"height":300,"url":"https://i.scdn.co/image/c5e4488aa2ac4b4a82abfbf0779a4a5547c0389d","width":300},{"height":64,"url":"https://i.scdn.co/image/05a1b3c7136ce4ca0a050245f17b7d97ec7d67e5","width":64}],"is_externally_hosted":false,"is_paywall_content":false,"is_playable":true,"language":"es","languages":["es"],"name":"Mesa redonda sobre redes de gestión","release_date":"2019-10-28","release_date_precision":"day","type":"episode","uri":"spotify:episode:4mWrdsh5TEUvPafuDmF9IA"},{"audio_preview_url":"https://p.scdn.co/mp3-preview/6e7ca345eff8808f8305ded0c1509f51187c81c9","content_type":"PODCAST_EPISODE","description":"En https://www.wireguard.com/install/ tenéis la información para cualquier distribución, pero para Debian la configuración es la siguiente: echo “deb http://deb.debian.org/debian/ unstable main” > /etc/apt/sources.list.d/unstable.list printf ‘Package: *\\nPin: release a=unstable\\nPin-Priority: 90\\n’ > /etc/apt/preferences.d/limit-unstable apt update apt install … La entrada Configuración de WireGuard en Debian 10 se publicó primero en Eduardo Collado.","duration_ms":1343296,"explicit":false,"external_urls":{"spotify":"https://open.spotify.com/episode/010h8rZy8cd0ia0WFUnmmC"},"href":"https://api.spotify.com/v1/episodes/010h8rZy8cd0ia0WFUnmmC","html_description":"
\n\n
\n\n\n\n
\n

21/03/2020 ¡¡¡Actualización y corrección!!!:

\n

Me informa Rubén ppg en el grupo de telegram que hay un error. En el minuto 8:43, pongo la misma ip (192.168.89.101/24) de la interfaz wlp3s0 en la del fichero wg0.conf y eso no debe de ser.

\n

La configuración buena sería la siguiente:

\n

en el cliente pones algo así:

\n
[Interface]
PrivateKey = aaaaaaaaaaaaaaaaaaaaaa
Address = 10.4.4.2/32
DNS = 10.x.x.x

[Peer]
PublicKey = aaaaaaaaaaaaaaaaaaaaaa
AllowedIPs = 0.0.0.0/0, ::/0
Endpoint = 256.256.256.256:xxxx (xxxx es el puerto del servidor)
\n

Y en el servidor (que tendría la ip 256.256.256.256 (si es que eso pudiera ser)) pones algo de este estilo:

\n
[Interface]
Address = 10.4.4.1/24 --> Ojo aquí sí es /24
ListenPort = xxxx
PrivateKey = aaaaaaaaaaaaaaaaaaaaaa

[Peer]
PublicKey = aaaaaaaaaaaaaaaaaaaaaa
AllowedIPs = 10.4.4.2/32

[Peer]
PublicKey = aaaaaaaaaaaaaaaaaaaaaa
AllowedIPs = 10.4.4.3/32
\n

Y así todos los peers que quieras

\n
\n
\n\n\n\n

En https://www.wireguard.com/install/ tenéis la información para cualquier distribución, pero para Debian la configuración es la siguiente:

\n\n\n\n

echo “deb http://deb.debian.org/debian/ unstable main” > /etc/apt/sources.list.d/unstable.list

\n\n\n\n

printf ‘Package: *\\nPin: release a=unstable\\nPin-Priority: 90\\n’ > /etc/apt/preferences.d/limit-unstable

\n\n\n\n

apt update

\n\n\n\n

apt install wireguard

\n\n\n\n

Ahora crearemos las llaves, la pública y la privada.

\n\n\n\n

Ir a /etc/wireguard
\n$ umask 077
\n$ wg genkey | tee privatekey | wg pubkey > publickey

\n\n\n\n

Tener en cuenta apertura de puerto 51820/udp

\n\n\n\n

Y ahora creamos el fichero wg0.conf

\n\n\n\n

[Interface]
\nAddress = 192.168.x.y
\nPrivateKey =
\nListenPort = 51820

\n\n\n\n

[Peer]
\nPublicKey =
\nAllowedIPs = 0.0.0.0/0

\n\n\n\n

Y si es necesario:

\n\n\n\n

PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
\nPostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

\n\n\n\n

Y recordar que hay que permitir el forwarding

\n\n\n\n

sysctl -w net.ipv4.ip_forward=1

\n\n\n\n

En el cliente instalaremos wireguard y crearemos el wg.conf

\n\n\n\n
\n

[Interface]
\nAddress = 192.168.2.2
\nPrivateKey =
\nListenPort = 21841

\n\n\n\n

[Peer]
\nPublicKey =
\nEndpoint = :51820
\nAllowedIPs = 192.168.2.0/24

\n\n\n\n

This is for if you’re behind a NAT and

\n\n\n\n

want the connection to be kept alive.

\n\n\n\n

PersistentKeepalive = 25

\n
\n

La entrada Configuración de WireGuard en Debian 10 se publicó primero en Eduardo Collado.

","id":"010h8rZy8cd0ia0WFUnmmC","images":[{"height":640,"url":"https://i.scdn.co/image/bc2b688f0aaec8d51b96cf555116f8c9f649ad6b","width":640},{"height":300,"url":"https://i.scdn.co/image/c5e4488aa2ac4b4a82abfbf0779a4a5547c0389d","width":300},{"height":64,"url":"https://i.scdn.co/image/05a1b3c7136ce4ca0a050245f17b7d97ec7d67e5","width":64}],"is_externally_hosted":false,"is_paywall_content":false,"is_playable":true,"language":"es","languages":["es"],"name":"Configuración de WireGuard en Debian 10","release_date":"2019-09-28","release_date_precision":"day","type":"episode","uri":"spotify:episode:010h8rZy8cd0ia0WFUnmmC"},{"audio_preview_url":"https://p.scdn.co/mp3-preview/77822e0a35d41105d899302e182702750ccc8782","content_type":"PODCAST_EPISODE","description":"¿Para qué necesitamos una VPN en nuestro hosting? Esta es una pregunta recurrente y que por alguna razón sale de vez en cuando. Voy a contaros un ejemplo bastante común, a ver si consigo captar … La entrada VPN y Hosting se publicó primero en Eduardo Collado.","duration_ms":1157291,"explicit":false,"external_urls":{"spotify":"https://open.spotify.com/episode/2WoKeNGQYheCMF7rQDGTcF"},"href":"https://api.spotify.com/v1/episodes/2WoKeNGQYheCMF7rQDGTcF","html_description":"

¿Para qué necesitamos una VPN en nuestro hosting? Esta es una pregunta recurrente y que por alguna razón sale de vez en cuando.

\n\n\n\n

Voy a contaros un ejemplo bastante común, a ver si consigo captar vuestra atención. Tenemos una tienda online y actualizamos nuestros productos con un software que tenemos en el ordenador y que se conecta a la base de datos de nuestro hosting directamente, es algo muy cómodo, actualizas y la web queda actualizada.

\n\n\n\n

¿Qué hace ese software? pues se conecta al puerto 3306 de vuestro hosting y se conecta directamente al servidor de mariadb, o mysql.

\n\n\n\n

¿Esto está bien?, es muy cómodo, pero seamos serios, es una gran irresponsabilidad, si vosotros podéis conectaros significa que cualquiera puede conectarse, cualquiera que tenga las credenciales, cosa por otra parte no tan difícil de conseguir.

\n\n\n\n

¿Quién puede dormir cómodamente pensando que cualquiera puede acceder a la base de datos de su negocio?

\n\n\n\n

Una buena contraseña es fundamental, claro que sí, pero no es una seguridad suficiente, mejor eso que nada, pero creedme si os digo que no es suficiente.

\n\n\n\n

Cada lugar tiene su propia dirección IP al conectarse a Internet (salvo chapuzas varias que no vienen hoy a cuento), y ojo que digo cada lugar y no cada persona porque una dirección IP no identifica a la persona, sólo el lugar. De todos modos limitar el lugar desde donde se puede uno conectar ya es un paso más allá, si controlamos el lugar de origen y tenemos unos credenciales fuertes ya podemos decir que la cosa es segura.

\n\n\n\n

Podemos controlar el lugar de origen con la IP si es que esta no cambia, es decir, si tenemos una IP fija, si tenemos una IP dinámica sabemos qué IP tenemos hoy, pero no cual tendremos mañana.

\n\n\n\n

Para bloquear nuestra IP, suponiendo que sólo vayamos a conectarnos desde el mismo lugar lo único que tenemos que hacer es solicitar una IP fija a nuestro proveedor de conectividad y lo normal es que nos la den, obviamente tras pagar la característica.

\n\n\n\n

Pero, volviendo al ejemplo de nuestra tienda online, ¿Qué pasa si quiero actualizar la base de datos con mi software maravilloso desde un sitio diferente cada vez?, cada vez tendremos una IP diferente y por tanto o abrimos el servicio de base de datos a todas las IPs del mundo o bien buscamos otra solución.

\n\n\n\n

En este caso otra solución es una VPN, del tipo que sea, pero a día de hoy WireGuard empieza a ser lo normal pues es muy simple su configuración de cliente y es extremadamente eficiente. De hecho dependiendo para qué es preferible a OpenVPN o IPSEC sobre L2TP, al menos desde mi perspectiva.

\n\n\n\n

Con un servicio de VPN podemos acceder a nuestros servicios desde un IP controlada (la del servicio VPN) y desde cualquier sitio pues la IP que va a ver el servidor es la que le proporcione la VPN y no la IP real del usuario.

\n\n\n\n

Ahora ya podemos usar nuestro software maravilloso que actualiza la base de datos directamente sin tener que abrir el puerto 3306 a todo el Mundo, que insisto, es una idea muy muy mala y que muchos hosters por desgracia siguen abriéndolo así alegremente.

\n\n\n\n

\n

La entrada VPN y Hosting se publicó primero en Eduardo Collado.

","id":"2WoKeNGQYheCMF7rQDGTcF","images":[{"height":640,"url":"https://i.scdn.co/image/bc2b688f0aaec8d51b96cf555116f8c9f649ad6b","width":640},{"height":300,"url":"https://i.scdn.co/image/c5e4488aa2ac4b4a82abfbf0779a4a5547c0389d","width":300},{"height":64,"url":"https://i.scdn.co/image/05a1b3c7136ce4ca0a050245f17b7d97ec7d67e5","width":64}],"is_externally_hosted":false,"is_paywall_content":false,"is_playable":true,"language":"es","languages":["es"],"name":"VPN y Hosting","release_date":"2019-09-19","release_date_precision":"day","type":"episode","uri":"spotify:episode:2WoKeNGQYheCMF7rQDGTcF"}],"limit":50,"next":"https://api.spotify.com/v1/shows/7IkjXOPXozVfUAShVLzmLq/episodes?offset=50&limit=50&market=US","offset":0,"previous":null,"total":100},"explicit":true,"external_urls":{"spotify":"https://open.spotify.com/show/7IkjXOPXozVfUAShVLzmLq"},"href":"https://api.spotify.com/v1/shows/7IkjXOPXozVfUAShVLzmLq","html_description":"","id":"7IkjXOPXozVfUAShVLzmLq","images":[{"height":640,"url":"https://i.scdn.co/image/bc2b688f0aaec8d51b96cf555116f8c9f649ad6b","width":640},{"height":300,"url":"https://i.scdn.co/image/c5e4488aa2ac4b4a82abfbf0779a4a5547c0389d","width":300},{"height":64,"url":"https://i.scdn.co/image/05a1b3c7136ce4ca0a050245f17b7d97ec7d67e5","width":64}],"is_externally_hosted":false,"languages":["es"],"media_type":"audio","name":"Podcast de Eduardo Collado","publisher":"Eduardo Collado","total_episodes":100,"type":"show","uri":"spotify:show:7IkjXOPXozVfUAShVLzmLq"};