Preguntas Frecuentes en Seguridad en Cómputo - UNAM-CERT

Anuncio
Preguntas Frecuentes en Seguridad en Cómputo
El propósito de este documento es contestar algunas preguntas que con frecuencia aparecen en los grupos de
noticias, así como proporcionar una introducción de esta materia a los recién llegados a estos grupos.
• ¿Cuál es el propósito de este FAQ?
• ¿Cuál es la diferencia entre hacker y cracker?
• ¿Qué es la "Seguridad por obscuridad"?
• ¿Qué hace a un sistema inseguro?
• ¿Qué herramientas existen para la implementación de la seguridad?
• ¿Dónde consigo estas herramientas?
• ¿Es peligroso dar herramientas de cracking a todos?
• ¿Por qué y cómo se rompe la seguridad de un sistema?
• ¿A quién puedo contactar si alguien irrumpe en mi sistema?
• Introducción a la SSI
• ¿Qué es un firewall?
• ¿Por qué no debo utilizar scripts con setuid?
• ¿Por qué no debo dejar una sesión de root permanentemente en consola?
• ¿Por qué no debo crear cuentas de UNIX sin contraseñas?
• ¿Qué agujeros de seguridad están asociados con X-Windows (y otros Administradores de Ventanas)?
• ¿Qué agujeros de seguridad hay asociados con NFS?
• ¿Cómo puedo generar contraseñas seguras?
• ¿Por qué las contraseñas son tan importantes?
• ¿Qué cantidad de contraseñas posibles hay?
• ¿Qué tan floja puede ser la gente?
• ¿Qué es SPAM?
• ¿Qué es un Sistema de Detección de Intrusos(IDS)?
• Revisión histórica
Las fuentes de este FAQ son los grupos de noticias de GASU, MX-seguridad, Lassi, SPAM y USENET.
Nota: Se realizaron todos los esfuerzos para asegurar que la información que contiene este FAQ esté al día y
sea veraz, pero no se asume la responsabilidad por las acciones realizadas con el conocimiento adquirido aquí.
¿Cuál es el propósito de este FAQ?
Este FAQ está enfocado totalmente en temas de seguridad para computadoras.
Los temas tratados aquí intentan contestar preguntas desde: "¿Cuál es el mejor software que puedo utilizar
para hacer tal cosa?" hasta "¿Cómo puedo arreglar este hueco de seguridad en particular?
Las hostilidades más comunes empiezan cuando un aparente novato en seguridad envía un mensaje a alguna
lista diciendo: ¿Me puede explicar alguien cómo funciona un hueco de seguridad en específico?,
inmediatamente se le van encima intentando lincharlo por preguntar tales cosas en lugares públicos, y lo
tachan de ser hacker/cracker.
Por favor, recuerden que interrogar a alguien, teniendo en mente que es un posible cr/hacker, no crea más que
un ambiente hostil. Los temas de seguridad deben tratarse de una manera efectiva.
Implementar seguridad en cómputo, puede volver a una persona ordinaria en un paranoico, el cual no se
comportará de una manera razonable si se presenta una situación inesperada. Este tipo de gente trata al resto
de la humanidad con una actitud desafiante, y si una persona así está a cargo del sistema, los usuarios
rápidamente encontraran su máquina más restrictiva y menos amigable (¿divertido?) al utilizarla.
Esto puede llevarte a situaciones desconcertantes, como por ejemplo: (en una universidad) prohibir al jefe de
departamento, utilizar un servicio de red que él no esperaba. Esto aparentemente requiere una explicación bien
preparada a un comité nada amigable para poder solucionar la situación.
Un mejor enfoque a la situación es asegurar el sistema de acuerdo a sus necesidades, y si éstas son
demasiadas, se puede aislar completamente al sistema. Pero por favor, no pierda los estribos con tal de
asegurar el sistema.
¿Cuál es la diferencia entre hacker y cracker?
Resolvamos esta cuestión de una vez.
Se denomina "cracker" a una persona que persistentemente irrumpe en los sistemas computacionales de una o
más personas, por diversas razones. Tal vez tenga justificaciones débiles para hacer esto, normalmente
diciendo "porque es posible", pero es más probable que lo haga por "hacer algo ilegal", y por "ganar respeto
en su grupo".
En particular, los crackers antisociales, tienen rasgos de vandalismo, y borran los Sistemas de Archivos, tiran
sistemas, y matan procesos que estén corriendo.
Este término también es muy utilizado para describir a una persona que rompe la protección de software con
el propósito de distribuir copias gratis.
Regularmente, la palabra "hacker" se utiliza para describir a una persona que tiene gran experiencia y
conocimiento en el ramo de la computación, y es capaz de demostrarlo con fineza. Para una definición
profunda, se recomienda leer: "Jargon File".
En el mundo real, mucha gente refiere al "hacker" como si describiera a un "cracker", esto ocasionalmente
aparece en USENET, con resultados desastrosos y confusos.
Cuando envíe un mensaje a la lista debe tomar en cuenta que corre el riesgo de involucrarse en una
controversia si utiliza la palabra "hacker" en lugar de la de "cracker" en sus artículos.
Nota: Nunca se menciona que los crackers no pueden ser hackers. Sólo se específico que por concepto no lo
son.
¿Qué es la "Seguridad por obscuridad"?
La seguridad por obscuridad es la creencia de que cualquier sistema puede ser seguro mientras que a nadie
fuera de su grupo de implementación se le permita conocer nada de sus mecanismos internos. Ocultando
contraseñas en archivos binarios o esconder scripts suponiendo que "nadie lo va a encontrar nunca" es un
buen ejemplo de Seguridad por obscuridad.
La seguridad por obscuridad es la principal filosofía de las agencias burocráticas, y es el método más utilizado
para proveer "pseudoseguridad" en sistemas de cómputo.
Esta filosofía ha ido decreciendo en el mundo de la computación con el aumento de los sistemas abiertos,
Internet, mayor comprensión de técnicas de programación y también por el crecimiento del conocimiento
computacional en una persona promedio.
Las bases de la seguridad por obscuridad es que si una persona no sabe cómo hacer algo para tener un impacto
en la seguridad del sistema, entonces esa persona no es peligrosa.
Sin duda, esto es en teoría, ya que se conforma con confiar en un pequeño grupo de personas, tanto tiempo,
como el que vivan. Si sus empleados tienen una mejor oferta o les pagan mejor en otro lugar, sus
conocimientos se van con ellos, ya sea que ese conocimiento sea reemplazable o no. Una vez que los secretos
están fuera, ahí está el fin de nuestra seguridad.
Actualmente hay una gran necesidad como nunca de los usuarios ordinarios por conocer detalles de cómo
funciona su sistema, y por consecuencia el resultado la Seguridad por obscuridad falla. Hoy, muchos usuarios
tienen conocimientos avanzados de cómo funcionan sus sistemas operativos, y sus experiencias les permiten
obtener todo el conocimiento que ellos "necesiten obtener". Esto esquiva todas las bases de la seguridad por
obscuridad, y la hace inútil.
Por lo tanto actualmente existe la necesidad de crear sistemas que intenten ser algorítmicamente seguros
(Kerberos, Secure RPC), que es mejor que ser filosóficamente seguro.
En muchas ocasiones, el sistema "Shadow" para contraseñas se incluye en el grupo de la seguridad por
obscuridad, pero esto es incorrecto, ya que la seguridad por obscuridad depende de restringir el acceso a algún
algoritmo o técnica, mientras que las contraseñas Shadow proveen seguridad restringiendo el acceso a datos
vitales.
¿Qué hace a un sistema inseguro?
Un sistema se vuelve inseguro al encenderlo. Se cita el siguiente refrán:
"El único sistema seguro es aquel que está apagado y desconectado, enterrado en un refugio de concreto,
rodeado por gas venenoso y custodiado por guardianes bien pagados y muy bien armados. Aun así, yo no
apostaría mi vida por él".
(La versión original se le atribuye a Gene Spafford)
Un sistema es seguro tanto como se quiere que sea. Puede ser totalmente seguro sin ninguna protección, pero
sí es muy importante que todos los que tengan acceso a él lo operen correctamente con responsabilidad, y
realicen respaldos regularmente, pues estos se utilizan en caso de que haya algún problema con el hardware.
Muchos laboratorios de PC's están muy alejados de esto.
Los problemas empiezan cuando una necesidad tiene que ser satisfecha (como la confidencialidad). Una vez
iniciado el proceso de cerraduras en el sistema, ya no se podrá detener.
Los huecos de seguridad se manifiestan (en general) de cuatro maneras:
1. Huecos de seguridad físicos.
El problema sucede cuando se da acceso físico a la máquina a personas sin autorización, lo cual le
permitiría realizar cosas que normalmente no sería capaz de hacer.
Un buen ejemplo es una sala de cómputo pública con estaciones de trabajo, donde resultaría trivial
para un usuario reinicializar la máquina en modo mono-usuario y jugar con el sistema de
almacenamiento de archivos, si no se toman las precauciones necesarias.
Otro ejemplo de esto es cuando se necesita restringir el acceso a cintas de respaldo confidenciales, las
cuales pueden ser leídas por cualquier usuario con acceso a éstas y la unidad de cinta, lo cual significa
que pueden haber teniendo o no permisos.
2. Huecos de Seguridad en el Software.
Aquí el problema es causado por puntos escritos incorrectamente en software "privilegiado"
(demonios, cronjobs), los cuales pueden ser utilizados para hacer cosas indebidas.
El ejemplo más famoso es el hueco de "sendmail" (ver bibliografía), el cual le permitiría a un cracker
obtener un shell de root. Éste se podría utilizar para borrar archivos, crear cuentas nuevas, copiar
archivo de contraseñas, y hacer lo que quiera.
Nuevos huecos aparecen todo el tiempo, y lo mejor por hacer es:
a. Establecer una estructura en el sistema, de tal manera que se ejecute el mínimo de software
con privilegios de root/daemon/bin, esto permitirá tener un sistema más robusto.
b. Suscribirse a una lista de correos de la cual se reciban detalles de los problemas y/o
soluciones lo más pronto posible, para así actuar rápidamente. "esbugtraq" es una lista
altamente recomendable.
c. Cuando se instale o actualice su sistema, trate de emplazar sólo los paquetes de necesidad
inmediata. Muchos de ellos incluyen demonios o utilidades que revelan información al
exterior. Por ejemplo, en el 'System V' de AT&T, los paquetes de contabilidad incluyen
acctcom, el cual (por default) permite a cualquier usuario revisar los datos de contabilidad
diarios. Muchos paquetes TCP/IP automáticamente instalan o corren programas como rwhod,
fingerd, y (ocasionalmente) tftpd, los cuales pueden presentar problemas de seguridad.
La solución es ser un administrador de sistema cuidadoso. La mayoría de estos programas comienzan
al encender la máquina, si desea puede editar los scripts de inicio (comúnmente están dentro de los
directorios /etc, /etc/rc y /etc/rcX.d) para prevenir su ejecución. También se pueden eliminar algunas
utilidades completamente y para algunas sólo bastará utilizar chmod para restringir su acceso.
En resumen, NO CONFIE EN LOS PROGRAMAS/SCRIPTS DE INSTALACIÓN. Los paquetes
tienden a instalar y correr cualquier cantidad de cosas sin preguntar al usuario. En la mayoría de estos
se incluye documentación que lista "los programas incluidos en el paquete", asegúrese de revisarla.
3. Donde hay falta de experiencia, el Administrador de Sistema ensambla uno con una combinación de
hardware y software que en muchas ocasiones es incompatible, el cual al utilizarse resulta muy
defectuoso desde el punto de vista de seguridad.
Estos problemas son un dolor de cabeza, y son muy comunes cuando se levanta una máquina , aunque
es mejor montarlo teniendo esto en mente. Recuerde que nunca es tarde para reconsiderar las cosas.
4. Escoger una filosofía de seguridad y mantenerla.
El cuarto tipo de problema de seguridad es el de percepción y entendimiento. El software perfecto,
hardware protegido y componentes compatibles no trabajan hasta que se haya seleccionado las
políticas de seguridad y que las apoyen los directivos, para que se obliguen a cumplirlas. El tener el
mejor mecanismo de contraseñas en el mundo, no vale de nada si los usuarios piensan que su nombre
es una buena contraseña. La seguridad es relativa a las políticas, y a la operación del sistema en
conformidad con las ellas.
¿Qué herramientas existen para la implementación de la seguridad?
Y
¿Dónde las consigo?
COPS Dan Farmer.
Escrita principalmente por Dan Farmer, COPS es un juego de scripts de shell, los cuales forman un
procedimiento extenso para probar el sistema; hay un programa que descifra contraseñas (rudimentario),
rutinas que verifican los archivos buscando cambios sospechosos en programas con setuid, otros verifican los
permisos de los archivos esenciales de sistema y de usuario, y algunos otros revisan el comportamiento del
software del sistema para que no cause problemas.
El software viene en dos versiones - Una escrita en Perl y la otra en scripts de shell.
COPS V1.04 está disponible en el ftp de purdue:
coast.cs.purdue.edu/pub/tools/unix/cops/
y en ftp.asc.unam.mx.
Crack Alec Muffett
UFC Michael Glad
Crack es un programa desarrollado con el propósito de romper contraseñas inseguras. Es probablemente el
más eficiente y más amistoso programa descifrador de contraseñas disponible, cuenta con la capacidad de
permitir al usuario especificar con precisión cómo formar las palabras que usará para adivinar las contraseñas
de los otros usuarios.
También tiene una capacidad inherente de red de permitir cargar Crack desde cualquier máquina disponible en
ésta, y se distribuye con una versión del algoritmo crypt() optimizado.
Hay una versión del algoritmo crypt() más rápida, el cual es "UFC" realizado por Michail Glad, y está
disponible gratuitamente en la red, además las últimas versiones de UFC y Crack son compatibles y pueden
conjuntarse fácilmente.
Crack v4.1f y UFC están disponibles desde: ftp.uu.net (137.39.1.9)
En el directorio: /usenet/comp.sources.misc/volume28
Como: crack/part01.Z hasta part05.Z (5 archivos)
Y: ufc-crypt/part01.Z & part02.Z (2 archivos)
También disponible en ftp.asc.unam.mx
En el directorio: /pub/tools/Crack
Como: crack.tar.gz
Cracklib Alec Muffett
Cracklib es una librería de C, la cual contiene rutinas que se agregan a todo tipo de programas parecidos a
"passwd"; y no sólo en UNIX, con un poco de esfuerzo se puede migrar a VMS (se está trabajando en esto), o
muchos otros sistemas.
El utilizar "Cracklib" permite agregar una verificación de contraseñas a las aplicaciones, esto es un retoño de
la versión 5 del Software "Crack", y contiene un número considerable de ideas nuevas.
Cracklib está disponible de cualquier archivo usenet. Una copia de referencia (con un diccionario más grande)
se puede obtener de:
ftp://coast.cs.purdue.edu/pub/tools/unix/cracklib/
NPasswd Clyde Hoover
Passwd+ Matt Bishop
Shadow John F. Haugh II
Passwd+ & NPasswd: estos programas equilibran la balanza en la guerra de contraseñas descifradas, proveen
una substitución para el comando "passwd", pero a diferencia de passwd, previene de escoger contraseñas que
sean fácilmente comprometidas por programas como Crack.
El término para describir este tipo de programas es el de: programa 'fascista' de contraseñas.
NPasswd: Actualmente sufre el ataque de diversas personas por proveer compatibilidad para sistemas basados
en "System V", NIS/YP, esquemas de contraseñas passwd, etc. Está libre la versión 2.0, pero existen muchas
otras para varios tipos de configuraciones.
NPasswd: Está disponible en:
coast.cs.purdue.edu/pub/tools/unix/password/
Shadow: Es un grupo de programas y funciones de sustitución, los cuales implementan contraseñas sombra, es
decir: es un sistema donde el archivo de contraseñas en claro se esconde de todos los usuarios excepto de root,
con la esperanza de parar de tajo todos los intentos de descifrar las contraseñas. En combinación con un
programa 'fascista' de contraseñas, nos deberá de dar un buen grado de seguridad en lo que se refiere a
contraseñas.
Pero Shadow hace más que esconder las contraseñas, éste da control de acceso a las terminales,
administración de usuarios y grupos, etc. Hay una docena o más comandos, además de una gama de funciones
de librerías.
Shadow se encuentra en los archivos de USENET, los relevantes están en:
ftp.uu.net/usenet/comp.sources.misc/volume39/shadow
Los contenidos de ambos necesitan tener todo el grupo de parches.
En la última versión de Shadow se tiene soporte a "Cracklib", el cual se clasifica como un programa de
contraseñas 'fascista', además de todas las demás funciones.
TCP Wrappers Wietse Venema
Son programas que proporcionan filtros a la mayoría de los servicios de red que UNIX proporciona por
default.
Si se instala, hay control restringido, de lo contrario existe acceso sin restricciones a servicios como
FTP/TFTP, Telnet, etc., por consiguiente se corren riesgos, además si se instala proporciona mayor
información en las bitácoras lo cual ayuda a reconocer si alguien está intentando hacer algo indebido en el
equipo.
Con estos programas se puede monitorear y controlar a quien se conecte a servicios de red como FTP, TFTP,
EXEC, RSH, TELNET, RLOGIN, FINGER, y SYSTAT, y muchos otros.
Estos programas pueden ser instalados sin ningún cambio al software implementado y a los archivos de
configuración. Por default, sólo se guarda el nombre del host remoto y también verifica el origen de la
petición. Ninguna información se intercambia con el cliente remoto.
Algunos cambios significativos con respecto a la última versión son:
• Fácil de instalar: procedimientos de implementación listos para utilizarse en muchas plataformas (sun,
ultrix, hp-ux, irix, aix, ...).
• Soporta la interfaz de programación de red TLI para System V.4 (Solaris, DG/UX, etc.).
• Una herramienta más segura para finger, ayuda a hacer pruebas reversibles automáticas a éste.
• Nuevas extensiones en el lenguaje de palabras claves: "severity", para ajustar el nivel de ruido en lo
que se guarda en las bitácoras; "allow" y "deny", para mantener todos los controles de acceso en un
sólo archivo.
TCP Wrappers está habilitado en:
ftp.porcupine.org/pub/security/index.html
ftp.asc.unam.mx:pub/tools
SecureLib William LeFebvre
SecureLib contiene rutinas de reemplazo para tres llamadas de kernel: accept(), recvfrom(), recvmesg(). Estos
relevos son compatibles con los originales, cuentan con funciones adicionales para verificar la dirección de
Internet de la máquina que inicializa la conexión, esto es para asegurarse de que esté "permitida" para
conectarse. El archivo de configuración define qué hosts tienen permisos de conectarse a un programa dado.
Una vez que estas rutinas de reemplazo están compiladas, pueden utilizarse cuando se construya una nueva
librería libc. El archivo resultante libc.so puede ponerse en algún lugar en especial. Cualquier programa que
deba protegerse, puede iniciar con otra ruta de librería (LD_LIBRARY_PATH).
La última versión de securelib está disponible en:
coast.cs.purdue.edu/pub/tools/unix/securelib/
ISS Chris Klaus
YPX Rob Nautav
Internet Security Scanner (ISS) es uno de los primeros rastreadores de seguridad multi nivel disponibles al
público en general. Fue diseñado para ser flexible y fácil de portar a muchas plataformas UNIX, también hace
su trabajo en una cantidad razonable de tiempo. Proporciona información al administrador que le permite
arreglar varios procesos mal configurados.
ISS hace un rastreo multi nivel de la seguridad del sistema, no sólo busca una sola debilidad. Informar sobre
esto al público en general o por lo menos a los que tienen conciencia de la seguridad de su sistema, puede
causar que la gente piense que es demasiado peligroso, pero es necesario pensar que los (cr/h)ackers están
consientes de los huecos de seguridad y saben cómo explotarlos.
Una descripción simple de ISS podría ser que ISS es para los servicios de Red de Unix lo que COPS para el
sistema de archivos; es decir: es una herramienta que permite a los administradores del sistema encontrar
huecos de seguridad potenciales, dándole la oportunidad de resolverlo antes de que un ataque ocurra.
ISS está disponible en:
www.iss.net
Tripware Gene Kim, Gene Spafford
Tripware es un monitor de integridad para Sistemas UNIX, utiliza muchas rutinas para detectar cambios en
los archivos, además de monitorear la información seleccionada de mantenimiento del sistema. También
monitorea cambios en los permisos, ligas y tamaños de archivos y directorios. Se puede configurar para
detectar cuando agrega o borra un archivo en un directorio vigilado.
La configuración de Tripware es sencilla, sólo se le tiene que decir qué archivos y directorios se van a
monitorear, o bien decirle cuáles quedan fuera del monitoreo, incluso se puede especificar a qué archivos
tienen permisos de cambios sin generar ninguna advertencia. Tripware puede configurarse con rutinas
personalizadas para verificar sitios específicos.
Una vez que se ha instalado en un sistema limpio Tripwire, puede detectar cambios provenientes de actividad
anómala, modificación a archivos sin autorización para introducir puertas traseras, código lógico-bomba, (y si
llegará a existir) actividad de virus en el ambiente UNIX. SOCKS Ying-Da Lee/David Koblas
SOCKS es un paquete que permite a los hosts detrás del firewall utilizar finger, ftp, telnet, xgopher y xmosaic,
éstos pueden acceder a los recursos que están fuera del firewall sin comprometer la seguridad del sistema.
La nueva versión de SOCKS está disponible en el ftp anónimo:
ftp://coast.cs.purdue.edu/pub/tools/unix/socks
Es muy recomendable leer el archivo README.1st, el cual describe las nuevas características. Esta nueva
versión no sólo es para SunOS 4.1.x, sino también se ha llevado y probado para ULTRIX 4.2, IRIX 4.0.1 y
parcialmente a HP-UX.
SOCKS cuenta con un servidor proxy (sockd) y programas clientes para: finger, whois, ftp, telnet, xgopher y
xmosaic, además de librerías que se adaptan a otras aplicaciones y las convierte en nuevos programas clientes.
El protocolo SOCKS ha cambiado con esta versión, prueba de ello es que el servidor y el cliente deben usar el
mismo protocolo SOCKS, es decir ni el servidor, ni los clientes trabajan con versiones anteriores versiones.
El mecanismo de control de acceso se ha expandido:
• Una lista de usuarios puede ser incluida junto con otros campos (dirección fuente, dirección destino,
servicio/puerto) para permiso o negación de acceso.
• Identd es utilizado (con la opción -i y -I) en el servidor SOCKS para intentar verificar el actual ID del
usuario.
• Un comando de shell puede ser especificado opcionalmente en cada línea. El comando se ejecutará si
las condiciones de esa línea son satisfechas.
• Se pueden incluir entradas especiales (#NO_IDENTD: y #BAD_ID) para especificar los comandos de
shell a ser ejecutados cuando el host cliente no corra identd y cuando el reporte de identd no esté de
acuerdo con lo que el programa cliente diga.
¿Es peligroso dar herramientas de cracking a todos?
Eso depende de su punto de vista. Algunas personas tienen quejas respecto al acceso sin restricciones a
programas como COPS y Crack, lo consideran irresponsable porque los "chicos malos" pueden conseguirlas
fácilmente.
Por otro lado, puede estar seguro de que los "chicos malos" han tenido programas como esos por años, y por
eso es una estupenda idea dar estos programas a los "chicos buenos" también, para que ellos puedan verificar
la integridad de su sistema antes de que los "chicos malos" lo hagan.
Entonces, ¿Quién gana más con tener estos programas libremente?, ¿Los malos o los buenos?, Esa es su
decisión, pero recuerde, que hay pocas herramientas honestas como COPS y Crack, están ahí afuera, y para la
mayoría de los "chicos buenos" es la única ayuda que tienen.
¿Por qué y cómo se rompe la seguridad de un sistema?
Esto definitivamente es muy difícil de contestar. Muchos de los sistemas en los cuales los crackers entran son
sólo utilizados para entrar a más sistemas; estos se condensan en muchas máquinas antes de volver a irrumpir
en otra nueva, el cracker espera confundir a sus perseguidores y ponerlos fuera de escena. Esa es una ventaja
que se gana al irrumpir en muchas máquinas, tantas como puedan, de tal manera que puedan borrar sus
conexiones.
Otra razón por la que irrumpen en los sistemas, puede ser el psicológico: algunas personas disfrutan el jugar
con las computadoras de otros y llevarlos al límite de sus capacidades.
Algunos crackers podrían pensar que es realmente habilidoso saltar sobre 6 máquinas en Internet, 2 gateways
y un red X.25 antes de tocar las puertas de una compañía o institución realmente famosa(p. ej. NASA, CERN,
AT&T, UCB). Piensan en esto como un recorrido turístico electrónico.
Y la pregunta ahora es, ¿Cómo lo hacen?, esta es también una pregunta difícil de contestar. En las
Universidades, es muy común que las cuentas de las máquinas se pasen entre los estudiantes:
¿Cómo entran a mi sistema?
Las principales formas en que un intruso entra al sistema son:
1. Intrusión Física.
Si los intrusos tienen acceso físico a la máquina (p. ej. que ellos pueden usar el teclado), pueden
irrumpir en el sistema. Hay muchas técnicas para obtener privilegios especiales, si toman parte del
sistema físico y quitan el disco duro ( para leerlo y escribirlo en otra máquina). Aún la protección del
BIOS es fácil de traspasar: virtualmente todos los BIOS tienen contraseñas como puertas traseras para
entrar al sistema.
2. Intrusión por Sistema.
Este tipo de intrusión asume que el intruso tiene privilegios de usuario normal. Si el sistema no tiene
los últimos parches de seguridad, es una gran oportunidad para el cracker, ya que él puede utilizar un
exploit conocido para obtener privilegios de administrador.
3. Intrusión Remota.
Este tipo de intrusión involucra al cracker que intenta penetrar el sistema remotamente a través de la
red. Al inicio no tiene privilegios especiales, sin embargo hay muchas técnicas con las cuales un
cracker puede entrar al sistema. Para evitarlo es necesario robustecer más el sistema, de modo que sea
más difícil de penetrar al cracker, por ejemplo si se pone un firewall entre él y la máquina víctima, le
va a costar mucho trabajo introducirse en el sistema.
Ahora si se toma en cuenta lo que pasa en las Universidades, es muy común que las cuentas de las máquinas
se pasen entre los estudiantes:
"Lupita le da la contraseña de su cuenta a su novio Carlos en otra máquina, Carlos tiene un amigo llamado
Juan al cual le gusta "jugar en las redes". Juan encuentra otras cuentas con contraseñas débiles en el equipo de
Lupita, y se las pasa a sus amigos, ...." muy pronto, toda una sociedad de crackers está jugando en las
máquinas que Lupita y sus compañeros utilizan.
Esto pasa todo el tiempo, y no sólo en las Universidades. Una solución es la educación. No deje que sus
usuarios desarrollen actitudes como esta:
"No importa la contraseña de mi cuenta, después de todo, sólo la utilizo para imprimir"
Enséñeles que usar una computadora conlleva responsabilidades. Asegúrese de que entiendan que una cadena
es tan fuerte como lo sean los eslabones.
Finalmente, cuando esté seguro de la asimilación del problema de la administración de un sistema, y la
empatía con usted, configure su sistema de tal manera que no les sea posible darle mal uso.
Crea en la educación del usuario, pero no solamente confíe en ella.
¿A quién puedo contactar si alguien irrumpe en mi sistema?
Si estás conectado a Internet, debe contactar al CERT (Computer Emergency Response Team).
Introducción al CERT
El CERT fue formado por DARPA (Defense Advenced Research Projects Agency) en 1988 para servir como
punto central de la seguridad en cómputo concerniente al uso de Internet. El Centro de Coordinación del
CERT se localiza en el Instituto de Ingeniería del Software en la Universidad de Carnegie Mellon en
Pittsburg.
URL: http://www.cert.org
Correo Electrónico: [email protected]
Teléfono: 412-268-7090 las 24 horas del día.
El Centro de Coordinación del CERT contesta de 7:30 am a 6:00 pm, EST (GMT-5)/EDT(GMT-4), y sólo es
para llamadas de emergencia durante otras horas.
En México, se puede contactar a la Subdirección de Seguridad de la Información (SSI) de la UNAM.
Introducción a la SSI
La SSI (Subdirección de Seguridad de la Información) de la DGCTIC-UNAM, es un punto de encuentro al
cual puede acudir la comunidad de cómputo para obtener información, asesorías y servicios de seguridad; así
como para intercambiar experiencias y puntos de vista, logrando con ello, establecer políticas (y quizá algún
día leyes) de seguridad adecuadas, disminuir la cantidad y gravedad de los problemas de seguridad y difundir
la cultura de la seguridad en cómputo.
URL: http://www.seguridad.unam.mx
Correo electrónico: [email protected]
Teléfono: 5622-8169
Fax: 5622-8043
Dirección: Circuito Exterior S/N, Ciudad Universitaria frente a la Facultad de Contaduría y Administración.
También está FIRST, el cual es un intermediario entre los equipos de respuesta a incidentes.
FIRST actualmente es una organización bastante viable y en crecimiento, del cual CERT es miembro. Es un
error pensar que si se está conectado a Internet sólo debe llamarse al CERT, pues esto sería injusto para el
resto de grupos de respuesta que están surgiendo.
El Instituto Nacional de Estándares y Tecnología (NIST) actualmente es el secretario del FIRST, NIST
mantiene un ftp anónimo con un directorio con la informacion de FIRST (csrc.ncs1.nist.gov:~/pub/first). Este
directorio contiene un archivo de contacto, el cual lista a todos sus miembros y su circunscripción y la
informacion de contacto (nombre del archivo "first-contacts").
El archivo mencionado es una lista de puntos de contacto para incidentes de seguridad. Es demasiado larga
para reproducirla aquí, de tal manera que se sugiere obtener una copia personal.
¿Qué es un firewall?
Un cortafuegos es una aplicación que se implementa entre sus máquinas y una red de banda ancha. Éste
proporciona filtración controlable al tráfico de la red, permitiendo el acceso restringido a ciertos números de
puertos de Internet y bloqueando el acceso a todo lo demás bastante bien. Firewalls similares están
disponibles para otro tipo de red.
Los Cortafuegos son una propuesta muy interesante para tratar con la seguridad del acceso externo, y está
aumentando su popularidad junto con el crecimiento de la conectividad de Internet.
Para más información ver más abajo el documento de Gateway de Cheswick.
¿Por qué no debo utilizar scripts con setuid?
Son varias las razones, la mayoría es por que envuelve huecos de seguridad en el kernel de UNIX. Aquí se
muestran algunos de los más conocidos, la mayoría ya tiene los parches necesarios para arreglarlos.
1. Si el script empieza con "#!/bin/sh" y hay una liga (simbólica u otro distinto), la cual se puede hacer
con la opción "-i", se obtiene inmediatamente un shell con setuid, porque el script será invocado:
"#!/bin/sh -i", es decir un shell interactivo.
2. Muchos kernels sufren de cierta condición, la cual puede permitir cambiar el shell, por otro ejecutable
de su preferencia, esto ocurre cuando en el proceso exec( ) corre el setuid, y cuando el interpretador
de comandos se inicializa. Si se es lo suficientemente persistente, podrá obtener el kernel, y correr
cualquier programa.
Si después de ver esto, aun necesita scripts con setuid:
1. Debería poner un wrapper en "C" para cuidar el script, debe ser cuidadoso al reinicializar IFS y PATH
antes de ejecutar el script, ya que son muy sensibles. Si su sistema tiene librerías ligadas, también
considere los valores de LD_LIBRARY_PATH.
2. Utilice un lenguaje como Perl, el cual es más seguro, y es fanático de la seguridad.
Pero realmente, es mucho más seguro no usar scripts con setuid.
¿Por qué no debo dejar una sesión de root permanentemente en
consola?
Al utilizar terminales 'inteligentes' en la consola y dejar "/dev/console" con permisos de escribible para todo el
mundo mientras "root" está en el sistema, es un hueco de seguridad potencial. La terminal es vulnerable a un
control remoto utilizando secuencias de escape, e incluso puede utilizarse para 'escribir' cosas en el shell de
root. La terminal comúnmente se obtiene con el comando "ps".
Hay varias soluciones a este problema, el más viable es dar permiso de acceso a la consola a su propietario y
dé escritura al grupo únicamente, entonces utilizar el mecanismo setgid en cualquier programa que tenga
necesidad de dar salida a la consola (p. Ej. "write").
¿Por qué no debo crear cuentas de UNIX sin contraseñas?
Crear cuentas sin contraseñas para cualquier propósito es potencialmente peligroso, no por alguna razón
directa, sino porque puede dar un punto de apoyo al cracker.
Por ejemplo, en muchos sistemas encontrará a un usuario "sync", el cual permite al administrador del sistema
sincronizar los discos sin estar en él . Esto parece ser seguro pero a la vez inocuo.
El problema con esto surge si su sistema es uno de los que no verifican a un usuario antes de autorizarlo para
usar FTP. Un cracker puede entrar a su máquina con una variedad de métodos FTP, pretenderá ser el usuario
"sync" sin contraseña, y entonces copiará su tabla de contraseñas, lo llevará a un lugar remoto y correrá Crack
o alguna otra herramienta parecida.
A pesar de que existen mecanismos para prevenir estos tipos de cosas en los sistemas UNIX modernos, para
estar completamente seguro se requiere conocer a fondo todos los paquetes que se encuentren en el sistema, y
cómo hacen la verificación de los usuarios. Si no está seguro de todo esto, es mejor no dejar huecos.
También cada servicio de red debe de revisarse para ver si tiene algún problema de seguridad. No todos los
servicios utilizan una entrada de shell. Por lo tanto al tener una cuenta sin contraseña permite a otros servicios
irrumpir en la cuenta.
Por ejemplo, algunos sistemas proporcionan acceso remoto a los archivos y manejan el nombre de usuario y
contraseña para verificar el acceso. Ninguna entrada en el shell es utilizada.
Por consiguiente, es posible que alguien use la cuenta "sync" para montar un sistema de archivos UNIX,
obteniendo acceso a la cuenta sin utilizar el shell.
¿Qué agujeros de seguridad están asociados con X-windows (y otros
Administradores de Ventanas)?
Hay muchos, algunos sólo afectan a X-windows, y otros tienen impacto en todo el sistema.
Existe mucha información sobre esto, y en este FAQ no se entrará mucho en detalle, pero se darán algunas
referencias para que cualquier lector pueda obtener información más detallada acerca de este tema.
X-windows es uno de esos paquetes que con frecuencia genera problema de seguridad por "incompatibilidad
de uso", por ejemplo la posibilidad de que los crackers puedan correr sesiones de X-windows en otras
máquinas o en cuentas sin contraseñas (p. Ej. sync), si éstas no están correctamente configuradas.
Por favor lea la pregunta acerca de cuentas sin contraseñas en este FAQ.
¿Qué agujeros de seguridad hay asociados con NFS?
Hay muchos, la mayoría es respecto a quién se le exportan los discos y de qué manera se hace. La seguridad
de NFS permite especificar quién tiene permitido montar archivos y si son exportados como sólo de lectura o
no.
El formato exacto para especificar qué hosts pueden montar un directorio varía entre las implementaciones de
UNIX, pero generalmente esa información se encuentra en el archivo "/etc/exports".
Este archivo contiene una lista de directorios y para cada uno tiene una serie, sea para especificar "hosts" o
"netgroups" los cuales permiten a NFS montar ese directorio. A esta lista se le llama "lista de acceso".
Los "hosts" son máquinas individuales, y "netgroups" son una combinación de hosts y nombres de usuarios,
los cuales se especifican en "/etc/netgroup". Lo que hace es proporcionar un método de acceso refinado. Lea
las páginas del manual para mayor información de netgroups.
El archivo de exportación también contiene información acerca de que si el directorio va a ser exportado
como de sólo lectura, lectura - escritura y si se permitirá el acceso al súper usuario de la máquina cliente, el
cual está montando ese directorio.
Hay un punto muy importante a recordar, y es que si la lista de acceso, para un directorio en particular en
/etc/exports contiene:
1. Su directorio puede ser montado por cualquiera, desde cualquier lugar.
2. Su directorio puede ser montado por alguien autorizado y correr el comando mount en ese host. Esto
no da mucha confianza; por ejemplo, si una máquina es una PC corriendo NFS, este podría ser
cualquiera.
3. Si el grupo de red:
a. Está vacío, cualquiera puede montar su directorio, desde cualquier lugar
b. Contiene "(,,)",cualquiera puede montar su directorio, desde cualquier lugar
c. Contiene el nombre de un grupo de red, el cual está vacío o contiene "(,,)", cualquiera puede
montar su directorio, desde cualquier lugar.
d. Contiene "(un host, ,)", cualquiera en el host mencionado con permisos de montar archivos
puede montar su directorio.
e. Contiene "(, nombre de usuario,)" el usuario mencionado puede montar su directorio, de
cualquier lugar.
4. Si desea exportar un directorio al host "athena" pero escribe "ahtena", la palabra "ahtena" se tomará
como un nombre de grupo de red, y si este grupo de red está vacío, entonces el directorio puede ser
montado por cualquiera, desde cualquier lugar.
Entonces, si no es cuidadoso en lo que pone en /etc/export y /etc/netgroup se dará cuenta de que un
usuario con una PC puede:
1. Montar su sistema de archivos como un disco de red.
2. Editar el archivo /etc/passwd o .rhosts o /etc/hosts.equiv
3. Entrar en otra máquina como otro usuario, tal vez "root".
Nota: La información antes mencionada no puede funcionar en todas las plataformas que
proporcionan el servicio NFS. Se debe notar que una entrada segura para crear un grupo de red vacío
es:
noname(-,-,-)
Lo cual significa que no se permitirá nada a nadie en ningún host en ningún dominio NIS.
Pero NFS es más inseguro que todo esto, ya que no se necesita siquiera un descuido en los archivos de
exportación, lo único que se tiene que hacer es ayudar a que se revele la clave para desbloquear el
sistema. Esto significa que se tratará de adivinar la clave. Es muy prudente, configurar sus ruteadores
para negar el tráfico de fuera de su organización.
¿Cómo puedo generar contraseñas seguras?
No se puede. La palabra clave aquí es GENERAR. Una vez que se tiene un algoritmo pare crear contraseñas,
el cual utiliza un método sistemático, simplemente es asunto de analizar el algoritmo para encontrar cualquier
contraseña al sistema.
A menos que el algoritmo sea demasiado bueno, éste tendrá un periodo corto de generación ( es decir: pronto
empezará a repetir las mismas contraseñas) entonces considere estas opciones:
a) Un cracker puede intentar cualquier posible salida del generador de contraseñas en cada usuario del
sistema, o
b) El cracker puede analizar la salida del programa de contraseñas, determinar qué algoritmo está siendo
utilizado, y aplicar el algoritmo a otros usuarios para determinar sus contraseñas.
Un ejemplo ilustrativo de esto (donde se asumió desastrosamente que el generador de números aleatorios
podría generar un número infinito de contraseñas aleatorias) se muestra en [Morris & Thompson].
La única manera de obtener una cantidad razonable de contraseñas variadas (sin poder asegurarlo) es
componerlas. Trabaje en un método flexible propio, el cual no esté basado en:
Modificar cualquier parte de su nombre o iniciales.
Modificar palabras del diccionario.
Acrónimos
Ningún algoritmo sistemático
Por ejemplo, NUNCA utilices contraseñas como:
alex7 - Está basado en un nombre de usuario (y es demasiado corto de cualquier manera)
tteffum - Basado también en un nombre de usuario
marlene - El nombre de tu novia (En el diccionario)
enelram - Lo mismo, pero hacia atrás
PORSCHE911 - Está en el diccionario
12345678 - Está en el diccionario (y se puede ver como lo escribes fácilmente)
qwertyui - Lo mismo
abcxyz - Lo mismo
Oooooooo - Lo mismo
Computadora - El ponerlo con mayúscula no lo hace seguro
wombat6 - Lo mismo, sólo se le agrega un carácter aleatoriamente
merde3 - Una palabra en un diccionario en francés
mr.spock - Esta en un diccionario de ciencia ficción
zeolite - Esta en un diccionario geológico
ze0lite - Una versión corrupta de un diccionario geológico
ze0l1te - Lo mismo
Z30L1T3 - Lo mismo
Se espera estos ejemplos enfaticen que cualquier contraseña derivada de cualquier palabra de un diccionario (
o información personal), modificada de cualquier manera, constituye una contraseña adivinable.
Para información más detallada acerca de esto, deberás leer el Apéndice que acompaña a Crack.
¿Por qué las contraseñas son tan importantes?
Porque son la primera línea de defensa contra los ataques interactivos en el sistema. Es simple: Si un cracker
no puede interactuar con nuestro sistema, y no tiene acceso para leer o escribir información del archivo de
contraseñas, entonces no tendrá el camino abierto para atacarlo.
Además si el cracker puede leer su archivo de contraseña (si tiene un sabor moderno de UNIX debes asumir
esto) es muy importante que no pueda adivinar las contraseñas contenidas en él. Si puede, sólo debe asumir
que él puede introducirse en el sistema y en poco tiempo entrar como root por medio de un hueco del sistema
operativo.
¿Qué cantidad de contraseñas posibles hay?
Mucha gente pregunta esto una y otra vez, preocupada porque programas como Crack eventualmente
aumentaran su poder, hasta lograr hacer una búsqueda exhaustiva para todos las contraseñas posibles, así
cuando tengan la cuenta de un usuario, la irrumpen , usualmente root.
Si se asume que (simplemente matemáticas):
1. Las contraseñas válidas se crean con un grupo de 62 caracteres [A-Za-z0-9]
2. Las contraseñas válidas tienen una longitud entre 5 a 8 caracteres
Entonces el tamaño de contraseñas válidas es: (base 62)
100000b62 +
1000000b62 +
10000000b62 +
100000000b62 =
-----------111100000b62 =
222000000000000 (decimal)
Este es un número demasiado grande para emprender una búsqueda exhaustiva con tecnología de punta, Sin
embargo, no olvide, que las contraseñas se pueden componer con caracteres diferentes a estos; puede usar
todos los caracteres de puntuación, y también los símbolos (~<>|@#!"·$%&/). Si utiliza algunos de estos 35
caracteres en sus contraseñas, se incrementará el espacio de búsqueda.
Sin embargo, es mucho más eficiente para un cracker obtener una copia de "Crack", irrumpir en cualquier
cuenta del sistema (Solo se necesita una), entrar en la máquina, y conseguir privilegios de super usuario por
medio de un hueco en el sistema operativo.
De una cosa puede estar seguro. Si cierra la puerta de golpe a un cracker en su cara con un archivo de
contraseñas robusto, habrá cerrado una de las más grandes vías de ataque inmediato.
¿Dónde puedo obtener más información?
¿Qué tan floja puede ser la gente?
Esta sección (que esperamos que crezca) es un foro para aprender de la experiencia de los demás; si las
personas tienen tiempo de leer algunos incidentes de seguridad, esto tal vez les infunda un poco de conciencia
respecto a la seguridad en cómputo sin tener que pasar por eso.
Si tiene alguna experiencia que desee compartir con nosotros, por favor envíela al editor de este FAQ. Se
agradecerá mucho.
Estas historias se han encontrado en incidentes de seguridad o visto en grupos de noticias en cuanto al mismo
tema.
Esta historia la enviaron a comp.security.misc.
De: [email protected]
"La mejor historia que tengo es de un estudiante, amigo mío (llamado Bob) él estuvo su año industrial en una
compañía de manufactura de computadoras. En sus días libres, él venia a la escuela a jugar AberMUD en mi
máquina.
Una parte del trabajo de él implicaba la administración de sistemas, y su compañía era muy estricta en lo
referente a la seguridad, de tal manera que todas las contraseñas eran cadenas de letras aleatorias, sin ningún
orden. Es imperativo mencionar que las contraseñas eran seguras (Esto involucraba escribir las contraseñas y
guardarlas en un lugar sumamente seguro).
Un día que yo no tenía nada que hacer, corrí Crack en el archivo de contraseñas de MUD (las contraseñas
están en texto) y después corrí Crack en nuestros archivos de contraseñas. Algunas cuentas de algunos
estudiantes salieron a la luz, pero nada especial. Le dije a los estudiantes que cambiaran sus contraseñas y ahí
terminaba el asunto.
Tan flojo como soy, olvide quitar las contraseñas del diccionario de Crack, y cuando envíe la siguiente
versión a USENET, las contraseñas fueron enviadas también. Este correo llego al moderador de
comp.sources.misc, éste atravesó todo USENET y finalmente terminó en la compañía de Bob.
Siendo él administrador responsable que es Bob, cuando la nueva versión de Crack le llegó, la corrió en sus
sistemas. Inmediatamente salió la contraseña de root y el quedo sorprendido.
La moraleja de esto es: nunca utilices la misma contraseña en dos diferentes lugares, y especialmente en
sistemas no confiables (como MUD)".
¿Qué es SPAM?
Mensaje de correo electrónico no solicitado por el receptor, usualmente distribuido a una lista de direcciones y
cuyo contenido es publicidad en general de productos o servicios.
Diferentes tipos de SPAM
Hay diferentes tipos de mensajes no solicitados actualmente en Internet. A continuación se presentará una
breve explicación sobre cada uno de estos con el propósito de diferenciarlos.
UCE (Unsolicited Commercial Email). También llamado Junk email. Correo electrónico no solicitado de tipo
comercial, su contenido publicita algún producto o servicio.
UBE (Unsolicited Bulk Email). Correo electrónico no solicitado enviado de forma masiva. Este correo se
envía a miles o millones de cuentas de correo. El UBE puede ser de tipo comercial, en este caso también sería
UCE. Sin embargo su contenido puede tener otros propósitos como políticos, religiosos, de hostigamiento,
etc.
MMF (Make Money Fast). La mayoría de las veces se presenta en forma de cartas cadena o sistemas
piramidales, cuyo contenido dice algo como "¡Tú puedes ganar mucho dinero!, sólo envía dinero a la primera
persona de la lista, borra el nombre y pon el tuyo en su lugar y da un forward de este mensaje a otras
personas".
Usurpación de Identidades. Estos son correos electrónicos que se reciben aparentemente de una persona u
organización, pero no es así. El propósito de estos mensajes generalmente no es enviar información sobre
algún producto o servicio (aunque podría darse el caso)sino hacerse pasar por otra persona u otra
organización, provocando enojo en las personas que los reciben, quienes reclaman a la supuesta persona que
los envió, quienes en realidad son víctimas y no atacantes. La usurpación de identidad puede considerarse
como un ataque a la reputación.
¿Qué es un Sistema de Detección de Intrusos(IDS)?
IDS es la abreviatura de Sistema de Detección de Intrusos (por sus siglas en inglés), que es el arte de detectar
actividad inapropiada, incorrecta o anónima. Los sistemas de Detección de Intrusos que operan en un host
para detectar actividad maliciosa, se les conoce como Sistemas de Detección de Intrusos para host y a los
sistemas DI que operan en el flujo de datos de una red se les conoce como sistemas de Detección de Intrusos
para red.
En algunas ocasiones, hay una diferencia entre la detección de una intrusión y un mal uso del sistema. El
término intrusión se utiliza para describir ataques de fuera, mientras que se recurre a mal uso del sistema para
describir ataques que se originan en la red interna. No obstante, la mayoría de la gente no conoce estas
diferencias.
Las formas más comunes para aproximarse a la Detección de Intrusos es la localización de anomalías y
descubrimiento de comportamientos extraños
Revisión histórica
• Liberación original: 15-Ago-2005
• Última revisión: 7 de octubre de 2010
La Subdirección de Seguridad de la Información/UNAM-CERT agradece el apoyo en la elaboración y
revisión de este documento a:
• Galvy Cruz Valencia
• Andrés Leonardo Hernández Bermúdez
Para mayor información acerca de éste documento de seguridad contactar a:
UNAM-CERT Equipo de Respuesta a Incidentes UNAM
Subdirección de Seguridad de la Información
Dirección General de Cómputo y de Tecnologías de Información y Comunicación
Universidad Naciónal Autónoma de México
E-Mail:[email protected]
http://www.cert.org.mx
http://www.seguridad.unam.mx
ftp://ftp.seguridad.unam.mx
Tel:56 22 81 69
Fax:56 22 80 43
Descargar