Criptografía y Seguridad en Redes de Comunicaciones Profesor: Álvaro Alesanco Iglesias (revisado )

Seguridad en Sistemas Operativos Criptografía y Seguridad en Redes de Comunicaciones Profesor: Álvaro Alesanco Iglesias (revisado 05-05-2010) 1 O

3 downloads 134 Views 1005KB Size

Recommend Stories


Arquitectura de Redes y Comunicaciones
Primera Semana Arquitectura de Redes y Comunicaciones LAS COMUNICACIONES Las primeras redes de datos estaban limitadas a intercambiar información ba

Arquitectura de Redes y Comunicaciones
Septima Semana Arquitectura de Redes y Comunicaciones LA TARJETA DE RED (NIC) El dispositivo más utilizado en estos momentos para conectar un dispos

Redes de Comunicaciones
Redes  de  Comunicaciones   Ejercicios  Tema  1.  Introducción   Ramón  Agüero  Calvo   Departamento  de  Ingeniería  de  Comunicaciones   Este  tema

Story Transcript

Seguridad en Sistemas Operativos

Criptografía y Seguridad en Redes de Comunicaciones

Profesor: Álvaro Alesanco Iglesias (revisado 05-05-2010)

1

Objetivos Se plantea en esta práctica atacar algunos de los conceptos básicos de seguridad en la configuración de un Sistema Operativo. Se emplearán como ejemplo los SO Windows XP y Linux CentOS 5.4 de forma indistinta para ofrecer una perspectiva amplia de la seguridad y hacerla independiente del SO elegido.

Trabajo a realizar La práctica está dividida en dos partes: SO Windows y SO Linux. Cada una de las partes tiene diferentes secciones en las que se deberá realizar un pequeño trabajo de configuración. Cada sección empieza explicando de manera más o menos genérica un punto que hay que tener en cuenta a la hora de securizar el SO. Después, en un recuadro, se explica el trabajo que se ha de realizar. Además del trabajo de configuración, será necesario entregar una hoja de comprobaciones o “checklist” que permita a un administrador (en este caso, al propio alumno) verificar las comprobaciones realizadas para securizar cada uno de los dos SO. Dicha “checklist” debería ocupar un espacio reducido (tiene que ser una lista de comprobación, no un resumen de la práctica), y debe enviarse por email al profesor con formato .pdf

2

1. Securización de un equipo con SO Windows XP El proceso de bastionado o securización de un equipo con Windows XP sigue los pasos que se describen a continuación. El orden en el que se presentan los pasos no es de obligado cumplimiento, pero al estar clasificados por prioridades es recomendable que se siga dicho orden.

1.0. Configuración inicial: DHCP Antes de pasar a securizar el SO propiamente dicho, habrá que asignar una dirección IP al SO para que tenga conexión al exterior. En lugar de asignar una dirección estática, vamos a hacerlo de forma dinámica ya que el laboratorio dispone de un servidor DHCP dispuesto a tal efecto. Para ello, vamos a Inicio  Panel de control  Conexiones de red  Botón derecho en el interfaz deseado  Propiedades  Protocolo Internet (TCP/IP)  Propiedades  Automático (todo). Una vez hecho esto, el SO le pedirá una dirección IP (así como el resto de configuración necesaria para funcionar, como el router por defecto, y los DNS) y ya tendremos acceso al exterior.

1.1. Aplicación de parches y actualizaciones Microsoft ofrece de forma habitual parches para corregir los fallos más frecuentes de sus sistemas. De forma periódica agrupa dichos parches en lo que se denomina un Service Pack o Paquete de Servicio, para facilitar la aplicación de los mismos. El Service Pack más actualizado puede encontrarse en : http://windowsupdate.microsoft.com/ o accediendo a “Inicio  Todos los programas  Windows Update” El Service Pack se aplica de forma automática seleccionándolo de la lista de parches a instalar. Es necesario reiniciar el equipo después de la aplicación de un Service Pack Se deberá aplicar en primera instancia el último Service Pack disponible (el último engloba los anteriores de forma automática evitando tener que instalarlos en cascada). Será necesario a continuación instalar los últimos parches emitidos, ya que no están incluidos en el propio Service Pack. Dichos parches pueden descargarse desde la URL arriba mencionada. Dicha operación se pone en primer lugar ya que es la más importante a la hora de bastionar un equipo con SO Windows, pero en realidad es la última operación que debería realizarse antes de poner el equipo en producción, ya que debe realizarse con todos los programas y servicios instalados (si se aplicara nada más instalar Windows y a continuación se instalara un IIS, éste no quedaría protegido por los cambios realizados por el Service Pack).

3

A partir de Windows XP Service Pack 1, es posible configurar las actualizaciones automáticas en los equipos, accediendo a “Inicio  Panel de Control  Actualizaciones automáticas” (en la propia instalación de XP dan la opción de dejarlo por defecto activado). Microsoft ofrece también otra capacidad de actualización denominada “Microsoft Update”, que actualiza además del SO los paquetes de programas más comunes (Office, Windows Media Player): http://update.microsoft.com/microsoftupdate Respecto a los parches del SO (Windows update), ¿qué sería lo más urgente instalar? (sólo toma nota, NO INSTALES)

1.2. Desactivación de servicios no utilizados Para obtener una mayor seguridad y un empleo más eficaz de los recursos del sistema, todos los servicios que no se utilicen deberán ser deshabilitados. Se presenta una lista de servicios a mantener en un equipo Windows que no tiene conexión a una red Windows: Actualizaciones automáticas.

Notificación de sucesos del sistema

Administrador de cuentas de seguridad

Plug and Play

Cliente DNS

Registro de sucesos

Cliente DHCP (solo en el caso de emplear un módem).

Servicios de cifrado

Conexiones de red

Servicios de Terminal Server

Iniciador de procesos DCOM

Servicios IPSEC

COM+ Event System.

Servidor

Llamada a procedimiento remoto

