Este documento está disponible en los siguientes idiomas: English Castellano Deutsch Francais Italiano Nederlands Portugues Russian Turkce |
por Georges Tarbouriech Sobre el autor: Georges es un usuario viejo de Unix. Piensa que la seguridad
informática
es uno de los desafíos más importantes de éste siglo. Contenidos: |
Resumen:
Psionic portsentry es parte de las herramientas del proyecto Abacus (al lado de portsentry, tienen logcheck y hostsentry). Es un IDS (Sistema de detección de intrusión) dedicado a la detección de barridos de puertos y a la defensa activa. Funciona con muchos sabores de Unix incluso Mac OS X. La característica principal de un IDS es de informar al administrador sistema sobre intentos de intrusión. Portsentry va más lejos, puesto que es capaz de reaccionar a un ataque. La última versión (1.1) de esta herramienta muy buena se encuentra a http://www.psionic.com, y a propósito, la versión 1.0, ahora hace parte de unas de las mayores distribuciones Linux (Debian, RedHat...).
En los pasados diez años, redes informáticas han crecido
con una velocidad increible. El objetivo era de permitir la
comunicación entre maquinas usando SO diferentes. Así los
sistemas de red propietarios fueron poco a poco remplazados por TCP/IP.
Internet hizo el resto ! Hoy, la mayoría de las redes funciona bajo
TCP/IP y TCP/IP depiende de puertos.
Para ponerlo en corto, puertos estan atados a programas (clientes o
servidores). El servidor escucha hasta que un cliente le contacta para
establecer una comunicación. Los servicios (los programas arriba
mencionados) se ven destinados a un puerto específico. En los
sistemas Unix, ésta asignación se encuentra en el fichero
/etc/services. Es decir que cada uno puede saber cual puerto esta dedicado a
cual servicio. Si cada uno sabe, los "crackers" saben aún mejor ! Si
consideramos un puerto como si fuera una puerta, cuando un puerto esta
abierto (escuchando), se puede comparar con una puerta con el cerrojo
descorrido. Y cómo entran en una casa ? Normalmente por la puerta
(bueno, si prefieran la ventana, le toca a vosotros !). Es lo que hacen los
"sombreros negros" para entrar en un ordenador...
La primera cosa que pueden hacer para reducir el riesgo es de cerrar lo
más puertos possible, es decir parar los servicios. Lo menos lo
mejor. Pero no pueden cerrar todos los puertos en una máquina en una
red : ya no podría comunicar más, lo que sería una
lástima !
Cómo limitar los servicios activos o cómo cerrar los puertos
es más allá del subjeto de este artículo.
Encontrarán mucha literatura en el asunto, por ejemplo visitando el
Linux Documentation Project o buscando en
LinuxFocus (por ejemplo, Bastille-Linux o Herramientas de seguridad). Igual
por lo que concierne las maneras de proteger una máquina o una red.
Bajo Linux, pueden considerar Bastille-Linux como de primera
necesidad.
Y aquí llega portsentry. Portsentry puede vigilar puertos y puede
bloquearlos si le piden hacerlo. Provee diferentes modos operativos, unos
siendo específicos a unos SO. De hecho, unos SO significa Linux.
Portsentry puede aprovechar los filtrajes de paquetes tales como ipfwadm,
ipchains o iptables según el kernel Linux que tienen. También es
verdad para otros sabores de Unix usando diferentes herramientas (volveremos
en el asunto ese más tarde). Aquí estamos : la
característica más importante de portsentry, es probablemente
"auto-bloqueo".
Cómo lo hace ? Ya vamos !
Portsentry llega en un arca muy pequño. Depués de extractar el arca,
tienen el código fuente y varios ficheros de configuración y
README. Claro, todo eso se recomenda leer. Puesto que hablamos de seguridad,
no olviden bajar los ficheros PGP (firma y clave).
Instalar portsentry es evidente : make (su sistema) y make install. Pero,
antes la instalación, tendrían que prepararla. Es decir,
tendrían que leer la documentación, modificar el fichero
portsentry.conf para que corresponda a lo que necesitan y controlar el
Makefile y el fichero portsentry_config.h file.
Para que portsentry sea lo más eficaz possible, necesitan por lo
menos, TCPWrappers. Por lo menos, porque sería mucho mejor usarlo
unido con una herramienta de filtraje de paquete. Claro, si usan Linux, ya
tienen todo lo que se necesita. Qué para otros Unices ?
Puesto que hemos probado portsentry en diferentes plataformas, podemos
hablar de lo que hace falta.
Bajo MAC OS X, es igual que para Linux : ya lo tienen todo. Tienen TCPWrappers
y ipfw (versión BSD). Así basta con teclar "make osx".
Bajo Solaris 2.6 (SPARC), no tienen TCPWrappers. Pueden obtenerlo desde ftp://ftp.porcupine.org/pub/security.
También pueden probar IPFilter disponible desde ftp://coombs.anu.edu.au/pub/net/ip-filter/ip-fil3.4.9.tar.gz
(pero solo si tienen el compilador Solaris !!!).
Bajo Irix 6.5, tampoco tienen TCPWrappers. Lo encontrarán en forma de
"package" a
http://freeware.sgi.com/index-by-alpha.html
Para filtrar los paquetes tienen ipfilterd, haciendo parte de la
distribución Irix pero no instalado por defecto.
Ultimo, a menos de encontrar un vsnprintf() funcional, no podrán instalar
portsentry bajo NeXTSTEP... y no encontre ni uno !
No obstante, de nuevo, tendrían que configurar portsentry antes de
instalarlo. Bueno, es como les da la gana, pero sería mejor entender su
filosofía antes de todo... solo es cuestión de opinión !
Muy bien, gracias !
En serio, portsentry depiende de los ficheros de configuración. El
más importante es el fichero portsentry.conf. Aquí es donde van a
decir a portsentry como reaccionar en frente de la adversidad.
Antes de trabajar en este fichero, tienen que conocer los diferentes modos
operativos y lo que hacen.
Portsentry puede usar seis modos diferentes, según la opción
elegida al arrancar.
- La primera es "-tcp" y es el modo básico. Con esta opción,
portsentry va a atar los puertos TCP encontrados en el fichero de config en la
parte "port configuration". Puede atar hasta el limite de 64 puertos.
- La segunda es "-udp" y hace lo mismo que la anterior para los puertos UDP.
- La tercera es "-stcp", la "s" significando "stealth" (furtivo). Esta
opción y las siguientes son disponibles solamente bajo Linux.
Con la opción "-stcp", portsentry usa un socket para vigilar los paquetes
llegando, es decir los puertos no se atan a nada.
- La cuarta es "-sudp" y hace lo mismo que la anterior para los puertos UDP.
- La quinta y la sexta son "-atcp" y "-audp". Son las opciones más
eficaces ("a" significa "advanced" [avanzada]). Usando estas opciones,
portsentry hace una lista de los puertos TCP y UDP escuchando, si seleccionan
ambos, y bloquea el host tratando de conectar con estos puertos, a menos que el
dicho host sea presente en el fichero portsentry.ignore.
Eso es mucho más bien explicado en los ficheros README llegando con
portsentry. Entonces, no vamos a reinventar la rueda, tratando de escribir de
nuevo la documentación. Estos ficheros README se necesitan leer (como de
costumbre, hay que ser un poco fascista !).
Evidentemente, portsentry puede crear logs. Si son de la categoría de
sysadmin quienes no lean los logs (que vergüenza !), pueden usar logcheck al
lado de portsentry. Así, portsentry manda un correo para informarles de
una tentativa de intrusión.
Puede escribir el "target host" en el fichero /etc/hosts.deny, para beneficiar
de TCPWrappers.
El host local puede cambiar la ruta del tráfico de la red hacia un host muerte.
Ultimo, el host local puede "echar" los paquetes via la herramienta local de
filtraje de paquete.
Ahora que conocen un poco más la filosofía de portsentry, pueden
empezar a escribir el fichero portsentry.conf.
- La primera sección del fichero de config concierne los puertos.
Aquí se pueden elegir los puertos para atar. Recuerden, si usan los modos
avanzados para Linux, esto ne se tomara en cuenta. Cuidado con los puertos que
quieren atar (no aten el puerto 6000 por ejemplo, si usan X).
- La sección siguiente concierne las opciones de detección
avanzada. El defecto es de vigilar cada puerto bajo 1024, sea por TCP, sea por
UDP. Tambien pueden excluir los puertos que quieren ignorar. Eso es muy
importante para evitar alarmas falsas y logging enormes, particularmente si
tienen maquinas Windos en su red. Por ejemplo, cuidado con el puerto 111 si usan
portmap y si los hosts no se encuentran en el fichero portsentry.ignore. Claro,
sería loco, puesto que portmap significa servidores RPC tales como NFS, pero ahora saben. Es decir,
NFS no esta muy seguro en maquinas Unix entonces, ni hablar de maquinas Windos.
Aquí llega la parte habitual fuera del asunto : cuando escribo "Windos",
no es un error de máquina, solo es para insistir en el hecho que Windows
es un entorno por encima del DOS (D por desgraciado ?)... y hace un carácter
menos que teclar (que holgazán !). Perdón por la digresión.
- La sección de los ficheros de configuración concierne los
ficheros usados por portsentry para objetivo histórico o para definir los
hosts que quieren ignorar. Si hacen una instalación por defecto, no
cambien eso.
- La sección de config diversa permite activar o no los DNS lookups.
- La sección de opciones de repuesta es el corazón de la
configuración. Aquí van a definir cómo portsentry
reacciona.
Primero, tienen las opciones para ignorar. Pueden elegir de bloquear los
barridos, no bloquearlos o arrancar un comando externo.
Después, en la sección para "echar" las rutas, dicen a portsentry
cómo "echar" la ruta o cómo beneficiar de la herramienta de
filtraje de paquete instalada en la máquina. Hay muchos ejemplos para
muchas plaformas. Elijan la que corresponde a lo que necesitan (solo una !).
- La sección TCPWrappers indica si quieren escribir en el fichero
/etc/hosts.deny.
- La sección comando externo permite definir un comando para arrancar
cuando un host se conecta.
- La sección del valor de iniciación de barrido permite definir el
tiempo de reacción. El valor por defecto de "0" es el más
inmediato puesto que manda una alarma a la primera tentativa de conexión.
- La última sección es para visualizar una bandera en caso de
intento de intrusión. No funciona con los modos "stealth".
Cuando han acabado con esta parte, casi han terminado. De nuevo, para evitar
alarmas falsas y enorme "logging", averiguen el fichero portsentry.ignore.
Pueden añadir aquí la dirección de la red local con los
bits del netmask, o la dirección IP de algunas maquinas.
Ya esta ! Ahora pueden teclar "make sistema" y "make install". El script de
instalación lo hace todo puesto que da derechos restrictivos al
directorio y a los ficheros. Ahora, basta con arrancar portsentry con las
opciones que han elegido. Lean los logs para ver lo que ha pasado. Si todo ha
salido bien, portsentry ha arrancado y ha mejorado la seguridad del host.
Usando herramientas tales como nmap, pueden simular un barrido de los puertos del host ahora más seguro. (Más sobre nmap allí). Aquí esta lo que pueden obtener :
Es decir que la máquina esa no da mucha información al pirata que han vuelto !
Absolutamente NO ! Hay muchos IDS, libres o no. Muchos de ellos son muy buenos.
Podemos mencionar el muy conocido snort disponible desde
http://www.snort.org.
Normalmente, estos IDS son pasivos. Es decir, se usan para informar de una
intrusión. Fueron escritos por eso. Por ejemplo, snort es muy
sofisticado, puesto que depiende de scripts de reglas, así permitiendo de
escribir sus propios scripts. El sitio de snort provee un base de datos de
reglas. Y, a propósito, si no tienen miedo a los logs enormes, pueden
usar ambos portsentry y snort. No es tan estúpido !
Sin embargo, la fuerza de portsentry viene de que es un IDS activo. Su manera de
reaccionar es increible. Combinado con una herramienta de filtraje de paquete,
portsentry vuelve la herramienta obligatoria. Podríamos pedir la pregunta
: es portsentry el complemente de filtraje de paquete o es filtraje de paquete
el complemente de portsentry ?
Claro, hay mucho más que decir sobre portsentry. Por ejemblo, hay que
tener mucho cuidado con la detección de barrido UDP en modo avanzado.
Lean la documentación (de nuevo !) para entender los problemas relativos
a UDP. Solaris tambien puede causar problemas puesto que usa puertos muy altos
alrededor de 32700 (sea por TCP o UDP). Pero, ese artículo sólo toca el asunto por encima y en
ningún caso es una revista completa de este gran software.
La seguridad informática es una responsabilidad y no solamente para los
administradores de sistemas. El increible desarrollo de Internet hace las cosas
aún peores. Es decir, el peligro de intrusión es cada día
más grande. La comunidad del software libre provee muchas herramientas
muy buenas : portsentry es una de ellas. No las dejen por detrás ! Pero,
recuerden, estas herramientas sólo reducen el riesgo y en ningún
caso hacen un sistema 100% seguro. Esto es otra razón para buscar en el
área de las herramientas de seguridad.
Ultimo, la gente de Psionic trabaja en un producto comercial y dice "no seran
decepcionados". Entonces, esperemos y vemos !
Antes de su llegada, bajen portsentry 1.1, tampoco seran decepcionados. La gente
de Psionic hace un gran trabajo. A propósito, hostsentry también vale la
pena de ser probado... y usado.
Que época más estupenda vivimos !
Los sitios web siguientes son referencias absolutas cuando se trata de
seguridad. Aún más, pueden mandarles hacia otros sitios, estos
últimos mandandoles hacia todavía más sitios... Saben, las
muñecas Rusas ? El único problema si quieren leerlo todo es que no
viviran bastante tiempo !!!
http://www.linuxsecurity.com
http://www.sans.org
http://www.infosyssec.org
http://www.securityfocus.com is
http://www.cs.purdue.edu/coast/hotlist/
|
Contactar con el equipo de LinuFocus
© Georges Tarbouriech, FDL LinuxFocus.org Pinchar aquí para informar de algún problema o enviar comentarios a LinuxFocus |
Información sobre la traducción:
|
2001-09-10, generated by lfparser version 2.9