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ÓNALL Especifica todos los ordenadoresLOCAL Especifica todos los ordenadores de nuestra red localKNOWN Especifica todos los ordenadores cuyo nombre o dirección IP son conocidosUNKNOW Especifica todos los ordenadores cuyo nombre o dirección IP son desconocidosPARANOID 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
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 servidorunknow 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.ALLOWvsftpd:ALLsshd:192.168.1.xx
#HOSTS.DENYALL:ALL
Ejercicios1. Configura los envolventes de acceso de forma que
a. Se permita el acceso al servicio FTP a todos los ordenadoresb. Se permita el acceso al servicio openSSH a todos los ordenadores del aula excepto al ordenador 192.168.1.xxc. 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 quea. Se permita el acceso al servicio NFS a dos ordenadores del aulab. 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