Академический Документы
Профессиональный Документы
Культура Документы
SEGURIDAD PREVENTIVA
La leccin 1 incluye una descripcin de las principales barreras de seguridad
(medidas preventivas) y las lecciones 2 y 3 las desarrollan de forma prctica.
Medidas preventivas
Las medidas preventivas son las que se toman para evitar que los ataques
lleguen a tener xito (apartado "prevencin" del proceso general de la
seguridad, leccin 1.3). Estas medidas se pueden agrupar en 4 barreras
bsicas:
La seguridad fsica. Responsable de impedir el acceso fsico a los
sistemas.
La autenticacin de usuarios. Una vez se tiene acceso al sistema (fsico
o remoto), es la responsable de identificar a los usuarios y de aceptarlos
o rechazarlos.
El control de acceso a los recursos. Una vez el usuario ha sido
autenticado, los procesos que lance estarn convenientemente
etiquetados con su identidad. El control de acceso es el mecanismo que
permite establecer qu puede hacer cada usuario con cada recurso del
sistema.
El control de acceso a/desde otros sistemas. Responsable de ofrecer
de forma selectiva servicios a usuarios que acceden desde otros
sistemas, as como de permitir el acceso controlado a otros sistemas.
Seguridad fsica
Se puede definir la seguridad fsica como el conjunto de medidas dirigidas a
controlar el acceso fsico a los sistemas. Lgicamente estas medidas forman
parte de las medidas de control de acceso fsico a las instalaciones. El
objetivo, desde el punto de vista de la seguridad informtica, es que el nivel de
seguridad fsica sea adecuado. O, dicho de otra forma, que la seguridad fsica
no sea el "eslabn ms dbil de la cadena". Aunque muchas medidas pueden
ser igualmente aplicables a ambas categoras, resulta til distinguir entre la
proteccin de los componentes fsicos y la proteccin de los datos.
Proteccin de los componentes fsicos
Las medidas de proteccin deben comenzar por asegurar que el entorno fsico
resulta apropiado para el funcionamiento de los sistemas. Sin tratar de ser
exhaustivos, ser necesario mantener una temperatura adecuada, evitar el
exceso de polvo o de humedad, la presencia de insectos, ruido
electromagntico, vibraciones... Adems, se debe disponer de los mecanismos
de monitorizacin adecuados para detectar desviaciones en temperatura,
humedad... Por otra parte, tambin ser necesario considerar posibles
situaciones excepcionales (sean accidentales o intencionadas), como
inundaciones, fuegos, terremotos...
Otro aspecto igualmente importante son las dependencias donde trabajan los
administradores de sistemas u otros usuarios con acceso privilegiado. Sus
sistemas pueden ser puntos de acceso al sistema (sus direcciones IP pueden
estar permitidas a traves de cortafuegos, pueden tener almacenadas claves o
informacin sensible...). Por lo tanto, un atacante podra optar por acercarse a
uno de estos puestos (en vez de a los servidores alojados en el centro de datos,
mucho ms protegido) y, simplemente, conectar una memoria USB son
software malicioso. Otro elemento de riesgo es la existencia de espacios
difanos, paredes transparentes o, incluso, ventanas, que puedan permitir
grabar a estos usuarios mientras trabajan con su sistema (capturando la
pantalla o cmo teclean una contrasea).
Las redes wifi son cada vez ms frecuentes y, por comodidad, suelen ser
utilizadas por personal de la empresa, por lo que suelen transportar
informacin confidencial. Incluso aunque se utilicen puntos de acceso con
WPA2, salvo que se utilice una configuracin empresarial, el hecho de usar
una clave precompartida por todos los usuarios, hace difcil mantener el
secreto. En este caso, a diferencia de las redes cableadas, el acceso fsico
puede no ser necesario, ya que las ondas electromagnticas no quedan
completamente confinadas al interior de las salas y/o los edificios en los que
se utilizan. Por este motivo, nuevamente es necesario utilizar adecuadamente
mecanismos criptogrficos.
Autenticacin de usuarios
El objetivo de la autenticacin de usuarios comprobar la identidad de un usuario,
aceptndole como tal si demuestra su identidad o rechazndole, en caso contrario.
Los principales mecanismos de autenticacin encajan en una de estas cuatro categoras:
Posesin de un secreto. Al que solamente el usuario sabe. Por ejemplo, el tpico usuario
y contrasea.
Posesin de un objeto. Algo a lo que solamente el usuario tiene acceso. Por ejemplo,
una llave USB o una tarjeta inteligente.
Un atributo del usuario. Algo caracterstico del usuario, bien sea de su cuerpo, como la
huella dactilar, o de su comportamiento, como su tono de voz.
Multifactorial. Usar dos o ms tcnicas de las anteriores combinadas (mltiples
factores).
Para evaluar la bondad de estos mecanismos se usan como criterio los siguientes
parmetros:
Tasa de falsas aceptaciones. La probabilidad de que el sistema acepte como vlido a un
impostor. Por ejemplo, un impostor (I) adivina la contrasea del usuario (U) y el sistema
acepta a I como si fuera U.
Tasa de falsos rechazos. La probablidad de que el sistema deniegue el acceso a un
usuario autorizado. Por ejemplo, se autentica por la voz, pero un usuario tiene una
afeccin de garganta y el sistema no reconoce su voz.
Lgicamente, el sistema ideal sera aqul que tiene unas tasas de falsas aceptaciones y
de falsos rechazos igual a 0. Sin embargo, al analizar a continuacin los diferentes
mecanismos se ver que es dificil hacer muy bajas simultneamente ambas tasas.
Hay varios motivos por los que el mtodo de usuario y contrasea es tan popular:
Por lo tanto, usar de forma segura las contraseas requiere una buena educacin de
todos los usuarios para que utilicen contraseas robustas, y conozcan y eviten los
riesgos.
Posesin de un objeto
El sistema exige a los usuarios que demuestren que tienen acceso a un objeto que los
identifica. Ejemplos habituales son los dispositivos utilizados para generar contraseas
de un solo uso, las tarjetas inteligentes, las llaves USB o, ms recientemente, la
posesin de un telfono mvil.
Con las tcnicas fisiolgicas se aprovecha alguna caracterstica propia del cuerpo de las
personas, ya sea su cara, el patrn de retina del ojo, la forma de su mano o las habituales
huellas dactilares. En principio, estas tcnicas pueden conseguir al mismo tiempo una
baja tasa de falsas aceptaciones como de falos rechazos. No obstante, es necesario tener
en cuenta que la precisin del mtodo depende mucho de la implementacin. Por
ejemplo, depende de cuantos puntos se utilicen para representar (y comparar) las huellas
dactilares. Dependiendo de la implementacin, el sistema puede ser engaado. Por
ejemplo, el reconocimiento de caras tiene que ser capaz de distinguir entre la imagen de
una persona real y la de una fotografa. Aunque tradicionalmente han sido sistemas
caros, ya que necesitan dispositivos especializados, en los ltimos aos, debido a su
popularizacin, el precio ha bajado significativamente.
Para conseguir que este control sea efectivo se trabaja a varios niveles:
Video
Para que solamente se pongan en marcha las UMLs indicadas, ser necesario
modificar el guin "uml_run_my_uml.sh". (La forma de hacerlo se describe
en la unidad Ejercicio: Puesta en marcha de un cierto conjunto de UMLs).
Acciones a realizar:
1. Editar el guin "uml_run_my_uml.sh" para que solamente se ejecuten
las mquinas indicadas.
2. Lanzar las mquinas UML usando el icono "Run my UMLs".
3. Comprobar que efectivamente se han puesto en marcha las mquinas
esperadas
Los puertos no asignados pueden haber sido usados por cualquier aplicacin. Sin
embargo, si est en marcha el servidor portmap (servicio 111, sunrpc), las aplicaciones
que usan RPC (Remote Procedure Calls) pueden registrarse con el portmapper para que
los clientes sepan a qu puertos deben conectarse. ste es el caso de servicios asociados
a NFS como el estado (status, ofrecido por rpc.statd), cerrojos (nlockmgr, ofrecido
directamente por el ncleo en este caso) o el montaje de sistemas NFS (mountd,
ofrecido por rpc.mountd). La forma de saber qu puertos estn usando los servidores
que usan RPCs es usar la orden "rpcinfo":
root@dmzc:~# rpcinfo -p
program vers proto port
100000 2 tcp 111 portmapper
100000 2 udp 111 portmapper
100024 1 udp 48280 status
100024 1 tcp 59646 status
100021 1 udp 36209 nlockmgr
100021 3 udp 36209 nlockmgr
100021 4 udp 36209 nlockmgr
100021 1 tcp 45840 nlockmgr
100021 3 tcp 45840 nlockmgr
100021 4 tcp 45840 nlockmgr
100003 2 tcp 2049 nfs
100003 3 tcp 2049 nfs
100003 2 udp 2049 nfs
100003 3 udp 2049 nfs
100005 1 udp 49362 mountd
100005 1 tcp 36089 mountd
100005 2 udp 49362 mountd
100005 2 tcp 36089 mountd
100005 3 udp 49362 mountd
100005 3 tcp 36089 mountd
root@dmzc:~#
Accin a realizar: comprobar los servicios activos en dmzc usando netstat (o ss)
y rpcinfo.
Lo siguiente es averiguar el nombre de los servicios que lanzan a los procesos que estn
aceptando conexiones. Aunque en este caso ms o menos coinciden, puede ser necesario
realizar cierta tarea de averiguacin. Los nombres de los servicios se corresponden con
los guiones de intrprete de rdenes que estn alojados en el directorio "/etc/init.d".
Una vez se sabe el nombre del servicio, ser necesario hacer dos cosas:
Acciones a realizar:
1. Parar los servicios "nfs-kernel-server", "nfs-common", "portmap" y "apache2".
2. Cambiar la configuracin del sistema para que estos servicios no se activen en el
prximo arranque.
3. Rearrancar dmzc.
4. Comprobar que solamente ofrece el servicio SSH.
Cambiar la poltica de las cadenas INPUT y FORWARD para que por defecto dejen caer
los paquetes.
Dejar la poltica de OUTPUT para que permita pasar todos los paquetes.
Permitir el trfico entrante a travs de la interfaz de loopback.
Permitir el trfico entrante correspondiente a conexiones establecidas y/o relacionadas.
Permitir conexiones entrantes de SSH desde base (la IP de base en la red DMZ es
10.5.1.1).
Permitir consultas entrantes de tipo ICMP ECHO REQUEST.
Lgicamente, aunque esta configuracin resulta apropiada como ejemplo, debe ser
adaptada para permitir todos los servicios que el servidor ofrezca (ej: HTTP, HTTPS,
DNS, FTP...). Adems, restringir el trfico saliente permitira reducir el dao que podra
realizar el servidor a otros sistemas en caso de ser comprometido, o detectar las
intrusiones si se registran los paquetes salientes denegados. Sin embargo, habra que
tener en cuenta que en caso de que el atacante consiguiera acceso como root, podra
cambiar fcilmente la configuracin del filtrado de paquetes.
De cara a comprobar la efectividad del filtrado de paquetes, conviene poner en marcha
algunos servicios adicionales que no deberan ser accesibles una vez en marcha el
filtrado. (En un caso real, la recomendacin es no conectar el sistema a la red hasta que
no est configurado el filtrado de paquetes y, desde luego, no ejecutar ningn servicio
que no sea estrictamente necesario).
Acciones a realizar:
1. En dmzc, poner en marcha los servicios portmap y apache2.
2. Desde base, comprobar que:
Es posible conectarse por SSH.
Responde a ping (por defecto enva ICMP ECHO REQUEST).
Es posible obtener un listado de los servicios basados en RPC registrados
en dmzc. (Sugerencia: usar la orden "rpcinfo -p dmzc").
Es posible acceder al servidor HTTP. (Sugerencia: usar "wget dmzc").
3. Desde base, como root, realizar un barrido de puertos sobre dmzc para corroborar la
informacin previa.
Una vez comprobado que dmzc est expuesta, es el momento de aplicar el filtrado de
paquetes y observar la diferencia.
Acciones a realizar:
1. Configurar dmzc de forma limite el trfico segn la configuracin anterior.
2. Desde base, comprobar que:
Responde a ping (por defecto enva ICMP ECHO REQUEST).
Es posible conectarse por SSH.
No es posible obtener un listado de los servicios basados en RPC registrados
en dmzc. (Sugerencia: usar la orden "rpcinfo -p dmzc").
No es posible acceder al servidor HTTP. (Sugerencia: usar "wget dmzc").
3. Desde base, como root, realizar un barrido de puertos sobre dmzc para corroborar la
informacin previa.
4. Desde dmzc, comprobar que los servicios portmap y apache2 siguen activos.
(Sugerencia: usar rpcinfo y wget usando como nombre de nodo localhost).
5. Arrancar dmzd.
6. Desde dmzd, comprobar que:
dmzc responde a ping .
No es posible conectarse por SSH a dmzc.
No es posible obtener un listado de los servicios basados en RPC registrados
en dmzc. (Sugerencia: usar la orden "rpcinfo -p dmzc").
No es posible acceder al servidor HTTP de dmzc. (Sugerencia: usar "wget dmzc").
7. Desde dmzd, como root, realizar un barrido de puertos sobre dmzc para corroborar la
informacin previa.
El primer paso para usar criptografa asimtrica es crear un par de claves en la mquina
desde la que se va a iniciar la conexin al servidor SSH. En este caso se usar como
mquina de trabajo base.example.net. La orden ssh-keygen crea un par de claves RSA
(la pblica y la privada). Ambas son almacenadas por defecto en el directorio ".ssh" del
directorio inicial del usuario. La clave privada se denomina por defecto "id_rsa" y la
pblica "id_rsa.pub".
Acciones a realizar:
1. Crear un par de claves RSA en base.example.net como usuario user1. (Es importante
usar una frase de paso segura).
2. Localizar el fichero con la clave pblica y el fichero con la clave privada.
El segundo paso es depositar una copia de la clave pblica en el servidor. La copia (el
contenido del fichero con la clave pblica) debe ser aadida al fichero
".ssh/authorized_keys" del directorio inicial del usuario correspondiente en el servidor.
Por ejemplo, para permitir el acceso como user3, la copia debera ser aadida al fichero
"/home/user3/.ssh/authorized_keys". (Si el directorio no existe, debe ser creado con
permisos de lectura, escritura y ejecucin exclusivamente para el dueo, sin ningn
permiso para el resto).
Una vez aadida la copia, si se intenta una conexin SSH, el sistema debe solicitar la
frase de paso con la que desbloquear la clave privada. La peticin viene del cliente SSH,
pues el servidor nunca solicita la clave privada; lo que hace es enviar un reto cifrado con
la clave pblica del usuario, de forma que sea necesario usar la clave privada para
resolverlo.
Acciones a realizar:
1. Si no existe, crear el directorio "/home/user1/.ssh" en dmzc con permisos solamente
para el dueo. (Sugerencia: usar "mkdir -m go= /home/user1/.ssh").
2. Depositar la copia de la clave pblica en "/home/user1/.ssh/authorized_keys".
3. Probar a conectarse desde base a dmzc como user1.
4. Comprobar que se solicita la frase de paso de la clave privada y no la contrasea
de user1 en dmzc.
Nota
Alternativamente, se puede usar en base, como "user1", la orden "ssh-copy-id -i
/home/user1/.ssh/id_rsa.pub dmzc". El programa "ssh-copy-id" se encarga de
comprobar que la clave no est registrada en dmzc y, si no lo est, de transferir la copia
de la clave pblica al sitio adecuado ("/home/user1/.ssh/authorized_keys"), creando la
carpeta ".ssh" si es necesario.
Acciones a realizar:
1. Crear un nuevo par de claves fcilmente identificable. (Sugerencias: no
poner frase de paso, usar un nombre adecuado para el fichero como
"clave_mantenimiento", y un comentario igualmente indicativo como
"Clave para mantenimiento").
2. Copiar la clave pblica en el "authorized_keys" de user1 en dmzc.
3. Editar el fichero para que con la nueva clave solamente se pueda
averiguar quin est conectado y qu est ejecutando (orden
"/usr/bin/w").
4. Comprobar que, usando la nueva clave, independientemente de lo que
se intente, lo nico que se obtiene es el listado esperado. (Sugerencias:
asegurarse antes de que el agente de autenticacin no tiene
identidades cargadas; si las tiene, eliminarlas con "ssh-add -D"; y usar la
opcin "-i" para indicar qu clave debe usar el programa "ssh").
Leccin 3: Asegurando el permetro
En esta leccin se plantea un modelo de seguridad basado en el control de acceso a nivel
de red. Si al hablar de asegurar clientes y servidores se haca nfasis en las medidas que
se podan aplicar a nivel de nodo, en la seguridad perimtrica se pone el foco en limitar
el acceso entre diferentes redes. El vdeo introductorio "Seguridad perimtrica" explica
el concepto de seguridad perimtrica y el de cortafuegos, e introduce brevemente las dos
tecnologas bsicas de su diseo y construccin, los proxies y el filtrado de paquetes.
Para mantener el nivel prctico del curso, en esta leccin se realizarn ejercicios que en
permitirn, en conjunto, configurar adecuadamente el encaminador de NETinVM(la
mquina fw), de forma que se tenga un cortafuegos operativo basado en la estructura
habitual de subred filtrada. Para ello, el texto "Descripcin del cortafuegos de
NETinVM" explica la estructura utilizada y el papel de fw, y proporciona la base
necesaria pra la realizacin de los ejercicios. Aunque no es necesario, s resulta
recomendable tener fresco el trabajo realizado al asegurar la mquina extc y, en
particular, el vdeo introductorio "Filtrado de paquetes con IPTABLES" de la leccin
"Asegurando clientes y servidores".
Ofreciendo servicios
A la hora de ofrecer servicios, los puntos ms dbiles siempre son los nodos
bastin que ofrecen los servicios. Efectivamente, para ofrecer el servicio
deben ser accesibles directamente desde Internet y, por tanto, se convierten en
el principal vector de entrada. Por este motivo, estos nodos se fortifican lo
mximo posible (de ah el nombre de nodos bastin), tal y como se ha visto en
la leccin 3.2.
Utilizando servicios
Esta estructura tambin protege a los clientes que necesitan utilizar servicios
externos. El encaminador evita el acceso directo desde Internet a la red
corporativa y puede restringir el trfico entrante al trfico de respuesta al
generado por los clientes.
Otras consideraciones
Con respecto a la estructura habitual, NETinVM une en una nica mquina
(fw) los encaminadores interno y externo. Esto supone un cierto aumento del
riesgo con respecto a utilizar dos mquinas diferentes, pero teniendo en cuenta
que los encaminadores no necesitan ofrecer servicios y que suelen tener
implementaciones especialmente robustas de los protocolos de red, supone un
compromiso razonable entre seguridad, complejidad y recursos a utilizar (cada
mquina virtual extra cuenta).
Por supuesto, es posible realizar otras variaciones, como utilizar ms de una
subred filtrada o segmentar la red corporativa, pero ello complicara el trabajo
con NETinVM.
Acciones a realizar:
1. Editar el fichero "/etc/sysctl.conf" tal y como se ha indicado.
2. Rearrancar fw.
3. Comprobar que el reenvo IP est activo.
Acciones a realizar:
1. Aadir las reglas de filtrado apropiadas segn la configuracin anterior.
(Ntese que en este caso se tiene que trabajar con la cadena
POSTROUTING de la tabla "nat").
2. Comprobar la conectividad de inta con exta usando ICMP ECHO
REQUEST.
3. (Recomendado). Usando wireshark, identificar los paquetes
intercambiados, comprobando que la IP de origen del paquete que
llega a exta es la de la interfaz externa de fw.
4. Comprobar la conectividad de inta con exta usando SSH.
5. Comprobar la conectividad de inta con el exterior (si el ordenador
anfitrin tiene conectividad). (Sugerencia: probar con un "ping -c 1").
6. Guardar las reglas en "/etc/iptables/rules".
Los nodos de esta red actan como nodos bastin y debe limitarse el acceso a ellos
tanto desde Internet como desde la red interna. Ser necesario permitir el acceso a los
servicios que ofrecen y, en su caso, permitir el acceso desde las mquinas de la red
interna que tengan tareas administrativas.
Estos nodos estn necesariamente expuestos a ataques desde Internet (pues tienen que
ofrecer servicios), por lo que es necesario proteger a los nodos de la red interna de
cualquier tipo de acceso no deseado desde los nodos bastin. De esta forma, en caso de
que un nodo bastin sea comprometido, se podr detectar y tratar el incidente antes de
que afecte a la red corporativa.
Por este motivo se modificar la configuracin de fw para que permita los siguientes
tipos de acceso:
Acceso TCP desde cualquier mquina (interna o externa) a la mquina dmza (IP
10.5.1.10, alias www.example.net), exclusivamente al servicio HTTP (puerto 80).
Acceso SSH desde inta.example.net (10.5.2.10) a dmza.
Acciones a realizar:
1. Aadir las reglas necesarias para completar la configuracin de fw.
2. Comprobar que es posible acceder al servicio HTTP tanto desde la red interna como
desde la externa.
3. Comprobar, con nmap, que no es posible acceder a ningn puerto ms (en la red
interna, probarlo tambin desde intb, pues desde inta est permitido el acceso SSH).
4. Comprobar que es posible conectarse por SSH desde inta.
5. Comprobar que desde dmza no es posible acceder a ningn puerto ni de inta ni de intb.
6. Guardar las reglas en "/etc/iptables/rules".