- Ejecutar software fiable.
- Sospechar de los procesos.
- Ejecutar los procesos con confinamiento.
- Registrar los accesos.
- Buscar periódicamente agujeros de seguridad.
El software fiable: es aquel que ha sido
rigurosamente desarrollado y analizado, de forma que se puede confiar en que
hará lo que se espera y nada más. Típicamente, el software fiable es la base
sobre la que se ejecutan aplicaciones no fiables. Un sistema operativo debe ser
fiable y, por tanto, se puede usar para que los programas de usuario ejecuten
operaciones sensibles sin acceder a datos sensibles. Tanto las bibliotecas de
interfaz del sistema operativo como los generadores de código deben ser
fiables.
La sospecha mutua: es un concepto que se desarrolló
para describir las relaciones entre dos procesos. Los sistemas que sospechan se
ejecutan como si los otros procesos fueran maliciosos. Por ello, en todos los
módulos se aplica el encapsulamiento y la ocultación de la información. El
sistema operativo debe sospechar de todos los procesos que se ejecutan sobre
él. Sin embargo, existen muy pocos sistemas operativos que apliquen este
criterio de diseño con sus componentes internos, por lo que es necesario
aplicar controles de programación muy estrictos durante el desarrollo de este
tipo de sistemas. Una técnica típica de sospecha es monitorizar los procesos
para ver si tienen patrones de ejecución sospechosos.
El confinamiento: es una técnica usada por los sistemas operativos
para tratar de reducir los daños en caso de que existan fallos de seguridad o
código malicioso. Un proceso confinado tiene estrictamente limitados los
recursos del sistema a los que puede acceder. Este principio es muy útil para
proteger el sistema ante la existencia de virus, ya que, si se aplica
estrictamente, el virus sólo puede dañar el compartimento al que tiene acceso.
La separación de dominios es una técnica de seguridad muy frecuente en sistemas
operativos.
El registro de accesos: origina un listado de los
usuarios que acceden a los objetos del sistema, especificando cuándo y cómo se
han realizado dichos accesos. En un sistema operativo de propósito general se
suelen registrar las entradas y salidas al sistema y los accesos a ciertos
objetos. En un sistema seguro se registran muchos más eventos. En cualquier
caso, es fundamental registrar los fallos de acceso a cualquier tipo de
objetos, puesto que pueden revelar la presencia de intrusos. Asimismo, cuando
se pruebe un programa nuevo sería conveniente registrar los eventos que origina
para comprobar que no realiza acciones indebidas. Sobre el registro de accesos
se pueden efectuar auditorías periódicas para tratar de detectar cualquier tipo
de fallos de seguridad, como por ejemplo el uso de cerrojos sobre un archivo
para crear un canal encubierto.
Buscar periódicamente agujeros de seguridad: Una vez en funcionamiento, el
sistema operativo tiene que comprobar que no hay intentos de violación de la
seguridad en el sistema. Algunas de las comprobaciones a realizar son: palabras
clave cortas o muy sencillas, programas con prioridad indebida, programas con
un identificador de usuario indebido, programas no autorizados en directorios
del sistema, etc. Asimismo, el sistema operativo debe registrar los accesos a
los recursos por parte de los usuarios. Cuando se ha producido un problema de
seguridad, se puede usar el registro de accesos para saber quién lo ha
producido, facilitar la recuperación y para prevenir problemas futuros.