Capítulo 5. Protocolos de soporte y de usuario

Tabla de contenidos

1. Servidor DNS
1.1. Resolución de nombres
1.2. named
1.2.1. Vistas para resolver nombres interna y externamente
1.3. Referencias y lecturas recomendadas
2. Servidor ssh
2.1. Referencias y lecturas recomendadas
3. Protocolo DHCP
3.1. Configuración de un cliente DHCP
3.2. Configuración de un servidor DHCP
3.3. Referencias y lecturas recomendadas
4. Servidor ntp
4.1. Referencias y lecturas recomendadas
5. Servidor de correo electrónico
5.1. Protocolo SMTP
5.2. MTA sendmail
5.2.1. Relevo de Correo
5.2.2. SMTP-AUTH y TLS
5.2.3. Cambiar puerto SMTP
5.2.4. Dominios virtuales
5.3. MTA OpenSMTPD
5.3.1. Depuración de OpenSMTP
5.3.2. Referencias
5.4. Protocolos para revisar correo
5.4.1. Implementación Courier de POP3S e IMAPS
5.4.2. Implementación Dovecot de IMAPS y POP3S
5.5. Combatiendo correo no solicitado con SpamAssassin
5.5.1. Configuración de spamd
5.5.2. Configuración de procmail por usuario
5.5.3. Pruebas
5.5.4. Referencias y lecturas recomendadas
5.6. Correo desde el web (webmail)
5.6.1. Roundcubemail
5.7. Listas de correo
5.7.1. Instalación de Mailman (sin chroot)
6. Servidor ftp
6.1. Servicio FTP en una DMZ
6.2. Referencias y lecturas recomendadas
7. Servidor Web
7.1. OpenBSD httpd
7.1.1. Configuración mínima
7.1.2. Servidor con cifrado
7.1.3. Dominios virtuales
7.1.4. Sitio con PHP
7.1.5. Otros detalles de uso
7.2. Nginx
7.2.1. Uso de PHP con nginx
7.3. Apache
7.3.1. Directorios para usuarios
7.3.2. Dominios virtuales
7.3.3. SSL
7.3.4. PHP
7.3.5. Server Side Include

1. Servidor DNS

1.1. Resolución de nombres

Para resolver nombres OpenBSD emplea rutinas propias de resolución incluidas en la librería de C, se configuran en /etc/resolv.conf. Este archivo puede incluir, dominio (domain), lista de servidores (nameserver), orden de fuentes donde buscar (lookup), lista de dominios en los cuales buscar (search), retornar direcciones IP en orden (sortlist), opciones (options). Un ejemplo del archivo /etc/resolv.conf es:

search miescuela.edu.co
nameserver 192.168.16.1
lookup file bind
      

lookup permite especificar un orden para hacer resolución de acuerdo a uno o más de los siguientes argumentos separados por espacio:

  • bind que indica usar servidor de nombres (named)

  • file que indica buscar en /etc/hosts

  • yp que indica emplear el sistema YP si ypbind está corriendo.

1.2. named

OpenBSD incluye entre sus componentes básicos parte del servidor BIND 9, bajo el nombre named, que por defecto corre con chroot en el directorio /var/named.

Puede configurarse y probarse antes de iniciarlo en cada arranque. Para configurarlo por primera vez pueden seguirse primero los pasos de /etc/rc. El archivo de configuración es /var/named/etc/named.conf. Se sugiere que se agregue información de zonas de las cuales es maestro en en archivos del directorio /var/named/master. Pueden configurarse archivos como dice en [AA_Linux] por ejemplo los datos un servidor DNS primario del dominio miescuela.edu.co pueden quedar en el archivo /var/named/master/miescuela.edu.co:

$TTL 1D
@ IN  SOA  @  root.localhost. (
	03091025 ; Serial
	1D   ; Refresco secundario
	6H   ; Reintento secundario
	2D   ; Expiración secundaria
	1D ) ; Cache de registro de recursos

	NS  @

	A       65.8.9.234

	MX      5      correo.miescuela.edu.co.

correo	IN      A       201.2.3.74
ns1     IN      A       201.2.3.74
www     IN      A       201.2.3.74

Note que se declara el mismo dominio como servidor de nombre autoritario, se relaciona con la IP (65.8.9.234), el nombre correo.miescuela.edu.co identificara la misma máquina y es el nombre que se usará para intercambiar correos; el nombre www.miescuela.edu.co será un alias para el mismo servidor. Note que todo nombre que no termine con punto (.), será completado por bind con el dominio (i.e www será completado a www.miescuela.edu.co, si se olvida el punto después de correo.miescuela.edu.co, bind lo completará a correo.miescuela.edu.co.miescuela.edu.co). Recuerde aumentar el número serial cada vez que haga algún cambio, para que la información pueda ser actualizada en los servidores secundarios. Puede probar cada archivo de zonas que haga con:

  named-checkzone miescuela.edu.co /var/named/master/miescuela.edu.co

