Crear una "Caja Negra" basada en linux.

Horst von Brand vonbrand en inf.utfsm.cl
Mie Ene 26 00:02:15 CLST 2005


Rolando Espinoza La Fuente <rhodas en gmail.com> dijo:
> > Me refiero a hasta donde puedo hacer que un servidor sea de acceso a
> > niveles de administrador entre altamente complicados y casi imposibles?

SELinux configurado adecuadamente? Es un parto, eso si...

> > Cosas como:
> > 
> > * que los discos sean cifrados
> 
> Si no me equivoco, OpenBSD tiene más maduro ese punto.

Esta en Linux tambien. El rendimiento es asqueroso (obvio).

> > *no permitir accesos locales (excepto claro esta, al administrador el
> > cual para autenticarse debera hacerlo de una manera doble o triple con
> > algunas contraseñas aleatorias)

Picando (la configuracion de) PAM para exigir mas de una password. Con
SELinux no hay "administrador"...

> Quizá modificando el source de ssh.

ssh es conexion remota, no local.

> > *Evitar al maximo posible la deteccion del sistema operativo y programas
> > instalados

Simple: No instales nada ;-)

> Por ejemplo, recompilando Apache y quitando toda referencia,

... lo que es perfectamente inutil, dado que basta tirarse con un exploit
anti-apache-$TU_VERSION y listo. Asi de pasada te imposibilitas usar los
updates de tu distro, haciendo que tu ventana de vulnerabilidad aumente,
dejandote _mas_ vulnerable, a cambio de mucho trabajo. Excelente idea!!

>                                                              igual con
> la versión del núcleo. Algún parche para evitar la detección de SO por
> nmap, queso, etc.

Eso significaria picar el codigo del stack TCP/IP, con lo que probablemente
se vaya por la ventana la seguridad de esa area. Genial!

> > *Administracion remota solo viable por vpn dentro del cual se > usa ssh
> > o algo asi

OpenSSH por si mismo es suficientemente seguro. Si quieres, lo corres sobre
una VPN, pero es solo un buen costo en rendimiento para ganar nada (o a lo
mas muy poco)...

> Sería viable (supongo), pero.. que servicio daría a "internet"?

;-)

> > *No mostrar la informacion de arranque ni apagado (aunque logicamente,
> > conservar esa informacion en los logs respectivos para auditar el
> > sistema).

Si me dejas solo con la maquina el tiempo suficiente para ver eso en la
pantalla, estas perdido antes de comenzar.

> Quitas la opción del kernel que soporta "consola" y no se verá nada =P

Y el administrador legitimo que se pregunta porque se fue de hocico la
maquina sin registro en los logs queda a ciegas. Bien!

> > *Cualquier otra cosa que se pueda hacer para que esa maquina sea lo mas
> > "privada" posible.

> Meterla en una caja fuerte sin conexión ni a la red eléctrica...

No. Tomas un bidon de 200l, metes el PC dentro, lo llenas de concreto, y lo
hundes en el mar. Preferentemente a mas de 1000m de profundidad.

> > Que tanto se puede implementar entonces para lograr crear esa especie de
> > "caja negra"?
> 
> Todo es posible... basta que alguien lo haga..

La pregunta es si vale la pena. Claro, hay aplicaciones donde se requiere
(y alli lo que se usa no son PCs, ni sistemas operativos "normales", y la
paranoia parte por cosas como ni siquiera conexion a la red electrica y
termina en guardias armados en cada puerta obligados a verificar la
identidad). Linux (ni OpenBSD, ni nada que se pueda haber "comunmente")
no esta hecho para eso.

Cuando consideras "seguridad", tienes que plantear que quieres lograr (que
quieres proteger y contra que; que valor tiene para ti y un potencial
atacante). Que clase de atacantes tienes en frente (script kiddie, cracker
experto; con o sin acceso local), esto en particular define con que
recursos y conocimiento del area cuenta (notese que segun a quien le creas,
entre 75 y 85% de los ataques tienen componente interna). Toda seguridad
tiene su costo, que debe balancearse contra lo que ganas; las medidas que
planteas no dan seguridad (mayormente), solo complican enormemente la
administracion.

Si te interesa seguridad, mejor haz las cosas cuerdas: Restringe acceso
fisico a la maquina, Instala solo lo requerido, solo cuentas necesarias,
cortafuegos local con configuracion restrictiva, actualizaciones
rigurosamente al dia, registrar logs remotamente en una maquina que solo
hace eso y no permite otras conexiones (o derechamente imprimirlos), leer
los logs regularmente. El siguiente paso es algo como Bastille-Linux u otra
receta de endurecimiento, o distribuciones como Trustix u Owl; luego
SELinux configurado a mano.  Despues de eso, ya vienen maquinas especiales
y sistemas operativos ad hoc.

Con un poco de cuidado con una distribucion normal (de las mas usadas,
ojala de la estirpe Enterprise) logras el 95% de la seguridad que puedes
lograr. Siendo mas riguroso, 99% de lo posible.
-- 
Dr. Horst H. von Brand                   User #22616 counter.li.org
Departamento de Informatica                     Fono: +56 32 654431
Universidad Tecnica Federico Santa Maria              +56 32 654239
Casilla 110-V, Valparaiso, Chile                Fax:  +56 32 797513


Más información sobre la lista de distribución Linux