Sistema de sucesos COM+

Tabla 1. Ejemplo de algunos servicios activos en un XP Se puede encontrar más información acerca de lo que hace cada servicio de Windows XP en la “Windows XP Security Guide” de la NSA (ver enlaces Tema S2) y en http://www.jasonn.com/turning_off_unnecessary_services_on_windows_xp Esta lista de servicios es inicial, ya que a medida que se vayan instalando programas y herramientas de seguridad irá aumentando. Para deshabilitar un servicio se deberá acceder al panel de servicios del sistema mediante “Inicio  Panel de Control  Herramientas Administrativas  Servicios”.

4

Ilustración 1: Panel de servicios existentes Pulsando sobre el botón derecho sobre el servicio accederemos a sus propiedades, y podremos seleccionar el modo de arranque, así como iniciarlo o detenerlo. Se deshabilitará el servicio seleccionando la opción Deshabilitado para que de esta forma no se inicie al arrancar Windows, y se detendrá pulsando en el botón Detener.

Ilustración 2: Deshabilitar un servicio Deshabilita alguno de los servicios que no aparezcan en la tabla 1. No sólo se han de deshabilitar sino también parar para que ahora dejen de funcionar

1.3. Deshabilitacion del protocolo NetBIOS sobre TCP/IP En el caso de que el equipo no vaya a ser emplazado dentro de una red Windows, es muy recomendable deshabilitar la capacidad de Windows de hablar el protocolo NetBIOS (el empleado para crear redes Windows, e inseguro de raíz ) sobre redes TCP/IP.

5

Para ello se accederá a Inicio  Panel de Control  Conexiones de Red  Conexiones de Area Local . Dentro de los interfaces que aparecen se seleccionará el de TCP/IP (casi siempre el último), y se accederá al botón de Propiedades.

Ilustración 3: Selección del componente TCP/IP Una vez dentro del menú se seleccionará la opción de Advanced, y dentro del menú resultante el submenú WINS. En dicho submenú seleccionaremos la casilla Disable NetBios over TCP/IP, como se ve en la Ilustración 4.

