Como vamos a ver en esta sección, AIX ofrece un sistema de control de accesos y gestión de usuarios realmente interesante; al igual que en cualquier entorno Unix, nada más instalar el operativo ya existen una serie de usuarios `del sistema' (
root,
daemon,
sys...). Todos ellos tienen en realidad las cuentas bloqueadas ya que el campo reservado a su contraseña en
/etc/security/passwd es un asterisco, aunque una orden como
`lsuser' nos diga lo contrario:
bruja:/# lsuser -a account_locked ALL
root account_locked=false
daemon account_locked=false
bin account_locked=false
sys account_locked=false
adm account_locked=false
uucp account_locked=false
guest account_locked=false
nobody account_locked=false
lpd account_locked=false
imnadm account_locked=false
nuucp account_locked=false
bruja:/#
Si necesitamos que la cuenta de un determinado usuario se bloquee temporalmente pero no queremos sustituir su clave del fichero de contraseñas por un asterisco, podemos ejecutar la orden
`chuser'12.1:
bruja:/# lsuser -a account_locked toni
toni account_locked=false
bruja:/# chuser account_locked=true toni
bruja:/# lsuser -a account_locked toni
toni account_locked=true
bruja:/#
La gestión y el control de los accesos al sistema por parte de usuarios se puede llevar a cabo desde diferentes ficheros del directorio
/etc/security/: por ejemplo, en el archivo
user se definen los diferentes atributos de cada usuario del sistema, desde las propiedades de envejecimiento de su contraseña a las franjas horarias en que el usuario pueden acceder a la máquina; vamos a ver en los siguientes puntos algunos de estos archivos, interesantes para definir o refinar parámetros relacionados con la seguridad de nuestro sistema.
El fichero /etc/security/.ids
El nombre de este archivo quizás nos puede inducir a pensar que se trata de algo relacionado con la detección de intrusos en nuestra máquina; nada más lejos de la realidad: en el fichero
.ids se almacena información necesaria para generar correctamente a nuevos usuarios. Su formato es similar al siguiente:
bruja:/etc/security# cat .ids
8 210 11 205
bruja:/etc/security#
Donde
`8' y
`11' indican los siguientes UID y GID (respectivamente) disponibles para usuarios con privilegios administrativos, mientras que
`210' y
`205' son equivalentes pero para usuarios sin dichos privilegios.
A no ser que conozcamos muy bien el sistema, no es recomendable modificar manualmente este archivo, ya que las herramientas de gestión de usuarios lo actualizan de forma automática; de cualquier forma, aquí lo citamos para evitar confusiones con su nombre, como hemos comentado al principio.
El fichero /etc/security/passwd
Al contrario de lo que sucede con el archivo
.ids, el nombre del fichero
passwd no da lugar a equivocaciones: se trata, evidentemente, de información sobre las claves de los usuarios del sistema. Esta información puede estar desajustada con respecto a la contenida en
/etc/passwd, por lo que es recomendable ejecutar periódicamente - al menos una vez al mes - órdenes como
pwdck,
usrck o
grpck, encargadas de verificar, comparar y sincronizar la información de los usuarios (definiciones, grupos y autenticación) en las diferentes tablas que AIX mantiene:
bruja:/# pwdck -y ALL
The user "daemon" has an invalid password field in /etc/passwd.
The user "toni" has an invalid password field in /etc/passwd.
bruja:/# usrck -n ALL
User daemon is locked.
User bin is locked.
User sys is locked.
User nobody is locked.
User lpd is locked.
User imnadm is locked.
bruja:/#
Tras sincronizar correctamente la información de los usuarios (parámetro
`-y' de estas órdenes), en
/etc/passwd nos encontraremos el carácter
`!' en el campo reservado a la contraseña cifrada de cada entrada, mientras que las claves reales ya estarán en
/etc/security/passwd. Este fichero ha de ser de sólo lectura para el administrador: es en cierta forma similar al
/etc/shadow clásico de otros Unices; no obstante, difiere enormemente de él en el formato del archivo, ya que no utiliza una entrada por línea con los campos separados por el carácter
`:'. Por contra, en AIX cada usuario tiene definidos una serie de campos, uno por línea, y con el identificador del campo y su contenido separados por un signo
`='; por ejemplo, la entrada para el usuario
`oracle' en
/etc/security/passwd podría ser similar a la siguiente:
oracle:
password = be3a2NjB.dtbg
lastupdate = 995301219
flags =
El primer campo representa obviamente la contraseña cifrada del usuario; el segundo representa el la fecha y hora de la última actualización del conjunto de atributos (denominado
`stanza') del usuario, y finalmente el campo
`flags', por defecto vacío, puede contener una serie de parámetros característicos del usuario concreto: si se trata de un usuario con cierto privilegio, si no necesita contraseña para conectar al sistema...; para obtener más información sobre estos parámetros podemos consultar la página del manual de
`pwdck'.
El fichero /etc/security/failedlogin
Como su nombre indica, en este fichero se registran los intentos fallidos de acceso al sistema; su formato no es de texto plano, sino que es similar a los ficheros
wtmp de AIX y otros sistemas Unix. Por tanto, para visualizar el contenido de este archivo necesitamos ejecutar órdenes como
`last' o
`who' con los parámetros adecuados:
bruja:/# who -s /etc/security/failedlogin |tail -3
oracle pts/24 Sep 5 12:55 (luisa)
UNKNOWN_ dtlogin/_0 Sep 12 11:01
toni pts/23 Sep 13 15:45 (anita)
bruja:/#
El fichero /etc/security/lastlog
En el archivo
/etc/security/lastlog de un sistema AIX, un fichero de texto plano que poco tiene que ver con el formato del
`lastlog' de otros Unices, se encuentra almacenada información relativa a la última conexión - o intento de conexión - de cada usuario de la máquina; en concreto, aparecen referencias a la hora, terminal y
host origen de la última entrada al sistema y del último intento de acceso.
Cuando un usuario es creado mediante
mkuser (o equivalentemente, vía SMIT) se crea una
stanza vacía para el mismo en este archivo cuyos campos se irán rellenando a medida que el usuario acceda al sistema; esta
stanza puede ser similar a la siguiente:
toni:
time_last_login = 1005297794
tty_last_login = ttyp0
host_last_login = anita
unsuccessful_login_count = 0
time_last_unsuccessful_login = 1004445794
tty_last_unsuccessful_login = /dev/pts/14
host_last_unsuccessful_login = luisa
Como podemos ver, el nombre de cada campo es autoexplicativo de su función; el único que quizás puede plantear alguna duda es
unsuccessful_login_count, que no es más que un contador que indica el número de intentos de acceso fallidos desde la última entrada al sistema.
Para consultar los parámetros de cada usuario almacenados en este archivo no es necesario editar o visualizar el fichero: mediante la orden
lsuser podemos obtener el valor de cada uno de ellos; si por ejemplo nos interesa el nombre de la máquina desde la que el usuario
toni accedió por última vez al sistema, podemos conseguirlo de esta forma:
bruja:/# lsuser -a host_last_login toni
toni host_last_login=anita
bruja:/#
El fichero /etc/security/limits
En este archivo se definen límites a algunos de los recursos que ofrece un entorno de trabajo AIX; como muchos de los archivos del directorio, contiene una
stanza que se aplica por defecto y luego entradas - vacías por lo general - para cada usuario, en las que se pueden personalizar parámetros que sólo se aplican a uno o varios usuarios y no a todos (generalmente se definen al crear al usuario). Las diferentes directivas del archivo son las siguientes:
- fsize
Tamaño máximo de un archivo en bloques de 512 bytes.
- core
Tamaño máximo de un fichero core (volcado de memoria) en bloques de 512 bytes.
- cpu
Tiempo límite de CPU por proceso, especificado en segundos. Por defecto no está establecido para ningún usuario.
- data
Límite de tamaño del segmento de datos de un proceso del usuario, en bloques de 512 bytes.
- stack
Límite de tamaño de la pila de un proceso en bloques de 512 bytes.
- rss
Límite del tamaño de memoria utilizada por proceso, en bloques de 512 bytes.
- nofiles
Número máximo de descriptores de fichero abiertos.
Cada uno de los límites anteriores es un límite
soft (blando) que el usuario puede sobrepasar si lo desea, modificando su valor mediante la orden
ulimit; existen, definidos en el mismo archivo, límites
hard (duros) que el usuario no puede incrementar de ninguna forma. El nombre de cada uno de ellos es el mismo que el de su equivalente
soft pero añadiéndole la coletilla
`_hard':
fsize_hard,
rss_hard,etc.
Podemos ver los límites aplicables a uno o más usuarios mediante la orden
`lsuser' (un valor de `-1' indica que se trata de un recurso no limitado al usuario en cuestión):
bruja:/# lsuser -f -a fsize core cpu data stack rss nofiles toni
toni:
fsize=2097151
core=2097151
cpu=-1
data=262144
stack=65536
rss=65536
nofiles=2000
bruja:/#
Por defecto, AIX ofrece unos límites bastante razonables a los recursos que cada usuario puede consumir; no obstante, en función de para qué se utilice cada sistema concreto, es recomendable que sea el administrador el que deba especificar qué limites impone a los usuarios sobre los recursos de la máquina para prevenir negaciones de servicio contra los mismos.