Agregue una referencia al archivo de zonas maestro en /var/named/etc/named.conf, en la sección para zonas maestras algo de la forma:

zone "miescuela.edu.co" {
  type master;
  file "master/miescuela.edu.co";
}

Si desea que un servidor sea secundario de algún servidor primario, agregue en /var/named/etc/named.conf en la sección para zonas esclavas algo como:

zone "miescuela.edu.co" {
  type slave;
  file "slave/miescuela.edu.co";
  masters { 65.8.9.234; };
}

Cuando named lea de nuevo sus archivos de configuración traerá la información del servidor primario y la dejará en el archivo /var/named/slave/miescuela.edu.co.

El servidor se inicia con

    sudo sh /etc/rc.d/named start

Los errores que se produzcan antes de hacer chroot son enviados a /var/log/servicio. Para probar el funcionamiento antes de modificar /etc/resolv.conf puede usar:

	dig @localhost miescuela.edu.co
      

Si requiere volver a leer los archivos de configuración (por ejemplo después de cambiar los archivos de zonas) puede enviar la señal SIGHUP al proceso con:

	pkill -HUP named
      

o con

	rndc reload
      

Una vez compruebe que su servidor DNS está operando correctamente puede indicar que se inicie en cada arranque agregando a /etc/rc.conf.local:

named_flags="" 

y en el mismo archivo en la definición de pkg_scripts agregando named.

1.2.1. Vistas para resolver nombres interna y externamente

Si cuenta con una LAN conectada a Internet por medio de un cortafuegos con OpenBSD que maneja el DNS de su organización y si además cuenta con una DMZ tal que las peticiones a algunos puertos del cortafuegos son redirigidas a uno o más servidores, seguramente tendrá inconvenientes al resolver nombres de su dominio en la LAN, pues el nombre de su organización (digamos miescuela.edu.co) será resulto a la dirección externa, la cual conectará al cortafuegos por el puerto pedido y tratará de redirigir la conexión al servidor en la DMZ (i.e se reflejará). Por este motivo desde su LAN en general no resolverá nombres de su dominio.

Una solución (ver /var/named/etc/named-dual.conf) es configurar bind para que tenga dos vistas, una para computadores fuera de la LAN y otra para computadores dentro de la LAN. Un posible archivo de configuración (basado en los distribuidos con OpenBSD) es:

acl clients {
	localnets;
	::1;
};
options {
	version "";     
	listen-on    { any; };
	listen-on-v6 { any; };
	allow-recursion { clients; };
};
logging {
	category lame-servers { null; };
};

view "internal" {  // Para la red interna
    match-clients { clients; };
    match-recursive-only yes;
    recursion yes;

    zone "." {
    	type hint;
    	file "standard/root.hint";
    };
    zone "localhost" {
    	type master;
	file "standard/localhost";
	allow-transfer { localhost; };
    }
    zone "127.in-addr.arpa" {
    	type master;
    	file "standard/loopback";
    	allow-transfer { localhost; };
    };
    zone "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" {
    	type master;
    	file "standard/loopback6.arpa";
    	allow-transfer { localhost; };
    };
    zone "com" {
    	type delegation-only;
    };
    zone "net" {
    	type delegation-only;
    };

    zone "miescuela.edu.co" {
        type master;
        file "refleja/miescuela.edu.co.org";
    };
};
view "external" { // Para Internet
    recursion no;
    additional-from-auth no;
    additional-from-cache no;
    zone "miescuela.edu.co" {
        type master;
	file "master/miescuela.edu.co";
    };
    zone "168.74.245.200.IN-ADDR.ARPA" { // Para resolución inversa
        type master;
	file "master/db.168.74.245.200";
    };
};

El archivo master/miescuela.edu.co sería el típico para resolver externamente, mientras que en refleja/miescuela.edu.co tendría los mismo nombres del anterior pero con las direcciones de la red local. master/db.167.74.245.200 tendría datos para resolución de nombres inversa desde fuera de la organización, por ejemplo:

$TTL 1D
@ IN  SOA  @  root.localhost. (
  49   ; Serial de Zona
  1D   ; Refesco secundario
  6H   ; Retintento secundario
  2D   ; Expiración secundaria
  1D ) ; Cache de registros de recurso

@       IN      NS      cortafuegos.miescuela.edu.co.
	IN      PTR     www.miescuela.edu.co.
	IN      PTR     correo.miescuela.edu.co
	IN      PTR     ns1.miescuela.edu.co

1.3. Referencias y lecturas recomendadas

Sección sobre DNS de las guías Aprendiendo a aprender Linux. [AA_Linux] Referencia para administradores de BIND 9 [bind9arm]. Ayudas para configurar Bind incluido en OpenBSD. Puede consultar más sobre vistas y reflexión de consultas DNS en http://www.bind9.net/manual/bind/9.3.1/Bv9ARM.ch06.html#view_statement_grammar. [openbsdDnsDhcp]. Las siguientes páginas man: named(8). dig(8).