Ilustración 4: Deshabilitación de NetBIOS sobre TCP/IP Una ver realizados estos cambios no deberían verse activos los puertos 137 y 139, responsables de NetBIOS bajo TCP/IP (puede verse lanzando un CMD y ejecutando “netstat –an | more”. Antes de deshabilitar NetBIOS, comprueba que los puertos 139, 137 y 138 están abiertos. ¿A qué protocolo están asociados? Una vez comprobado, deshabilita NetBIOS. Vuelve a comprobar los puertos. Si todo ha ido bien, ahora no deberían aparecer en la lista. 6

1.4.

Gestión de cuentas de usuario

Para acceder a la interfaz encargada de la gestión de las cuentas de usuario del equipo se deberá lanzar la herramienta de Administración del Equipo mediante Inicio  Panel de Control  Herramientas Administrativas  Administración del equipo. Se seleccionará a continuación dentro de la herramienta el menú de Usuarios locales y grupos.

Ilustración 5: Gestión de cuentas de usuario Se deberán eliminar o deshabilitar todas aquellas cuentas que no tengan un uso específico en el sistema (sobre todo la cuenta de Invitado ). Se recomienda a su vez la creación de una segunda cuenta con privilegios de Administrador sobre el equipo y su utilización habitual en lugar de la original (para de esta forma poder distinguir intentos de acceso a dicha cuenta). A continuación se generarán los grupos de usuarios y las cuentas definidas al inicio de la instalación. Todas las cuentas se pondrán con una contraseña diferente y se obligará al usuario a cambiarla la primera vez que se autentique ante el equipo. Borra las cuentas que no veas necesarias y crea una, llamada criptosec, con permisos de administrador y login y password. Si no puedes hacerlo porque falla algo, modifica lo que creas conveniente para llevar a cabo la tarea.

1.5.

Activación de mecanismos de log del sistema

Aunque el propio Windows XP mantiene unos ciertos logs del sistema, es recomendable habilitar una serie de mecanismos de registro adicionales, que permitan tener un control más granular sobre los sucesos del sistema. Para acceder a dicha configuración se deberá lanzar la herramienta Directiva de Seguridad Local, disponible en Inicio  Panel de Control  Herramientas Administrativas, bajo el submenú Directivas locales  Directivas de auditoria.

7

Ilustración 6: Control de los items de log del sistema. Se recomienda configurar los permisos como se indica en la ilustración (los no habilitados son a causa de la gran cantidad de registros que pueden generar). Activa los logs tal y como se indica en la ilustración 6. Cambia de usuario y entra en el sistema como criptosec. Una vez dentro, sal cerrando sesión y vuelve a entrar como práctica. A continuación revisa los logs que se han generado (para ver los logs, se ha de ir al visor de sucesos que se encuentra en herramientas administrativas).

1.6.

Políticas de seguridad genéricas

Las políticas de seguridad son un conjunto de medidas destinadas a garantizar un elevado nivel de seguridad dentro del equipo y agrupadas por grupos de objetivos comunes. Dichas políticas son accesibles de forma parcial desde la herramienta de Directivas de Seguridad Local, accesible a través de Inicio  Panel de Control  Herramientas Administrativas  Directivas de Seguridad Local. Son especialmente interesantes las Directivas de Cuenta y las Directivas Locales.

Ilustración 7: Políticas de Seguridad Locales

8

Deberán revisarse todas las opciones existentes en dichos submenús (sobre todo respecto a las referentes a gestión de contraseñas y asignación de permisos base). Haz que la cuenta de criptosec se bloquee después de 3 intentos y restablecerla después de 2 minutos. Comprueba cómo realmente se bloquea. a en este apartado.

1.7.

Deshabilitar Lan Manager / Habilitar NTLMv2

El protocolo LAN Manager es altamente vulnerable a ataques de intercepción y fuerza bruta, por lo que su uso únicamente está justificado en redes heterogéneas en las que se deban conectar equipos Windows 95 y 98. En redes puramente con Windows 2000 y XP (Windows NT también lo soporta con el SP4 o superior) se recomienda encarecidamente el emplear NTLMv2, que es mucho más robusto. Para deshabilitar el LAN Manager y habilitar NTLMv2 se deberán acceder a la Directiva de Seguridad Local  Directivas Locales  Opciones de Seguridad, y cambiar los siguientes valores : -

Seguridad de Redes : Nivel de autenticación de LAN Manager  Enviar solo respuesta NTLMv2 / Rechazar LM.

-

Seguridad de Redes : Seguridad mínima de sesión para (Clientes | Servidores)  Marcar las cuatro opciones.

Desactiva LAN Manager y habilita NTLMv2, tal y como se explica en este punto.

1.8.

Permisos del sistema de ficheros

Dado que el sistema de ficheros NTFS permite el establecer ACLs (Access Control Lists o Listas de Control de Acceso), será recomendable que se establezcan los controles necesarios para que cada usuario solo pueda acceder a la información que le sea necesaria. Es posible crear una ACL sobre una carpeta o fichero pulsando con el botón derecho y accediendo a “Propiedades  Seguridad” (requiere que la partición sea NTFS, no funcionará sobre particiones FAT o FAT32). Inicialmente no se encuentra habilitada la vista de la pestaña de seguridad, por lo que lo deberemos hacer si queremos utilizar estas funcionalidades. Para ello, en el menú herramientas de una ventana de archivos cualquiera  Herramientas  opciones de carpeta  Ver  Utilizar uso compartido simple de archivos  deseleccionar Habilitar la edición de permisos de ficheros para poder utilizarla.

9

1.9.

Protección de ciertos comandos del sistema

La penetración de un intruso en un sistema viene dada en gran parte de los casos por el aprovechamiento de una vulnerabilidad combinado con el uso de comandos del sistema (cmd.exe para lanzar un shell con privilegios, tftp.exe para cargar ficheros en el equipo, etc...). Se recomienda eliminar los permisos de ejecución de dichos archivos, y activarlos únicamente cuando sea necesario emplear la herramienta. En el caso de que sean comandos de gran utilización, se plantea el realizar una copia fuera del PATH habitual, y emplearlo de esta forma. Algunos de los comandos que pueden resultar peligrosos en manos de un intruso pueden ser: arp.exe

net.exe

regedit.exe

at.exe

netstat.exe

syskey.exe

cacls.exe

ping.exe

telnet.exe

cmd.exe

rcp.exe

tftp.exe

ftp.exe

rdisk.exe

tracert.exe

Tabla 2: Comandos de Windows 2000 a proteger Quita los permisos de ejecución en los comandos arp.exe y at.exe y comprueba que sucede ahora cuando los intentas ejecutar desde línea de comandos.

1.10. Gestión segura del equipo Se proponen (aunque fuera del entorno de esta práctica) los siguientes medios para la gestión segura de un equipo Windows 

Terminal Services: Sólo para Windows 2000 Server, Windows XP y Windows 2003. El sistema nativo de Windows, que incluye cifrado de la conexión.



OpenSSH : Válido para todos los SO Windows, y de código abierto. No ofrece entorno gráfico, pero ofrece la posibilidad de copia segura de ficheros.



Remote Administrator (comercial) : Válido para todos los SO Windows (no tienen porqué ser XP o de la gama de servidores).



PCAnywhere (comercial) : Válido para todos los SO Windows

1.11. Activación de visualización avanzada Una de las formas que tienen los virus para infectar un equipo es aprovecharse de la “doble extensión”. Un atacante coge un fichero .exe , lo renombra a .jpg.exe , y le cambia el icono por el de la extensión .jpg. Dado que Windows por defecto oculta la extensión

10

de los ficheros, el usuario recibirá un fichero con nombre “foto.jpg” (que en realidad será “foto.jpg.exe”), confiando en dicho fichero e infectando el equipo. Para protegernos de este tipo de ataques es posible dentro del Explorador de Windows desactivar esta capacidad accediendo a “Herramientas  Opciones de Carpeta  Ver”, y desactivando la opción de “Ocultar las extensiones de archivo para tipos de archivo conocidos”. En ese mismo menú, se recomienda desmarcar las opciones de “Ocultar archivos protegidos del sistema” y marcar la de “Mostrar todos los archivos y carpetas ocultos”. De esta forma limitaremos la capacidad de “esconderse” de posible código malicioso. Activa la visualización avanzada.

1.12. Activación del Salvapantallas En el caso de que el equipo sea accesible desde un teclado y pantalla, será necesario instalar un salvapantallas y activar la opción de protección por contraseña. De esta forma, pasado un tiempo de inactividad se bloqueará la sesión de forma automática. El salvapantallas puede activarse pulsando sobre la pantalla con el botón derecho y accediendo al menú de Properties  Screensaver.

Ilustración 10: Activación del salvapantallas Activa el salvapantallas.

11

Instalación del resto de aplicaciones

1.13.

En este punto se procederá a la instalación del resto de aplicaciones y servicios que se desea que ofrezca el equipo, cuidando en todo momento su correcta instalación y configuración (sobre todo en el caso del IIS ). Se vuelve a recordar la necesidad vital de aplicar el Service Pack junto con todos los últimos parches de forma previa a la puesta en producción del equipo (más de un programa o servicio tiene parches propios que no serán instalados hasta que no se instala dicho servicio). Se recomienda la instalación de los siguientes programas (o equivalentes) : 1. 2. 3. 4. 5. 6. 7. 8. 9.

Cortafuegos ( ZoneAlarm o Agnitum Oupost, por ejemplo). Antivirus (el que se desee). Ad-Aware (anti-spyware). HijackThis (Analizador del arranque de Windows). Pstools (analizadores de procesos). Process Explorer (alternativa al Administrador de Tareas). Fport (asocia programas a puertos abiertos. FileMon (monitoriza el acceso a programas). RegMon (monitoriza el acceso al registro de Windows).

12

2. Securización de un equipo con CentOS 5.4 Una vez instalado el Sistema Operativo de forma segura, es necesario realizar una serie de operaciones destinadas a la securización del mismo. En un principio el orden de realización de las mismas es indiferente, aunque se recomienda seguir el indicado ya que prioriza las tareas más importantes.

2.1. Instalación de parches y actualizaciones Toda pieza de software esta sujeta a la existencia de posibles fallos de programación o bugs. Algunos de ellos son únicamente molestos, pero otros pueden conllevar graves riesgos de seguridad para nuestro sistema. Es totalmente imprescindible tener el sistema actualizado con los últimos parches de seguridad. Dichos paquetes pueden ser descargados desde: http://ftp.gui.uva.es/sites/centos.org/5.4/updates/SRPMS/ aunque cada version de Linux tendrá su diferente URL. CentOS provee una herramienta para la automatización de la instalación de parches y software denominada yum. Gracias a yum, actualizar el SO es tan sencillo como : # yum update Este comando lanzará el sistema de actualización y descargará los paquetes necesarios para actualizar el sistema. Otras versiones de Linux tienen otros comandos (apt-get , up2date, etc … ), pero la filosofía es la misma. Es posible ejecutar yum de forma automatizada (viene por defecto) para que se ejecute cada noche y actualice el equipo. Yum tiene un interface gráfico, YumEx, que permite hacer aún más fácil las tareas de instalación y actualización de software (que puede instalarse con “yum install yumex”). No hace falta hacer nada en este apartado.

2.2. Creación de cuenta adicional de root Es altamente recomendable generar una segunda cuenta con permisos de superusuario en el sistema. De esta forma se mantiene una cuenta de seguridad en el caso de pérdida de la original (olvido de la contraseña, compromiso de la cuenta, etc ... ). Esta cuenta debería ser la usada en las tareas de administración habituales del equipo, ya que de esta forma cualquier intento de acceso a la cuenta de root podrá ser detectado fácilmente como un intento de intrusión.

13

Puede crearse una cuenta adicional con permisos de superusuario con los siguientes comandos : [root@localhost root]# useradd admin -g 0 -u 0 -o [root@localhost root]# passwd admin Changing password for user admin. New password: ********* Retype new password: ********* passwd: all authentication tokens updated successfully. [root@localhost root]# Crear una nueva cuenta de superusuario tal y como se indica anteriormente

2.3. Deshabilitación de servicios no deseados Uno de los primeros aspectos a tener en cuenta en la securización de un equipo consiste en la eliminación de los servicios no deseados. Se puede afirmar que un equipo que no ofrece servicios a la red hace prácticamente imposible que pueda ser atacado, por lo que la minimización de dichos servicios incrementa directamente la seguridad del equipo. Los servicios y procesos activos en el sistema pueden ser vistos con los siguientes comandos : •

netstat –an : Muestra tanto los puertos abiertos del sistema como las conexiones que está realizando.



ps –ef | more : Muestra los procesos activos en el sistema.



lsof | grep LISTEN : Muestra los procesos que mantienen conexiones activas en el sistema (de gran utilidad para averiguar qué proceso tiene abierto un puerto).

Puede encontrarse una lista con los servicios disponibles en el directorio /etc/rc.d/init.d/. En una instalación personalizada de Linux, los servicios básicos activos necesarios son los siguientes (luego tendremos que añadir yum y sshd como básicos) : crond network random syslog Deberán desactivarse el resto de servicios activos en el sistema esta operación puede realizarse mediante la herramienta setup de CentOS (accediendo al menú System Services ) , o de forma genérica accediendo al directorio con los servicios de arranque del sistema ( /etc/rc.d/rc3.d/ o /etc/rc.d/rc5.d/ , en función de si el arranque se realiza en modo texto o en modo gráfico, cosa que se puede comprobar con el comando runlevel). Dentro de dicho directorio se encuentran los distintos servicios disponibles en el arranque (véase Ilustración 1).

14

Ilustración 1: Servicios disponibles en el arranque Los servicios que empiezan por una “S” se iniciarán cuando se arranque el equipo, mientras que los que comienzan por una “K” serán desactivados. El número que se encuentra después de la inicial indica el orden por el que se inician o paran (muy importante a la hora de encender o apagar servicios que dependan de otros). Siguiendo estos pasos, la próxima vez que se arranque el equipo se iniciarán únicamente los servicios establecidos. Si se desea parar un servicio sin tener que reiniciar el equipo, puede hacerse invocando el script de control, situado en /etc/rc3.d/init.d/ . Por ejemplo, para parar los servicios de red ejecutaremos: /etc/rc3.d/init.d/network stop Una vez reiniciado el equipo, si se han desactivado todos los servicios superfluos no se debería tener ningún puerto abierto en el equipo ( premisa básica para establecer un perímetro de seguridad ). Identifica el runlevel y deshabilita los servicios snmpd y sendmail.

2.4. Eliminación de usuarios y grupos no necesarios Como ya se ha comentado, la información referente a los usuarios y grupos del sistema se encuentra recogida en los ficheros /etc/passwd y /etc/group. Para facilitar la gestión de los mismos, se recomienda eliminar todos los usuarios y grupos que no se consideren necesarios para el correcto funcionamiento del equipo. Los siguientes usuarios y grupos no son necesarios en un sistema Linux: Usuarios Adm lp

Grupos Adm Lp 15

Sync Shutdown Halt News Uucp Operator games

News Uucp Games Dip Pppusers Popusers slipusers

Dichos usuarios y grupos pueden ser eliminados del sistema mediante los comandos userdel y groupdel. Se verificará a continuación el borrado correcto de los usuarios visualizando los ficheros correspondientes. [Nota: Estos usuarios pueden variar en función de la distribución de Linux empleada, por lo que se deberá tomar como bueno el principio de “dejamos solo los usuarios que sirvan para algo”, y aplicarlo en consecuencia)]. Para deshabilitar temporalmente una cuenta, podemos hacerlo modificando el fichero /etc/passwd admin:x:0:0::/home/admin:/bin/bash En lugar de x, poned * y la cuenta se deshabilitará. Elimina los usuarios que no son necesarios en un sistema Linux. Deshabilita la cuenta de admin que has creado en el punto 2.2 y comprueba que está deshabilitada. Después, habilítala otra vez.

2.5. Protección de GRUB La seguridad física es un factor muy importante para nuestro sistema. Si un intruso logra situarse delante de nuestro equipo y reiniciarlo, cuando obtenga el prompt del GRUB, tan solo tiene que seguir estos pasos: 1) Seleccionar el kernel con el que se quiere arrancar y pulsar “e” para editar el arranque. 2) Seleccionar la línea que contiene el kernel entre las que se ofrecen y volver a pulsar “e” para editarla. 3) Ir al final de la línea y añadir la palabra “single” (con un espacio delante) y pulsar “Enter” para volver al menú anterior. 4) Pulsar “b” (boot) para arrancar con este kernel. Con estas órdenes logrará arrancar el equipo en modo monousuario, y obtendrá un shell de superusuario sin tener que introducir contraseña alguna, vulnerando de forma limpia y totalmente sencilla nuestro sistema (si el gestor fuera LILO es todavía más sencillo ya que únicamente hay que teclear “Linux single” en el arranque). Para proteger el gestor de arranque, podemos crear una contraseña para GRUB con el comando: # grub-md5-crypt

