Armar un servidor casero con OpenBSD

Preview:

DESCRIPTION

Un informe que nos guía al momento de querer instalar y configurar un servidor con OpenBSD. Realizada por Gustavo Cortez, miembro del LUG Tucumán

Citation preview

Servidor casero con

Gustavo Cortez – gustavo@lugtucuman.org.ar

Estructura y configuración de una red local para el hogar

ResúmenInstalación, configuración y estructura de un servidor dependiendo de las necesidades de cada familia que este a la vanguardia de la tecnología, así también como el presupuesto con que se cuenta. En este informe se utiliza el sistema operativo OpenBSD para que realice las tareas de acceso a internet, filtrado de paquetes, asociación a un dominio, entre otras funciones. Lo que se va a tratar aquí es la configuración y alcance del sistema, pasando por la estructura de red recomendada para cada caso en particular.

Índice de contenidoResúmen...............................................................................................................................................1Introducción..........................................................................................................................................2Objetivos...............................................................................................................................................2Planificación.........................................................................................................................................3Esquema de conexión...........................................................................................................................3Costo de implementación.....................................................................................................................5

Servidor............................................................................................................................................5Modem ADSL y Switch...................................................................................................................6Cableado..........................................................................................................................................6

Sistemas BSD.......................................................................................................................................7Comparación de los sistemas BSD..................................................................................................7

FreeBSD......................................................................................................................................7OpenBSD....................................................................................................................................7NetBSD.......................................................................................................................................7

Introducción a OpenBSD.................................................................................................................7Software incluído.............................................................................................................................8¿Qué son los paquetes y los portes?.................................................................................................9

Recomendaciones para la instalación............................................................................................10OpenBSD como entorno de escritorio................................................................................................10Configuración de la conexión a Internet............................................................................................10

Configuración de PPP....................................................................................................................11Permitir el acceso a Internet...........................................................................................................12

Automatizando la conexión................................................................................................................14Asociando un dominio .com.ar......................................................................................................14

Actualización de la IP...............................................................................................................15Automatizando la actualización de IP.......................................................................................15

Utilidades de un dominio asociado................................................................................................18Configuración de los clientes.............................................................................................................18

Servidor DHCP..............................................................................................................................18Retoques finales..................................................................................................................................19

Asegurando el entorno...................................................................................................................20Configurando SendMail.................................................................................................................20

Conclusiones.......................................................................................................................................21Referencias.........................................................................................................................................21

IntroducciónHace algunos años las necesidades de comunicación en un hogar se limitaban al uso de la linea telefónica (sea fija o móvil), dejando de lado la conexión a Internet que en la mayoría de los casos, se trataban de terminales que se conectaban a la red y no se compartía el ancho de banda con otras computadoras, utilizando el limitado enlace telefónico para transferencia de datos.

Con la llegada de la banda ancha y los constantes cambios de PC por una nueva y más potente, las familias podían contar con más de una computadora personal, ya que vender la vieja PC no generaba más ganancias de las que se podría aprovechar conectándola en red y compartiendo la costosa banda ancha que había en aquella época. Pero aún así, no se disponía de una PC libre para que realizara la conexión, sino que se la usaba como una terminal de trabajo más.

Luego con la disminución de precios de la banda ancha y de las PC, los usuarios hogareños ya podían contar con pequeñas redes domésticas en las que compartir documentos, música, fotos y hasta la conexión a Internet por banda ancha, no resultaba muy costoso. Además, se podía disponer de la PC más vieja como “servidor” de Internet. Por eso es que, compartir la conexión, ya no necesitaba depender de la PC principal (o la más “grande” o nueva) sino que se comenzaba a pensar en una política más inteligente para ofrecer servicio continuado y seguro a toda la familia. Esto es ni más ni menos que utilizar una PC de recursos moderados para que ofrezca servicios a toda la red interna con todas las ventajas que supone un sistema libre, seguro y flexible como OpenBSD.

Por otro lado, si somos estudiantes de carreras relacionadas con las redes de comunicaciones, esta es una buena excusa para aprender a construir una infraestructura de red estable, segura y de la manera más simple posible utilizando software libre y sin necesidad de gastar tanto dinero en equipamiento nuevo.

ObjetivosA veces puede resultar complicado plantear lo que se quiere obtener con un servidor casero, ya que en muchos casos los requerimientos de usuarios va creciendo con el tiempo, además que esta variable depende de la edad de los usuarios. Por ejemplo, si se va a restringir ciertos sitios a menores de edad o limitar el uso horario de la mensajería instantánea, se van a necesitar software adicional y por consiguiente, varios retoques de configuración.

Por esta razón voy a plantear aquí los objetivos básicos con los que va a contar nuestro servidor casero:

● Instalación base de OpenBSD

● Configuración de la conexión a Internet

● Asociación de un dominio propio

● Configuración de Packet Filter

● Correo interno con SendMail

● Servidor DHCP

● Retoques en la configuración general del sistema

● Automatización del sistema de arranque

● Utilización de algunas herramientas de red y del sistema

El orden de objetivos principales aparecen de acuerdo al nivel en que se configuran (o pueden configurar). A pesar de estas propuestas, se pueden hacer muchas cosas más en OpenBSD como servidor casero. A continuación pueden ver un listado de las cosas que se pueden hacer, pero no se van a cubrir con profundidad en este informe:

● Sistema de control de versiones

● Squid

● Servidor Web con contenido dinámico

● SendMail externo

● Servidor de DNS

● Extremo VPN con Isakmp

● Muchos más...

Como pueden ver, las posibilidades de expandir los servicios con OpenBSD son “casi” infinitas, tal que no tendríamos tiempo de listar todas ellas. Por esta razón es la importancia de plantearse inicialmente cuales son los requerimientos de los miembros de la familia a la hora de utilizar la conexión a Internet.

PlanificaciónTal como había mencionado en el apartado anterior, se deben plantear principalmente los servicios que se van a ofrecer a los usuarios, pero muchas veces no se sabe bien lo que se va a necesitar.

