Tiempo de respuesta en servidores web

Ejercicio exploratorio de pruebas sobre el tiempo que le toma a servidores web de diferentes organizaciones y empresas completar respuesta exitosas. Las pruebas fueron realizadas desde el proveedor de internet mexicano Megacable Comunicaciones de Mexico, S.A. de C.V (AS14178). Con un número de 200 solicitudes a realizar por sesión de evaluación y un umbral de una solicitud a la vez.

Los resultados de cada una de las mediciones están sujetos a variaciones por carga y congestión en las redes de origen, tránsito y destino. Por lo que la interpretación de los resultados debe considerar las condiciones lógicas y físicas de la infraestructura global de internet.

Lo anterior nos permite también incorporar criterios regionales para comprender la diferencia de resultados en servicios que cuentan con infraestructura geodiversificada en múltiples locaciones, en este caso cercanas o dentro de México y cuáles no.

Adicionalmente es importante no perder de vista que los elementos de la capa física, de software, arquitectura y versiones de protocolos en destino, tránsito y origen de las conexiones están sujetas en su despliegue a políticas de gestión que pueden aumentar o reducir los tiempos de cada uno de los servidores web destino.

Por ejemplo encontramos que Facebook combina 4 formas de entrega de contenidos: Caching, Local Peering, Regional Peering y Transit que interactúan de acuerdo a condiciones y políticas de gestión. Lo que impacta o cambia las características de disponibilidad, en este caso los tiempos de conexión, a los servidores web.

Las mediciones fueron realizadas por medio del paquete apache-utils. Una vez obtenidos los datos se graficaron con gnuplot.

Sondas OONI desde la línea de comandos con ooniprobe-cli

El Observatorio Abierto de Interferencias en al red (OONI) es un proyecto que tiene como objetivo medir de los niveles de vigilancia y censura en la red. Para cumplir este objetivo es desarrollado software que está diseñado para realizar mediciones de red que están disponibles en el OONI Explorer.

ooniprobe-cli es la versión de linea de comandos para las sondas del Observatorio Abierto de Interferencias en la red (OONI Probe). Un software diseñado para medir la censura en internet y otras formas de interferencia de la red. También hay versiones de OONI Probe para Escritorio, iOS y Android.

Con la versión de línea de comandos de OONI Probe se pueden realizar mediciones de red de conectividad web, consistencia de DNS, de acceso a aplicaciones de mensajería instantánea, entre otras. Para conocer y documentar si hay algún tipo de interferencia o bloqueo en la red o proveedor de internet desde donde se realizan las mediciones.

Instrucciones para la instalación en Debian/Ubuntu

sudo apt-key adv --verbose --keyserver hkp://keyserver.ubuntu.com --recv-keys 'B5A08F01796E7F521861B449372D1FF271F2DD50'

Añade el repositorio

echo "deb http://deb.ooni.org/ unstable main" | sudo tee /etc/apt/sources.list.d/ooniprobe.list

Actualiza la lista de paquetes disponibles y sus versiones

sudo apt update

Instala ooniprobe-cli

apt install ooniprobe-cli

Ansible para proxies Snowflake de la red Tor

Ansible role para la instalación, configuración y operación de proxies Snowflake.

“Snowflake 1, 2006” by CaptPiper is licensed with CC BY-NC 2.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc/2.0/

Antecedentes

Los puentes Snowflake son uno de los sistemas que tiene la red Tor para enfrentar censura. Este tipo de puente, actualmente en desarrollo, se suma a las alternativas y esfuerzos anticensura de los Transportes Intercambiables o Pluggable Transports (PTs) como obfs4 y meek-azure. Puentes diseñados como opciones de acceso para las personas, en donde está bloqueada la red Tor.

A grandes rasgos los puentes Snowflake enmascaran el tráfico como si fuera el del protocolo WebRTC y así buscan romper posibles barreras de censura, incluso cuando Tor está bloqueado por algún proveedor de telecomunicaciones.

Ansible role para puentes Snowflake

Con este ansible role puedes instalar, configurar y operar puentes de la red Tor.

Características

  • Soporte para Ubuntu Focal y Debian Buster
  • Ruinit para administrar el servicio de Snowflake
  • Golang 1.14
  • Compatible con Ansible 2.9 o superior

