El fichero /etc/security/login.cfg

En este archivo se definen ciertos parámetros de control para las conexiones remotas a un sistema AIX; como veremos en este punto, todos ellos tienen implicaciones directas, aunque de diferente grado, en la seguridad del entorno de trabajo. Se puede dividir en tres grandes áreas: la correspondiente a la definición de puertos, la relativa a métodos de autenticación de usuarios y la que define atributos también de los usuarios; todas ellas contienen una stanza por defecto, y adicionalmente definiciones particulares para elementos concretos.

La primera gran área del archivo, la relativa a los puertos, está formada por una serie de parámetros que definen características del acceso al sistema a través de ellos; la primera directiva de este grupo es herald, que permite definir el mensaje que se muestra en la pantalla del usuario que trata de establecer una conexión remota con el sistema (algo similar al archivo /etc/motd del resto de Unices, fichero que en AIX no existe - y si es creado no tiene efecto -). Cuando tratamos de acceder a una máquina AIX el mensaje que se muestra es similar al siguiente:
luisa:~$ telnet bruja
Trying 192.168.0.10...
Connected to bruja.
Escape character is '^]'.


telnet (bruja)

AIX Version 4
(C) Copyrights by IBM and by others 1982, 1996.
login:
Modificando la directiva herald de /etc/security/login.cfg podemos definir otros mensajes de presentación; si por ejemplo queremos simular que nuestra máquina ejecuta Solaris en lugar de AIX, podemos emular el mensaje del primero:
bruja:/# grep herald /etc/security/login.cfg
herald = "SunOS 5.8\n\nlogin: "
bruja:/#
Así, cuando un usuario trate de conectar al sistema, verá algo parecido a lo siguiente:
bruja:/# telnet 0
Trying...
Connected to 0.
Escape character is '^]'.

SunOS 5.8

login:^D Connection closed.
bruja:/#
Relacionada con el anterior parámetro tenemos la directiva herald2, formada por una cadena de texto y que define el mensaje de login impreso en la terminal tras un intento fallido de acceso al sistema; por defecto, esta cadena de texto es un nuevo prompt de login.

También relativa a los puertos, otra directiva interesante que podemos encontrar en el fichero login.cfg es logindelay, que permite especificar el retardo en segundos entre intentos consecutivos de entrada al sistema; si es diferente de 0 (si es 0 se deshabilita su efecto) el valor de este parámetro se multiplica por el número de intentos fallidos: si logindelay es 1 el retardo entre el primer y el segundo intento será de un segundo, entre el segundo y el tercero será de dos, etc. Junto a este parámetro podemos definir también la directiva logindisable, que marca el número de intentos de entrada al sistema fallidos que una conexión acepta antes de cerrarse - o bloquearse, si se trata de una línea serie -, logininterval, que define los segundos durante los que se tienen que producir los intentos fallidos de conexión para que se cierre o bloquee la misma, y loginreenable, que obviamente indica el intervalo - en minutos - que un puerto va a permanecer bloqueado (si su valor es 0 - y por defecto lo es - estará así hasta que el administrador lo desbloquee manualmente mediante chsec).

Otra entrada útil en el archivo login.cfg es logintimes, que como su nombre indica define las horas y días durante las que un puerto determinado puede ser utilizado para acceder al sistema, algo similar (en idea, no en sintaxis) al archivo /etc/porttime de Linux o al prot.pwd.DB de HP-UX 10.x. El formato utilizado para especificar los intervalos de horas o días en los que el acceso se permite (entradas llamadas ALLOW) o se deniega (entradas DENY) no es inmediato, por lo que es recomendable - como siempre en Unix - consultar la página del manual de login.cfg. Por defecto, se permite a todos los usuarios acceder a través de cualquier línea sin importar el día ni la hora.

Para finalizar con el área de puertos vamos a comentar un par de directivas que también se pueden definir en el archivo login.cfg: se trata de sak_enabled y synonym. La primera de ellas indica si el secure attention key (SAK) está habilitado en el puerto, lo que implica que los usuarios pueden obtener una ruta de comunicación fiable (trusted communication path, TCP) mediante la combinación de teclas Ctrl-X Ctrl-R; en la sección dedicada a la base fiable de cómputo de los sistemas Unix ya hablamos de este tipo de comunicaciones seguras, por lo que no vamos a entrar aquí en más detalles. La segunda de las directivas a las que hacíamos referencia, la denominada synonym, tiene como objetivo definir sinónimos para una terminal concreta; está bastante relacionada con la primera, ya que restringe el acceso al puerto, que sólo se utilizará para establecer una ruta de comunicación fiable con el sistema.

La segunda gran área del fichero /etc/security/login.cfg hace referencia, como dijimos al principio, a los métodos de autenticación de usuarios disponibles en la máquina. Más tarde, cuando hablemos del fichero /etc/security/user, veremos que se pueden definir mecanismos secundarios de autenticación en el sistema que funcionan de forma independiente o junto al esquema clásico de nombre de usuario y contraseña. Los programas que implanten estos mecanismos adicionales han de definirse dentro de una stanza, bajo la directiva `program', que le de un nombre al modelo de autenticación que posteriormente se definirá para uno o más usuarios en /etc/security/user; insistimos en la palabra `adicionales', ya que los esquemas de autenticación clásicos no requieren definición (SYSTEM, para acceder con nombre de usuario y contraseña, y NONE, para acceder sin autenticación). Por ejemplo, imaginemos que si queremos definir un nuevo método basado en claves de un solo uso al que vamos a denominar authone y que está implementado en el programa /usr/local/auth/onetime; su stanza sería similar a la siguiente:
authone:
    program = /usr/local/auth/onetime
La última área del archivo proporciona la definición de algunos atributos globales de los usuarios bajo una stanza única: usw. El primero de estos atributos es logintimeout, que define el tiempo en segundos (60, por defecto) que un usuario tiene para teclear su contraseña cuando el sistema se lo solicita. Un segundo parámetro, maxlogins, define el número máximo de conexiones simultáneas que un usuario puede abrir en el sistema: el valor por defecto, 100, es a todas luces excesivo en la mayor parte de entornos, por lo que deberíamos especificar un valor adecuado a nuestro sistema - es imposible dar un valor `óptimo' para esta directiva -; si el valor de maxlogins es 0, el número máximo de conexiones simultáneas de un usuario está ilimitado. Finalmente, el último parámetro, shells, define los intérpretes de comandos válidos en la máquina, algo similar al archivo /etc/shells de otros Unices. Una entrada típica de esta stanza puede ser similar a la siguiente:
usw:
       shells = /bin/sh,/bin/bsh,/bin/csh,/bin/ksh,/bin/tsh,/usr/bin/sh
       maxlogins = 5
       logintimeout = 30
© 2002 Antonio Villalón Huerta