Como sucede en Linux, el acceso root remoto a una máquina HP-UX se puede
y debe limitar desde el archivo /etc/securetty, donde se listan las
terminales desde las que el superusuario del sistema puede acceder al mismo; si
queremos que el root sólo pueda conectar desde la consola física
de la máquina este archivo debe ser creado de la forma siguiente:
marta:/# echo console > /etc/securetty
marta:/# chown root:sys /etc/securetty
marta:/# chmod 644 /etc/securetty
marta:/#
De nuevo, al igual que sucedía en Linux, esto no evita que se pueda
ejecutar `su' desde cualquier sesión para
conseguir privilegios de administrador, ni deshabilita el acceso remoto
vía SSH o X Window. En el primer caso debemos vetar el acceso
desde el archivo de configuración de sshd, mientras que en el segundo
podemos hacerlo de la forma siguiente:
marta:/# cp -p /usr/dt/config/Xstartup /etc/dt/config/Xstartup
marta:/# print "[[ ${USER} = root ]] && exit 1" >>/etc/dt/config/Xstartup
marta:/#
Muchos de los parámetros que controlan el acceso de los usuarios a un sistema
HP-UX se definen en el archivo /etc/default/security, que ha de tener
permiso de escritura para root y de lectura para todos los usuarios; si
este fichero no existe, el administrador puede - y debe - crearlo. Esta
feature del operativo fue introducida de forma no documentada en HP-UX
11.0, y se incluye también en HP-UX 11i, ya documentada en la página de
manual de `security'. Un ejemplo de este archivo puede ser el siguiente:
marta:/# cat /etc/default/security
ABORT_LOGIN_ON_MISSING_HOMEDIR=1
MIN_PASSWORD_LENGTH=8
NOLOGIN=1
NUMBER_OF_LOGINS_ALLOWED=3
PASSWORD_HISTORY_DEPTH=2
SU_ROOT_GROUP=admins
#SU_DEFAULT_PATH=
marta:/#
Seguramente los parámetros más importantes que podemos encontrar en este
archivo son los referentes a las claves de usuario; tenemos en primer lugar
MIN/SMALL>_PASSWORD/SMALL>_LENGTH, que como su nombre indica
define la longitud mínima de las contraseñas en el sistema; mientras que
en un HP-UX normal no afecta al root, en Trusted HP-UX sí que lo
hace. Puede adoptar cualquier valor entre 6 (el mínimo por defecto) y 8 en
los entornos normales, y entre 6 y 80 en Trusted HP-UX. El otro parámetro
referente a las contraseñas es PASSWORD/SMALL>_HISTORY/SMALL>_DEPTH, que marca
los passwords antiguos contra los que se compara uno nuevo: si su valor es
N, cuando un usuario cambia su clave no podrá utilizar ninguna de sus N
anteriores contraseñas. El valor de esta variable puede ser cualquier número
entre 1 (valor por defecto) y 10, el valor máximo; si su valor es 2, evitamos
que un usuario alterne constantemente dos contraseñas en el sistema.
Otro grupo de directivas es el formado por aquellas que afectan a la entrada
de usuarios en el sistema; tenemos en primer lugar ABORT/SMALL>_LOGIN/SMALL>_ON/SMALL>_MISSING/SMALL>_HOMEDIR, que define cómo ha de
comportarse el operativo cuando un usuario se autentica correctamente pero su
directorio $HOME no existe. Si su valor es 0, el acceso se autorizará y
el usuario entrará directamente al directorio `/'; si es 1, el login será rechazado a pesar de que la autenticación haya sido correcta.La
segunda directiva de este grupo es NOLOGIN: si su valor es 1 y el fichero
/etc/nologin existe, cuando un usuario diferente del root se
autentique para entrar al sistema se le mostrará el contenido del archivo y
se le cerrará la conexión (lo habitual en todos los Unices); por contra, si
el valor de esta variable es 0, el archivo /etc/nologin simplemente será
ignorado. Finalmente, la directiva NUMBER/SMALL>_OF/SMALL>_LOGINS/SMALL>_ALLOWED
delimita el número máximo de conexiones simultáneas que los usuarios
diferentes de `root' pueden poseer en el sistema; si su valor es 0, este
número es ilimitado.
Vamos a ver por último un par de directivas que afectan a la ejecución
de la orden `su' en el sistema. En primer lugar tenemos SU/SMALL>_ROOT/SMALL>_GROUP, que indica qué grupo de usuarios puede ejecutar la
orden para convertirse - tecleando la contraseña, evidentemente - en
administrador del sistema. Si este parámetro no está definido, cualquier
usuario que conozca la clave puede convertirse en root, mientras que si
lo está sólo los usuarios pertenecientes al grupo indicado pueden hacerlo.
Aparte del anterior parámetro, en HP-UX 11i se introdujo una nueva
directiva en el fichero /etc/default/security; se
trata de SU/SMALL>_DEFAULT/SMALL>_PATH, que marca el valor de la variable $PATH cuando alguien cambia su identificador de usuario mediante `su'
sin la opción `-' (esto es, sin emular un login real).
Acabamos de ver que en el archivo /etc/default/security se pueden
configurar diferentes aspectos relativos a las políticas de contraseñas a
seguir en un sistema HP-UX; no obstante, algunos de los puntos más importantes
de cualquier política están, como ocurre en Solaris, integrados dentro
de la propia orden passwd: entre ellos algunos tan decisivos como la
longitud mínima de una contraseña. Un esquema de este tipo resulta algo
pobre actualmente, y como ya dijimos, cualquier Unix moderno debería
incluir `de serie' la posibilidad de ofrecer una granularidad más adecuada en
todo lo respectivo a las claves de los usuarios. Sea como sea, el esquema
seguido en HP-UX es muy similar al de Solaris en cuanto a los requisitos
mínimos para un password: al menos seis caracteres, dos de los cuales
han de ser letras y uno numérico o especial, diferencias con la contraseña
anterior en al menos tres caracteres - considerando equivalentes a mayúsculas
y minúsculas para este propósito -, clave diferente del nombre de usuario
y cualquier rotación del mismo, etc.
Ya para finalizar este punto, y relacionado también con la gestión de
usuarios en HP-UX (aunque no explícitamente con el acceso de los mismos al
sistema), es
necesario hablar brevemente de los privilegios de grupo; este mecanismo,
introducido en HP-UX 9.0, permite asignar a un grupo ciertos privilegios de
administración, distribuyendo en cierta forma el `poder' del superusuario y
rompiendo la aproximación al reparto de privilegios clásico de Unix (todo o
nada). En la tabla 12.1 se muestran los privilegios de grupo
soportados en HP-UX junto a la versión del operativo en la que fueron
introducidos ([Spr01]).
Tabla 12.1:
Privilegios de grupo en HP-UX
Versión |
Privilegio |
Descripción |
9 |
RTPRIO |
Especificación de prioridades de tiempo real |
9 |
MLOCK |
Utilización de plock() |
9 |
CHOWN |
System V chown |
9 |
LOCKRDONLY |
Utilización de lockf() |
9 |
SETRUGID |
Utilización de setuid() y setgid() |
10 |
MPCTL |
Utilización de mpctl() |
10 |
RTSCHED |
Utilización de sched_setparam() |
10 |
SERIALIZE |
Utilización de serialize() |
11 |
SPUCTL |
Utilización de spuctl() |
11i |
FSSTHREAD |
Utilización de fss() |
11i |
PSET |
Utilización de pset() |
|
Para asignar privilegios a un determinado grupo se utiliza la orden setprivgrp desde línea de comandos, y para que las modificaciones sean
permanentes en el arranque de la máquina se lee el archivo /etc/privgroup (si existe) desde /etc/rc en HP-UX 9.x o de /etc/init.d/set_prvgrp en versiones superiores; en este fichero se indican
(uno por línea) los privilegios a otorgar o eliminar a cada grupo:
marta:/# cat /etc/privgroup
-n CHOWN
admins CHOWN
admins SETRUGID
marta:/#
En el anterior ejemplo se limita de forma global el permiso para ejecutar chown a todos los usuarios, y a continuación se habilita ese mismo permiso,
junto a la capacidad para utilizar setuid() y setgid(), a los
miembros del grupo admins. Al menos la primera entrada debería
encontrarse siempre en HP-UX, ya que por defecto el operativo presenta un
comportamiento de chown basado en System V, lo que permite que un
usuario pueda cambiar la propiedad de sus archivos asignándolos al resto de
usuarios - incluido el root -, lo que claramente puede llegar a suponer
un problema de seguridad; es mucho más recomendable una aproximación basada
en BSD, que limita la ejecución de chown al root.
Como en otros sistemas Unix, cuando en HP-UX un usuario quiere cambiar de
grupo puede ejecutar la orden newgrp; sin embargo, se introduce una
característica adicional: en el fichero /etc/logingroup, de formato
similar a /etc/group (de hecho puede ser un enlace a este por cuestiones
de simplicidad), se define la lista inicial de grupos a los que un usuario
pertenece, es decir, aquellos sobre los cuales no tiene que ejecutar `newgrp' para convertirse en miembro de los mismos. Si este archivo no existe
o está vacío, el usuario ha de ejecutar `newgrp' siempre que
quiera acceder a un grupo secundario, y evidentemente conocer la clave de grupo
(como en cualquier Unix, si no está definido un password para el grupo,
ningún usuario puede pertenecer a él si no es como grupo primario); en
cualquier caso, la relación de grupos secudarios para un usuario ha de
definirse en /etc/logingroup, ya que si sólo lo está en /etc/group se ignorará y el usuario deberá ejecutar `newgrp' para
acceder a los grupos secundarios no definidos.
La orden `groups' nos indicará a qué grupos pertenece de forma
directa - sin tener que teclear ninguna contraseña - un cierto usuario,
basándose para ello en la información almacenada en /etc/passwd,
/etc/group y /etc/logingroup:
marta:/# groups root
adm bin daemon lmadmin lp mail other root sys users
marta:/#
© 2002 Antonio Villalón Huerta