TCP Wrappers (Envoltorio de TCP) es un sistema de red ACL que trabaja en terminales y que se utiliza para filtrar el acceso de red a servicios de protocolos de internet que corren en sistemas Unix o sus variantes Linux.
Permite que las direcciones IP, los nombres de terminales y/o subredes sean usadas como tokens sobre los cuales filtrar para propósitos de control de acceso.
Permite:
- Abrir el sistema local solo a aquellos a los que quiero permitir el acceso.
- Permitir solo el servicio que uno quiere que ese host remoro acceda.
Se puede utilizar como medida de seguridad o seguridad adicional a un sistema que estamos protegiendo un IPTABLES o IPFILTER. (Veamos la imagen)
Para su funcionamiento, se utilizan dos archivos: /etc/hosts.allow (Permite el acceso) y el /etc/hosts.deny (deniega el acceso).
Cuando un cliente requiere una conexión, ambos archivos son consultados y se toma una desición:
1- Si el daemon está en el hosts.allow se brinda el acceso.
2- Si el daemon está en el hosts.deny se deniega el acceso.
3- Si no hay macheo en hosts.allow ni en hosts.deny, se brinda acceso.
La primera linea que coincida determina la resolución.
Si ambos archivos no existen o estan vacios se deja que todos los clientes accedan a todos los demonios.
El funcionamiento es sencillo. Los formatos para /etc/hosts.allow y /etc/hosts.deny son idénticos. Cualquier línea en blanco que comience con un símbolo de numeral o almohadilla (#) será ignorada, y cada regla debe estar en su propia línea.
Las reglas se tienen que formatear de la siguiente manera:
<daemon list>: <client list> [: <option>: <option>: ...]
<daemon list> — Una lista separada por comas de los nombres de procesos (no de los nombres de servicios) o el comodín ALL . La lista de demonios también acepta operadores para permitir mayor flexibilidad.
<client list> — Una lista separada por comas de nombres de host, direcciones IP, patrones especiales o comodines especiales la cual identifica los hosts afectados por la regla. La lista de clientes también acepta operadores para permitir mayor flexibilidad.
<option> — Una acción opcional o una lista separada con puntos y comas de acciones realizadas cuando la regla es activada. Los campos de opciones soportan expansiones , lanzan comandos desde el shell, otorgan o prohiben el acceso y alteran el comportamiento de la conexión .
Las reglas se tienen que formatear de la siguiente manera:
<daemon list>: <client list> [: <option>: <option>: ...]
<daemon list> — Una lista separada por comas de los nombres de procesos (no de los nombres de servicios) o el comodín ALL . La lista de demonios también acepta operadores para permitir mayor flexibilidad.
<client list> — Una lista separada por comas de nombres de host, direcciones IP, patrones especiales o comodines especiales la cual identifica los hosts afectados por la regla. La lista de clientes también acepta operadores para permitir mayor flexibilidad.
<option> — Una acción opcional o una lista separada con puntos y comas de acciones realizadas cuando la regla es activada. Los campos de opciones soportan expansiones , lanzan comandos desde el shell, otorgan o prohiben el acceso y alteran el comportamiento de la conexión .
Ej:
- Permitir acceso ssh únicamente a unas IPs
/etc/hosts.allow Permitimos acceso a las IPs 192.168.0.111, 192.168.0.112, 192.168.0.113.
sshd: 192.168.0.111 192.168.0.112 192.168.0.113
/etc/hosts.deny Denegamos al resto.
sshd: ALL
- Bloquear todo excepto lo declarado en /etc/hosts.allow
/etc/hosts.allow
sshd: 192.168.0.111 192.168.0.112 192.168.0.113
/etc/hosts.deny Denegamos acceso al resto de servicios excepto SSH a las Ips indicadas. La máquina quedará blindada excepto el acceso SSH a las Ips permitidas:
ALL: ALL
sshd: 192.168.0.111 192.168.0.112 192.168.0.113
/etc/hosts.deny Denegamos acceso al resto de servicios excepto SSH a las Ips indicadas. La máquina quedará blindada excepto el acceso SSH a las Ips permitidas:
ALL: ALL
- Permitir también el uso de sendmail a una subred y unos hosts concretos
/etc/hosts.allow Permitimos acceso a las IPs 192.168.0.111, 192.168.0.112, 192.168.0.113.
sshd: 192.168.0.111 192.168.0.112 192.168.0.113
sendmail: 10.0.0.0/24 test.com prueba.com
/etc/hosts.deny
ALL: ALL
- Permitir todo y bloquear el acceso total a una única IP
/etc/hosts.allow
ALL: ALL
/etc/hosts.deny
ALL: 172.16.1.1
Comodines
Los comodines permiten a los wrappers TCP coincidir más fácilmente grupos de demonios o hosts. Son usados con mayor frecuencia en el campo de lista de cliente de las reglas de acceso.
Se pueden utilizar los siguientes comodines:
ALL — Hace corresponder todo. Se puede usar para la lista de demonios o en la lista de clientes.
LOCAL — Hace corresponder todos los nombres de máquinas que no contengan un punto (.), tal como localhost.
KNOWN — Hace corresponder todas las máquinas cuyos nombres y direcciones son conocidos o donde el usuario es conocido.
UNKNOWN — Hace corresponder todas las máquinas cuyos nombres y direcciones sean desconocidas o en el caso en el que se desconozca el usuario.
PARANOID — Hace corresponder todas las máquinas cuyo nombre no se corresponda con la dirección.
Patrones
Los patrones se pueden utilizar en el campo de lista de cliente de las reglas de acceso para especificar de forma más precisa grupos de host clientes.
La siguiente es una lista de los patrones más comúnmente aceptados para una entrada de lista de cliente:
Nombre de host comenzando con un punto (.) — Al colocar un punto al comienzo de un nombre de host, se hace coincidir todos los hosts compartiendo los componentes listados del nombre. El ejemplo siguiente aplicaría a cualquier host dentro del dominio example.com:
ALL : .example.com
Dirección IP que termina con un punto (.) — Al colocar un punto al final de una dirección IP hace corresponder todos los hosts compartiendo el grupo numérico inicial de una dirección IP. El ejemplo siguiente aplicará a cualquier host dentro de la red 192.168.x.x:
ALL : 192.168.
Los patrones se pueden utilizar en el campo de lista de cliente de las reglas de acceso para especificar de forma más precisa grupos de host clientes.
La siguiente es una lista de los patrones más comúnmente aceptados para una entrada de lista de cliente:
Nombre de host comenzando con un punto (.) — Al colocar un punto al comienzo de un nombre de host, se hace coincidir todos los hosts compartiendo los componentes listados del nombre. El ejemplo siguiente aplicaría a cualquier host dentro del dominio example.com:
ALL : .example.com
Dirección IP que termina con un punto (.) — Al colocar un punto al final de una dirección IP hace corresponder todos los hosts compartiendo el grupo numérico inicial de una dirección IP. El ejemplo siguiente aplicará a cualquier host dentro de la red 192.168.x.x:
ALL : 192.168.