Seguridad
en UNIX
Trabajo de investigación para Computación 5 - Tema 5
Año
2001
|
Grupo 2 formado por: |
|
·
Canteros, Marcela |
|
·
Echeverría, Juan |
|
·
Falabella, Adrián |
|
·
Fernández, Gustavo |
|
·
Ferrero, Paulina |
|
·
Leiva, Orlando |
|
·
Paz, Roxana |
|
·
Toledo, Raúl |
|
·
Soler, Susana |
|
·
Dutruel, Mabel |
|
·
Arce, Mario Diego |
|
·
Nunín, Luis |
Indice
Hasta finales de 1988 muy
poca gente tomaba en serio el tema de la seguridad en redes de computadores de
propósito general. Mientras que por una parte Internet iba creciendo
exponencialmente con redes importantes que se adherían a ella, como BITNET o
HEPNET, por otra el auge de la informática de consumo (hasta la década de los
ochenta muy poca gente se podía permitir un ordenador y un módem en casa)
unido a factores menos técnicos (como la película Juegos de Guerra, de 1983)
iba produciendo un aumento espectacular en el número de piratas informáticos.
Sin embargo, el 22 de
noviembre de 1988 Robert T. Morris protagonizó el primer gran incidente de la
seguridad informática: uno de sus programas se convirtió en el famoso worm o
gusano de Internet. Miles de ordenadores conectados a la red se vieron
inutilizados durante días, y las pérdidas se estiman en millones de dólares.
Desde ese momento el tema de la seguridad en sistemas operativos y redes ha sido
un factor a tener muy en cuenta por cualquier responsable o administrador de
sistemas informáticos. Poco después de este incidente, y a la vista de los
potenciales peligros que podía entrañar un fallo o un ataque a los sistemas
informáticos estadounidenses la agencia DARPA (Defense Advanced Research
Projects Agency) creó el CERT (Computer Emergency Response Team), un grupo
formado en su mayor parte por voluntarios cualificados de la comunidad informática,
cuyo objetivo principal es facilitar una respuesta rápida a los problemas de
seguridad que afecten a hosts de Internet.
Cada día se hace patente
la preocupación por los temas relativos a la seguridad hoy cualquier aprendiz
de pirata puede conectarse a un servidor web, descargar un par de programas y
ejecutarlos contra un servidor desprotegido... con un poco de (mala) suerte, esa
misma persona puede conseguir un control total sobre un servidor Unix de varios
miles de dolares, probablemente desde su PC con Windows 98 y sin saber nada
sobre Unix.
A la vista de lo comentado
anteriormente, parece claro que la seguridad de los equipos Unix ha de ser algo
a considerar en cualquier red. Diariamente por cualquiera de ellas circulan todo
tipo de datos, entre ellos muchos que se podrían catalogar como confidenciales
(nóminas, expedientes, presupuestos...) o al menos como privados (correo electrónico,
proyectos de investigación, artículos a punto de ser publicados...), etc.
Podemos entender como
seguridad una característica de cualquier sistema, informático o no, que nos
indica que ese sistema está libre de todo peligro, daño o riesgo, y que es, en
cierta manera, infalible. Como esta característica, particularizando para el
caso de sistemas operativos o redes de computadores, es muy difícil de
conseguir (según la mayoría de expertos, imposible), se suaviza la definición
de seguridad y se pasa a hablar de fiabilidad (probabilidad de que un sistema se
comporte tal y como se espera de él) más que de seguridad; por tanto, se habla
de sistemas fiables en lugar de hacerlo de sistemas seguros.
A grandes rasgos se
entiende que mantener un sistema seguro (o fiable) consiste básicamente en
garantizar tres aspectos:
·
Confidencialidad
·
Integridad
·
Disponibilidad.
La confidencialidad
nos dice que los objetos de un sistema han de ser accedidos únicamente por
elementos autorizados a ello; la integridad significa que los objetos sólo
pueden ser modificados por elementos autorizados, y la disponibilidad
indica que los objetos del sistema tienen que permanecer accesibles a elementos
autorizados.
Los tres elementos
principales a proteger en cualquier sistema informático son el:
·
Software
·
Hardware
·
Datos
Por hardware
entendemos el conjunto formado por todos los elementos físicos de un sistema
informático, como CPUs, terminales, cableado, medios de almacenamiento
secundario (cintas, CD-ROMs, diskettes...) o tarjetas de red. Por software
entendemos el conjunto de programas lógicos que hacen funcional al hardware,
tanto sistemas operativos como aplicaciones, y por datos el conjunto de
información lógica que manejan el software y el hardware, como por ejemplo
paquetes que circulan por un cable de red o entradas de una base de datos.
¿De qué nos queremos proteger?
Se suele identificar a los
atacantes únicamente como personas. Pero es preferible hablar de 'elementos' y
no de personas, nuestro sistema puede verse perjudicado por múltiples entidades
aparte de humanos, como por ejemplo programas, catástrofes naturales.
Personas
Generalmente se dividen en
dos grandes grupos: los atacantes pasivos, aquellos que fisgonean por el sistema
pero no lo modifican -o destruyen-, y los activos, aquellos que dañan el
objetivo atacado, o lo modifican en su favor.
·
Personal
·
Ex-empleados
·
Curiosos
·
Crackers
·
Terroristas
·
Intrusos remunerados
Amenazas lógicas
Bajo la etiqueta de
'amenazas lógicas' encontramos todo tipo de programas que de una forma u otra
pueden dañar a nuestro sistema, creados de forma intencionada para ello
(software malicioso, también conocido como malware) o simplemente por error
(bugs o agujeros). Enumeramos brevemente:
·
Software incorrecto
·
Herramientas de seguridad
·
Puertas traseras
·
Virus
·
Gusanos
·
Caballos de Troya
·
Programas conejo o bacterias
·
Técnicas salami
Catástrofes
Las catástrofes (naturales
o artificiales) son la amenaza menos probable contra los entornos habituales.
Sin embargo, el hecho de que las catástrofres sean amenazas poco probables no
implica que contra ellas no se tomen unas medidas básicas, ya que si se
produjeran generarían los mayores daños.
Como ejemplos de catástrofes
hablaremos de
·
Terremotos
·
Inundaciones
·
Incendios
·
Humo
·
Atentados De Baja Magnitud
Los mecanismos de seguridad
se dividen en tres grandes grupos:
·
Prevención
·
Detección
·
Recuperación
Los mecanismos de prevención
son aquellos que aumentan la seguridad de un sistema durante el funcionamiento
normal de éste, previniendo la ocurrencia de violaciones a la seguridad; por
ejemplo, el uso de cifrado en la transmisión de datos se puede considerar un
mecanismo de este tipo. Por mecanismos de detección se conoce a aquellos
que se utilizan para detectar violaciones de la seguridad o intentos de violación.
Finalmente, los mecanismos de recuperación son aquellos que se aplican
cuando una violación del sistema se ha detectado, para retornar a éste a su
funcionamiento correcto; ejemplos de estos mecanismos son la utilización de
copias de seguridad o el hardware adicional.
Mecanismos de autenticación e identificación
Estos mecanismos hacen
posible identificar entidades del sistema de una forma única, y posteriormente,
una vez identificadas, autenticarlas (comprobar que la entidad es quién dice
ser).
Mecanismos de control de acceso
Estos controlan todos los
tipos de acceso sobre el objeto por parte de cualquier entidad del sistema.
Dentro de Unix, el control de acceso más habitual es el discrecional (DAC,
Discretionary Access Control), implementado por los bits rwx y las listas de
control de acceso para cada archivo (objeto) del sistema.
Mecanismos de separación
Se deben implementar
mecanismos que permitan separar los objetos dentro de cada nivel, evitando el
flujo de información entre objetos y entidades de diferentes niveles. Los
mecanismos de separación se dividen en cinco grandes grupos, en función de
como separan a los objetos: separación física, temporal, lógica, criptográfica
y fragmentación. Dentro de Unix, el mecanismo de separación más habitual es
el de separación lógica o aislamiento.
Mecanismos de seguridad en las comunicaciones
Es especialmente importante
para la seguridad de nuestro sistema el proteger la integridad y la privacidad
de los datos cuando se transmiten a través de la red. Para garantizar esta
seguridad en las comunicaciones, hemos de utilizar ciertos mecanismos, la mayoría
de los cuales se basan en la Criptografía: cifrado de clave pública, de clave
privada, firmas digitales...Aunque cada vez se utilizan más los protocolos
seguros, como SSH o Kerberos, en el caso de sistemas Unix en red.
Dentro de la familia Unix
existen una serie de sistemas denominados 'Unix seguros' o 'Unix fiables'
(Trusted Unix); se trata de sistemas con excelentes sistemas de control,
evaluados por la National Security Agency (NSA) estadounidense y clasificados en
niveles seguros (B o A). Entre estos Unix seguros podemos encontrar AT&T
System V/MLS y OSF/1 (B1), Trusted Xenix (B2) y XTS-300 STOP 4.1 (B3),
considerados los sistemas operativos más seguros del mundo (siempre según la
NSA). La gran mayoría de Unices (Solaris, AIX...) están clasificados como C2,
y algunos otros, como Linux, se consideran sistemas C2 de facto: al no tener una
empresa que pague el proceso de evaluación de la NSA no están catalogados,
aunque puedan implementar todos los mecanismos de los sistemas C2.
Dentro del sistema Unix
todo son archivos: desde la memoria física del equipo hasta el ratón, pasando
por módems, teclado, impresoras o terminales. En un sistema Unix típico
existen tres tipos básicos de archivos:
·
Archivos Planos
·
Directorios
·
Archivos Especiales (Dispositivos)
Los archivos planos
son entendidos por las aplicaciones que interpretan su contenido. Los directorios
son archivos cuyo contenido son otros archivos de cualquier tipo (planos, más
directorios, o archivos especiales), y los archivos especiales son
archivos que representan dispositivos del sistema; este último tipo se divide
en dos grupos: los dispositivos orientados a carácter y los orientados a
bloque.
Cuando un sistema Unix
arranca una de las tareas que obligatoriamente ha de realizar es incorporar
diferentes sistemas de archivos - discos completos, una partición, una unidad
de CD-ROM...- a la jerarquía de directorios Unix; este proceso se llama
montaje, y para realizarlo generalmente se utiliza la orden mount. Es
obligatorio montar al menos un sistema de archivos durante el arranque, el
sistema raíz ( '/'), del que colgarán todos los demás.
Permisos de un archivo
Los permisos de cada
archivo son la protección más básica de estos objetos del sistema operativo;
definen quién puede acceder a cada uno de ellos, y de qué forma puede hacerlo.
Una r indica un permiso de lectura, una w de escritura, una x de ejecución y un
'-' indica que el permiso correspondiente no está activado. Así, si en una de
las ternas tenemos los caracteres rwx, el usuario o usuarios afectados por esa
terna tiene o tienen permisos para realizar cualquier operación sobre el
archivo. ¿De qué usuarios se trata en cada caso? La primera terna afecta al
propietario del archivo, la segunda al grupo del propietario cuando lo creó
(recordemos un mismo usuario puede pertenecer a varios grupos) y la tercera al
resto de usuarios.
Atributos de los archivos en ext2fs.
En el sistema de archivos
ext2 ( Second Extended File System) de Linux existen ciertos atributos para los
archivos que pueden ayudar a incrementar la seguridad de un sistema. Estos
atributos son los mostrados en la siguiente tabla.
|
A |
Don´t
update Atime |
|
S |
Synchronous
updates |
|
a |
Append
only |
|
c |
Compressed
file |
|
i |
Immutable
file |
|
d |
No
Dump |
|
s |
Secure
deletion |
|
u |
Undeletable
file |
El atributo 'a' sobre un
archivo indica que este sólo se puede abrir en modo escritura para añadir
datos.
El atributo 'i' (archivo
inmutable); un archivo con este flag activado no se puede modificar de ninguna
forma, ni añadiendo datos ni borrándolos, ni eliminar el archivo.
Los atributos ‘s' y 'S'.
Si borramos un archivo con el atributo 's' activo, el sistema va a rellenar sus
bloques con ceros en lugar de efectuar un simple unlink().
Por su parte, el atributo
'S' sobre un archivo hace que los cambios sobre el archivo se escriban
inmediatamente en el disco
Listas de control de acceso: ACLs
Las listas de control de
acceso (ACLs, Access Control Lists) proveen de un nivel adicional de seguridad a
los archivos extendiendo el clásico esquema de permisos en Unix: mientras que
con estos últimos sólo podemos especificar permisos para los tres grupos de
usuarios habituales (propietario, grupo y resto), las ACLs van a permitir
asignar permisos a usuarios o grupos concretos; por ejemplo, se pueden otorgar
ciertos permisos a dos usuarios sobre unos archivos sin necesidad de incluirlos
en el mismo grupo. Este mecanismo está disponible en la mayoría de Unices
(Solaris, AIX, HP-UX...), mientras que en otros que no lo proporcionan por
defecto, como Linux.
La criptografía es la
herramienta principal utilizada en la mayoría de los sistemas de almacenamiento
seguro; sin embargo, todos ellos plantean un grave problema: toda su seguridad
reside en la clave de cifrado, de forma que el usuario se encuentra indefenso
ante métodos legales - o ilegales - que le puedan obligar a desvelar esta clave
una vez que se ha determinado la presencia de información cifrada en un
dispositivo de almacenamiento. Todos los expertos en criptografía coinciden en
afirmar que los métodos de ataque más efectivos contra un criptosistema no son
los efectuados contra el algoritmo, sino contra las personas (chantaje,
amenazas, presiones judiciales, etc...).
Almacenamiento seguro
La orden crypt permite
cifrar y descifrar archivos en diferentes sistemas Unix; si no recibe parámetros
lee los datos de la entrada estándar y los escribe en la salida estándar, por
lo que seguramente habremos de redirigir ambas a los nombres de archivo
adecuados. Un ejemplo simple de su uso puede ser el siguiente:
$ crypt <archivo.txt
>archivo.crypt
Enter key:
$
Para descifrar un archivo
cifrado mediante crypt (por ejemplo, el anterior) utilizamos la misma orden y la
misma clave:
$ crypt
<archivo.crypt>salida.txt
Enter key:
$
PGP:
Pretty Good Privacy
El software PGP,
desarrollado por el criptólogo estadounidense Phil Zimmermann, es mundialmente
conocido como sistema de firma digital para correo electrónico. Aparte de esta
función, PGP permite también el cifrado de archivos de forma convencional
mediante criptografía simétrica; esta faceta de PGP convierte a este programa
en una excelente herramienta para cifrar archivos que almacenamos en nuestro
sistema; el modo de uso es el siguiente:
anita:~$ pgp -c archivo.txt
No configuration file
found.
Pretty Good Privacy(tm)
2.6.3i - Public-key encryption for the masses.
(c) 1990-96 Philip
Zimmermann, Phil's Pretty Good Software. 1996-01-18
International version - not
for use in the USA. Does not use RSAREF.
Current time: 2000/03/02
07:18 GMT
You need a pass phrase to
encrypt the file.
Enter pass phrase:
Enter same pass phrase
again:
Preparing random session
key...Just a moment....
Ciphertext file:
archivo.txt.pgp
anita:~$
Esta orden nos preguntará
una clave para cifrar, una pass phrase, que no tiene por qué ser (ni es
recomendable que lo sea) la misma que utilizamos para proteger la clave privada,
utilizada en el sistema de firma digital. A partir de la clave tecleada (que
obviamente no se muestra en pantalla), PGP generará un archivo denominado
archivo.txt.pgp cuyo contenido es el resultado de comprimir y cifrar (en este
orden) el archivo original. Obviamente, archivo.txt no se elimina automáticamente,
por lo que es probable que deseemos borrarlo a mano.
TCFS:
Transparent Cryptographic File System
TCFS es un software
desarrollado en la Universidad de Salerno y disponible para sistemas Linux que
proporciona una solución al problema de la privacidad en sistemas de archivos
distribuidos como NFS: típicamente en estos entornos las comunicaciones se
realizan en texto claro, con la enorme amenaza a la seguridad que esto implica.
TCFS almacena los archivos cifrados, y son pasados a texto claro antes de ser leídos;
todo el proceso se realiza en la máquina cliente, por lo que las claves nunca
son enviadas a través de la red.
Casi todas las actividades
realizadas en un sistema Unix son susceptibles de ser, en mayor o menor medida,
monitorizadas: desde las horas de acceso de cada usuario al sistema hasta las páginas
web más frecuentemente visitadas, pasando por los intentos fallidos de conexión,
los programas ejecutados o incluso el tiempo de CPU que cada usuario consume.
El demonio syslogd
El demonio syslogd ( Syslog
Daemon) se lanza automáticamente al arrancar un sistema Unix, y es el encargado
de guardar informes sobre el funcionamiento de la máquina. Recibe mensajes de
las diferentes partes del sistema (núcleo, programas...) y los envía y/o
almacena en diferentes localizaciones, tanto locales como remotas, siguiendo un
criterio definido en el archivo de configuración /etc/syslog.conf, donde
especificamos las reglas a seguir para gestionar el almacenamiento de mensajes
del sistema. Las líneas de este archivo que comienzan por '#' son comentarios,
con lo cual son ignoradas de la misma forma que las líneas en blanco.
Algunos archivos de log
·
Syslog
·
Messages
·
Wtmp
·
Utmp
·
Lastlog
·
Faillog
·
Loginlog
·
Btmp
·
Sulog
·
Debug
Las copias de seguridad del
sistema son con frecuencia el único mecanismo de recuperación que poseen los
administradores para restaurar una máquina que por cualquier motivo - no
siempre se ha de tratar de un pirata que borra los discos - ha perdido datos.
Por tanto, una correcta política para realizar, almacenar y, en caso de ser
necesario, restaurar los backups es vital en la planificación de seguridad de
todo sistema.
Sin embargo existen
problemas, por ejemplo:
·
Uno de estos problemas es la no verificación de las copias realizadas:
nadie se encarga de verificar estas copias...hasta que es necesario restaurar
archivos de ellas.
·
Otro problema clásico de las copias de seguridad es la política de
etiquetado a seguir.
·
La ubicación final de las copias de seguridad también suele ser errónea
en muchos entornos; generalmente, los operadores tienden a almacenar los backups
muy cerca de los sistemas, cuando no en la misma sala.
·
Por último, ¿qué almacenar? Obviamente debemos realizar copias de
seguridad de los archivos que sean únicos a nuestro sistema.
Dispositivos de almacenamiento
Existen multitud de
dispositivos diferentes donde almacenar nuestras copias de seguridad, desde un
simple disco flexible hasta unidades de cinta de última generación.
A continuación una tabla
de comparación entre dispositivos:
|
|
Dispositivo |
Fiabilidad |
Capacidad |
Coste/MB |
|
|
Diskette |
Baja |
Baja |
Alto |
|
|
CD-ROM |
Media |
Media |
Bajo |
|
|
Disco
duro |
Alta |
Media/Alta |
Medio. |
|
|
Cinta
8mm. |
Media |
Alta |
Medio. |
|
|
Cinta
DAT |
Alta |
Alta |
Medio. |
Algunas órdenes para realizar copias de seguridad
La herramienta clásica
para realizar backups en entornos Unix es desde hace años dump, que vuelca sistemas de archivos completos (una partición
o una partición virtual en los sistemas que las soportan, como Solaris); restore
se utiliza para recuperar archivos de esas copias. Se trata de una utilidad
disponible en la mayoría de clones del sistema operativo, potente (no diremos
'sencilla') y lo más importante: las copias son completamente compatibles entre
Unices, de forma que por ejemplo podemos restaurar un backup realizado en IRIX
en un sistema HP-UX. Además, la mayor parte de las versiones de dump permiten
realizar copias de seguridad sobre máquinas remotas directamente desde línea
de órdenes.
Ya sabemos que unos
requerimientos primordiales de los sistemas informáticos que desempeñan tareas
importantes son los mecanismo de seguridad adecuados a la información que se
intenta proteger; el conjunto de tales mecanismos ha de incluir al menos un
sistema que permita identificar a las entidades (elementos activos del sistema,
generalmente usuarios) que intentan acceder a los objetos (elementos pasivos,
como archivos o capacidad de cómputo), mediante procesos tan simples como una
contraseña o tan complejos como un dispositivo analizador de patrones
retinales.
Los métodos de autenticación
se suelen dividir en tres grandes categorías:
·
Algo que el usuario sabe
·
Algo que éste posee.
·
Una característica física del usuario o un acto involuntario del mismo.
Esta última categoría se conoce con el nombre de autenticación biométrica.
Sistemas basados en algo conocido: contraseñas
El modelo de autenticación
más básico consiste en decidir si un usuario es quien dice ser simplemente basándonos
en una prueba de conocimiento que a priori sólo ese usuario puede superar; esa
prueba de conocimiento no es más que una contraseña que en principio es
secreta. Evidentemente, esta aproximación es la más vulnerable a todo tipo de
ataques, pero también la más barata, por lo que se convierte en la técnica más
utilizada en entornos que no precisan de una alta seguridad, como es el caso de
los sistemas Unix en redes normales.
Sistemas basados en algo poseído: tarjetas inteligentes
Hace más de veinte años
un periodista francés llamado Roland Moreno patentaba la integración de un
procesador en una tarjeta de plástico. Desde entonces, cientos de millones de
esas tarjetas han sido fabricadas, y son utilizadas a diario para fines que varían
desde las tarjetas monedero más sencillas hasta el control de accesos a
instalaciones militares y agencias de inteligencia de todo el mundo; cuando a
las chipcards se les incorporó un procesador inteligente nacieron las
smartcards, una gran revolución en el ámbito de la autenticación de usuarios.
Sistemas de autenticación biométrica
Estos sistemas son los
denominados biométricos, basados en características físicas del usuario a
identificar. El reconocimiento de formas, la inteligencia artificial y el
aprendizaje son las ramas de la informática que desempeñan el papel más
importante en los sistemas de identificación biométricos. La autenticación
basada en características físicas existe desde que existe el hombre y, sin
darnos cuenta, es la que más utiliza cualquiera de nosotros en su vida
cotidiana: a diario identificamos a personas por los rasgos de su cara o por su
voz.
Algunos sistemas de
autenticación biométrica se basan en lo siguiente:
·
Verificación de voz
·
Verificación de escritura
·
Verificación de huellas
·
Verificación de patrones oculares
·
Retina
El núcleo o kernel de un
sistema Unix es la parte más importante del mismo, hasta tal punto que en términos
puristas se considera al núcleo como el sistema operativo en sí. Pero incluso
si no lo consideramos así, y contemplamos al sistema operativo como el conjunto
formado por el núcleo y una serie de herramientas (editor, compilador,
enlazador, shell...), es innegable que el kernel es la parte del sistema más
importante, y con diferencia: mientras que las aplicaciones operan en el espacio
de usuario, el núcleo siempre trabaja en el modo privilegiado del procesador
(RING 0). Esto implica que no se le impone ninguna restricción a la hora de
ejecutarse: utiliza todas las instrucciones del procesador, direcciona toda la
memoria, accede directamente al hardware (más concretamente, a los manejadores
de dispositivos), etc. De esta forma, un error en la programación, o incluso en
la configuración del núcleo puede ser fatal para nuestro sistema.
El archivo /etc/system
En este archivo el
administrador puede definir variables para el núcleo del sistema operativo,
como el número máximo de archivos abiertos por un proceso o el uso de memoria
compartida, semáforos y mensajes para intercomunicación entre procesos.
Una negación de servicio
muy típica en Unix es el consumo excesivo de recursos por parte de usuarios que
lanzan - voluntaria o involuntariamente - demasiados procesos; y un pequeño
error en el código puede hacer que el sistema se vea parado por un exceso de
procesos activos en la tabla, por lo que si deseamos asignar un valor máximo
hemos de editar el archivo /etc/system e incluir una línea como la siguiente:
set maxuprc=60
De esta forma limitamos el
número de procesos por usuario a 60, consiguiendo así que un error en un
programa no sea capaz de detener la máquina.
Un parámetro del sistema
operativo especialmente importante, y que quizás nos interese modificar (sobre
todo en máquinas con pocos recursos) es maxusers. Maxusers no hace referencia
al número máximo de usuarios que pueden conectar simultáneamente al sistema,
sino que es un valor que escala a otros parámetros del núcleo (como max_nproc,
número máximo de procesos en la tabla) o maxuprc. Para modificarlo, podemos
incluir en /etc/system una línea con el valor deseado, generalmente el tamaño
en MB de la memoria física de nuestra máquina:
set maxusers=128
Un firewall o cortafuegos
es un sistema o grupo de sistemas que hace cumplir una política de control de
acceso entre dos redes. De una forma más clara, podemos definir un cortafuegos
como cualquier sistema (desde un simple router hasta varias redes en serie)
utilizado para separar - en cuanto a seguridad se refiere - una máquina o
subred del resto, protegiéndola así de servicios y protocolos que desde el
exterior puedan suponer una amenaza a la seguridad.
Componentes de un cortafuegos
Filtrado de paquetes
Cualquier router IP utiliza
reglas de filtrado para reducir la carga de la red; paquetes con un control de
errores erróneos. El filtrado de paquetes se puede utilizar para implementar
diferentes políticas de seguridad en una red; el objetivo principal de todas
ellas suele ser evitar el acceso no autorizado entre dos redes, pero manteniendo
intactos los accesos autorizados. Su funcionamiento es habitualmente muy simple:
se analiza la cabecera de cada paquete, y en función de una serie de reglas
establecidas de antemano la trama es bloqueada o se le permite seguir su camino;
estas reglas suelen contemplar campos como el protocolo utilizado (TCP, UDP,
ICMP...), las direcciones fuente y destino, y el puerto destino. Además de la
información de cabecera de las tramas, algunas implementaciones de filtrado
permiten especificar reglas basadas en la interfaz del router por donde se ha de
reenviar el paquete, y también en la interfaz por donde ha llegado hasta
nosotros.
Proxy de aplicación
Además del filtrado de
paquetes, es habitual que los cortafuegos utilicen aplicaciones software para
reenviar o bloquear conexiones a servicios como finger, telnet o FTP; a tales
aplicaciones se les denomina servicios proxy, mientras que a la máquina donde
se ejecutan se le llama pasarela de aplicación.
Monitorización de la actividad
Monitorizar la actividad de
nuestro cortafuegos es algo indispensable para la seguridad de todo el perímetro
protegido; la monitorización nos facilitará información sobre los intentos de
ataque que estemos sufriendo (origen, franjas horarias, tipos de acceso...), así
como la existencia de tramas que aunque no supongan un ataque a priori sí que
son al menos sospechosas.
Firewall-1
Quizás el cortafuegos más
utilizado actualmente en Internet es FireWall-1, desarrollado por la empresa
Check Point Software Technologies Ltd. (http://www.checkpoint.com). Incorpora
una nueva arquitectura dentro del mundo de los cortafuegos: la inspección con
estado ( stateful inspection). Firewall-1 inserta un módulo denominado
Inspection Module en el núcleo del sistema operativo sobre el que se instala,
en el nivel software más bajo posible (por debajo incluso del nivel de red), así,
desde ese nivel tan bajo, Firewall-1 puede interceptar y analizar todos los
paquetes antes de que lleguen al resto del sistema; se garantiza que ningún
paquete es procesado por ninguno de los protocolos superiores hasta que
Firewall-1 comprueba que no viola la política de seguridad definida.
Durante 1983 en el M.I.T.
(Massachussetts Institute of Technology) comenzó el proyecto Athena con el
objetivo de crear un entorno de trabajo educacional compuesto por estaciones gráficas,
redes de alta velocidad y servidores; el sistema operativo para implementar este
entorno era Unix 4.3BSD, y el sistema de autenticación utilizado en el proyecto
se denominó Kerberos en honor al perro de tres cabezas que en la mitología
griega vigila la puerta de entrada a Hades, el infierno.
Hasta que se diseñó
Kerberos, la autenticación en redes de computadores se realizaba principalmente
de dos formas: o bien se aplicaba la autenticación por declaración (
Authentication by assertion), en la que el usuario es libre de indicar el
servicio al que desea acceder (por ejemplo, mediante el uso de un cliente
determinado), o bien se utilizaban contraseñas para cada servicio de red.
Kerberos se ha convertido
desde entonces en un referente obligatorio a la hora de hablar de seguridad en
redes. Se encuentra disponible para la mayoría de sistemas Unix, y viene
integrado con OSF/DCE ( Distributed Computing Environment). Está especialmente
recomendado para sistemas operativos distribuidos, en los que la autenticación
es una pieza fundamental para su funcionamiento: si conseguimos que un servidor
logre conocer la identidad de un cliente puede decidir sobre la concesión de un
servicio o la asignación de privilegios especiales. Sigue vigente en la
actualidad.
Arquitectura de Kerberos
Un servidor Kerberos se
denomina KDC ( Kerberos Distribution Center), y provee de dos servicios
fundamentales: el de autenticación (AS, Authentication Service) y el de tickets
(TGS, Ticket Granting Service). El primero tiene como función autenticar
inicialmente a los clientes y proporcionarles un ticket para comunicarse con el
segundo, el servidor de tickets, que proporcionará a los clientes las
credenciales necesarias para comunicarse con un servidor final que es quien
realmente ofrece un servicio. Entonces, la arquitectura de Kerberos está basada
en tres objetos de seguridad: Clave de Sesión, Ticket y Autenticador.
·
La clave de sesión es una clave secreta generada por Kerberos y expedida
a un cliente para uso con un servidor durante una sesión.
·
El ticket es un testigo expedido a un cliente del servicio de tickets de
Kerberos para solicitar los servicios de un servidor; garantiza que el cliente
ha sido autenticado recientemente.
·