16

Password: Retype password: $1$NYoR71$Sgv6pxQ6LG4GXpfihIJyL0 La última línea es el hash md5 de la contraseña introducida. Tendremos que copiarla e insertarla en el fichero /boot/grub/menu.lst de la forma siguiente: default=0 timeout=10 password --md5 $1$NYoR71$Sgv6pxQ6LG4GXpfihIJyL0 splashimage=(hd0,0)/grub/splash.xpm.gz title Fedora Core (2.6.10-1.14_FC2smp) root (hd0,0) kernel /vmlinuz-2.6.10-1.14_FC2smp ro root=/dev/md2 rhgb quiet initrd /initrd-2.6.10-1.14_FC2smp.img

De esta forma, cada vez que se quiera editar la secuencia de arranque será necesario introducir la contraseña especificada. Estas medidas tendrán que ser complementadas con la modificación de la configuración de la BIOS para que únicamente pueda arrancarse desde el disco duro del sistema (si cualquier usuario o intruso puede arrancar desde un CDROM o disquete, la situación vuelve a la inseguridad inicial). Reinicia el SO y cambia la contraseña tal y como aquí se explica. Para que no tengas que preguntarla en la siguiente sesión, la nueva contraseña de root será qwerty. Establece una contraseña para el GRUB (tambien qwerty) y comprueba que ya no puedes cambiar el inicio si no introduces la contraseña.

