Los agujeros de seguridad se manifiestan (en general) en cuatro modos….

1- Agujeros de seguridad físicos
Cuando el problema potencial, esta causado debido al hecho de dar a personas sin autorización, acceso físico a la maquina, cuando esto les permite realizar cosas, que no deberían ser capaces de hacer.
Un buen ejemplo de esto podría ser una sala pública, con estaciones de trabajo, donde seria facilísimo para un usuario, el reinicializar una maquina en modo mono-usuario y trastear con los archivos de la estación de trabajo, si no se tomasen precauciones.
Otro ejemplo de esto es la necesidad de restringir el acceso a cintas backup confidenciales, que de otro modo podrían ser leídas por cualquier usuario con acceso a las cintas y con una unidad de cinta, independientemente de si tuvieran o no permiso.

2 – Agujeros de seguridad en el software
Cuando el problema esta causado por una mala escritura de partes "privilegiadas" de software (daemons, cronjobs) que pueden estar comprometidos a realizar tareas que no deberían.
El ejemplo mas famoso de esto es el bug del sendmail que podía permitir a un cracker el pillar una shell root. Esto podría ser usado para borrar archivos, crear nuevas cuentas, copiar el fichero de passwords, cualquier cosa.
Nota: Contrariamente a lo que la gente piensa, los ataques vía sendmail no estaban solo restringidos al infame "Gusano de Internet" (Internet Worm) – cualquier cracker podía hacer esto Telneteando al puerto 25 de la víctima. La historia detrás de un agujero similar (esta vez en el software "move-mail" de EMACS) se describe en [Stoll].
Nuevos agujeros como este aparecen todo el tiempo, y tus mejores esperanzas son:
– Tratar de estructurar tu sistema de forma que el menor software posible con privilegios root/daemon/bin corra en tu maquina, y que el que lo haga sepamos que sea robusto.
– Suscribirse a una lista de mail para poder tener lo antes posible información con detalles acerca de problemas y/o parches, y actuar en cuanto la tengas.
– Cuando instales/actualices un sistema dado, trata de instalar/habilitar solo aquellos paquetes de software por los que tengas una necesidad inmediata o previsible. Muchos paquetes incluyen daemons o utilidades que pueden revelar información a extraños. Por ejemplo, el paquete de contabilidad del Unix System V de AT&T incluye acctcom(1), que podría permitir (por omisión) a cualquier usuario el revisar los datos de las cuentas diarias de cualquier otro usuario. Muchos paquetes TCP/IP instalan/cargan automáticamente programas tales como rwhod, fingerd, y (ocasionalmente) tftpd, pudiendo todos presentar problemas de seguridad.
Una administración del sistema cuidadosa es la solución. Muchos de estos programas son inicializados/iniciados en el arranque; desearas cambiar tus scripts de arranque (normalmente en los directorios /etc, /etc/rc, /etc/rcX.d) para prevenir su ejecución. Desearas eliminar algunas utilidades completamente. Para algunas utilidades, un simple chmod(1) puede prevenir el acceso de usuarios no autorizados
Resumiendo, no confies en los scripts/programas de instalación! Tales facilidades tienden a instalar/cargar todo lo que hay en el paquete sin preguntártelo. Muchos manuales de instalación incluyen listas de "los programas incluidos en este paquete"; asegúrate de revisarlo.

3 – Agujeros de seguridad de uso incompatible
Cuando, a través de la falta de experiencia, o no por fallo suyo, el administrador del sistema reúne una combinación de hardware y software y esta es usada como un sistema, estar seriamente dañado desde el punto de vista de la seguridad. Es la incompatibilidad de intentar hacer dos inconexos pero útiles actos lo que crea agujeros de seguridad.
Problemas como este son muy difíciles de encontrar una vez que el sistema esta creado y funcionando, así que es mejor el crear el sistema con ellos en mente (fallos). Aunque nunca es tarde para volver a pensarlo.

4 – Elegir una filosofía de seguridad adecuada y mantenerla
El cuarto tipo de problema de seguridad es el de la percepción y el entendimiento. Software perfecto, hardware protegido, y componentes compatibles no funcionan a menos que hayas elegido una política de seguridad correcta y que hayas puesto en marcha las partes de tu sistema que la refuercen.
Tener el mejor mecanismo de password del mundo es inútil si tus usuarios creen que la ultima parte del nombre de su login es un buen password! La seguridad esta relacionada con una política (o conjunto de políticas/normas) y el funcionamiento de tu sistema conforme a dicha política.