Por eso es importante en primera medida, ponernos en lugar de los usuarios (aunque seguro que nosotros mismos somos los usuarios más complicados), y en base a esto reunir las características que se van a configurar en el sistema. Estas se pueden resumir en lo siguiente:

● Servicio de Internet

● Seguridad de la red local

● Transparencia en la configuración de los terminales

Con estas tres características ya somos capaz de iniciarnos en la práctica del asunto.

Esquema de conexiónLuego de pasar por el marco teórico y de reflexión sobre el asunto, ya podemos pensar en cómo conectar los aparatos y qué vamos a necesitar comprar.

La siguiente figura nos muestra un esquema generalizado de la conexión que se va a realizar con OpenBSD.

De esta manera se logra acceder a Internet mediante OpenBSD y el Modem ADSL. Pero esto es solamente si se tiene una sola PC, cosa que no era lo que habiamos previsto anteriormente, que es conectar a dos o más computadoras simultaneamente a Internet.

Para realizar esto se necesita de un Switch que se encarga de distribución de datos a la PC que los ha solicitado.

Volviendo al esquema y para no complicarnos antes de tiempo, paso a describir cada uno de los componentes. El primer elemento es una PC con dirección IP 192.168.0.35 que ha sido asignada por el segundo elemento (que es el sistema OpenBSD de IP 192.168.0.1) previamente configurado por el Administrador del sistema para que asignara el acceso correspondiente, mediante la interfaz de red correspondiente. El siguiente elemento es el firewall se encarga de retener intrusos entrometidos que quieran ingresar a nuestra red local y al mismo servidor con fines maliciosos. Por último, el Modem ADSL realiza la conversión de interfaz que utiliza el servidor (Ethernet) hacia la línea telefónica que previamente detecta el enlace con el proveedor y obtiene un enlace WAN a través de la boca tipo RJ11 estándar de las líneas de teléfono.

En la siguiente figura se puede ver con más detalles de los elementos que participan en la conexión a Internet, y también se pueden ver dos PC que comparten el acceso. Las mismas estan conectadas a un Switch que se encarga de “repartir” los datos entre los emisores y receptores de la red.

Por otro lado, la máquina que funciona como servidor en este caso, debe disponer de dos placas de red, en la cual una se conecta a la red local (LAN) mediante el Switch y la otra se conecta directamente al Modem ADSL con soporte Ethernet. Más adelante vamos a ver cómo configurar el Modem ADSL para que trabaje en modo bridge entre la interfaz Ethernet y la línea telefónica.

También se puede ver en el gráfico, que luego de llegar el cable al poste telefónico, este sale del troncal local y va a las oficinas de comunicación, que a su ves lo transmiten con el proveedor de

conexión (en nuestro caso es Telecom).

La verificación del nombre de usuario y contraseña se realiza finalmente en el proveedor de acceso a internet, derivado por Telecom, y finalmente “sale” la conexión al mundo.

Costo de implementaciónComo se han descripto anteriomente, los materiales que se utilizan en este proyecto, van desde un equipo completo (sin monitor) hasta unos metros de cable para las conexiones.

En este apartado, voy a describir los materiales necesarios junto a su precio estimado.

ServidorEl servidor puede ser una máquina de hace varios años atrás pero en buen funcionamiento. Debe tener su gabinete en buenas condiciones y con los coolers correspondientes. Es recomendable mantener estas características, ya que el equipo puede mantenerse encendido varias horas, e incluso días sin ser reiniciado o apagardo, por lo que la refrigeración es punto clave para mantener un buen servicio y funcionamiento del servidor, además de alargar la usabilidad del mismo. Si no se dispone de un PC disponible para instalarlo como servidor, hoy en día existe la posibilidad de comprar un equipo de marca en desuso por menos de 300 pesos.

Por ejemplo, el equipo que estoy usando actualmente (y se muestra en la imágen) tiene las

siguientes características:

● Intel Pentium (P54C) (GenuineIntel 586-class) 166 Mhz

● Memoria RAM 95 MB

● Disco rígido QUANTUM BIGFOOT_CY4320A de 4134MB

● 1 Placa de red Realtek 8139 de 10/100 Mbps

● 2 Placas de red NE2000 (RTL8019) de 10/100 Mbps

Por supuesto que todos los componentes funcionan sin problemas, incluso la lectora de CD, disquetera, coolers, fuente y memoria.

Si no disponen de placas de red, se pueden conseguir por menos de 20 pesos, pero hay que tener cuidado en identificar el chipset Realtek y no de otra marca que suelen vender por el mismo precio pero que no funcionan con OpenBSD.

Modem ADSL y SwitchEl modem ADSL y Switch son componentes que hay que elegirlos como cajas cerradas, ya que no se pueden “fabricar” como hicimos con el servidor OpenBSD en el que se va a configurar lo mismo que grandes comerciantes como Cisco o 3Com hacen, pero por mucho menos dinero.

En cuanto al modem ADSL, nos debemos asegurar de que cuenta con una interfaz Ethernet para conectar la placa de red del servidor y no solo con el puerto USB como la mayoría de los modems económicos. El precio de estos aparatos no supera los 150 pesos, cumpliendo la única función de bridge entre la interfaz Ethernet y la línea telefónica.

El switch también es un elemento muy común usado en redes hogareñas y se pueden conseguir a un precio muy económico.

CableadoEl cableado es un componente importante que afecta en el rendimiento de la red. Muchas veces uno culpa al proveedor de servicios que nos dan una conexión demasiado lenta, cuando muchas veces esto se debe a una mala instalación de los cables de red. Para ver que la velocidad de conexión es adecuada, basta con una simple transmisión de archivos entre las terminales. Si se trata de una red a 100 Mbps, la velocidad teórica a alcanzar debería ser de 12,5MB/s, aunque si se alcanza un 75 o 90% está muy bien también.

