sep 5, 2011
Seguridad Unix con TCP Wrappers
El otro día hablábamos sobre securizar un sistema Linux con iptables y en otro artículo encontrábamos un firewall basado en FreeBSD llamado pfSense. Hoy vamos a ver cómo securizar un sistema Unix (Linux, BSD…) a través de TCP Wrappers, un buen complemento de iptables. La wikipedia lo define como:
TCP Wrapper (“Envoltorio de TCP”) es un sistema de red ACL que trabaja en terminales y que se usa para filtrar el acceso de red a servicios de protocolos de Internet que corren en sistemas operativos (tipo UNIX), como Linux o BSD. Permite que las direcciones IP, los nombres de terminales y/o respuestas de consultas ident de las terminales o subredes sean usadas como tokens sobre los cuales filtrar para propósitos de control de acceso.
Bien, partimos de la base de que tenemos dos ficheros configurables, /etc/hosts.deny y /etc/hosts.allow. En ellos podemos especificar que IPs, hostnames o redes pueden acceder a determinados servicios del sistema. TCP Wrappers suele venir instalado por defecto en la mayoría de sistemas operativos Unix.
La sintaxis básica de estos ficheros es la siguiente:
daemon : dirección : acción ó daemon : dirección
Daemon es el demonio/servicio a filtrar, dirección es la dirección, host o subred y acción si denegamos o aceptamos el acceso. Para saber si un servicio puede ser configurado para filtrado vía TCP Wrappers hay que saber si su binario está enlazado con la biblioteca libwrap.a. Para ello:
# ldd /usr/sbin/sshd | grep libwrap.so libwrap.so.0 => /lib/libwrap.so.0 (0x001ce000)
Si la salida es NULL el demonio no está compilado con TCP Wrappers y no funcionará. Si devuelve algo como lo anterior sí que lo está. Vamos a ver entonces unos cuantos ejemplos:
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
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: 192.168.0.115
Filtrar y ejecutar un comando tras un intento de acceso
/etc/hosts.allow
ALL: ALL
/etc/hosts.deny
ALL: 192,168.0.115 \ : spawn (/bin/echo %a desde %h intento acceder a %d >> \ /var/log/connections.log) \ : deny
Aquí ya depende todo si queremos aplicar una política restrictiva desde el principio, bloquear todo y a partir de ahí comenzar a abrir servicios a determinadas Ips, rangos o hosts o si por el contrario queremos dejar todo abierto y cerrar servicios a determinadas Ips,etc.
Si os resulta interesante, disponéis de más información en el handbook de freebsd o en Linux about.com. Esta ha sido una mera introducción a TCP Wrappers
Siguiendo con el tema tratado en el anterior post sobre
En los sistemas Unix, cada una de las particiones/sistema de ficheros cuenta con un directorio llamado /lost+found en el cual se almacenan ficheros y directorios (o restos de ellos…) recuperados tras una revisión del sistema de ficheros a través de la herramienta fsck, todo ello provocado habitualmente por cuelgues del sistema, apagados forzados del equipo, cortes de corriente, etc.
Si hay algo que cualquier administrador de sistemas tiene claro es que es imposible saberlo todo, lo que hay que saber es buscar. Los sistemas *nix cuentan con sistemas de ayuda integrados que nos explican al detalle las funcionalidades de los comandos y servicios, sus ficheros de configuración, directivas, el modo de usarlos, etc.

Comentarios recientes