2.6. Instalar OpenSSH ( Secure Shell ) En la mayoría de los casos será necesario disponer de un medio de administración remota de los equipos (por estar los mismos en otra localización física, por no tener monitores por razones de espacio, etc ...). Es necesario disponer de un medio de administración que nos ofrezca unas garantías de seguridad suficientes. El medio de administración más empleado en la antigüedad es telnet, que tiene graves problemas de seguridad, ya que no cifra ni la información de autenticación (el nombre de usuario y la contraseña) ni la comunicación en sí misma, además de ser vulnerable a ataques de secuestro o hijacking de la conexión. La alternativa a telnet es el OpenSSH ( Secure Shell ). OpenSSH es la herramienta a emplear para administrar de forma remota equipos Unix / Linux con seguridad. OpenSSH cifra tanto la información de autenticación (el nombre de usuario y la contraseña) como el tráfico de la sesión. De forma añadida, permite establecer autenticación mediante clave pública además de mediante contraseña, lo que añade un nivel extra de seguridad al sistema.

17

OpenSSH incluye también un servicio de copiado de ficheros de forma segura denominado scp, que permite realizar transferencia de ficheros entre dos equipos ofreciendo confidencialidad, autenticidad e integridad de la información transmitida, así como un sustituto seguro de los comando “r” de Unix. OpenSSH viene instalado por defecto con cualquier instalación de Linux (si no está instalado, puede ejecutarse “yum –y install openshh-server” o descargando el código fuente de la web de OpenSSH). Se puede verificar el correcto funcionamiento con : ssh –l root localhost Llegados a este punto tenemos el servicio SSH activo y funcionando de forma correcta. Sin embargo, es recomendable modificar la configuración tanto del cliente como del servidor para optimizar la seguridad del mismo. Los ficheros de configuración del SSH son los siguientes : • •

/etc/ssh/ssh_config (configuración del cliente). /etc/ssh/sshd_config (configuración del demonio).

Valores interesantes ssh_config : •

Las opciones son autoexplicativas: Es MUY importante asegurar que no se ha activado la compatibilidad con la versión 1 del ssh o ssh1 (que tiene graves fallos de seguridad).

Valores interesantes sshd_config: •

Allowed Authentications: Permite la autenticación por distintos medios (password y/o clave público).



Required Authentications: Exige los niveles de autenticación especificados.

Otra de las características sumamente útiles del SSH es la posibilidad de copiar ficheros entre dos máquina de forma segura, todo ello integrado dentro del protocolo. Dicha capacidad puede ser utilizada dentro de un shell script para realizar copias de seguridad de forma segura a través de Internet. Ejemplos de uso de scp2 pueden ser: •

scp [email protected]:prueba.txt ./  Copia el fichero de la máquina remota a la local.



scp ./prueba.txt [email protected]:  Copia el fichero a la máquina remota desde la máquina local.