Hoy en día, como todos los switch soportan las normas de cableado 568-B (normal) y 568-A (cruzado), lo más conveniente es armar directamente cables cruzados, por si alguna vez deja de funcionar el switch o queremos simplemente conectar dos PC directamente.

La categoría del cable a utilizar también es importante, y actualmente es fácil conseguir Cat-5e a precios razonables.

La siguiente imágen muestra el conjunto de equipos que utiliza el dominio openbsd.org para guardar los repositorios y paquetes de las últimas versiones de OpenBSD.

Sistemas BSDEn esta sección voy a dar una pequeña introducción a los sistemas BSD en general y a OpenBSD en particular, su desarrollo, licencia y los aspectos más destacados.

También daré algunas recomendaciones de la instalación y la configuración básica luego de una instalación limpia

Comparación de los sistemas BSDExisten muchas variantes de sistemas BSD, pero en esta ocación realizaré una pequeña descripción de las tres más conocidas.

FreeBSDLa idea de FreeBSD es producir un sistema operativo utilizable para cualquier propósito, como Ubuntu, Tuquito, Fedora, SuSE, es decir, un sistema de propósitos generales. Se intenta que sea fácil de usar y contenga una gran cantidad de paquetes (programas) para instalar. De hecho, ya hay distribuciones que incluyen un FreeBSD como núcleo.

OpenBSDOpenBSD esta orientado a la seguridad más que nada. Las políticas de seguridad son muy estrictas en el desarrollo, ya que cada código que incluyen son auditados exaustivamente para corregir la mayor cantidad de bugs posibles.

NetBSDNetBSD esta diseñado como sistema operativo que pueda ser distribuido gratuitamente a profecionales, entusiastas e investigadores, para que lo usen como quieran. El objetivo principal de este sistema es la portabilidad a través de la mayor cantidad de equipos, tanto de 32 como de 64 bits. También hacen incapié en la buena escritura del código, la estabilidad y eficiencia del sistema.

Introducción a OpenBSDEl proyecto OpenBSD es un sistema operativo libre tipo Unix, multiplataforma, basado en 4.4BSD. Los esfuerzos de desarrollo se concentran en la portabilidad, cumplimiento de normas y regulaciones, corrección del código, seguridad proactiva y criptografía integrada.

OpenBSD incluye emulación de binarios para la mayoría de los programas de los sistemas SVR4 (Solaris), FreeBSD, Linux, BSD/OS, SunOS y HP-UX.

Actualmente soporta las siguientes plataformas de hardware:

● alpha

● amd64

● cats

● hp300

● hppa

● i386

● mac68k

● macppc

● mvme68k

● mvme88k

● sparc

● sparc64

● vax

OpenBSD es totalmente libre. El código binario es de libre distribución. El código fuente es de libre ditribución. Todas las partes componentes de OpenBSD tienen unos derechos de autor con unos términos razonables que permiten su libre distribución. Esto incluye la posibilidad de reutilizar la mayor parte del árbol de fuentes de OpenBSD, tanto para el uso personal como para el comercial. En una distribución regular de OpenBSD no se puede incluir ningún tipo de código que se encuentre bajo licencias más estrictas o restrictivas. El motivo por el que se lo mantiene así es que de este modo se salvaguarda la libre redistribución y uso de OpenBSD. También se puede utilizar, entre otros, con fines personales, académicos, en instituciones gubernamentales y organizaciones no gubernamentales, y en empresas privadas o públicas.

Una de las opciones interesantes es que OpenBSD o partes de él también pueden ser incorporados libre y gratuitamente en productos comerciales.

Con frecuencia, los nuevos usuarios quieren saber si OpenBSD es muy superior a algunos otros sistemas operativos tipo UNIX. No existe una respuesta, y esta pregunta suele dar pie a innumerables (e infructuosos) debates encendidos. Bajo ninguna circunstancia se debe formular una pregunta de este tipo en una lista de correo de OpenBSD.

A continuación exponemos algunas razones por las que OpenBSD es un sistema operativo de gran utilidad. Si este es un sistema que vaya a servir a los propósitos de un usuario o no, es una cuestión que sólo el mismo usuario podrá contestar:

● Funciona en varios tipos diferentes de plataformas de hardware

● Está reconocido por muchos profesionales de la seguridad informática como el sistema operativo tipo UNIX más seguro; esto es el resultado de una intensa e interminable auditoría de seguridad sobre el código fuente

● Es un sistema operativo con todas las funcionalidades de UNIX que se puede adquirir de forma gratuita

● Integra las últimas tecnologías en seguridad para la implementación de cortafuegos (filtros de IP) y redes privadas virtuales (VPN) dentro de un entorno distribuido

● Aprovecha el intenso desarrollo actual en muchas áreas, y ofrece la oportunidad de trabajar con tecnologías emergentes dentro de una comunidad internacional de programadores de sistemas y usuarios finales

La siguiente imágen muestra una estimación de la ubicación geográfica de los desarrolladores de OpenBSD.

Software incluídoOpenBSD se distribuye con varios productos de software de terceras partes. Estos son algunos:

● XFree86, sin el estorbo de una nuevo cambio en la licencia; el entorno de X Window, con parches locales. Para la plataforma i386 también se incluyen los servidores de la versión 3.3 de X a fin de ofrecer un soporte de tarjetas gráficas adicional. Se instala con los archivos de instalación x*.tgz.

● GCC, el compilador de C de GNU. El equipo de OpenBSD ha añadido la tecnología de protección de pila Propolice, activada en la instalación predeterminada, y que se usa en todo el modo de usuario y en las aplicaciones compiladas en OpenBSD. Se instala como parte del archivo comp35.tgz.

● Perl, con parches y mejoras del equipo de OpenBSD.

● Apache, el servidor de web. El equipo de OpenBSD ha añadido el entorno chroot como predeterminado, la revocación de privilegios, y otras mejoras relacionadas con la seguridad. Además también incluye soporte para mod_ssl 2.8.16 y DSO.

● OpenSSL, con parches y mejoras del equipo de OpenBSD.

● Groff, el procesador de texto.

