[Previo por Fecha] [Siguiente por Fecha] [Previo por Hilo] [Siguiente por Hilo]
[Hilos de Discusión] [Fecha] [Tema] [Autor]> > Subject: Puertos abiertos > > Tengo algunos puertos abiertos pero no sé ni de qué programa. > Digamos que son el 5, 7, 2001, 4001, 6001 y otros. > Cuando les doy telnet en algunos sale el "login:" (no es el 23) > en otros salen un chorro de garabatos. En uno me salió la hora. En uno más > me salieron unas frases célebres y en otros incluso no me sale nada. > La pregunta son: Cómo sé de qué programa son? Cómo los cierro? Cómo puedo > "autoexplotar" los puertos para probar la seguridad de los mismos? > Para cerrar los servicios edita /etc/inetd.conf y comenta (con un # lo que no utilices, te recomiendo cerrar echo, chargen y finger si tu máquina no es un servidor), algunos otros servicios como sendmail los activas/desactivas desde el programa setup. De todas formas, te recomiendo que ejecutes un "man hosts.allow" y "man hosts.deny" (los archivos están en /etc), aquí poner reglas que permitan/bloqueen a los distintos servicios; por ejemplo, puedes permitir el acceso a ftp sólo desde ciertas direcciones o negarlo a ciertas direcciones. Baja la utilería nmap (creo que venía un rpm en la distribución de PPP) y ejecuta "nmap localhost", te hace un escaneo de puertos y puedes ver los que están abiertos (también lo puedes hacer con "netstat -a" localmente). Este tipo de herramientas son utilizadas frecuentemente por los hackers (e intentos de...) para descubrir los puertos que una máquina tiene abiertos. En general, la mecánica de un ataque va así: 1. Te hacen un escaneo de puertos para ver qué servicios tienes (por lo general te tocan todos los puertos a ver qué tienes abierto, algo así como fuerza bruta, solo los atacantes con más experiencia lo hacen más "profesionalmente") 2. Intentan entrar a cada servicio (si es TCP utilizan típicamente telnet para ver qué responde el servicio o utilerías tipo Netcat, por ejemplo, si tuvieras SMTP, haces un telnet al puerto 25 y te aparece, generalmente un mensaje con la versión de Sendmail) 3. En base a la información obtenida, el atacante se va a buscar en internet vulnerabilidades conocidas para el servicio, versión y plataforma que se hayan detectado en los pasos anteriores. Listo, ese es el gran secreto, claro que hay ataques muchísimo más complicados, pero teniendo cuidado de cerrar los servicios que no utilizas y vigilando de cerca los que tienes (por ejemplo, poniendo un sniffer a manera de IDS -> Intrusion Detection System, para linux te recomiendo SNORT lo encuentras en varios sitios de la red) yo diría que detienes al 95% de los atacantes (no me gusta usar el término hacker, se presta mucho a confusiones y y largas discusiones filosóficas), la mayoría de los cuales son lo que se conoce como "script kiddies" (gente que se baja programitas de la red y los prueba sin saber cómo funcionan o siquiera qué hacen, es el tipo de personas que utilizan NetBus o un Back Orifice para impresionara sus amigos sin saber que es lo más fácil de rastrear porque no saben que para conectarse con un servidor de éstas herramientas necesitan establecer una conexión punto a punto , vamos, la mayoría de ellos ni siquiera ha de saber lo que es eso). Es importante que cierres los puertos que no vas a usar, por ejemplo, sería peligroso que alguien pudiera accesar a tu máquina remotamente por el puerto 6000, 60001, etc... este puerto es el que utiliza X, de poder hacerlo, alguien podría consultar el nombre de las ventanas que tienes abiertas en tu terminal gráfica (p.e. xterm, netscape, etc...), y en el peor de los casos (si estuvieran mal configurados los permisos de X) se podrían capturar las sesiones. Hay muchos Unix mal configurados por ahí a los cuales puedes accesar la terminal gráfica, el servicio de impresión, etc..., en algunos casos podría requerirse que se puedan accesar remotamente estos servicios, pero para máquinas de uso personal esto es muy raro, si no lo necesitas no es recomendable configurarlo de esa manera (hasta donde sé, RedHat y distribuciones derivadas como PPP contienen los permisos adecuados por default). Por lo tanto, regla de oro para seguridad es: "cierra todo loque no vayas a ocupar" La explicación es simple, en seguridad nosotros manejamos una fórmula que dice: RIESGO = probabilidad de que una AMENAZA aproveche una VULNERABILIDAD. Las amenazas no las puedes eliminar por completo (p.e. siempre van a existir personas con malas intenciones) pero puedes reducir las vulnerabilidades; una vulnerabilidad es una falla, una mala implementación, una carencia, etc... que en algún momento pueda aprovecharse para afectar algún requerimiento de seguridad. La mayoría de los autores manejan 3 requerimientos de seguridad (algunos 4) que se aplican a funciones y datos de un sistema: Integridad - Que funciones/datos no sean alteradas fuera de las especificaciones del sistema Privacidad - Que funciones/datos sean usados/accesados únicamente por quien está permitido, cuando está permitido y donde está permitido. Disponibilidad - Que las funciones/datos sean accesibles a quien lo requiere de acuerdo a las definiciones de operación del sistema (Las noticias sobre los recientes ataques de negación de servicio a CNN y Yahoo atacan este requerimiento, es el tipo de ataque más frecuente) El hecho de tener más puertas abiertas (aunque pongas un guardia en cada una) siempre implica que el riesgo es mayor. En fin, creo que hace varios párrafos contesté tu pregunta (o medio contesté) y ya voy a aburrir a todos con esto de la seguridad o corro el riesgo de caer en un off-topic. Espero que te sirva... ----------------------- Omar Herrera Consultor en Seguridad Informática INSYS (www.insys-corp.com.mx) omarh en insys-corp com mx --------------------------------------------------------------------- Lista de soporte de LinuxPPP Reglas de la lista en http://pepe.net.mx/reglas.html