Como ya se ha podido ver con anterioridad, SSH soporta varios métodos de autenticación, siendo el de clave pública uno de los más empleados gracias a las posibilidades de administración que facilita. Mediante el uso de clave pública es posible: •

Aumentar la seguridad de la comunicación al exigir dos factores (contraseña de usuario más contraseña de la clave privada y su tenencia).

18



Realizar tareas desatendidas de administración sin tener que poner contraseñas en los scripts (realizando la autenticación únicamente mediante tenencia de la clave privada).

Otra de las capacidades interesantes del SSH es la de redirigir o “tunelizar” sesiones X a través de una conexión cifrada, ofreciendo seguridad a toda la comunicación. Para ello será necesario habilitar en el servidor la opción de AllowX11Forwarding (viene habilitada por defecto). Será necesario habilitar a su vez dicha opción en el cliente. Se ofrecen las configuraciones para varios clientes de SSH: •

SecureCrt : se tendrá que habilitar esta opción accediendo (con una sesión SSH ya abierta) a Option  Session Options  Connection  Advanced  Port Forwarding  Forward X11 Packets.



Putty : Se tendrá que acceder a Connection  SSH  Auth  Enable X11 Forwarding



SSH : Se deberá eliminar el comentario de la línea “X11Forwarding yes” en el fichero /etc/ssh/sshd_config.

Como nota de carácter informativo, el SSH intercambia las claves con el cliente cada hora, acción no soportada por muchos clientes de SSH para Windows (el SecureCRT o el Putty, por ejemplo), lo que provoca una desconexión. Para desactivar esta funcionalidad de reintercambio de claves debemos modificar el valor de RekeyIntervalSeconds de 3600 a 0 en el fichero /etc/sshd_config. No hace falta hacer nada en este apartado.

2.7. Registro de accesos o logging Los registros de actividad o logs de un sistema son una parte fundamental para la seguridad del mismo, ya que permiten detectar posibles irregularidades en el funcionamiento del mismo, así como responder con rapidez a posibles intentos de intrusión. La tarea de recopilar la información de lo que ocurre en el sistema se encarga al demonio syslogd, y los elementos de los que recoge información se encuentran descritos en el fichero /etc/syslog.conf. Fedora Core 6 recopila la información necesaria del sistema desde un punto de vista de seguridad (accesos al sistema, mensajes de error, etc ... ). Sin embargo, se pueden realizar varias recomendaciones de seguridad: •

Establecer permisos de lectura para los directorios de logs: No es necesario que el resto de usuarios pueda leer ( y mucho menos modificar ) los logs del sistema. Se deberá modificar el conjunto de permisos de la forma siguiente: [root@fenix log]# chmod -R 600 *

19



Enviar la información de log a otro equipo: Es posible hacer que Linux envie la información recogida a un equipo remoto, haciendo mucho más difícil su modificación (un intruso que desee modificar los logs tendrá que hacerlo en la máquina inicial, percatarse de la existencia de la máquina secundaria, y atacar esta de forma exitosa). Para activar esta capacidad de logging remoto será necesario modificar ambos ficheros de configuración del syslog (en el cliente y en el servidor). En el equipo cliente se deberá añadir una línea por cada item que se quiera transferir al equipo remoto, por ejemplo: # The authpriv file has restricted access. authpriv.* /var/log/secure authpriv.* @192.168.18.4 En el equipo remoto deberá indicarse al demonio syslogd que esté a la escucha de entregas de información de log (el syslogd siempre envía la información de log al puerto 514 UDP de la máquina destino ). Para ello se deberá modificar el fichero /etc/sysconfig/syslog de la forma siguiente: SYSLOGD_OPTIONS="-r -m 0 “ Se deberá reiniciar el demonio syslogd para que los cambios surtan efecto.

De la misma forma, es recomendable el uso de algún programa de análisis de log automatizado, como pueden ser: Logwatch: http://www.logwatch.org/tabs/download/ (por defecto en FC6) Swatch : http://www.oit.ucsb.edu/~eta/swatch/ Echa un vistazo al fichero /var/log/messages. ¿Qué tipo de logs se almacenan aquí según en fichero de configuración?

2.8. Bastille Bastille es una potente herramienta de seguridad del entorno Linux dirigida principalmente a la distribución Red Hat. constituyendo una herramienta ideal para una securización rápida de un sistema (y ofreciendo soporte para otros sistemas, Fedora Core entre ellos). Pueden obtenerse las instrucciones de descarga e instalación de Bastille Linux desde: http://www.bastille-linux.org/running_bastille_on.htm Una vez instalado, el comando bastille nos mostrará el entorno gráfico de Bastille, a través del cual y de forma sencilla se podrán realizar diversas modificaciones de seguridad a nuestro sistema operativo.

20

Gran parte de dichas modificaciones se cubren en este capítulo, por lo que se preferirá usar el Bastille una vez estudiadas en profundidad (y sin recurrir a una herramienta tan específica). Uno de los usos más frecuentes del Bastille es la creación de una plantilla de seguridad, que pueda ser aplicada de forma automatizada a un gran numero de equipos (Bastille permite grabar la configuración de seguridad a aplicar en un fichero). [Nota: Bastille no está todavía preparado para funcionar correctamente para FC6, por lo que dará un error al inicio. Sin embargo, cambiando el fichero /etc/redhat-release y substituyendo en la línea de versión el 6 por un 5 “engañaremos” lo suficiente al programa como para poder ejecutarlo]. Este punto es meramente informativo, por lo que no hay que realizar ninguna experiencia.

2.9. Programas SUID / SGID En algunas ocasiones, algunos programas necesitan de permisos de superusuario para realizar algunas de sus funciones. Para permitir el funcionamiento de estos programas se desarrolló un sistema de adopción de privilegios que se denomina SUID (si es un usuario lo que se adopta) o SGID (si es un grupo). Un ejemplo de estos programas es el comando passwd, que permite a los usuarios cambiar su contraseña (y que actúa sobre el fichero /etc/shadow, accesible solo a root ). Un programa SUID/SGID puede reconocerse por la letra “s” en su listado de permisos: -r-s--x--x