● Sendmail, el servidor de correo, con el parche de seguridad parse8.359.2.8.

● BIND, el servidor de DNS. OpenBSD ha implementado muchas mejoras en la operación de chroot y otros temas relacionados con la seguridad.

● Lynx, el navegador de texto de web. Con soporte añadido para HTTPS, más parches del equipo de OpenBSD.

● Sudo, que permite a los usuarios ejecutar órdenes individuales como si fueran el usuario root.

● OpenSSH.

En realidad hay muchos más software en la instalación estándar, pero sería muy engorroso

nombrarlos a todos. Podemos revisar las referencias para ver un listado completo.

¿Qué son los paquetes y los portes?Los paquetes son binarios precompilados de algunos de los programas más usados. Están preparados para usarlos directamente en un sistema OpenBSD. Al igual que los portes, los paquetes son muy fáciles de mantener y actualizar.

Aquí se puede ver una lista de las herramientas que se utilizan para gestionar paquetes:

● pkg_add - utilidad para instalar distribuciones de paquetes de software

● pkg_create - utilidad para crear distribuciones de paquetes de software

● pkg_delete - utilidad para desinstalar distribuciones de paquetes de software previamente instalados

● pkg_info - utilidad para mostrar información sobre paquetes de software

Por otra parte, el árbol de portes es un conjunto de archivos Makefile listos para ser bajados, parcheados, configurados e instalados en programas de modo usuario para que pueda ejecutarlos en el entorno de OpenBSD sin tener que hacerlo todo a mano. Se puede obtener el árbol de portes desde el directorio /pub/OpenBSD/<versión>/ports.tar.gz en cualquiera de los servidores de FTP de OpenBSD. Los portes más recientes se encuentran disponibles desde el módulo "ports" del árbol de cvs, o por ftp en /pub/OpenBSD/snapshots/ports.tar.gz. Sin embargo, para la mayoría de usuarios, instalar los paquetes en lugar de los portes será una opción mejor. Los paquetes se generan desde los portes, y vienen precompilados y listos para usar.

OpenBSD tiene en todo momento tres versiones “activas”:

● Release: La versión final que se incluye en el CD.

● Stable: La versión estable, o sea la final con mejoras de seguridad y fiabilidad añadidas.

● Current: La versión en desarrollo de OpenBSD.

Una vez que conocemos los fundamentos y algunas bases de la filosofía OpenBSD pasamos a la instalación, pero como en las referencias podemos encontrar un tutorial muy detallado de la instalación, aquí solo voy a listar algunas recomendaciones de acuerdo a mi experiencia instalando este sistema.

Recomendaciones para la instalaciónLas recomendaciones que puedo darles para una instalación limpia son las siguientes:

● Bajar siempre la última versión e instalarla en un disco vacío

● Seguir los pasos de particionado como se detalla en uno de los links de referencias

● Si se va a instalar un servidor, evitar compartir el sistema con otro sistema operativo

● Intente usar las herramientas que vienen por defecto, y si se usa como servidor, no instalar el entorno gráfico y mucho menos los grandes paquetes de KDE o Gnome

● Si se van a realizar pruebas, primero intente con una máquina virtual

Falta decir que se configura la placa de red inicialmente, el nombre de host, las ip, gateway y contraseña de root.

Una vez finalizada la instalación, se deben completar los siguientes archivos de configuración:

● /etc/myname: debe aparecer el nombre de host completo, por ejemplo host.red.lan

● /etc/mygate: deberíamos usar la misma dirección IP que la definida como local del OpenBSD

OpenBSD como entorno de escritorioA pesar de que OpenBSD esta orientado a la seguridad y no para ser usado como terminal de usuario con entorno gráfico y demás, muchos intrépidos lo utilizan como sistema principal con vistosos escritorios y con la seguridad explotada al máximo. Aquí veremos algunas capturas de pantalla de escritorios OpenBSD para que veamos que no solo con Linux se pueden conseguir vistosos escritorios.

Configuración de la conexión a InternetSuponiendo que ya hemos instalado correctamente OpenBSD en el futuro equipo servidor, ahora precedemos a configurar la conexión a Internet.

Primero hay que conectar la placa de red libre (que no esta conectada al switch), a la interfaz ethernet del modem ADSL, y vamos al archivo /etc/hostname.interfaz, donde “interfaz” se debe reemplazar por la interfaz de red. Por ejemplo en mi equipo tengo lo siguiente:

lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 33208 groups: lo inet 127.0.0.1 netmask 0xff000000 inet6 ::1 prefixlen 128 inet6 fe80::1%lo0 prefixlen 64 scopeid 0x5rl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 lladdr 00:08:54:b2:48:b6 media: Ethernet autoselect (100baseTX full-duplex) status: active inet 192.168.0.1 netmask 0xffffff00 broadcast 192.168.0.255 inet6 fe80::208:54ff:feb2:48b6%rl0 prefixlen 64 scopeid 0x1ne1: flags=8863<UP,BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,MULTICAST> mtu 1500 lladdr 00:c0:df:ab:2e:f1 media: Ethernet autoselect (10baseT full-duplex) inet6 fe80::2c0:dfff:feab:2ef1%ne1 prefixlen 64 scopeid 0x2ne2: flags=8822<BROADCAST,NOTRAILERS,SIMPLEX,MULTICAST> mtu 1500 lladdr 00:c0:df:ab:0b:e9 media: Ethernet autoselect (10base2)

La interfaz lo0 corresponde a loopback o interfaz local. Las interfaces de red son rl0, ne1 y ne1, de las cuales, la primera se conecta al switch y tiene asignada una dirección IP (192.168.0.1), mientras la segunda interfaz esta conectada directamente al modem ADSL. La última interfaz no esta conectada, pero se la puede usar para configurar zonas DMZ.

Para que esto sea posible, en el archivo /etc/hostname.ne1 se escribe solamente:up

De esta manera se inicia la placa de red y se la activa para usar con el Modem ADSL.

Configuración de PPPPara establecer la conexión se utiliza un protocolo de comunicación punto a punto (PPP), que será encargado de realizar la autenticación con el proveedor de servicio, entre otros detalles necesarios por el protocolo. Pero PPP no esta solo, y como se trata de una conexión por la interfaz ethernet, se utiliza otro protocolo que se encarga de encapsular a PPP sobre la capa ethernet, llamada PPPoE (PPP over Ethernet) que ofrece además cifrado y compresión de datos.

El archivo que debemos modificar para realizar la conexión a Internet desde OpenBSD es /etc/ppp/ppp.conf que lleva todos los parámetros necesarios para la comunicación, incluyendo los nombres de usuarios y contraseñas, por lo que es muy recomendable que solamente pueda ser leido por el administrador (root). Un ejemplo de configuración puede ser la siguiente:default: set log Phase Chat LCP IPCP CCP tun command

proveedor: set redial 15 0 set reconnect 15 10000 set device "!/usr/sbin/pppoe -i ne1" set speed sync disable acfcomp protocomp deny acfcomp enable lqr set lqrperiod 5 set dial set login set timeout 0 set authname "nombre@arnet_o_cualquiera-tuc-xxx" set authkey "$uP3rP@s$w0rd"

add! default HISADDR

Luego ejecutando desde la linea de comandos lo siguiente:$ sudo ppp -ddial proveedorWorking in ddial modeUsing interface: tun0$

Si nos aparece lo mismo de arriba, significa que las cosas andaron bien. Para comprobarlo, podemos mirar en los procesos del sistema con “px ax” y localizar que los siguientes dos procesos aparezcan:

● 28682 ?? Is 0:00.23 ppp -ddial arnet

● 25835 ?? I 0:00.08 /usr/sbin/pppoe -i ne1

Y para saber la dirección IP que nos ha asignado el proveedor, podemos ejecutar “ifconfig” para ver el nuevo dispositivo túnel que ha creado ppp llamado tun0:tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1492 groups: tun egress inet 190.137.64.32 --> 200.3.60.15 netmask 0xffffffffDe esta manera, sabemos que estamos conectado y que la dirección IP que nos asignaron es 190.137.64.32. Además como el archivo ppp.conf indicaba en la última linea, se agregaron a las tablas de ruteo la dirección de gateway del proveedor por defecto:$ route show -inetRouting tables

Internet:Destination Gateway Flags Refs Use Mtu Interfacedefault 200.3.60.15 UGS 2 11740 - tun0loopback localhost UGRS 0 0 33208 lo0localhost localhost UH 1 120 33208 lo0192.168.0/24 link#1 UC 2 0 - rl0superhijitus 00:08:54:b2:48:b6 UHLc 1 466 - lo0192.168.0.35 00:1e:90:22:26:1c UHLc 1 166475 - rl0200.3.60.15 host32.190-137-64. UH 1 0 1492 tun0BASE-ADDRESS.MCAST localhost URS 0 0 33208 lo0

Como podemos ver, el destino “default” tiene el gateway del proveedor para la nueva interfaz tun0. Pero si intentamos hacer un ping a algún dominio, seguro no vamos a poder, pues aún no se han configurado los servidores DNS. Como OpenBSD viene con un servidor de DNS preconfigurado y listo para usar con direcciones de Internet, podemos iniciarlo con el comando “named &” y editar el archivo /etc/resolv.conf con los siguientes valores:lookup file bindsearch red.lannameserver 192.168.0.1nameserver 200.45.191.35

La linea de lookup dice donde buscar primero para resolver nombres, en este caso en el archivos /etc/hosts y si no se encuentran ahí, utiliza el servidor DNS. A veces es buena práctica agregar el DNS del proveedor por si aún no hemos ejecutado o configurado Named en nuestro OpenBSD.

Hasta aquí, si todo ha salido bien, podemos acceder a Internet desde el servidor, pero aún no hemos permitido que los demás equipos de la red, puedan acceder a Internet.

Permitir el acceso a InternetSi ya podemos conectarnos a Internet desde OpenBSD, ya sea probando alguna página con lynx o viendo si responden a ping dominios conocidos, podemos proseguir a permitir el acceso de las otras PC.

Para esto hay que cambiar el valor 0 (cero) por 1 (uno) del archivo /etc/sysctl.conf en las lineas:

● net.inet.ip.forwarding=1 # 1=Permit forwarding (routing) of IPv4 packets

● net.inet6.ip6.forwarding=1 # 1=Permit forwarding (routing) of IPv6 packets

Luego activar el firewall Packet Filter que viene de serie en OpenBSD en el archivo /etc/rc.conf para que se ejecute en el inicio del sistema. También podemos habilitar otros servicios útiles como Named:

● named_flags="" # for normal use: ""

● pf=YES # Packet filter / NAT

Nada más nos queda configurar PF para que realice las operaciones de NAT (traducción de direcciones de red), es decir para que los equipos de la red local puedan acceder a Internet con la IP pública asignada por el proveedor. Un ejemplo de configuración podría ser:# Interfaces de redext_if="tun0"int_if="rl0"

# Direcciones IPv4 privadaspriv_nets = "{ 127.0.0.0/8, 192.168.0.0/16, 172.16.0.0/12, 10.0.0.0/8 }"

# Politicasset block-policy returnset loginterface $ext_if

# Normalizacionscrub in all

# Ruteo, NAT y redireccionamientonat on $ext_if from $int_if:network to any -> ($ext_if)

# Reglas de filtradoblock allpass quick on $int_if allpass quick on lo0 allpass quick on $ppp_if all

block drop in quick on $ext_if from $priv_nets to anyblock drop out quick on $ext_if from any to $priv_nets

# Permite el trafico desde la red internapass in on $int_if from $int_if:network to any keep statepass out on $int_if from any to $int_if:network keep state# Permite salida de paquetes tcp, udp, icmppass out on $ext_if proto tcp all modulate state flags S/SApass out on $ext_if proto { udp, icmp } all keep state

