OpenBSD

  • Mientras que OpenBSD es un sistema operativo Unix muy tradicional y resulta muy familiar a aquellos que hayan utilizado otros sistemas operativos de la familia Unix, existen diferencias importantes. Si el único conocimiento de los sistemas Unix se limita a una experiencia con una variante de Linux, seguramente OpenBSD resultará "extraño". Del mismo modo en que Linux resulta extraño a cualquier usuario proveniente de OpenBSD. Si en cambio uno conoce la filosofía Unix y ha extendido su conocimiento más allá de una plataforma en particular, encontrará a OpenBSD muy familiar y un auténtico Unix. Por el contrario, si uno ha aprendido Unix usando la metodología "tipea ésto para hacer aquello" o a través de libros como "Aprende Ubuntu 16.04 en 31.4 horas", y cree que así "sabe" Unix, encontrará a OpenBSD muy diferente.

  • Llegué a la oficina y, al revisar los mails que me envían los servidores, descubrí que faltaban los correos de uno de mis servidores OpenBSD. Revisando el log del sistema, las tareas programadas se ejecutaron normalmente pero hubo un problema con el envío de correo.

  • Tal como mencioné en el artículo ¿Cuáles son las principales diferencias entre los sistemas GNU/Linux y OpenBSD?, OpenBSD utiliza CVS como sistema de control de versiones. Específicamente utiliza CVS anónimo para mantener actualizada una copia local del source tree de OpenBSD, respecto a los cambios hechos en los fuentes actuales de OpenBSD. Este mecanismo es un sistema de control de versiones "tolerante" en el sentido que respeta los cambios realizados en una copia local, y hace el "mejor esfuerzo" para actualizar el source tree completo, más que dejar una lista de problemas a resolver antes de continuar (tal como ocurre con otros sistemas de control de versiones).

  • Previamente compartí un artículo extenso dedicado a la gestión de paquetes en OpenBSD. En dicho artículo explicaba que, a fin de buscar un paquete por nombre, simplemente debía buscar el port correspondiente en el árbol de ports utilizando el comando make search key=. Sin embargo, si no hemos instalado el árbol de ports en el sistema, será imposible buscar un paquete (al menos desde línea de comandos, claro está). En este artículo entonces voy a demostrar cómo buscar paquetes correctamente en OpenBSD, sin necesidad de recurrir al árbol de ports.

  • En los sistemas OpenBSD, las interfaces de red se configuran a través de archivos hostname.if dentro del directorio /etc.

  • Este artículo explica cómo compilar un sistema OpenBSD desde sus fuentes. Existen varios pasos a seguir en el proceso de compilación de un sistema OpenBSD: descargar y actualizar los fuentes; compilar e instalar el kernel; y compilar e instalar userland.

  • Este artículo demuestra el sencillo procedimiento de instalación de un sistema OpenBSD 5.9. OpenBSD es un sistema operativo libre multiplataforma perteneciente a la familia Unix, basado en BSD 4.4. Es un descendiente de NetBSD enfocado particularmente en la seguridad.

  • En 2016 puse mi primer servidor OpenBSD en producción, en la versión 5.9, y el día de hoy llegó el momento de actualizarlo a la versión 6.0. Este artículo explica el procedimiento paso a paso (con mucho mayor detalle que la FAQ oficial).

  • OpenBSD incluye su propia implementación de servidor Web llamado httpd, basado originalmente en relayd, y que (como todo proyecto relacionado a OpenBSD) apunta a la seguridad y en este caso en particular a la escalabilidad.

    httpd es un servidor Web seguro y minimalista (apunta a evitar la "featuritis" que sufren los servidores Web más importantes, notablemente Apache), que sirve archivos estáticos y soporta FastCGI y TLS. Incorpora algunas características básicas como listado de directorios, logging y autenticación basic. Para conocer la historia completa de httpd y cómo comenzó su desarrollo es recomendable el paper Introducing OpenBSD's new httpd.

    El objetivo de este artículo es montar el clásico servidor Web con soporte para PHP sobre un sistema OpenBSD. Y ya que httpd es el servidor Web por defecto en OpenBSD, se explica la instalación y configuración del mismo, en lugar de instalar Apache o Nginx desde los paquetes o ports.

  • El protocolo NFS permite compartir un directorio o sistema de archivos a través de la red. En artículos anteriores expliqué cómo se configura NFS en FreeBSD y cómo se relacionan sus diversos componentes (nfsd, portmap, mountd). En esta ocasión voy a explicar cómo configurar NFS en un servidor OpenBSD para compartir un directorio a través de la red.

  • Este artículo explica el funcionamiento de PF, junto con una configuración de filtrado básica a modo de ejemplo. PF (Packet Filter) es el mecanismo que utiliza por defecto OpenBSD para implementar el filtrado de tráfico TCP/IP y realizar NAT (Network Address Translation). PF también es capaz de normalizar y condicionar tráfico TCP/IP, al igual que proveerpacket shaping y priorización de tráfico.

  • En redes corporativas es muy común que el acceso a Internet sea a través de un proxy HTTP. En OpenBSD, la configuración del proxy es exactamente igual a la de los sistemas GNU/Linux, sólo basta con configurar las variables de entorno http_proxy y https_proxy en el perfil de ksh.

  • En el artículo Trabajando con ports en OpenBSD expliqué cómo gestionar software en OpenBSD a través del sistema de ports. Claro está que la instalación de software a través de ports implica, para el caso de aplicaciones grandes y complejas, compilar una gran cantidad de paquetes, lo que puede llegar a insumir una gran cantidad de tiempo y recursos y además dificultar el mantenimiento del sistema.

    Por supuesto instalar desde el sistema de ports tiene sus ventajas. Principalmente, la flexibilidad de disponer de diferentes versiones para un mismo paquete. Por ejemplo, para el caso de PHP se dispone de las versiones 5.4, 5.5, 5.6 y 7.0:

    # ls -l /usr/ports/lang/php/
    total 68
    drwxr-xr-x  5 root  wheel    512 Feb 25 19:59 5.4
    drwxr-xr-x  5 root  wheel    512 Feb 25 19:59 5.5
    drwxr-xr-x  5 root  wheel    512 May 24 15:11 5.6
    drwxr-xr-x  5 root  wheel    512 Feb 25 19:59 7.0
    drwxr-xr-x  2 root  wheel    512 May 24 15:11 CVS
    -rw-r--r--  1 root  wheel    196 Mar 21  2015 Makefile
    -rw-r--r--  1 root  wheel  13759 Feb  1 18:53 Makefile.inc
    drwxr-xr-x  3 root  wheel   1024 Feb 25 19:59 files
    drwxr-xr-x  3 root  wheel    512 Feb 25 19:59 pecl
    -rw-r--r--  1 root  wheel   2102 Feb  1 18:53 php.port.mk
    

    Esto es una gran ventaja cuando se requiere instalar una aplicación ligada a una versión específica de PHP, ya que se puede contar con la versión necesaria mantenida por la comunidad. De esta forma se evita preocuparse por compilar manualmente una versión no disponible desde paquete, verificando sus dependencias y requisitos.

    Sin embargo, en este artículo voy a explicar brevemente cómo trabajar con paquetes, lo cual es recomendable para la mayoría de los casos, y puede ahorrar gran tiempo de compilación y mantenimiento.

  • En OpenBSD, ksh por defecto no guarda el historial de comandos en un archivo al cerrar sesión. Por ende, cada vez que se inicia sesión (por ejemplo a través de SSH), no se dispone de historial alguno:

    # history
    ksh: fc: no history (yet)
    # ll
    ksh: ll: not found
    # history 
    1       history
    2       ll
    # exit
    Connection to obsd59.linuxito.com closed.
    
  • Anteriormente demostré cómo era posible implementar un acceso SSH como root, a pesar de que estuviera deshabilitada la opción PermitRootLogin en la configuración del demonio. Ahora voy a demostrar cómo es posible lograr el mismo comportamiento en sistemas FreeBSD y OpenBSD utilizando doas en vez de sudo.

  • La versión de sed que incluyen las distribuciones GNU/Linux permite reemplazar cualquier cadena por saltos de línea (enter) utilizando la secuencia de escape \n. Sin embargo, la versión BSD no soporta estas secuencias de escape al momento de reemplazar (sí al momento de buscar, parte izquierda de la secuencia de sustitución).

    En este breve artículo explico cómo lograrlo en FreeBSD y OpenBSD.

  • Previamente expliqué cómo instalar Ansible desde los fuentes en FreeBSD, en esta oportunidad me gustaría compartir los pasos necesarios para hacerlo en un sistema OpenBSD 6.0.

  • En el artículo anterior expliqué cómo montar un servidor Web en OpenBSD utilizando el servidor httpd con PHP-FPM. Mi objetivo al momento de instalar un servidor Web con OpenBSD era migrar un sitio MediaWiki 1.19.1 corriendo actualmente en un servidor Debian 6. Este articulo documenta la experiencia, junto con la actualización del sitio MediaWiki a la última versión estable disponible actualmente (1.26.3).

  • Tal vez algunos de mis más viejos y queridos lectores recuerden que hace un tiempo monté mi servidor VPN sobre Debian 6 utilizando OpenVPN. Habiendo finalizado ya el soporte LTS para Debian 6 y sin muchas intenciones de migrarlo a Debian 7 (pienso que no vale la pena pues el soporte LTS para Wheezy es sólo hasta 2018, apenas dos años más, siendo que este servidor estuvo en producción 4 años de forma ininterrumpida) qué mejor oportunidad para poner en producción mi primer servidor OpenBSD.

  • Pasaron dos releases desde que actualicé mi servidor OpenBSD por última vez, por lo que ya es hora de actualizarlo nuevamente. He aquí la experiencia migrando dos releases de manera consecutiva.