1 root

root

15104 mar 14 01:44 /usr/bin/passwd

El problema existente con los programas SUID/SGID radica en su programación. Dado que estos programas tienen acceso a permisos de superusuario, un fallo en su programación puede provocar que sean usados de forma perniciosa, permitiendo a un intruso ganar privilegios en el sistema. Este problema es aun más grave en el uso de shell scripts, ya que suelen estar programados de forma “casera” y pueden tener fácilmente problemas de seguridad. Se deberán buscar todos los programas que tengan estos bits activados, y determinar su utilidad, pudiéndose para eso emplear los siguientes comandos: [root@fenix root]# find / -perm /u+s –print > suid.txt [root@fenix root]# find / -perm /g+s –print > sgid.txt En caso de no considerarse necesario que los usuarios tengan acceso a dichos programas, se deberá eliminar el bit “s” mediante el comando chmod. Un ejemplo sobre el comando ping puede ser: [root@fenix root]# chmod -s /bin/ping Busca los progranas con el bit s activo tal y como se explica anteriormente. Quitar el bit s del ping.

21

2.10. Permisos en sistemas de ficheros Un directorio o un fichero con permisos de escritura para todos los usuarios puede ser un problema de seguridad grave, ya que permite a un posible intruso tanto modificar dichos ficheros como borrar y añadir ficheros a un directorio con total impunidad (pudiendo colocar programas de hacking o simplemente, pornografía o warez ). Se recomienda buscar dichos directorios y ficheros, y proceder a la modificación de sus permisos o a su eliminación. Esta operación puede realizarse con los siguientes comandos: [root@fenix root]# find -perm /g+w -print [root@fenix root]# find -perm /o+w -print Para cambiar los permisos de dichos ficheros, se emplea el comando chmod: [root@fenix root]# chmod 744 prueba [root@fenix root]# chmod 755 prueba [root@fenix root]# chmod 700 prueba

(permisos totales al creador, de lectura para el resto de usuarios). (permisos totales al creador, lectura y ejecución al resto). (permisos totales al creador, sin acceso para el resto de usuarios).

Los directorios temporales como /tmp tienen activada una característica que se denomina sticky bit ( “bit pegajoso” ), que hace que solo los propietarios de los ficheros puedan eliminar o crear dichos ficheros en el directorio. También es recomendable actuar sobre el directorio que contiene todos los scripts arranque del sistema, /etc/rc.d/init.d. De forma inicial, el directorio tiene permisos lectura para todos los usuarios, lo que puede resultar en un riesgo de seguridad tenemos scripts personalizados que puedan tener contraseñas, por ejemplo, simplemente por ocultar qué es lo que se arranca en nuestro equipo).

de de (si o

Se recomienda el cambiar los permisos de dicho directorio para que no sean de lectura mediante el comando chmod: [root@fenix rc2.d]# chmod 700 /etc/rc.d/init.d/* De la misma forma, se recomienda asegurar que todos los ficheros creados por root (y por el resto de usuarios) tengan una configuración de seguridad inicial que no de permisos al resto de usuarios mediante la modificación de la máscara de permisos inicial o umask. Para ello deberá añadirse la siguiente línea a los ficheros /etc/profile , /etc/csh.login , /etc/csh.cshrc y /etc/bashrc: umask 022 Busca los ficheros con permisos de escritura, tal y como se explica anteriormente. Cambia los permisos de /etc/rc.d/init.d tal y como se explica. ¿Qué es lo que haría un umask 077? (http://es.wikipedia.org/wiki/Umask)

22

2.11. Activar políticas de contraseñas Se deberán activar las políticas de contraseñas pertinentes para proteger el sistema. Los parámetros más frecuentes (longitud de contraseñas, expiración de contraseña, mínimo número de días entre cambios de contraseñas), se encuentran en el fichero /etc/login.defs. Los parámetros recomendados son los siguientes: PASS_MAX_DAYS 60 PASS_MIN_DAYS 1 PASS_MIN_LEN 8 PASS_WARN_AGE 7 Modifica el fichero según se indica en este punto.

2.12. Banner de inicio al sistema Cuando se entra a un sistema mediante un login estándar o mediante un acceso vía telnet o ssh , suele aparecer una cierta información de entrada al sistema, como puede ser la versión del sistema operativo o la serie del kernel empleada. De la misma forma, es recomendable incluir un aviso legal a la entrada del sistema que avise de la propiedad privada del mismo. Para ello, se deberán modificar los ficheros /etc/motd o /etc/issue (en función del Linux empleado), introduciendo el mensaje que se estime oportuno. Modifica los ficheros poniendo lo que creas oportuno. Comprueba que funciona haciendo un ssh a otra máquina Fedora. 2.13.

Montado seguro de particiones

Linux ofrece diversas opciones de protección adicional para las particiones de un equipo, que pueden ser aprovechadas para aumentar la seguridad del sistema. Dichas opciones son las siguientes: • • •

nosuid : Impide por defecto la ejecución con privilegios adicionales de los programas con bits SUID/SGID. noexec : Impide la ejecución de programas ejecutables en la partición. ro: Hace que todos los ficheros de la partición sean de solo lectura

Se recomienda el uso de estas opciones con precaución. Para activar dichas características se tendrá que modificar el fichero /etc/fstab y añadir las opciones necesarias. Un ejemplo puede ser el siguiente: 23

/dev/sda3 /tmp ext2 defaults,rw,nosuid,nodev,noexec 1 2 /dev/sda4 /home ext2 defaults,ro,nosuid,noexec 1 2 En este punto no hace falta realizar nada.

2.14. Deshabilitar Ctrl + Alt + Supr Linux viene con la capacidad de reiniciar el sistema “al estilo Windows” pulsando de forma simultánea la combinación de teclas “Ctrl + Alt + Supr “, aun sin tener iniciada ninguna sesión de usuario (permitiendo realizar un ataque contra el LILO, o simplemente disrumpiendo el funcionamiento del equipo). Para desactivar esta capacidad, se deberá acceder al fichero /etc/inittab, y comentar la siguiente línea con un símbolo “#”: # ca::ctrlaltdel:/sbin/shutdown -t3 -r now Será necesario a continuación indicar al demonio init que relea su configuración mediante el comando: [root@fenix root]# /sbin/init q Deshabilita ctrl.+Alt+Supr tal como se explica en este punto.

2.15. Protección del protocolo TCP/IP Existen varias formas de aumentar la resistencia del equipo ante ataques basados en el protocolo TCP/IP (sobre todo en lo referente a ataques de denegación de servicio o DoS). Todas ellas se basan en la activación de ciertas medidas de seguridad en el fichero /etc/sysctl.conf, que estudiamos a continuación : Evitar que el equipo actúe como router : net.ipv4.ip_forward = 0 Habilitar protección contra IP spoofing: net.ipv4.conf.all.rp_filter = 1 Evitar que el equipo acepte icmp redirects net.ipv4.conf.all.accept_redirects = 0 Habilitar protección TCP SYN: net.ipv4.tcp_syncookies = 1 Modifica el fichero tal y como se explica en este punto.

24

2.16. Limitar el acceso a programas instaladores Dentro del equipo existen una serie de programas que pueden permitirnos la instalación sencilla de nuevo software en el mismo. Estos programas instaladores pueden ser usados por un posible intruso para instalar programas perniciosos para nuestro sistema, por lo que se recomienda que, una vez instalado todo el software que necesite el equipo para funcionar, se pongan fuera del alcance de los usuarios. Es necesario afirmar que esta medida simplemente nos hará ganar tiempo, ya que es posible descargar binarios directamente en el equipo, o descargar los mismos programas de instalación). Las dos opciones más recomendadas pueden ser mover el programa instalador a un disquete, y copiarlo al equipo cada vez que se quiera realizar una instalación, o simplemente cifrarlo en el propio disco con el GnuPG. Los programas más empleados, y que por tanto deberían ser protegidos, son gcc, yum y rpm, situados en: /bin/rpm /usr/bin/gcc /usr/bin/yum En este punto no hace falta hacer nada.