Estos parámetros de configuración permiten la navegación libre por Internet, con todos los puertos del servidor bloqueados. Ahora podemos reiniciar el sistema y PF ser inicia junto con los servicios

de red, además de agregar una interfaz para monitorear su funcionamiento:pflog0: flags=141<UP,RUNNING,PROMISC> mtu 33208 groups: pflog

Por ejemplo para monitorear los mensajes que envía PF se puede hacer un “tcpdump -i pflog0”.

De esta manera, reiniciando el sistema, y luego conectándonos a Internet mediante “ppp -ddial proveedor”, estariamos dando acceso a todas las máquinas de la red. Lo que nos queda es automatizar un poco las cosas.

Automatizando la conexiónPara que no sea necesario acceder al servidor cada vez que nos quieramos conectar, y con solo encender el equipo, realice la conexión de forma automática, debemos crear y modificar unos cuantos archivos.

En primer lugar debemos configurar el archivo /etc/rc.local agregando al final del archivo lo siguiente:echo -n 'Estableciendo PPPoE DSL: '; ppp -ddial proveedorecho -n 'Estableciendo conexion: 'for i in 10 9 8 7 6 5 4 3 2 1 0; do sleep 3 echo -n "$i" if /usr/local/sbin/adsl-status > /dev/null; then break fidoneecho -n '\nEstado: '; /usr/local/sbin/adsl-status

Lo que hace el script anterior es llamar al comando ppp para que se conecte con “proveedor” definido en /etc/ppp/ppp.conf y esperar unos segundos (sleep) por diez veces, hasta que otro script (adsl-status) devuelva cierto, es decir que devuelva la dirección IP asignada por el proveedor. A este script lo debemos crear a mano y darle permisos de ejecución:$ sudo touch /usr/local/sbin/adsl-status$ sudo chmod +x /usr/local/sbin/adsl-status

Luego editamos el archivo con el siguiente contenido:#!/bin/sh

IP=$(/sbin/ifconfig tun0 | awk '/netmask/{print $2}')

if [ -z "$IP" ]; then echo "Enlace ADSL no esta conectado." exit 1else echo "ADSL conectado, Direccion IP $IP" exit 0fi

De esta manera, cada vez que arranque el sistema, se iniciarán los servicios por defecto (como SSH, Inetd, etc.), y los que decidimos que iniciaran automáticamente como Packet Filter y el script de conexión a Internet. Aunque en realidad OpenBSD ejecuta automáticamente todos los comandos que se introduzcan en /etc/rc.local, por eso hay que tener especial cuidado al editar este archivo, sino, pueden ocurrir errores al inicio y si no tenemos un monitor dedicado para ver los mensajes del

sistema, no vamos a saber cual es el error. Por eso es recomendable al principio monitorear todos los mensajes de arranque del sistema.

Luego nos queda asociar un dominio a la dirección IP que nos asigna el proveedor, que se verá a continuación.

Asociando un dominio .com.arEn primer lugar debemos tener un dominio registrado en http://www.nic.ar, cuyos pasos se pueden resumir como sigue:

● Registrar persona

● Registrar entidad

● Registrar dominio

El trámite a veces es un poco largo, pero lo más importante es a la hora de registrar el dominio, ya que debemos agregar como servidores DNS a los que nos provee el servicio de DNS gratuito para asociar la IP al dominio. De los más conocidos podemos encontrar a:

● Zoneedit

● FreeDNS

● DnsExit

● Entre otros

El que conozco en particular es Zoneedit, es gratuito y permite asociar hasta 5 dominios sin costo. Luego de registrarnos, nos pide el nombre de dominio inicial, y nos provee los DNS necesarios para ponerlos en nic.ar. La siguiente es una captura de mi cuenta de Zoneedit donde se ven los DNS, el nombre de dominio y la IP asociada.

Actualización de la IPPara actualizar el dominio a la IP que nos asigna el proveedor existen varios métodos que se pueden utilizar con Linux y *BSD. Los más sensillos son usando la linea de comandos, con los programas Lynx o Wget usando las siguientes sintaxis:

● lynx -source -auth=username:password 'http://dynamic.zoneedit.com/auth/dynamic.html?host=www.mydomain.com'

● wget -O - --http-user=username --http-passwd=password 'http://dynamic.zoneedit.com/auth/dynamic.html?host=www.mydomain.com'

Como OpenBSD no viene con wget de serie, tendremos que usar Lynx (que por cierto, no es mucho problema). Si probamos esto, deberiamos obtener el mensaje de que ya ha sido actualizado el dominio a la dirección IP que nos ha asignado el proveedor.

Automatizando la actualización de IPComo queremos que todo se haga de manera automática, lo mejor es instalar el paquete ddclient mediante el comando (suponiendo que elegimos los repositorios de Argentina):$ sudo pkg_add -v http://openbsd.md5.com.ar/pub/OpenBSD/4.3/packages/i386/ddclient-3.7.2.tgz

Luego de la instalación, se crea el directorio y archivo de configuración en /etc/ddclient. Lo que debemos modificar con los datos de la cuenta en Zoneedit es el archivo /etc/ddcliente/ddclient.conf

que debe contener como mínimo lo siguiente:daemon=300 # check every 300 secondssyslog=yes # log update msgs to syslogmail=gustavo # mail all msgs to rootmail-failure=gustavo # mail failed update msgs to rootpid=/var/run/ddclient.pid # record PID in file.ssl=yes # use ssl-support.Works with ssl-libraryuse=web # via web#### ZoneEdit (zoneedit.com)##server=www.zoneedit.com, \protocol=zoneedit1, \login=nomre_cuenta, \password=$uP3r$3&r3tP@s$ \gustavocortez.com.ar

Ahora es necesario ejecutar ddclient y probar su funcionamiento. Los parámetros que utiliza son muy sencillos, pero si ya hemos editado el archivo de configuración, no harán falta parámetros adicionales, pero por ejemplo para ejecutarlo como “daemon”, que envíe información a Syslog y cualquier otra información a nuestra cuenta local, debemos ejecutar ddclient con los siguientes argumentos:

