jueves, 15 de mayo de 2008

Conceptos generales, servidores versus estaciones de trabajo, etc

Hay muchos elementos que afectan a la seguridad de un ordenador. ¿Cómo de seguro necesita ser? ¿Está en red la máquina? ¿Habrán cuentas interactivas de usuarios (telnet/ssh)? ¿Se utilizarán las máquinas como estaciones de trabajo o se trata de un servidor? Esta última es de gran relevancia, pues las "estaciones de trabajo" y los "servidores" tradicionalmente han sido animales muy diferentes, aunque la línea se difumina con la introducción de potentes y baratos PCs, a medida que los sistemas operativos se aprovechan de ello. En el mundo de hoy en día, la principal diferencia entre los ordenadores no suele estar en el hardware, ni siquiera el SO (Linux es Linux, NT Server y NT Workstation son familia cercana, etc), sino en los paquetes de software que traen instalados (Apache, X, etc) y en el modo en que los usuarios acceden a la máquina (interactivamente, en la consola, etc.). Algunas reglas de carácter general que te ahorrarán bastantes penurias son las siguientes:


1.Mantén a los usuarios alejados de los servidores. Es decir: no les proporciones shells de login interactivos, a menos que sea un requerimiento absoluto.
2.Bloquea las estaciones de trabajo, da por hecho que los usuarios intentarán "arreglar" las cosas (qué caramba, incluso podrían ser hostiles, trabajadores temporales/etc).
3.Utiliza la criptografía allí donde sea posible para almacenar claves en texto simple, números de tarjetas de crédito y otro tipo de información delicada.
4.Escanea regularmente la red en busca de puertos abiertos, software instalado que no debería estar ahí, compáralo con resultados anteriores.

Recuerda: la seguridad no es una solución, es un modo de vida.

Hablando en términos generales, las estaciones de trabajo/servidores son utilizados por gente que no se suele preocupar en absoluto por la tecnología que llevan por debajo, lo único que quieren es tener listo su trabajo y recoger su correo de forma periódica. Sin embargo, hay muchos usuarios que tendrán la habilidad suficiente como para modificar sus estaciones de trabajo, para bien o para mal (instalar sniffers de paquetes, sitios ftp de warez, servidores www, robots de irc, etc). A esto hay que añadirle que la mayoría de los usuarios tienen acceso físico a sus estaciones de trabajo, lo cual quiere decir que tienes que bloquearles el acceso si quieres hacer las cosas bien.


1.Utiliza las claves de las BIOS para mantener a los usuarios alejados de la BIOS (nunca deberían estar ahí, recuerda también que las BIOS viejas tienen claves universales.)
2.Configura la máquina para que arranque únicamente del disco duro adecuado.
3.Pon clave al prompt de LILO.
4.No les des acceso de root a los usuarios, utiliza sudo para proporcionar acceso a comandos privilegiados cuando sea necesario.
5.Utiliza cortafuegos para que incluso si instalan servicios estos no sean accesibles al resto del mundo.
6.Observa regularmente la tabla de procesos, puertos abiertos, software instalado, etc. en busca de cambios.
7.Ten una política de seguridad escrita que los usuarios puedan entender, y fortalécela.
8.Borra todo tipo de objetos peligrosos (compiladores, etc), a menos que sean necesarios en un sistema.

Recuerda: seguridad en profundidad

Con la configuración adecuada, una estación Linux es casi a prueba de usuarios (nada es 100% seguro), y generalmente mucho más estable comparado con máquinas Wintel. Con el goce añadido de la administración remota (SSH/Telnet/NSH), puedes tener a tus usuarios contentos y productivos.

Los servidores son harina de otro costal, y por lo general son más importantes que las estaciones de trabajo (cuando se muere una estación de trabajo, el afectado es un usuario, si el que se muere es el servidor de correo/www/ftp/, es tu jefe el que telefonea de mal humor). A menos que existan fuertes necesidades, mantén el número de usuarios con shells interactivos (bash, pine, basados en lynx, lo que sea) en el mínimo posible. Segmenta los servicios (ten un servidor de correo, un servidor de www, etc.) para minimizar los puntos únicos de fallo. En términos generales, un servidor adecuadamente configurado se ejecutará y no necesitará mayor mantenimiento (tengo un servidor de correo de un cliente que ha sido utilizado durante 2 años con unas 10 horas de tiempo total de mantenimiento). Cualquier actualización debería estar cuidadosamente planeada y ejecutada en un banco de pruebas. Algunos puntos importantes a recordar en cuanto a los servidores:


1.Restringe el acceso físico a los servidores.
2.Política del menor privilegio, así pueden estropearse menos cosas.
3.¡HAZ COPIAS DE SEGURIDAD!
4.Comprueba con regularidad los servidores en busca de cambios (puertos, software, etc), para esto son estupendas las herramientas automatizadas.
5.Los cambios de software deberían estar cuidadosamente planeados/probados, pues pueden implicar efectos inversos (como que el kernel 2.2.x ya no utiliza ipfwadm, imagínate que se te olvidara instalar ipchains).

Minimizar los privilegios significa darles a los usuarios (y a los administradores en lo que a ellos respecta) la mínima cantidad de acceso requerido para hacer su trabajo. Darle a un usuario acceso de "root" a su estación de trabajo tendría sentido si todos los usuarios tuviesen grandes conocimientos de Linux, y fuesen de fiar, pero a menudo no lo son (en ambos sentidos). E incluso si lo fueran, sería una mala idea, pues crecerían las probabilidades de que instalasen software inseguro/defectuoso. Si todo lo que necesita un usuario es hacer un apagado/reiniciado de la estación de trabajo, es entonces ese el nivel de acceso que se les debería proporcionar. Con seguridad, no dejarías registros contables en un servidor con permisos de lectura al mundo para que los contables pudieran leerlos, y este concepto se extiende a la totalidad de la red. Limitar el acceso también limitará los daños, en caso de que se produzcan penetraciones en las cuentas (¿has leído alguna vez los post-it que mucha gente dejan pegados en los monitores?).

No hay comentarios: