1. Conceptos básicos de redes y sistemas operativos
Las redes están constituidas por varias computadoras interconectadas por medio de:
1.1 Protocolos
Reglas para suministrar un lenguaje formal que permita que todos los equipos, sin importar su tecnología, puedan comunicarse entre sí. Uno de los más importantes protocolos es el TCP/IP, el cual “proporciona transmisión fiable de paquetes de datos sobre redes. El nombre TCP/IP proviene de dos protocolos importantes de la familia, el Transmission Control Protocol (TCP) y el Internet Protocol (IP). Todos juntos llegan a ser más de 100 protocolos diferentes definidos en este conjunto”1. Este protocolo hoy en día permite la utilización de diversos servicios en la red como: transmisión de correo electrónico, transferencia de archivos, Web, etc.
1.2 Los puertos
Un puerto se representa por un valor de 16 bits que indica al servidor a cual servicio se le está haciendo una petición.
Por convención, los puertos se encuentran divididos en tres rangos:
- Del 0 al 1023: Puertos denominados “Well Known”. Su uso por convención requiere de privilegios de Superusuario.
- Del 1024 al 49151: Registrados y asignados dinámicamente.
- Del 49152 al 65535: Puertos privados.
La tabla que se muestra a continuación presenta un listado de algunos de los puertos más utilizados:
1.3 Nociones de Sistema Operativo Linux
Linux es un sistema operativo basado en Unix que se distribuye bajo licencia GNU (Ver anexo 1). Este sistema operativo ha sido diseñado y programado por multitud de programadores alrededor del mundo y su núcleo sigue en continuo desarrollo.
El sistema de archivos de Linux tiene una estructura definida según su propósito:
2. ¿Qué es seguridad?
Seguridad es toda aquella acción que tiende a garantizar el cumplimiento de cuatro objetivos importantes:
- Confidencialidad: Los objetos de un sistema serán accedidos únicamente por entidades autorizadas.
- Integridad: Los objetos sólo pueden ser modificados por entidades autorizadas y de manera controlada.
- Disponibilidad: Los objetos deben permanecer accesibles a entidades autorizadas.
- Autenticación: Verificar la identidad del emisor y del receptor.
Los tres elementos que se deben proteger son el hardware (servidor, cableado, etc.), el software (sistema operativo, aplicaciones, etc.) y los datos (documentos, bases de datos, etc.). Las amenazas a las que pueden estar expuestos estos elementos son:
- Interrupción: Un recurso del sistema es destruido o se vuelve no disponible. También es denominado Negación de Servicio.
- Intercepción: Una entidad no autorizada consigue acceso a un recurso.
- Modificación: Una entidad no autorizada no solo consigue acceder a un recurso, sino que es capaz de manipularlo. Este es un ataque contra la integridad.
- Fabricación: Una entidad no autorizada inserta objetos falsificados en el sistema.
2.1 Políticas de seguridad
Para proteger un sistema, se debe realizar un análisis de las amenazas potenciales que éste puede sufrir, las pérdidas que podrían generar y la probabilidad de su ocurrencia. Este estudio genera las políticas de seguridad que definen las responsabilidades y reglas a seguir para evitar tales amenazas o minimizar sus efectos en caso de que se realicen.
2.2 Mecanismos de Seguridad
Para implementar estas políticas de seguridad se utiliza lo que se conoce como mecanismos de seguridad.
Los mecanismos de seguridad se dividen en tres grupos:
- Prevención: Aquellos que aumentan la seguridad de un sistema durante su funcionamiento normal.
- Detección: Aquellos que se utilizan para detectar violaciones de la seguridad o intentos de violación.
- Recuperación: Aquellos que se aplican cuando el sistema ha sido atacado.
En este documento se hará énfasis en los mecanismos de prevención y detección.
Los mecanismos de prevención más usados en Unix y Linux son los siguientes:
2.2.1 Cifrado
Las técnicas de encripción son fundamentales para garantizar la seguridad de la información.
El cifrado garantiza que la información no es inteligible para individuos, entidades o procesos no autorizados (confidencialidad). Consiste en transformar un texto claro mediante un proceso matemático en un texto cifrado.
2.2.2 Tráfico de relleno
Consiste en enviar tráfico espurio junto con los datos válidos para que el atacante no pueda reconocer los datos útiles.
2.2.3 Control de enrutamiento
Permite enviar información por zonas clasificadas. Así mismo permite solicitar otras rutas en caso de violaciones de seguridad.
2.2.4 Unicidad
Consiste en añadir a los datos un número de secuencia, la fecha y hora, un número aleatorio o alguna combinación de los anteriores, que se incluyen en la firma digital o integridad de datos.
Estos mecanismos poseen tres componentes principales:
- Una información secreta, por ejemplo, las contraseñas.
- Un conjunto de algoritmos, para llevar a cabo el cifrado.
- Un conjunto de procedimientos, que definen cómo se usarán los algoritmos.
2.2.5 Gestión de claves
Abarca la generación, distribución, almacenamiento, tiempo de vida, destrucción y aplicación de las claves de acuerdo con una política de seguridad.
Algunos aspectos a considerar para la elección de las claves son:
- Tamaño de la clave.
- Claves aleatorias.
- Distribución de las claves.
- Tiempo de vida de claves
2.2.6 Cortafuegos (firewalls)
Un Firewall es un sistema o grupo de sistemas ubicado entre dos redes con la tarea de establecer una política de control de acceso entre éstas. Es decir, es un sistema empleado para proteger una red del resto de las redes.
En todo Firewall existen tres componentes básicos para los que deben ser implementados mecanismos de seguridad: el filtrado de paquetes, el proxy de aplicación y la monitorización y detección de actividad sospechosa.
2.2.6.1 Filtrado de Paquetes (choke)
Su funcionamiento es generalmente muy simple: se analiza la cabecera de cada paquete y en función de una serie de reglas ya establecidas, la trama es bloqueada o se le permite continuar.
El filtrado de paquetes se puede basar en cualquiera de los siguientes criterios:
- Protocolos utilizados
- Dirección IP de origen y de destino
- Puerto TCP-UDP de origen y destino
Algunas implementaciones de filtrado permiten además especificar reglas basadas en la interfaz del router por donde se reenvía el paquete y también en la interfaz por donde llega a nuestra red.
Estas reglas se especifican generalmente como una tabla de condiciones y acciones que se consulta en un orden dado hasta encontrar una regla que permita tomar una decisión sobre el bloqueo o el reenvío de la trama.
Una tabla de reglas de filtrado podría tener la siguiente forma:
Si al Firewall donde está definida esta política llega un paquete proveniente de la red 192.169.0.0, su paso sería bloqueado sin importar su destino. Igual sucede si llega información a la subred 10.10.11.0, su paso sería bloqueado sin importar su origen.
El orden de análisis de la tabla es muy importante para poder definir una buena política de seguridad. En la tabla anterior por ejemplo, podemos ver qué sucede si llega un paquete desde la red 192.168.0.0 a la subred 10.10.10.0. Una de las reglas dice que todos los paquetes provenientes de la red 192.168.0.0 son permitidos, mientras que la siguiente regla indica que cualquier paquete que llegue a la subred 10.10.10.0 debe ser bloqueado. Si la tabla es leída de arriba hacia abajo, el paquete podría pasar, ya que la tabla es consultada hasta que se encuentra una regla que se ajuste a la cabecera del paquete. Si la tabla es consultada de abajo hacia arriba, el paquete sería bloqueado. Es por esto que las reglas de filtrado deben ser muy claras y sencillas.
2.2.6.2 Proxy de Aplicación
Es un software encargado de filtrar las conexiones a servicios como FTP, Telnet, etc. La máquina donde es ejecutada esta aplicación es llamada Host Bastión o Gateway de Aplicación.
Los servicios proxy permiten únicamente la utilización de servicios para los que existe un proxy, así que, si el Gateway posee proxy únicamente para HTTP y FTP, el resto de servicios no estarán disponibles para nadie. Además, es posible filtrar protocolos basándose en algo más que la cabecera de las tramas. Por ejemplo, se puede tener habilitado un servicio como FTP pero con órdenes restringidas. Además, los Gateway permiten cierto grado de ocultación de la topología de red, facilita la autenticación y la auditoría de tráfico sospechoso antes de alcanzar al host destino. Además, simplifica considerablemente las reglas de filtrado implementadas en el router.
2.2.6.3 Monitoreo de la Actividad
El monitoreo de la actividad del Firewall es indispensable para la seguridad de la red, ya que así se podrá obtener información acerca de los intentos de ataque a los que puede estar sometido.
2.2.6.4 Arquitecturas de firewalls
- Firewalls de Filtrado de paquetes: Consiste en utilizar un router y aprovechar su capacidad de filtrar paquetes (como ya fue explicado). Este tipo de Firewalls trabajan en los niveles de red y de transporte del modelo OSI y tienen la ventaja de ser bastante económicos, pero traen consigo una serie de desventajas como son:
- No protege las capas superiores
- No son capaces de esconder la topología de la red protegida
- No disponen de un buen sistema de monitoreo, por lo que muchas veces no se puede determinar si el router está siendo atacado
- No soportan políticas de seguridad complejas como autentificación de usuarios
- Dual-Homed Host: Está formado por máquinas Unix equipadas con dos o más tarjetas de red. En una de las tarjetas se conecta la red interna y en la otra, la red externa. En esta configuración, la máquina Unix hace las veces de Gateway y de choke.
El sistema ejecuta al menos un servidor proxy para cada uno de los servicios que pasarán a través del Firewall y es necesario que el IP-Forwarding esté desactivado en el equipo: Aunque una máquina con dos tarjetas de red puede actuar como router, para aislar el tráfico entre la red interna y la externa, es necesario que el choke no enrute paquetes entre ellas.
- Screened Host: Se combina un enrutador con un host bastión y el principal nivel de seguridad proviene del filtrado de paquetes. En el bastión, el único sistema accesible desde el exterior, se ejecuta el proxy de aplicaciones y en el choke se filtran los paquetes considerados peligrosos y sólo se permite un número reducido de servicios.
- Screened Subnet: En este diseño se intenta aislar la máquina más atacada y vulnerable del Firewall: el host bastión. Para ello se establece una zona desmilitarizada (DMZ) de forma tal que si un intruso accede a esta máquina, no consiga el acceso total a la subred protegida.
En este esquema se utilizan dos enrutadores: uno exterior y otro interior. El enrutador exterior es el encargado de bloquear el tráfico hacia y desde la red interna. El enrutador interno se coloca entre la red interna y la DMZ (zona entre el enrutador externo y el interno).
La arquitectura DMZ es la que mayores niveles de seguridad puede proporcionar, sin embargo, su configuración tiende a ser complicada y, si no es la correcta, puede inducir fallas de seguridad en toda la red.
En este momento se puede dar una definición de seguridad:
Seguridad en redes es mantener bajo protección los recursos y la información con que se cuenta en la red, a través de procedimientos basados en una política de seguridad tales que permitan el completo control del sistema.
Se debe tener en cuenta que los usuarios de un sistema son una parte esencial que no puede ser menospreciada. Siempre hay que considerar que la seguridad comienza y termina con personas, por eso se debe enfatizar en los conceptos y costumbres de seguridad para que los usuarios conozcan la necesidad y las ganancias que se obtienen al implementar las políticas de seguridad.
3. Tipos de ataques y vulnerabilidades
La identificación de las vulnerabilidades permite conocer los tipos de ataque que podrían ser efectuados, así como también sus consecuencias. Se realizará una descripción general de los principales tipos de ataque.
3.1 Ingeniería Social
Consiste en persuadir a los usuarios para que ejecuten acciones o revelen la información para superar las barreras de seguridad.
3.2 Negación de servicio (Denial of service, DoS)
Es un tipo de ataque cuya meta fundamental es la de impedir el uso legítimo o negar el acceso a un recurso determinado.
3.3 Cracking de passwords
Existen dos métodos:
- Diccionario: Consiste en efectuar encriptaciones de palabras (posibles claves) y comparar estas encriptaciones con el original.
- Fuerza Bruta: Consiste en realizar todas las combinaciones posibles de un conjunto de caracteres. En el siguiente cuadro se ve el tiempo de búsqueda de una contraseña de acuerdo a la longitud y tipo de caracteres utilizados.
3.4 E-mail bombing y spamming
El e-mail bombing consiste en enviar muchas veces el mismo mensaje a una misma dirección. El spamming, que es una variante del e-mail bombing, se refiere a enviar el email a centenares o millares de usuarios.
Trayendo al usuario inconveniente por perdida de tiempo al tener que escoger entre correo invalido y el “spam”, además puede ocasionar que el usuario deje de recibir correo por desbordamiento del espacio en la cuenta electrónica.
3.5 Escaneo de puertos
Existen herramientas para verificar los servicios que presta una máquina por medio de la revisión de los puertos abiertos.
3.6 Buffer Overflows
Es posible corromper la pila de ejecución escribiendo más allá de los límites reservados para un programa en ejecución. La pila es una estructura last-in, first-out (último en entrar, primero en salir) en la que los datos sucesivos se “colocan encima” de los anteriores. Los datos se sacan después en orden inverso de la pila2.
Los errores de programación que causan el desbordamiento son:
- Combinaciones no esperadas: Los programas usualmente son construidos usando muchas capas de código, todas las capas se colocan encima del sistema operativo, Un mal diseño de una capa puede causar que entradas pertenecientes a la capa superior de la aplicación sea mandada directamente al sistema operativo y ejecutado.
- Entradas anormales: La mayoría de los programas manejan parámetros o valores suministrados como entradas validas. Si un programador no considera un tipo de entrada que el programa no puede manejar, ocasionará el daño de los datos de la aplicación.
- Condiciones de carrera: “Situación en la que dos o más procesos leen o escriben en un área compartida y el resultado final depende de los instantes de ejecución de cada uno. Cuando esto ocurre y acciones que deberían ser particulares no lo son, existe un intervalo de tiempo en el que un atacante puede obtener privilegios y violar la seguridad del sistema”
3.7 Transmisión en Texto Plano
Servicios como el Telnet, FTP y http no utilizan ningún método de encriptación de la información enviada (recibida) al (del) cliente, dándole la posibilidad a un tercero de interceptar el tráfico y comprender los datos de la transferencia.
3.8 Programas Dañinos (creados intencionalmente)
Son programas diseñados para atacar al sistema o para conseguir información sensible. Su funcionamiento está basado en el aprovechamiento de errores en los servicios o en partes inseguras del sistema.
3.9 Sniffers
“Los sniffers operan activando una de las interfaces de red del sistema en modo promiscuo. En este modo de configuración, el sniffer almacenará en un log todo el tráfico que circule por la tarjeta de red, ya sea destinado o generado por el propio sistema o desde/hacia cualquiera de los sistemas existentes en el entorno de red compartido. Asimismo, pueden ser instalados tanto en sistemas como en dispositivos de red.
La utilización de un sniffer permite la obtención de una gran cantidad de información sensible enviada sin encriptar, como por ejemplo usuarios, contraseñas, direcciones de correo electrónico, etc. El análisis de la información transmitida permite a su vez extraer relaciones y topologías de las redes y organizaciones.
Aparte de los programas independientes existentes para ésta tarea, los sistemas operativos poseen sniffers en las distribuciones comerciales, típicamente utilizados por el administrador de red para resolver problemas en las comunicaciones”
4. Seguridad a nivel de servidor
Se establecerá una serie de procedimientos para evaluar y monitorear el sistema y su entorno y se recopilará información sobre el sistema y el uso que dan los usuarios a los servicios y así tomar medidas en caso de haber un mal uso de los mismos.
El procedimiento de seguridad se determina dependiendo de la función que desempeñara un sistema de cómputo. Existen 2 tipos de funciones que son: estación de trabajo y servidor. Esta última es la más importante y a su vez la más delicada, ya que se hace necesario ofrecer unos servicios para así cumplir con su función. Para la estación de trabajo no es necesario que se ofrezcan servicios, por eso el negar las peticiones que se hagan a la maquina y el montaje de un firewall es una buena alternativa.
En los capítulos posteriores se trabajará en el mejoramiento de la seguridad en los servidores.