10.2.- Configurar inetd

inetd fue el súper servidor estándar de Linux y se sigue utilizando en algunas distribuciones. Durante la última década xinetd ha ido ganando terreno. Para averiguar que súper servidor utiliza nuestro sistema escribiremos ps ax | grep inetd, la salida debería mostrar una línea con los comandos inetd o xinetd. También hay sistemas que no ejecutan ningún súper servidor.

inetd_1

Detalles de configuración de inetd

Los servidores iniciados a través de inetd se controlan con el fichero /etc/inetd.conf o los ficheros de /etc/inetd.d/ el fichero inetd.conf  lo componen una serie de líneas, una para cada servidor. Una línea típica presenta el siguiente aspecto:

inetd_3

Este ejemplo hace referencia a in.ftpd, un servidor FTP que fue bastante popular, pero que hoy en día ha sido sustituido por otros servidores FTP. Algunos no se pueden ejecutar desde un súper servidor.

Las versiones recientes de inetd no utilizan un único fichero de configuración, sino que permiten dividirlo en varios ficheros del directorio /etc/inetd.d/. Esto permite añadir o eliminar fácilmente configuraciones del servidor añadiendo o eliminando sus ficheros de configuración.  Las siguientes descripciones hacen referencia a /etc/inetd.conf,  pero también se aplican a los ficheros de /etc/inetd.d/.

Cada línea consta de varios campos separados por uno o más espacios, sus significados son los siguientes:

  •  Nombre del servidor: el primer campo (ftp en el ejemplo) es el nombre del servicio tal como aparece en el fichero /etc/services.
    inetd_tux1
  • Tipo de socket: el tipo de socket le indica al sistema qué tipo de conexión debe esperar: una conexión fiable de dos sentidos (stream), una conexión menos fiable con menos sobrecarga (dgram), una conexión de bajo nivel de red (raw) o alguna otra. Las diferencias entre ellas son muy técnicas, nuestra principal preocupación debe ser escribir correctamente el valor especificado por la documentación del servidor.
    inetd_tux_2
  • Protocolo: este es el protocolo de la capa de transporte TCP/IP utilizado, que suele ser tcp o udp.
    inetd_tux_3
  • Wait/nowait: en los sockets de tipo dgram esta opción indica si el servidor se conecta al cliente y liberará el socket (nowait) o si procesara todos los paquetes y después se desconectará pasado un tiempo determinado (wait). Los servidores que utilizan otro tipo de socket deberían especificar nowait en este campo.
    inetd_tux_4
  • Usuario: es el nombre de usuario que ejecuta el servidor, las opciones más comunes son root y nobody, aunque existen otras posibilidades. Por regla general, deberíamos ejecutar los servidores con un usuario con pocos privilegios, sin embargo, algunos servidores tendrán que ejecutarse como root. Los detalles se mencionan en la documentación del servidor.
    inetd_tux_5
  • Nombre del servidor: es el nombre de fichero del servidor. En este ejemplo se especifica /usr/sbin/tcpd, que es el binario de TCP Wrappers. Este programa es una importante herramienta de seguridad que deberíamos incluir habitualmente como medio para iniciar programas a través de inetd.
    inetd_tux_6
  • Parámetros: todo lo que sigue al nombre del servidor son parámetros que se le pasan a éste. Si utilizamos TCP Wrappers le pasaremos el nombre del servidor de destino, por ejemplo, /usr/sbin/in.ftpd junto con sus parámetros en este ejemplo.
    inetd_tux_7

En inetd.conf la almohadilla (#) indica un comentario, por lo que si queremos desactivar un servidor que se ejecuta a través de inetd, sólo tendremos que colocar una almohadilla al inicio de su línea. Si queremos agregar un servidor a inetd.conf tendremos que crear una entrada, la mayoría de estos servidores incluyen entradas de ejemplo en su documentación. Hay distribuciones que incluyen ejemplos para las entradas de los servidores más habituales en el fichero /etc/inetd.conf, normalmente como ejemplos, sólo tendremos que eliminar la almohadilla del comienzo del la línea para activar el servidor.

Tras modificar inetd.conf tendremos que reiniciar el súper servidor inetd, que se suele ejecutar como un servidor SysV estándar, por lo que podemos reiniciarlo escribiendo:

inet_8

Otra alternativa es recargar la configuración de inetd pasándole al script de inicio el parámetro reload, ya que restart apaga el servidor y después lo enciende. Con reload el servidor nunca deja de funcionar, simplemente vuelve a leer el fichero de configuración e implementa los cambios. Si utilizamos restart es más probable que los cambios se apliquen correctamente, pero también es más probable que se interrumpan las conexiones existentes. En lugar de utilizar el script SysV podemos utilizar kill o killall para pasarle la señas SIGHUP a inetd. Esta señal hace que inetd recargue su configuración. Por ejemplo, podemos escribir kill -HUP PID si conocemos el PID de inetd o killall -HUP inetd para hacer que todas las instancias de inetd recarguen sus ficheros de configuración. Esto debería funcionar de un modo similar a reload del script de inicio SysV de hecho, estos scripts suelen utilizar esta técnica para implementar esta opción. Suele ser preferible desactivar todos los servidores posibles en inetd.conf lo que mejorará la seguridad del sistema eliminando servidores potencialmente peligrosos.

Anuncios