Tcpwrapper.

Sería útil poder restringir los servicios, tanto aquellos que se ejecutan bajo demanda como los que lanzamos directamente en el proceso de arranque, dependiendo de la máquina (dirección IP) que quiere optar al servicio. Esta funcionalidad se puede conseguir si instalamos el paquete tcp_wrappers.

Los ficheros en los que se restringe el acceso son /etc/hosts.allow y el fichero /etc/hosts.deny.

La configuración más normal es denegar todo lo que no esté permitido en el /etc/hosts.allow.

Por ejemplo, si sólo queremos permitir el acceso por telnet , rlogin y pop a la máquina xxx.xxx.xxx.xxx, y a todo nuestro dominio linux salvo la máquina mio.linux, y el resto denegarlo, la configuración de estos dos ficheros sería:

En el /etc/hosts.allow:

in.telnetd: xxx.xxx.xxx.xxx .cica.es EXCEPT mio.linux 
in.rlogind: .cica.es xxx.xxx.xxx.xxx EXCEPT mio.linux 
ipop3d: .cica.es xxx.xxx.xxx.xxx EXCEPT mio.linux

y en el /etc/hosts.deny tener la siguiente línea:

ALL:ALL

En el caso de que decidamos utilizar inetd, el wrapper actúa de intermediario entre el servidor inetd y los servicios controlados por inetd definidos en /etc/inetd.conf (telnet, ftp,...), permitiendo el acceso sólo a las máquinas que configuremos, y por supuesto haciendo registro de todos los accesos a estos servicios. También serán susceptibles de configurarse via el tcpwrapper aquellos servicios que siendo demonios hayan sido compilados con soporte tcpwrapper. Por ejemplo el portmap o el ypserv, pueden utilizarlo.

Para configurarlo, basta sustituir en el fichero /etc/inetd.conf, cada servicio por el demonio tcpd. Por ejemplo, si queremos restringir el acceso al servicio telnet, en lugar de esta línea:

telnet stream tcp nowait root /usr/sbin/in.telnetd in.telnetd

aparecerá esta otra:

telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd

Lo que hay que resaltar que aunque actualmente en RedHat los servicios bajo demanda los controla xinetd y este puede hacer la misma función que el wrapper, existen daemons que pueden ser compilados con la librería tcpwrapper y utilizar los ficheros de configuración de este. Por ejemplo, este es el caso de SSH.