inetd.sec(4)

Desde hace más de diez años, HP-UX incorpora en todas sus releases un mecanismo de control de acceso a los servicios que el sistema ofrece a través de inetd; se trata de un esquema muy similar al ofrecido por TCP Wrappers, esto es, basado en la dirección IP de la máquina o red solicitante del servicio, y procesado antes de ejecutar el demonio que va a servir la petición correspondiente. De esta forma, se establece un nivel de seguridad adicional al ofrecido por cada uno de estos demonios.

Evidentemente, este esquema basa su configuración en un determinado archivo; el equivalente ahora a los ficheros /etc/hosts.allow y /etc/hosts.deny de TCP Wrappers es /usr/adm/inetd.sec (si no existe, el sistema funciona de la forma habitual, sin ningún nivel de protección adicional). El formato de cada línea del mismo es muy simple:
servicio allowdeny direccion
La directiva `servicio' indica el nombre del servicio a proteger tal y como aparece en el archivo /etc/services (esto es una diferencia con respecto a TCP Wrappers, que se guía por el nombre concreto del demonio y no por el del servicio); `allow' o `deny' (opcionales, si no se indica este campo se asume un `allow') definen si vamos a permitir o denegar el acceso, respectivamente, y por último en el campo `direccion' podemos indicar (también es un campo opcional) la dirección IP de uno o más hosts o redes, así como los nombres de los mismos. Si para un mismo servicio existe más de una entrada, sólo se aplica la última de ellas; aunque a primera vista esto nos pueda parecer una limitación importante, no lo es: si definimos una entrada `allow', a todos los sistemas no contemplados en ella se les negará el acceso, si definimos una `deny' se le permitirá a todo el mundo excepto a los explícitamente indicados, y si para un servicio no existe una entrada en el fichero, no se establece ningún tipo de control.

Imaginemos que el contenido de /usr/adm/inetd.sec es el siguiente:
marta:/# grep -v ^\# /usr/adm/inetd.sec
finger allow localhost 158.42.* 
ssh allow localhost 158.42.* 192.168.0.*
pop allow
marta:/#
En este caso lo que estamos haciendo es permitir el acceso al servicio finger a todas las máquinas cuya dirección comience por 158.42., así como a la máquina local, y negarlo al resto, permitir acceso a ssh además de a estas a las que tengan una dirección 192.169.0., y dejar que cualquier sistema (no definimos el tercer campo) pueda consultar nuestro servicio POP3 (la entrada mostrada sería equivalente a un indicar únicamente el nombre del servicio, o a no definir una entrada para el mismo). Así, en el momento que un sistema trate de acceder a un servicio para el que no tiene autorización obtendrá una respuesta similar a la ofrecida por TCP Wrappers (esto es, el cierre de la conexión):
luisa:~# telnet 158.42.2.1 79  
Trying 158.42.2.1...
Connected to 158.42.2.1.
Escape character is '^]'.
Connection closed by foreign host.
luisa:~#
Como vemos, se trata de un mecanismo sencillo que, aunque no ofrezca el mismo nivel de protección que un buen cortafuegos (nos podemos fijar que la conexión se establece y luego se corta, en lugar de denegarse directamente como haría un firewall), y aunque no sea tan parametrizable - ni conocido - como TCP Wrappers, puede ahorrar más de un problema a los administradores de una máquina HP-UX; y ya que existe, no cuesta nada utilizarlo junto a cualquier otra medida de seguridad adicional que se nos ocurra (recordemos que en el mundo de la seguridad hay muy pocos mecanismos excluyentes, casi todos son complementarios). Para obtener más información acerca de este, podemos consultar la página de manual de inetd.sec(4).
© 2002 Antonio Villalón Huerta