Seguridad

Para deshabilitar los servicios diferentes servicios no utilizados en AIX en servidores productivos es necesario editar los siguientes archivos:

/etc/inittab

Desbabilitar con un : al inicio de la línea lo siguiente:

:rcnfs:23456789:wait:/etc/rc.nfs > /dev/console 2>&1 # Start NFS Daemons
:qdaemon:23456789:wait:/usr/bin/startsrc -sqdaemon
:writesrv:23456789:wait:/usr/bin/startsrc -swritesrv
:piobe:2:wait:/usr/lib/lpd/pioinit_cp >/dev/null 2>&1  # pb cleanup

/etc/rc.tcpip

Deshabilitar las siguientes líneas:

#start /usr/lib/sendmail "$src_running" "-bd -q${qpi}"
#start /usr/sbin/snmpd "$src_running"
#start /usr/sbin/hostmibd "$src_running"
#start /usr/sbin/snmpmibd "$src_running"
#start /usr/sbin/aixmibd "$src_running"
#start /usr/sbin/muxatmd "$src_running"

/etc/inetd.conf

Deshabilitar los siguientes líneas

#ftp     stream  tcp6    nowait  root    /usr/sbin/ftpd         ftpd
#telnet  stream  tcp6    nowait  root    /usr/sbin/telnetd      telnetd -a
#shell   stream  tcp6    nowait  root    /usr/sbin/rshd         rshd
#login   stream  tcp6    nowait  root    /usr/sbin/rlogind      rlogind
#exec    stream  tcp6    nowait  root    /usr/sbin/rexecd       rexecd
#ntalk   dgram   udp     wait    root    /usr/sbin/talkd         talkd
#time   stream  tcp     nowait  root    internal
#echo   dgram   udp     wait    root    internal
#daytime        dgram   udp     wait    root    internal
#time   dgram   udp     wait    root    internal
#xmquery        dgram   udp     wait    root    /usr/bin/xmtopas xmtopas -p3
#wsmserver      stream  tcp     nowait  root    /usr/websm/bin/wsmserver wsmserver -start

Editar archivo /etc/security/user con los siguientes valores:

default:
        admin = false
        login = true
        su = true
        daemon = true
        rlogin = true
        sugroups = ALL
        admgroups =
        ttys = ALL
        auth1 = SYSTEM
        auth2 = NONE
        tpath = nosak
        umask = 022
        expires = 0
        SYSTEM = "compat"
        logintimes =
        pwdwarntime = 10
        account_locked = false
        loginretries = 3
        histexpire = 4
        histsize = 8
        minage = 4
        maxage = 4
        maxexpired = -1
        minalpha = 4
        minother = 2
        minlen = 6
        mindiff = 3
        maxrepeats = 3
        dictionlist =
        pwdchecks =
default:
        admin = false           # Define el estado administrativo de un usuario 
        login = true            #
        su = true               # Permite ejecutar la orden 'su' para cambiar su identidad a la del usuario en cuya stanza se ha definido la directiva
        daemon = true           #
        rlogin = true           # Acceso vi telnet o rlogin 
        sugroups = ALL          # Define los grupos cuyos miembros pueden (o que no pueden, si precedemos su nombre por el símbolo `!') acceder mediante la orden su a una cuenta determinada
        admgroups =             # Grupos (separados por comas) de los que el usuario es administrador
        ttys = ALL              # Terminales desde las que puede entrar.
        auth1 = SYSTEM          # Metodo de autenticacion primario (SYSTEM=login,password) 
        auth2 = NONE            # Metodo de autenticacion secundario (NONE= no exite autenticacion)
        tpath = nosak           #
        umask = 022             # Mascara 
        expires = 0             # Fecha de expiracion
        SYSTEM = "compat"       #
        logintimes =            # Horas y dias en las que puede entrar.
        pwdwarntime = 0         # Numero de dias de antelacion para avisar al usuario antes de obligarlo a cambiar de contraseña.
        account_locked = false  # Indica si una cuenta esta o no bloqueada.
        loginretries = 0        # Numero de intentos fallidos antes de bloquear la cuenta
        histexpire = 0          # Semanas en las que no se puede utilzar una contraseña anterior.
        histsize = 8            # Numero de contraseñas antiguas que no pueden reutilizarse.
        minage = 0              # Minimo de semanas de vigencia de una contraseña. (0=no hay caducidad, a 52=un año)
        maxage = 0              # Máximo de semanas de vigencia de una contraseña. (0=no hay caducidad, a 52=un año)
        maxexpired = -1         # Semanas de acceso al sistem para cambiar la contraseña antes de ser bloqueado(0=no hay caducidad, a 52=un año)
        minalpha = 4            # Mínimo de caracteres alfabéticos
        minother = 2            # Mínimo de caracteres no-alfabéticos
        minlen = 6              # Mínimo de caracteres de una contraseña
        mindiff = 3             # Mínimo de caracteres nuevos a usar en la nueva contraseña que no hayan sido utilizados en la contraseña anterior.
        maxrepeats = 3          # Máximo de repeticiones de un caracter en la contraseña.
        dictionlist =           #
        pwdchecks =             #

        minloweralpha = 0
        minupperalpha  = 0
        mindigit = 0
        minspecialchar = 0
        dictionlist =
        default_roles =
account_locked Una directiva básica almacenada en /etc/security/user es account_locked, que evidentemente indica si una cuenta está bloqueada o no lo está; es una variable booleana, por lo que sus posibles valores son sencillamente true o false (o equivalentemente, yes y always o no y never). Aunque es muy similar a esta, la directiva login (también booleana) no es exactamente igual: si su valor es false o equivalente el usuario no puede acceder al sistema, pero su cuenta no está bloqueada, ya que es posible llegar a ella mediante su. Otra restricción de acceso para un usuario viene determinada por rlogin, que define si un usuario puede acceder al sistema de forma remota a través de telnet o rlogin (otros métodos de acceso, como SSH, no son controlados por esta directiva).
loginretries Una entrada de /etc/security/user que hay que tratar con mucho cuidado, ya que incluso puede ser peligrosa para la seguridad de nuestros usuarios, es loginretries; indica el número de intentos fallidos de acceso al sistema que puede efectuar un usuario antes de que su cuenta se bloquee. Evidentemente, esto nos puede ayudar a detener a un atacante que intente acceder al sistema adivinando la contraseña de alguno de nuestros usuarios, pero es también un arma de doble filo: si un pirata quiere causar una negación de servicio a uno o varios usuarios, no tiene más que introducir el login de los mismos y contraseñas aleatorias cuando el sistema se lo solicita, lo que hará que AIX inhabilite el acceso legítimo de esos usuarios causando un perfecto ataque de negación de servicio contra los mismos. Quizás en la mayor parte de los sistemas sea una buena idea no habilitar esta directiva (asignándole un valor de 0, el que tiene por defecto), y prevenir el hecho de que un pirata pueda `adivinar' una contraseña implantando unas políticas de claves adecuadas.

Fuentes:

Editar archivo /etc/profile, variable TMOUT

# Automatic logout, include in export line if uncommented
TMOUT=3600