El principio del mínimo privilegio

En seguridad informática hay un concepto muy importante con respecto a los puertos abiertos, y permisos en usuarios en general.

En pocas palabras se podría describir en cualquiera de las siguientes frases:

  • “Cualquier permiso que no sea estrictamente necesario deberá negarse”
  • “Aquellos permisos que no están explícitamente permitidos, estarán prohibidos”
  • “Si no necesitas un permiso no deberías tenerlo”

Entre varias otras, la idea es clara, si no necesitas tener acceso a un objeto, base de datos, puerto, programa o cualquier otro componente del sistema como una interfaz gráfica simplemente no lo tienes.

Este es uno de los conceptos que en teoría suenan muy bien, pero ya en la practica es bastante distinto. Para ilustrar este punto hay que notar que existen distintos sistemas operativos de propósito general en la actualidad, Linux, Windows, MacOSX, BSD, etc… Y hasta donde tengo entendido(por favor corríjanme si me equivoco) el único realmente pensado desde nivel kernel en seguridad ocupando este principio es openBSD(existe Engarde y varias distribuciones mas pensadas para ser usadas en entornos seguros, pero estas corren el kernel de Linux que tiene muchas características no necesarias) y si bien es perfectamente utilizable como entorno de usuario o como servidor

Desde este punto de vista indirectamente deslumbramos otro principio de la seguridad casi directamente: “La complejidad es enemigo de la seguridad” simplemente:

  • A mayor cantidad de objetos, programas o puertos abiertos mayor cantidad de cosas a revisar
  • A mayor cantidad de servicios habilitados es mas probable que se le encuentre una vulnerabilidad a alguno
  • A menor cantidad cantidad de funciones, menor probabilidad de que haya algún problema de seguridad en alguna de ellas

Finalmente las 3 razones anteriores son la misma dicha de distinta manera. El principal problema de este enfoque es que querer y necesitar son dos conceptos distintos. Se ilustra perfectamente en esta frase:

  • “Yo quiero escuchar musica en el trabajo”

Si soy un programador o una secretaria o un capturista de datos o casi cualquier otra profesión que no requiera de escuchar musica bajo este principio no se nos debería de permitir. Veamos ahora un ejemplo mas extremo, se ocupar vi y manejar la consola por lo que en realidad no necesito entorno gráfico para escribir ni siquiera en mi estación de trabajo, ¿Quiero entorno grafico? Quizá en un servidor no, pero en mi computadora que ocupo para trabajar sin duda, en la que ocupo para jugar y escuchar musica ya ni es necesario decirlo. De aquí se desprende el problema principal:

  • La seguridad y la usabilidad están peleadas
  • Un sistema con todas las funciones que quiero tiene muchas mas funciones que un sistema que tiene todas las funciones que necesito.
  • No es cómodo usar un sistema tan seguro como es posible
  • No puede ser fácil de configurar un sistema enfocado a la seguridad

Para esto comparemos instalar debian(o ubuntu si prefieren) contra openBSD

Para un ambiente corporativo donde la seguridad es primordial esta muy bien seguir el principio del mínimo privilegio, pero para un usuario normal ¿Que es mas importante?

  • Tener un reproductor de audio listo para usar cuando el sistema sea instalado
  • No tener servicios ni programas potencialmente vulnerables(El servicio de audio puede ser potencialmente vulnerable por eso es mejor no tenerlo habilitado, también el programa reproductor de audio puede ser un riesgo)

El ejemplo anterior puede ser una molestia menor, ¿Pero si tenemos que hacer esto con cada servicio y programa que queramos usar?

Debian tiene un reproductor de audio por defecto, varias opciones de interfaces gráficas ya integradas y muchos programas ya incluidos si instalamos un entorno de escritorio, puede que muchos de ellos nunca los usemos y algunos que tenemos instalados ni siquiera los conozcamos, cada uno de estos son un potencial riesgo de seguridad.

OpenBSD tiene todos los servicios no esenciales para arrancar el sistema deshabilitados por defecto, por lo mismo no tiene programas no necesarios instalados, esto es por supuesto mas seguro, por otro lado esto implica que tenemos que instalar cada cosa que necesitemos ocupar.

Si pensamos en una empresa muy atacada como por ejemplo un banco tiene todo el sentido del mundo ocupar openBSD, pero para cualquier usuario normal o incluso empresas pequeñas, medianas o incluso grandes donde su enfoque principal no es la seguridad: ¿Vale la pena esforzarnos tanto para tener un sistema acorde a los mínimos servicios y programas necesarios?

Por el lado de la seguridad, sí y sin dudarlo. Por otro lado el tiempo necesario para tener un sistema openBSD con las mismas funcionalidades que un Debian para el usuario promedio definitivamente no vale la pena. Es demasiado tiempo configurando cosas que podríamos tener listas de escoger otro sistema por ganancias de seguridad mínimas.

Esto no quiere decir que la seguridad no sea importante, quien decida usar Windows XP o Windows Server 2003 aun sabiendo los grandes riesgos que conlleva no se debería de quejar al ser vulnerado pero decidir entre un linux relativamente seguro o incluso entre Windows 7 y openBSD… Ante esta decisión el lado de la usabilidad gana, y por mucho.