● ddclient -daemon=0 -syslog -quiet retry -mail gustavo

Pero con solo ejecutar “ddclient” a secas, deberíamos ver un proceso similar a este:

● 8776 C0- I 2:49.43 perl: ddclient - sleeping for 280 seconds (perl)

Como se había indicado en el archivo de configuración, ddclient se ejecuta (en busca de cambios en la IP) cada 300 segundos. Además para saber que el dominio se ha actualizado, ddclient envía un

mensaje al usuario designado con la información siguiente (por ejemplo):SUCCESS: updating gustavocortez.com.ar: IP address set to 190.226.158.2 (200: Update succeeded.)regards, ddclient@superhijitus.red.lan (version 3.7.1)

Si ocurre algún error, también se notifica por correo. Además OpenBSD envía información diaria del estado del sistema, si se han modificado archivos, el promedio de uso del equipo, y demás información con respecto al disco. Por esta razón es importante tener bien configurado Sendmail al menos para usuarios locales.

Volviendo a ddclient, si todo ha salido bien, debemos agregarlo al archivo /etc/rc.local para que inicie automáticamente con el sistema. Pero hay que tener en cuenta que antes debemos estar conectados, por eso el comando se lo ejecuta posteriormente al script de conexión. Con esta linea luego del script de conexión basta:

● echo -n 'Estableciendo dominios... '; /usr/local/sbin/ddclient -file /etc/ddclient/ddclient.conf

Utilidades de un dominio asociadoCon esta explicación es suficiente para tener el equipo servidor con OpenBSD totalmente automatizado y listo para ser utilizado con solo encenderlo y esperar unos minutos a que se inicie y se establezca la conexión.

El interés de tener un dominio asociado a la IP que nos asigna el proveedor puede ser que quieramos tener un servidor Web local con wiki o blog para poder acceder a él desde otro lugar. También puede resultar importante establecer la conexión por SSH para realizar tareas administrativas.

Configuración de los clientesHasta ahora solamente se ha hablado de establecer la conexión a Internet con el servidor OpenBSD y que “supuestamente” permite la conexión de los clientes a Internet a través de la puerta de enlace del mismo.

Pero si la configuración en los clientes no se han realizado adecuadamente es posible que nunca lleguemos a conectarnos. De esta manera, hay que configurar los clientes para que tengan dirección IP fija que pertenezcan a la red del servidor (por ejemplo a la red 192.168.0.0), su puerta de enlace apunte a la IP de servidor y los DNS pueden ser del OpenBSD (si lo hemos configurado para iniciarlo en el arranque) o del proveedor.

Si tenemos varios equipos en casa, con diferentes sistemas operativos, la mejor solución es configurar un servidor DHCP en el servidor, para evitar asignar direcciones IP manualmente a cada equipo. En BSD el cliente de DHCP se denomina dhclient y se puede configurar para iniciar en el arranque. En Linux también tenemos por defecto un cliente DHCP (a menos que usemos Gentoo, ahí tendríamos que instalarlo a mano).

Servidor DHCPUn servidor DHCP permite al equipo asignar automáticamente direcciones IP de determinado rango a los nuevos clientes (equipos de la red). Esta funcionalidad, nos ahorra mucho tiempo y esfuerzo de lo que sería configurar IP y Gateway en cada equipo que se una a la red.

En OpenBSD resulta muy sencillo configurar el servidor DHCP, nada más indicando que inicie al arranque en el archivo /etc/rc.conf cambiamos la linea:

dhcpd_flags=NOpordhcpd_flags=””

Luego editamos la configuración propiamente dicha de DHCP donde se indica el rango de IP y los DNS que se les va a transmitir a los usuarios. El primer archivo es el /etc/dhcpd.conf que debe tener lo siguiente (al menos así lo tengo yo):shared-network LOCAL-NET { option domain-name "red.lan"; option domain-name-servers 192.168.0.1;

subnet 192.168.0.0 netmask 255.255.255.0 { option routers 192.168.0.1;

range 192.168.0.32 192.168.0.127; }

}

El otro archivo es donde se indica la interfaz por la que “entrarán” los cliente a solicitar la información de la red. Este archivo es /etc/dhcpd.interfaces y en mi caso contiene el nombre de la interfaz de red local:

● rl0

De esta manera ya tenemos configurado el servidor DHCP para que acepte conexiones a través de la red local (interfaz rl0) y asigne un rango de IP de 192.168.0.32 a 192.168.0.127, lo cual permite 95 clientes simultaneamente. Los clientes solo deben saber que tienen que buscar un servidor DHCP.

Retoques finalesAhora que tenemos un sistema robusto, seguro y muy flexible en cuanto a la configuración del mismo, podemos proceder a realizar unos retoques finales para dormir tranquilos.