Uso del rol

Instalación de Ansible con pip

python -m pip install --user ansible

Para otro tipo de métodos de instalación de ansible: Guía de instalación

Descarga del role desde el repositorio Galaxy

ansible-galaxy install nvjacobo.snowflake

Creación del libro de jugadas site.yml

- hosts: snowflake
   roles:
      - nvjacobo.snowflake

Creación del fichero con nuestro inventorio

[snowflake]
direccion-ip
ansible-playbook -i inventorio site.yml -u root

O con sudo

ansible-playbook -i inventorio site.yml -u nombre-de-user -b

Administración con runit

ansible all -i inventario -a 'sv status snow-proxy' # estado del servicio 
ansible all -i inventario -a 'sv restart snow-proxy' # reinicio del servicio
ansible all -i inventario -a 'sv stop snow-proxy' # parar el servicio

Recomendaciones

Se sugieren las siguientes medidas y acciones para procurar la seguridad de los puentes

  • Habilitar actualizaciones automáticas de seguridad para el sistema operativo
  • Configurar acceso para SSH exclusivo con llaves

Referencias

Colecciones de Ansible

Las colecciones son un cambio estructural en el desarrollo, manutención y distribución de Ansible, por medio del cual se envían fuera del core de Ansible gran parte de los módulos que tradicionalmente estaban en él. Si bien este cambio inició en la versión 2.8 no fue hasta la versión 2.10 que logró un soporte completo.

En la opinión de Jeff Geerling la introducción de colecciones es una señal de un cambio importante en el ecosistema de Ansible que toca sentido sobre el futuro del proyecto y cómo se relacionan quienes lo desarrollan, implementan e integran. Ya que impacta la arquitectura del proyecto. Por lo que también podemos considerar que se trata de un periodo de transición con efectos temporales y permanentes.

Desde la perspectiva de su desarrollo se pasa de un repositorio git gigante a varios repositorios. Los módulos que anteriormente estaban en el repositorio principal ahora están en repositorios independientes, en las ahora colecciones.

En teoría este cambio puede brindar condiciones, según la perspectiva del proyecto, para una manutención sin menos fricción entre el core, los módulos y complementos.

Finalmente, estos cambios, implican para quienes utilizan Ansible la necesidad de habilitar las colecciones en las que se basan sus libros de jugadas.

Niveles de instalación

  • Globalmente: en e directorio /usr/share/ansible/collections
  • Por usuaria: ~/.ansible/collections
  • Adyacente al contenido, por ejemplo, por proyecto y que podemos definir en nuestro archivo de configuración ansible.cfg

Orden de precedencia

  • playbooks/collections
  • ~/.ansible/collections
  • /usr/share/ansible/collections

Instalación, creación y distribución de colecciones con ansible-galaxy

Adyacente al contenido

ansible-galaxy collection install community.general -p

Por usuaria

ansible-galaxy collection install community.general

Global

sudo ansible-galaxy collection install community.general -p /usr/share/ansible/collections/

Antes y ahora

Antes

- name: Añadir los repositorios backports
  apt_repository:
    repo: "deb http://deb.debian.org/debian buster-backports main"
    state: present

El módulo apt_repository se encuentra en ansible-base

Ahora

- name: Añadir los repositorios backports
  ansible.builtin.apt_repository:
    repo: "deb http://deb.debian.org/debian buster-backports main"
    state: present

El módulo apt_repository se encuentra en la colección ansible.builtin

Listado de las colecciones

Por medio del parametro list tenemos como resultado un listado de las colecciones, sus ubicaciones y versiones.

ansible-galaxy collection list

Recomendaciones

Una recomendación para lograr un balance entre la complejidad y la usabilidad es partir del enfoque de proyectos. En el que cada proyecto tenemos nuestros libros de jugadas, roles y colecciones. Contrario a mantener globalmente los roles y colecciones. Para ello definimos los paths de los roles y colecciones en el ansible.cfg del proyecto en cuestión.

collections_paths = ./
roles_path = ./roles

La segunda recomendación es la definición de colecciones en requirements.yml

collections:
  - name: community.general
    version: 2.4.0
    source: https://galaxy.ansible.com

Referencias

Secured By miniOrange