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