TEMA 4 SEGURIDAD EN REDES -------------------------- * CIFRADO EN RED Se puede realizar cifrado extremo a extremo (SSL,TLS, SMIME y PGP) o cifrado de enlace (IPSEC). El cifrado de red es la forma directa (más sencilla) de asegurar la transmisión de los datos en una red. Queremos asegurar la confidencialidad y la autenticidad. - Cifrado extremo a extremo: La comunicación cifrada se realiza entre las aplicaciones finales que utilizan los usuarios. - Cifrado de enlace: Se realiza a nivel del enlace. El cifrado sirve para todas las aplicaciones de la red. En el cifrado extremo a extremo, el cifrado y descifrado se realizan a nivel de la aplicación de usuario. En el cifrado de enlace, las comunicaciones se usan sin cifrar. Es difícil extender a una red grande. El IPSEC permite extender a toda la red el nivel de enlace. El cifrado extremo a extremo y el de enlace no son incompatibles sino complementarios. El SSL y TLS se utilizan para páginas web. SSL es el protocolo propietario del Netscape. El TLS es la oficialización. El estándar lo determina una entidad casi-pública, mientras que el SSL lo lleva el Netscape. Protocolos para comunicación con sesión: SSL y TLS Protocolos para comunicación sin sesión: SMIME y PGP El IPSEC es una alternativa seria a la codificación IP. El cifrado extremo a extremo depende de la aplicación. El cifrado de enlace es a nivel de todas las aplicaciones. Viene a solucionar la inseguridad del canal. * SSL Su intencionalidad, es decir, lo que pretende, es cubrir tres propositos: - Confidencialidad - Autenticación del servidor - Autenticación del cliente Se pretende comunicarse de forma confidencial (cifrado) y además que haya autenticación. El SSL está pensado para satisfacer al cliente. Primera regla: Dar confianza al cliente. Para que funcione el SSL se requiere que el servidor tenga un par de llaves (K,P). El cliente se conecta al servidor y el protocolo SSL tiene una fase inicial en la cual se realiza la autentificación. Hay un acuerdo entre cliente y servidor de los protocolos a usar. El servidor manda el certificado al cliente. El cliente verifica el certificado; comprueba la firma y para ello usa la clave pública de la autoridad certificadora. Tras comprobar que la firma es correcta, hace una comprobación de que el certificado es bueno. Se comprueban los datos que hay en el DN del certificado (país, email, CN (nombre de la persona), etc). El https es una conexión segura. Ahora nos queda lo más importante: Comprobar que ese certificado es propiedad de ellos. Hay que verificar que ellos tienen la clave privada del identificador. El Netscape va a comprobar que realmente tienes la clave. El cliente lanza un reto, lanzando la clave. Para ello el cliente manda una clave de sesión. Resumiendo: El servidor manda el certificado al cliente. El cliente verifica el certificado y genera una clave S aleatoria, manda Eps(s) y el servidor obtiene s=Dks(Eps(s)). Tendremos una comunicación confidencial. Ejemplo: ¿Cómo sabe el banco quien conecta? Se usa user+password. La transmisión de user+password es una transmisión segura, el user+password se envía cifrado. El esfuerzo de creación de la clave pública y privada la hace el servidor. Se suelen generar certificados para tiempos cortos (2 años, 3 años). Ésto lo hace el servidor, no el cliente. Para conseguir autenticidad, el servidor autentifica, el cliente manda Cc (certificado del cliente), el servidor verifica el certificado de autenticidad y lanza un reto al cliente. Hay 3 modelos: - No se requiere autentificación del cliente (da igual si se autentifica). - El servidor le dice: Autentificate si puedes (la autentificación es opcional). - El servidor dice: Autentificate como puedas (se requiere autentificación). * Seguridad en el web En las páginas web, a veces deniega el acceso, pide user y password. Hay varias formas de controlar los accesos: - Desde el servidor. - Desde los directorios. Ejemplo: En el Apache, lo primero que se controla son las IP's Dos ordenes básicas son: deny, allow Ejemplo de uso: deny IP IP nombres | uji.es deniega el acceso a aquellos que tengan en su dominio uji.es Políticas cerradas: Su función es denegar siempre y autorizar a unos cuantos. Políticas abiertas: Su función es autorizar a todo el mundo y denegar a unos cuantos. Autentificación http: Se especifica una base de datos de usuarios y passwords. El cliente se conecta a una página. Cuando se va a acceder a esa página, el servidor requiere al cliente user y password. La ventana de user y password la tiene que mostrar el navegador. El servidor mira si en el mensaje ya va el user y password. Si no está el user+password le responde el servidor al cliente. El protocolo no contempla un número máximo de intentos. En el Apache, el fichero de configuración es el .htaccess Se pueden meter otras directivas que son del módulo de Apache. Todas empiezan por SSL Ejemplo: SSLRequire SSL indica que has de usar https. Tras poner ésto, si intentas acceder con http te dice que está prohibido y si intentas acceder con https te deja. * AMENAZAS EN LA RED Comentaremos algunas amenazas importantes. - SNIFFING: Es la amenaza más conocida en la red. Consiste en escuchar. El sniffing puede tener éxito o no, pero se debe conseguir que en caso de tener éxito, no sirva para nada. Lo que pretendemos evitar es que el sniffing sirva de algo. Se puede conseguir ésto a partir del Hardware. Podemos colocar el cable en un tubo para evitar que puedan pincharlo. Un posible ataque será pinchar el cable. Este ataque tiene un coste tanto material como de riesgo. Es muy distinto pinchar físicamente el cable a ver la información por Software (con un programita). El atacante tiene que considerarlo a la hora de decidir atacar y pinchar el cable; hay un riesgo alto, ya que si pillan al atacante no puede decir que no ha ido ha pinchar intencionalmente el cable. - SPOOFING Otra amenaza es el spoofing o suplantación de identidad. Es un ataque a la autenticidad. Si se averigua la password de un vecino y se entra, se hace spoofing. Otro ejemplo de spoofing es mandar un mail con el nombre de otro. Una solución para evitar la suplantación es la firma electrónica. - HIJACKING (suplantación de conexión) A inicia una conexión con B. Una vez A está autenticado con B, el C (hijacker) pasa a suplantarle sin necesidad de autentificarse. No se necesita saber la password, una vez se conecta un usuario, el hijacker puede suplantarle. Formas de evitar el hijacking: - Que la comunicación vaya cifrada con una clave preestablecida. El hijacker no puede continuar porque toda la transmisión es cifrada (recibirá un churro cifrado y no podrá contestar) - El PPP con autentificación chap El PPP es un protocolo. Usa el chap para autenticarnos con el remoto. El chap está bien diseñado: No transmite nuestro password. La password no circula por la red. Al no circular la password, se evita el spoofing. Para evitar el hijacking, el chap, cada x segundos, vuelve a mandar un reto. Evita el hijacking. El reto se repite periódicamente para que un hijacker solo pueda estar conectado unos segundos. - DOS (Denial of Service) Denegación de servicio. Es otro ataque habitual, suele ser el más habitual, porque es relativamente fácil. Consiste en atacar la maquina y hacer que el servicio en concreto o la máquina entera deje de funcionar. Es el hermano pequeño de la intrusión. La intrusión se puede ver como una variante del spoofing, en el que una persona puede entrar a una máquina sin autentificación (sería como abrir una puerta sin tener la llave). Va relacionado con los fallos del Software. Puede producirse por mal diseño, y puede causar que el sistema se colapse. El nuke es atacar a un software y que ese software deje de funcionar. Otro ejemplo de DOS es que la persona que esté en un ordenador cercano nos coja el IP, entonces no podemos seguir. Suelen ser más fácil los ataques en las máquinas UNIX que en el Windows. - DNS Otro tipo de ataques son los que han sufrido los DNS. El DNS se encarga de pasar los nombres a IP. Se trata de una base de datos distribuida. El DNS ha sufrido problemas de intrusión. Ejemplos de ataques al DNS más famosos son obligar al DNS a dar una información equivocada. - Stack overflow Es muy sistemática, muy intrínseca del software mal hecho. La medida para evitar los buffer overflow, DOS, etc es tener un buen software y mantenerlo. Otro problema sucede cuando vamos a cambiar el password. Durante la ejecución de cambio de password somos el root para poder cambiar el password, si somos el root podemos acceder a todo el sistema. - Firewalls (cortafuegos) Tiene como misión establecer una barrera entre dos puntos de la red. Protege una red corporativa del exterior. Filtrado de paquetes Delegación de servicios (proxy) El filtrado de paquetes consiste en decidir que paquetes del protocolo TCP/IP vamos a permitir que entren en nuestra red y cuales vamos a permitir que no entren. Hay tres tipos de filtrado: de entrada (input), de salida (output) y de transferencia (forwarding) El filtrador puede ser una máquina con su propia vida. A nivel de protocolo IP tenemos una IP origen y una IP destino. Concepto de puerto: Un paquete TCP/IP tiene además de las IP de origen y destino, un puerto de origen y otro de destino. El firewall lo que hace es que todos los paquetes cuyo destino es un puerto determinado no los deja pasar. La IP de la red corporativa puede ser de Internet o privada. En la UJI 150.128.x.x Los firewalls determinan que paquetes pueden entrar o salir. Además el firewall tiene que permitir la circulación a través de él. El forwarding solo funcionará si se permite el input o output. Para evitar el span, que aparezcan muchos mensajes y nos llene nuestro correo de mensajes que no queremos, poner forwarding paquetes del exterior dirigidos al Telnet-->ninguno - Forma de administrar el firewall: Para cada una de las input, output y forwarding se decide qué política de seguridad se usa (abierta o cerrada). En la UJI se tiene una política abierta. Aplicaciones para poder filtrar: Para los kernel 2.0 (de Linux) la aplicación se llama ipfwadin Para los kernel 2.2 se usa ipchains y para los kernel 2.4 se usa iptables Los ipchains y iptables son incompatibles, si se usa uno no se usa el otro Ejemplo de regla de forwarding: ipfwadin -F a accept -s 0/0 -d 0/0 23 -P tcp Políticas a seguir: - De aceptación: Ejemplos: ipfwadin -I -p accept ipfwadin -I -a accept ipfwading -I -l accept esta última lista las reglas tal como las encuentra. - De denegación: ipfwadin -I -p deny Un ejemplo sería: ipfwadin -I -a accept -s 0/0 -d L/32 -p 1024-65535 -k -P tcp Con -k está activo el ack Tras -s se pone el origen Tras -d se pone el destino L/32 indica que la máscara tiene los 32 primeros bits a 1 (los 32 primeros bits de la dirección IP nos indica la red, distingue unas redes de otras) TEMA 5 SEGURIDAD EN SISTEMAS OPERATIVOS ------------------------------------------ El SO lo primero que pide es una identificación (login) y luego una autentificación (passwords). La password es una palabra. Hay gran cantidad de passwords que son nombres de cantantes, de perros, de científicos famosos, etc Lo más corriente es poner uno de esos nombres y un número delante y otro detrás. Existen unos programas que realizan ataques a sistemas usando un diccionario (parecido al corrector ortográfico del MS Word) Estos programas prueban esas palabras y les ponen numeritos delante y detrás y comprueban si es la password. Esos programas descubren del 20% al 30% de los passwords, en algunas ocasiones llegan hasta el 90%. La password ha de ser rebuscada, es decir, que no suene a nada, es decir, que no esté en ningun diccionario, y que sea larga (hay que ir siempre al máximo de caracteres que se permita) Hay que tener en cuenta que la password se desgasta, a parte de que alguien te vea la password por algún medio. Los sistemas ayudan al usuario a asegurar su password, obligando a poner un mínimo de caracteres al usuario. En ocasiones, con la password que se le da al sistema, éste mira si le cuadraría con unos patterns (patrones). Hay algunos sistemas que te obligan a cambiar la password cada cierto tiempo (éste es el caso del Unix). Una política extraña que tienen algunos sistemas es que no puedas cambiar el password en una semana. ¿ Cómo se almacena la password en el sistema ? La forma más razonable es almacenarla cifrada. Cuando el usuario se intenta autenticar lo que se hace es cifrar lo que introduce el usuario y ver si coincide con lo guardado. Ejemplo: El /etc/passwd contiene user:passwd:uid:gid:nap:dir:shell El algoritmo que se usa para cifrar es el DES. El /etc/shadow contiene user:passwd:x:x:x:x:x Existía la posibilidad hace un tiempo de que el usuario no esté en el shadow. Ahora está correctamente implementado y evita esa posibilidad. El fichero shadow se protege contra escritura para evitar ataques. Hay sistemas en los que se requiere la presentación de una doble password. Existen sistemas de password de un solo uso. Tienes que tener una lista de passwords. Esto consiste en que cuando introduces la password, caduca y tienes que busca otra para la próxima vez. Tipos de sistemas: Monousuario o multiusuario Monotarea o multitarea Un sistema monousuario (personal) no tiene porqué tener password; la puedes poner para protegerte a modo opcional. Un sistema multiusuario lo pueden usar muchos usuarios; habrá que marcar zonas para proteger a unos usuarios de otros Un sistema multitarea permite realizar muchas tareas y esas tareas pueden ser de distintos usuarios. Para la protección del sistema se usan técnicas de protección, que buscan la confidencialida y disponibilidad. Una técnica usad es marcar en la memoria un inicio y un fin (a nivel Hardware). Esto proteger al Sistema Operativo. Cuando hay paginación de memoria, la memoria se reserva en páginas. En cada página se mantiene quien es el propietario de la página. Si un usuario intenta entrar, da error de segmento. La página se protege a nivel del mismo usuario o de otro usuario. A la hora de proteger el sistema de archivos, existen varios esquemas de protección que difieren en su versatilidad y en el coste. La misión de la función open, a parte de la de abrir el fichero, es facilitar los subsiguientes accesos al archivo. Hay que tomar una decisión a la hora de establecer los permisos del fichero. Hay tres niveles de acceso: r w x (lectura, escritura y ejecución) Cada usuario tiene un uid y gid (user id y group id). Cuando un usuario quiere tener acceso de un fichero: - se mira el uid, si da acceso bien, si no se mira el gid, si da acceso bien, y si no se mira el others. En otros sistemas que tienen derecho a borrar (d r w x) Unos sistemas más avanzados son los ACL ACL significa Lista de Control de Accesos. Permite la especificación de una lista de usuarios y la especificación de un comodin. ACL usuario1 r, usuario2 rw, resto x Se permiten los widecard: a* En sistemas como el UNIX, se incorpora el ACL. El ACL depende más del sistema de archivos que del sistema operativo. En los directorios: r--> lista w--> modifica (permite borrado) x--> formar parte del path En los ficheros: r--> leer w--> escribir x--> ejecutar t--> text Para hacer un cd tiene que estar la x en el directorio Ejemplo: rwxrwxrwt Bit S: Es necesario para cualquier sistema operativo. Archivos swing: Ejemplo: rwsr-s--x Los programas swing son peligrosos para el sistema porque si hay un buffer-overflow se ejecutará el root, y por tanto, cualquier usuario tendrá acceso a todo el sistema. Se mantienen cuatro variables: UID, GID, EUID (efective UID) y EGID (efective GID) Ejemplo: El usuario 501 es del grupo 100 y ejecuta un programa Normal suid UID 501 501 GID 100 100 EUID 501 0 IGID 100 0 El EUID es el que vale. Un programa swing necesita saber si lo está ejecutando el root o un usuario. En un fichero como éste: rwsrwsr-s /bin/sh todos los usuarios entrarían como root. /bin/sh es el shell del sistema, propiedad del root. Para hacer un torpedo, ejecutar como root las siguientes sentencias: cp /bin/bash torpedo chmod u+s,g+s torpedo Lo ideal es hacer un programa en C a la hora de hacer un torpedo. Estos modelos de seguridad forman parte de una tabla de accesos (tenemos objetos y usuarios, los cuales son tambien objetos) Una posible tabla de accesos: usuarios objetos usuarios P - - D R - - - P - W - - P Tenemos P, R, W, D La tabla se implementa por filas o columnas. Cuando se implementa por filas, tenemos acceso de capabilities (capacidades). * COPIA DE SEGURIDAD Objetivo: Alcanzar la integridad y disponibilidad. Necesidad: Surge porque los dispositivos de almacenamiento no son fiables al 100% Para solucionar ésto se tienen las copias de seguridad, que permiten reducir la probabilidad de estropiciomiento. Los datos se buscan dentro de una copia de respaldo. Se opta por copias de seguridad en tiempo real. Para proteger de los accidentes, realizar copia de seguridad periodica en dispositivos distintos. Planificación: - Copia de seguridad total. Se realiza una copia de todo lo que tenemos. Es lenta. - Cada vez que sucede un evento, se realiza una copia de lo que se haya modificado desde la última copia de seguridad. Se suele realizar en momentos en los que haya poca carga (hora de la cena, por ejemplo). Se suele tener 7 cintas (una por cada dia de la semana). Cada dia se cambia la cinta correspondiente (el Lunes se cambia la cinta del Lunes, el Martes la cinta del Martes, etc). Podremos recuperar el estado de los 7 días anteriores. Hay que cambiar las cintas todos los días. Se puede hacer una copia de seguridad cada semana o cada més. Hasta en la pequeña oficina es razonable hacer copias de seguridad. Todo el tema de copias de seguridad está automatizado. Existen utilidades para hacer copias de seguridad. Programas archivadores: tar, rar, arj, zoo El más usado es el rar. TEMA 6 AMENAZAS PROGRAMADAS (VIRUS) -------------------------------------- Podemos hablar de amenazas programadas en general. Las amenazas programadas consisten en que se hace un programa, se suelta (se difunde) y actuará de forma dañina según lo haya diseñado el programador. Concepto de virus: Es una amenaza programada cuya caracteristica fundamental es la reproducción. Su misión es contagiarse. Hay unas amenazas programadas que no son virus. Un ejemplo de amenazas programadas que no son virus son los Troyanos (caballo de Troya): Es un programa que dice hacer una cosa y luego hace otra cosa, al margen de que haga tambien lo que debia hacer (lo que dice hacer). Excel y Scan de McCafee son ejemplos de Troyanos. Las clasificaciones que teniamos hasta ahora no son muy acertadas, son provisionales. Una clasificación posible es la siguiente - Virus de MS-DOS (antes de que apareciera el Windows95) Funcionan bajo MS-DOS Los virus de MS-DOS se dividen en: - de boot - de programa ----residentes ----de acción directa Está prohibido hacer virus por ley y tambien está prohibido usar cualquier herramienta que permita hacer virus. - Virus de boot: Con los virus de boot se contagiaban los discos de arranque, se copian en el sector de arranque. En los virus de boot, lo difícil es infectar. Toda operación de lectura/escritura de diskettes y discos duros pasaba por el virus de boot. Infecta los diskettes. Se contaron en más de 100 virus de boot. Contraer el virus no era tan fácil, porque se tenía que tener el descuido de dejar el diskette dentro de la diskettera para contagiarse. - Virus de acción directa Son virus de programa. Los virus de programa van con el programa y modifican el programa (machacandolo). Los virus de acción directa, cuando se ejecutan, hacen una exploración en su entorno, busca archivos y se propaga - Virus residente Son virus de programa. Cuando se ejecuta, se autocopia en una zona de memoria y, una vez copiado, interfiere la llamada básica del sistema de MS-DOS. El virus residente es más contagioso. En MS-DOS era fácil hacer virus. En UNIX, la infección solo afecta a su cuenta. Si el usuario actua como root, puede afectar a más cosas. Puede detectarse la presencia de un virus más porque funciona algo mal que por lo que hace el virus en sí. Del año 92 al 95, hubo un reciclaje al Windows95, perido de calma en la que no se hacen virus. Anteriormente se hacian los virus en ensamblador, a partir de esta época se hacían en lenguajes de alto nivel. Se abre un nuevo campo de los virus a partir de esta época. Con la llegada del Visual Basic, el número de virus se disparan. Nueva generación de virus que aprovechan Internet. Se propagan a través de la red. Al intentar abrir los adjuntos del correo, puede ejecutarse un virus. Existen unos virus que se disparan solo con leer el mail en outlook. Lo ideal es propagarse a través de Internet de la forma más silenciosa posible. * ANTIVIRUS La solución para los virus son los antivirus. Su misión es la detección y eliminación de los virus. Los virus tienen unos patrones que los identifican. Los antivirus, cuando escanean el virus, buscan esos patrones y si los encuentra entonces ha detectado el virus. Las técnicas de los virus no evolucionan mucho (aparecen nuevas técnicas cada año)