Para ver los servicios que estoy ejecutando en mi sistema OpenBSD 4.3 basta con un “ps ax” con la siguiente salida:$ ps ax PID TT STAT TIME COMMAND 1 ?? Is 0:00.06 /sbin/init20075 ?? Is 0:01.72 syslogd: [priv] (syslogd)11440 ?? I 0:07.20 syslogd -a /var/named/dev/log -a /var/empty/dev/log23321 ?? Is 0:00.05 pflogd: [priv] (pflogd) 4388 ?? I 0:19.11 pflogd: [running] -s 116 -i pflog0 -f /var/log/pflog (pflog 2601 ?? Is 0:00.03 named: [priv] (named)23128 ?? I 1:15.80 named23920 ?? Is 0:00.11 /usr/sbin/dhcpd rl032432 ?? Is 0:00.23 inetd 5577 ?? Is 0:00.07 /usr/sbin/sshd14417 ?? Is 0:29.58 sendmail: accepting connections (sendmail)20139 ?? Is 0:01.32 cron10485 ?? Is 0:07.62 sshd: gustavo [priv] (sshd)32341 ?? I 0:31.25 sshd: gustavo@ttyp0 (sshd)28682 ?? Is 7:23.01 ppp -ddial arnet25835 ?? I 2:19.97 /usr/sbin/pppoe -i ne1 9284 ?? Is 0:00.01 /usr/local/bin/svnserve -d --listen-host 192.168.0.1 -r /va24124 ?? Is 0:00.12 /usr/local/bin/svnserve -d --listen-host 190.137.64.32

-r /28303 p0 Is 0:00.96 -ksh (ksh)14206 p0 R+ 0:00.00 ps -ax 8776 C0- I 2:55.17 perl: ddclient - sleeping for 50 seconds (perl)22579 C0 Is+ 0:00.06 /usr/libexec/getty std.9600 ttyC0

Se pueden ver los servicios que ya se han explicado su configuración y además algunos otros como dos servidores de Subversion e inetd, que seguramente todos lo tienen levantado.

El servicio inetd es un conjunto de servicios que se iniciar de acuerdo a la demanda o solicitud de un servicio determinado. En muchos casos es conveniente desactivar estos servicios para no crear agujeros de seguridad, ya que los servicios básicos que ofrece son: ftp, finger, ident, pop3, daytime, entre otros. Estos datos se encuentran en /etc/inetd.conf y habilitarlos es tan simple como descomentar una linea o comentarla para deshabilitarlo. En particular utilizo pop3 para recoger el correo de mi usuario local, a pesar de que no es seguro ya que las contraseñas y datos se envian en texto plano, por lo que no es recomendable realizar esto en redes de mayor tamaño, donde siempre hay alguien husmeador datos (con tcpdump por ejemplo) y mirando el tráfico de la red.

Luego las conexiones de terminales se pueden limitar a solamente una terminal virtual, de manera que se libera memoria innecesaria. El archivo de terminales se encuentre en /etc/ttys, y solo hay que cambiar el valor “on” por el valor “off”:console "/usr/libexec/getty std.9600" vt220 off securettyC0 "/usr/libexec/getty std.9600" vt220 on securettyC1 "/usr/libexec/getty std.9600" vt220 off secure

Asegurando el entornoPara mejorar un poco la seguridad del sistema, se puede quitar la contraseña del usuario “root” para evitar cualquier intrusión. Es decir, de la misma manera que se usa en Ubuntu, con el comando “sudo” se pueden realizar las operaciones del sistema. Para agregar un usuario al grupo wheel, es necesario el comando “gpasswd -a <usuario> wheel”. Además debemos asegurarnos de que al ejecutar “visudo” para editar el archivo de configuración de sudo, contenga la linea:

● %wheel ALL=(ALL) SETENV: ALL

Y luego quitar la contraseña de root, eliminando la cadena de texto “extraño” del archivo /etc/master.passwd de manera que quede así:

● root::0:0:daemon:0:0:Root &:/root:/bin/ksh

Así nadie va a poder ingresar como root. Pero también debemos ser cuidadosos a la hora de agregar usuarios despistados al grupo wheel.

Configurando SendMailSendmail se puede configurar para repartir correo de forma local, o también para enviar correo externo. En este caso hay que cambiar la linea de configuración de /etc/rc.conf con el valor predeterminado que viene con OpenBSD para permitir envios externos, no solo local:sendmail_flags="-L sm-mta -C/etc/mail/sendmail.cf -bd -q30m"spamd_flags=NO # for normal use: "" and see spamd(8)spamd_black=NO # set to YES to run spamd without greylistingspamlogd_flags="" # use eg. "-i interface" and see spamlogd(8)

Luego en /etc/mail/aliases debemos agregar el nombre de usuario para que nos llegue el correo del

sistema y no al usuario root (supuestamente deshabilitado), quedando así:# Well-known aliases -- these should be filled in!root:gustavomanager:gustavodumper:gustavo

Como este archivo debe generar una base de datos en /etc/mail/aliases.db, dentro del directorio /etc/mail debemos ejecutar el comando “make”. Esto es muy importante, sino los cambios no sufren efecto. Luego hay que indicar al servidor que dominios acepta para el envio de correo. Es recomendable poner la dirección IP de la red local, para que los usuarios de la red local puedan enviar correo usando Sendmail. Por ejemplo, el archivo /etc/mail/relay-domains podría quedar así:192.168.0red.lan

De esta manera, reiniciando el sistema o reiniciando sendmail, todo debería funcionar como se ha indicado. Por ejemplo podemos probar enviando un correo a alguna cuenta externa, pero seguramente lo van a tomar como SPAM porque los dominios personales muy frecuentemente se etiquetan como SPAM por los servicios de correo conocidos.

ConclusionesEn este informe se han dado detalles de configuración de los sistemas OpenBSD, así también como una pequeña introducción teórica para conocer los fundamentos de su desarrollo y la diferencia con otros sistemas derivados. También se ha hecho incapié en organizar los servicios que se van a ofrecen sin extendernos demasiado debido seguramente a las limitaciones de hardware, ya que seguro se trata de equipos viejos.

Por otro lado se ha intentado mantener un esquema en cuanto a la instalación y configuración de los diferentes servicios, para que de una manera simple y rápida podamos tener un servidor funcional en poco tiempo para aprovechar luego a investigar en los comandos que trae, las aplicaciones, los ajustes de seguridad que se puedan hacer y los servicios adicionales que se pueden instalar.

Por último se han detallado algunas configuraciones finales para incentivar a los administradores a continuar con el mantenimiento y mejora de sus servidor hogareño, ya que es la única manera de aprender a mantener un servicio fiable es practicando y buscando mejoras.

Referencias● http://www.openbsd.org/es/

● http://www.openbsderos.org/

● http://www.zoneedit.com/doc/dynamic.html

● http://ice.coding.com.br/openbsd/utilizando-o-openbsd-como-desktop.html

● http://en.wikipedia.org/wiki/OpenBSD

● http://es.wikipedia.org/wiki/OpenBSD

Recommended