TCPWrappers permite controlar y limitar el acceso a los servicios de un sistema mediante dos archivos (hosts.allow y hosts.deny) que especifican los servicios a los que se permite o deniega el acceso y desde qué clientes. Estos archivos contienen reglas formateadas como "lista_servicios:lista_clientes" que determinan si se permite o deniega el acceso para cada servicio y cliente. También se pueden ejecutar comandos condicionales y hay variables para recoger información del cliente y servicio.
1. CONTROL DE ACCESO TCPWRAPPERS
TCPWRAPPERS
Los envolventes de acceso o TCPWrappers permiten controlar y limitar el acceso a los servicios que ejecuta un ordenador en sistemas
GNU/Linux
Para realizar dicho control, los envolventes de acceso se basan en dos archivos hosts.allow y hosts.deny que especifican respectivamente los
servicios a los que se permite el acceso y los servicios a los que se deniega el acceso y desde que ordenadores. Dichos archivos se encuentran
dentro del directorio /etc
CONFIGURACIÓN
Los envolventes de acceso funcionan mediante reglas. Su sintaxis (en ambos archivos) es lista_servicios:lista_clientes [spawn comando_shell]
donde
lista_servicios es una lista de uno o más servicios separados por espacios, donde los servicios se especifican mediante el nombre del servidor
que los proporciona (vsftpd, sshd, etc…)
lista_clientes es uno o más nombres de ordenador, direcciones IP o patrones separados por espacios
comando_shell indica una acción a ejecutar si una regla se cumple. Es opcional
Además de los patrones *, ? y . se pueden utilizar una serie de palabras reservadas en lugar de especificar una lista de clientes
OPCIÓN DESCRIPCIÓN
ALL Especifica todos los ordenadores
LOCAL Especifica todos los ordenadores de nuestra red local
KNOWN Especifica todos los ordenadores cuyo nombre o dirección IP son conocidos
UNKNOW Especifica todos los ordenadores cuyo nombre o dirección IP son desconocidos
PARANOID Especifica todos los ordenadores cuyo nombre no se corresponde con su dirección IP
KNOWN, UNKNOW y PARANOID se deben utilizar con precaución pues cualquier error o modificación en el servidor DNS puede producir que
ordenadores o usuarios no autorizados obtengan acceso a los servicios
En la lista de clientes se puede utilizar el operador EXCEPT, permitiéndonos combinar dos listas en la misma línea, es decir, una regla se
aplicará a la primera lista y excluirá a la segunda
Ejemplo. Uso de EXCEPT en el archivo hosts.allow
vsftpd:192.168.1. EXCEPT 192.168.1.xx 192.168.1.yy
Además de todo lo expuesto la palabra reservada ALL puede utilizarse en la lista de servicios significando todos los permisos
Ejemplo. Uso de ALL en la lista de servicios
ALL:192.168.1.xx
Ejemplo. Uso de ALL y EXCEPT
ALL:ALL EXCEPT vsftpd:192.168.1.xx
Por último la opción spawn que ejecutará un comando en caso de que una regla se cumpla
Ejemplo. Crear un log con los intentos de acceso al servicio openSSH mostrando la dirección IP del cliente y el nombre del servicio
sshd:ALL: spawn echo ‘cliente’ %a ‘servicio’ %d >> /var/log/deny.log
2. CONTROL DE ACCESO TCPWRAPPERS
VARIABLES DESCRIPCIÓN
%a Dirección IP del cliente
%A Dirección IP del servidor
%c Identificador del proceso, nombre o dirección IP del cliente entre otros
%d Nombre del servicio solicitado
%h Nombre del cliente o dirección IP si no existe
%H Nombre del servidor o dirección IP si no existe
%n Nombre del cliente
unknow si no existe
paranoid si no coincide el nombre y su dirección IP
%N Nombre del servidor
unknow si no existe
paranoid si no coincide el nombre y su dirección IP
%p Identificador del proceso del servicio
%s Identificador del proceso, nombre o dirección IP del servidor entre otros
%u Nombre del cliente, unknow si no existe
Ejemplo. Denegar todos los servicios excepto el servicio FTP que se permitirá a todo el mundo y el servicio openSSH que se permitirá a un
ordenador específico
#HOSTS.ALLOW
vsftpd:ALL
sshd:192.168.1.xx
#HOSTS.DENY
ALL:ALL
Ejercicios
1. Configura los envolventes de acceso de forma que
a. Se permita el acceso al servicio FTP a todos los ordenadores
b. Se permita el acceso al servicio openSSH a todos los ordenadores del aula excepto al ordenador 192.168.1.xx
c. Se genere un fichero log con el nombre del servicio, IP y nombre del cliente en caso de que se deniegue el acceso a algún
permiso
2. Configura los envolventes de acceso de forma que
a. Se permita el acceso al servicio NFS a dos ordenadores del aula
b. En cualquier caso, cuando se permita o deniegue el acceso al servicio se tiene que generar un fichero log con información
sobre el mismo