2.17. Limitar el uso de recursos del sistema Como medida adicional antes ataques de DoS o denegación de servicio, es recomendable limitar el acceso a los recursos del sistema por parte de los distintos procesos que se ejecutan en el mismo. Este control se realiza a través del fichero /etc/security/limits.conf. Nos interesa limitar en primer lugar el número de procesos y la cantidad de memoria asignada a cada usuario, siendo para ello añadir las siguientes líneas. * hard nproc 20 * hard rss 5000 La primera línea limita el número de procesos disponibles para cada usuario a 20 (así se evita que un usuario malicioso lance procesos de forma indiscriminada, agotando la capacidad del sistema). La segunda línea especifica la cantidad de memoria máxima que debería estar a disposición de un usuario, que solo debería aplicarse a equipos dedicados a trabajo multiusuario (en equipos servidores, esta línea limitaría enormemente la capacidad de trabajo de los servicios ofrecidos, y debería cambiarse a un límite similar a 100000 ). Otra forma de ataque de DoS realizable es mediante la generación de volcados de memoria o cores. Dichos ficheros suelen ocupar un espacio considerable en el disco

25

duro, por lo que pueden saturar con facilidad el espacio, pudiendo disrumpir la actividad del equipo. De forma añadida, estos volcados de memoria pueden ser analizados por un intruso para extraer información sensible (por ejemplo, contraseñas que se hayan quedado almacenadas en la memoria del equipo). Se recomienda eliminar la capacidad de generar ficheros core añadiendo la siguiente línea al fichero /etc/limits.conf/ * hard core 0 Edita el archivo de configuración y haz lo que se indica en este punto.

2.18. sudo La administración de un equipo informático suele recaer en manos de una sola persona, o de un grupo de administradores en el caso de una red amplia de equipos. Sin embargo, puede ser necesario en algunos casos que usuarios del sistema deban tener acceso a comandos o ficheros limitados únicamente al superusuario. En lugar de ofrecer acceso total a los poderes de root, o de facilitar la contraseña del mismo (ambas opciones no son recomendables en absoluto desde una perspectiva de seguridad), se puede recurrir a la herramienta SUDO para ofrecer dicho acceso limitado y controlado. SUDO viene controlado por su fichero de configuración /etc/sudores, que debe ser modificado con el comando /usr/sbin/visudo. La sintaxis más frecuente es la siguiente: User1 ALL=(ALL) ALL Esta orden da al usuario user1 el poder de ejecutar cualquier comando como si fuera root. User1 ALL= /bin/halt,/bin/ping Esta orden permite al usuario user1 ejecutar únicamente los comandos halt y ping. Se recomienda encarecidamente guardar un log estricto de todos los accesos al comando sudo (para poder controlar de esta forma quién ha realizado qué operaciones). Para ello se activará la siguiente línea: Defaults logfile=/var/log/sudolog Modifica el fichero para que se hagan logs.

26

2.19. Chroot Una estrategia de seguridad bastante empleada en la actualidad consiste en la aplicación del comando chroot ( change root o cambio de raíz). La correcta aplicación de este comando genera un subsistema de ficheros en el directorio especificado, de forma que dicho directorio es visto por el usuario como el raiz ( “ / “ ) del sistema. Con el chroot se consigue “encerrar” al usuario dentro de un entorno totalmente controlado, evitando que pueda causar daños al sistema. Es necesario afirmar que esta estrategia no es de aplicación trivial (suele dar más problemas de implementación que beneficios de seguridad) , por lo que se suele usar únicamente en sistemas de muy alta seguridad.

En este punto no hace falta hacer nada.

27

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.