[ Introducción ] [ Configuración ] [ Ejemplos ] [ Limitaciones ] [ Avanzado ] [ Links ]
Tcp_wrappers te permite controlar los puertos de software de tu PC, o sea que no es para los com no los lpt, sino para el puerto telnet, ftp, pop3 ...
El primer
requisito es tener instalado y configurado el superservidor inetd, esto
es muy fácil y solo se trata de instalar el demonio y asegurarse
de que se arranca durante el inicio de la máquina.
Para asegurarnos
de que lo tenemos instalado i corriendo ejecutaremos el comando: ps
aux | grep inetd, y debe salir algo como esto:
140 ?
S 0:00 inetd
si no es que algo va mal, repasa la instalación.
Para mas información: man inetd, man inetd.conf y man services
Ya tenemos
el inetd instalado, el principal archivo de configuración del mismo
es el /etc/inetd.conf, en el, cada linea se refiere a un puerto/servicio
que podemos ofrecer. Sin tcp_wrappers cada una de las lineas debería
parecerse a esto:
telnet
stream tcp nowait root /usr/sbin/in.telnetd
Esto significa
que cada llamada al puerto telnet será gestionada por el demonio
in.telnetd
Ahora instalamos
el paquete tcp_wrappers, una vez instalado lo único necesario es
cambiar la linea anterior por algo como esto:
telnet
stream tcp nowait root /usr/sbin/tcpd in.telnetd
La diferencia
es que ahora, lo que se ejecuta al recibir un telnet es el demonio tcpd,
al que se le pasa como parámetro el demonio que debe controlar,
en este caso in.telnetd.
Para mas información: man tcpd, man hosts_access, man hosts.allow y man hosts.deny
Se basa únicamente en dos archivos, /etc/hosts.allow y /etc/hosts.deny, aunque como veremos mas adelante solo hace falta uno de ellos.
Por defecto, a menos que se indique lo contrario, todos los servicios y/o direcciones definidas en el hosts.allow son admitidas mientras que las definidas en el hosts.deny son rechazadas.
La sintaxis
de estos archivos es muy simple:
servicio:
host: acción
servicio:
es la primera palabra que encontramos en cada linea del archivo inetd.conf,
por ejemplo son servicios el in.telnetd, in.fingerd ...
Si queremos
referirnos a todos los puertos bastará con poner ALL, también
podemos poner una lista de servicios separados por espacios en blanco.
host:
es una o mas direcciones de red separadas por espacios en blanco, esta
dirección se contrasta con la del sistema que nos hace la petición
de conexión. La dirección puede ser del tipo IP numérica,
IP/mask, rango de IP (por ejemplo 195.116.), dominio (como por ejemplo
arrakis.es), grupo de dominios (como por ejemplo .es o arrakis.)
Ademas pueden
usarse otras palabras como ALL (para referirse a todos los host), LOCAL
(los que no tienes un . en su nombre) KNOWN o UNKNOWN (de los que se tiene
información o no) y PARANOID (el nombre que te ofrecen no concuerda
con el que tcp_wrappers espera).
acción:
puede tener 4 valores, accept (acepta la conexión si se cumplen
las condiciones impuestas por servivio/host), deny (rechaza la conexión,
spawn (acepta la conexión y realiza el comando bash que se le pasa
como parámetro) y twist (rechaza la conexión y realiza el
comando bash).
A los comandos
se les pueden pasar parámetros relacionados con la conexión,
estos son:
%a, %c,
%h y %n: nombre de la máquina que intenta acceder
%d: demonio
que controla el puerto por el que accede
%p: PID
del proceso que controla la conexión
Con esto
ya podemos hacer nuestra primera configuración super segura:
#/etc/hosts.allow
ALL:
ALL: deny
El primer archivo que se mira es hosts.allow por lo que en este caso no importa lo que ponga en hosts.deny, porque todas las conexiones se rechazan de todas formas.
Como mejor se aprende es viendo algunos ejemplos. De mas sencillos (y por lo tanto cerrados) a mas complicados (mas útiles, divertidos y peligrosos)
Este sistema aunque es muy fácil e intuitivo tiene algunas limitaciones, algunas sencillas de solucionar otras no tanto:
Usos avanzados de tcp_wrappers, que mas puedo hacer con esto?
Nota: el banner debe llamarse como el demonio que se lanza, es decir si queremos que se vea un mensaje al entrar por telnet, el banner deberá llamarse in.telnetd
Ejemplo:
este banner (al que llamaremos in.telnetd) se ve al hacer acceso por telnet
Hola
%a, bienvenido a mi sistema. Tu IP esta siendo guardada para mayor seguridad.