Los mecanismos de seguridad de más bajo nivel que ofrece Solaris sobre
estaciones y servidores SPARC son los que estos implantan en su EEPROM, una memoria RAM no volátil (NVRAM, Non-volatile RAM) a la que
se puede acceder pulsando las teclas `Stop-A' (teclados Sun) o `Ctrl-Break'
(terminales serie). Esta memoria, también denominada OpenBoot PROM o
simplemente OBP es en muchos aspectos similar a la BIOS de un
simple PC, pero mucho más potente y flexible; sus funciones son verificar el
estado del hardware e inicializarlo (ofreciendo para ello una amplica
gama de herramientas empotradas), y por supuesto arrancar el sistema
operativo.
Como antes hemos dicho, cualquiera con acceso físico a una máquina
SPARC puede interactuar con su NVRAM sin más que pulsar la
combinación de teclas `Stop-A'; sin importar el estado en que se
encuentre el sistema, automáticamente se detendrán todos los procesos en
ejecución y se mostrará en consola el prompt `ok ', que indica
que podemos comenzar a teclear órdenes de la OBP. La máquina no pierde
en ningún momento su estado a no ser que explícitamente la detengamos:
al salir de la OBP podemos continuar la ejecución de todos los procesos
que teníamos al entrar, desde el mismo punto en que los detuvimos y con
el mismo entorno que poseían, pero mientras estemos interactuando con la
EEPROM ningún proceso avanzará en su ejecución.
Al interactuar con la EEPROM, cualquier persona10.2 puede interrumpir al operativo y
rearrancarlo desde un disco, un CD-ROM, o un sistema remoto, lo que
evidentemente le proporciona un control total sobre el sistema; podemos
deshabilitar la función de las teclas `Stop-A' mediante la directiva
del kernel `abort_enable' en el fichero /etc/system,
o - lo que suele ser más útil - proteger mediante contraseña el reinicio
de una máquina desde su memoria NVRAM. Para ello, las máquinas SPARC ofrecen tres
niveles de seguridad: `none-secure', `command-secure', y `full-secure'. El primero de ellos, `none-secure' es el que está
habilitado por defecto, y como su nombre indica no ofrece ningún tipo de
seguridad: cualquiera que pulse `Stop-A' desde la consola del
sistema10.3obtiene un acceso total a la EEPROM sin necesidad de conocer ningún
tipo de contraseña y puede reiniciar la máquina de la forma que le plazca.
Los dos modos siguientes son los que ofrecen un nivel de seguridad algo
superior; si activamos `command-secure' será necesaria una clave para
reiniciar el sistema de cualquier dispositivo que no sea el utilizado por
defecto (que generalmente será el disco, disk), y si elegimos `full-secure' la contraseña es obligatoria independientemente del
dispositivo elegido para arrancar. En cualquier caso, esta clave es diferente
de la utilizada para acceder a Solaris como superusuario; si olvidamos la
contraseña de la EEPROM pero tenemos acceso root a la máquina
podemos usar desde línea de órdenes el comando `eeprom' para
modificar (o consultar) cualquier parámetro de la NVRAM, passwords incluidos. Si
hemos perdido la contraseña de la EEPROM y no podemos arrancar la
máquina, es muy posible que necesitemos sustituir nuestra memoria NVRAM
por una nueva, por lo que hemos de tener cuidado con las claves que utilicemos
para proteger la OBP; por supuesto, si utilizamos el modo `full-secure' podemos ir olvidándonos de reinicios programados del sistema
sin un operador que teclee el password en consola: la seguridad en muchas
ocasiones no es del todo compatible con la comodidad o la funcionalidad.
Como hemos adelantado, para consultar o modificar el modo en el que se
encuentra nuestra memoria NVRAM podemos ejecutar la orden `eeprom';
en nuestro caso queremos conocer el estado de la variable `security-mode', por lo que desde una línea de comandos teclearíamos
lo siguiente:
marta:/# eeprom security-mode
security-mode=none
marta:/#
Podemos ver que en este caso nuestra máquina no tiene habilitado ningún
tipo de seguridad; si quisiéramos habilitar el modo `command-secure',
ejecutaríamos:
marta:/# eeprom security-mode
security-mode=none
marta:/# eeprom security-mode=command
Changing PROM password:
New password:
Retype new password:
marta:/# eeprom security-mode
security-mode=command
marta:/#
También es posible realizar estos cambios desde el propio prompt de la
memoria NVRAM, mediante la orden `setenv'10.4:
ok setenv security-mode command
security-mode = command
ok
A partir de este momento, cuando el sistema inicie desde un dispositivo que
no sea el utilizado por defecto, se solicitará la clave que acabamos de
teclear; de forma similar podríamos habilitar el modo `full-secure'.
Para eliminar cualquier clave de nuestra memoria no tenemos más que restaurar
el modo `none-secure', de la forma habitual:
marta:/# eeprom security-mode=none
marta:/# eeprom security-mode
security-mode=none
marta:/#
Si en los modos `command-secure' o `full-secure' queremos
cambiar la contraseña de la NVRAM podemos utilizar de nuevo la
orden `eeprom', esta vez con el parámetro `security-password':
marta:/# eeprom security-password=
Changing PROM password:
New password:
Retype new password:
marta:/# eeprom security-password
security-password= data not available.
marta:/#
Como podemos ver, al consultar el valor de la variable, este nunca se
muestra en pantalla.
El tercer y último parámetro relacionado con la seguridad de la memoria
EEPROM es
`security-#badlogins', que no es más que un contador
que indica el número de contraseñas incorrectas que el sistema ha recibido;
podemos resetear su valor sencillamente asignándole `0'10.5:
marta:/# eeprom security-#badlogins
security-#badlogins=4
marta:/# eeprom security-#badlogins=0
marta:/# eeprom security-#badlogins
security-#badlogins=0
marta:/#
Antes de finalizar este punto quizás sea necesario recordar que los
parámetros de seguridad de la memoria EEPROM que acabamos de ver sólo
existen en máquinas SPARC; aunque en la versión de Solaris para
arquitecturas Intel también existe una orden denominada `eeprom' que nos
mostrará los valores de ciertos parámetros si la ejecutamos, únicamente
se trata de una simulación llevada a cabo en un fichero de texto denominado
`bootenv.rc'. Es posible dar valor a las variables que hemos visto, pero
no tienen ningún efecto en máquinas Intel ya que estas se suelen proteger
en el arranque mediante contraseñas en la BIOS, como veremos al hablar de
Linux.
© 2002 Antonio Villalón Huerta