Con el fin de evitar accesos no autorizados a los sistemas dentro del ámbito de cumplimiento de PCI DSS, el estándar en su requisito 8.1.3 obliga a que de forma trimestral se realice una revisión de aquellas cuentas que se encuentran inactivas (es decir: que durante ese tiempo no se han autenticado) y que potencialmente puedan implicar que el usuario que la tiene asignada no la usa porque no la necesita, porque está de baja temporal (enfermedad, baja maternal, etc.) o porque ya no trabaja en la empresa. Si esto sucede, la cuenta se debe bloquear o eliminar (dependiendo del caso) para prevenir que un usuario malintencionado use esos accesos.
Como se puede ver, esto requiere que en todas las plataformas y tecnologías que cuenten con un sistema de control de acceso se debe ejecutar esta tarea de forma trimestral y almacenar la evidencia resultante.
A continuación describimos algunas acciones técnicas que se pueden ejecutar en distintas plataformas para cumplir con este requisito:
Microsoft Windows
En plataformas Microsoft Windows existen múltiples opciones:
- Usando un cmdlet de PowerShell (Search-ADAccount): En este caso, primero se realiza una búsqueda de las cuentas inactivas, se lista el resultado y se realiza una revisión manual para evitar que cuentas administrativas o de aplicación se bloqueen de forma no intencional. Cuando todo esté verificado, se ejecuta el segundo comando:
1 2 | Search-ADAccount -AccountInactive -TimeSpan 90 -UsersOnly | Where-Object {$_.lastlogondate -ne $null} | Format-Table Name,SamAccountName,LastLogonDate -AutoSize |
1 2 | Search-ADAccount -AccountInactive -TimeSpan 90 -UsersOnly | Where-Object {$_.lastlogondate -ne $null} | Disable-ADAccount -WhatIf |
1 | dsquery user "OU=Users,DC=Domain,DC=com" -inactive 12 | dsmod user -disabled yes |
- Usando la herramienta OldCmp (Windows 2003):
1 | oldcmp -users -disable -age 30 -llts |
- Usando la herramienta AD Tidy:
- Usando la herramienta freeware Netwrix Inactive User Tracker: Esta herramienta permite enviar notificaciones por correo electrónico y mover las cuentas a una OU específica:
- Usando un script de Visual Basic como el que se indica en este artículo de Microsoft
GNU/Linux
En GNU/Linux se puede hacer una revisión manual de los usuarios que no se han autenticado en los últimos 90 días con el comando:
1 | lastlog -b 90 | awk '!/Never log/ {if (NR > 1) print $1}' |
Cuando se haya comprobado que todo es correcto, las cuentas se pueden bloquear con el comando:
1 | lastlog -b 90 | awk '!/Never log/ {if (NR > 1) print $1}' | xargs -I{} usermod -L -e 1 {} |
Adicionalmente, se puede configurar el módulo PAM para bloquear de forma automática aquellas cuentas que no se han autenticado durante los últimos 90 días. Para ello, como usuario root se debe editar el fichero /etc/pam.d/login en la sección auth y agregar la siguiente línea:
1 | auth required pam_lastlog.so inactive=90 |
Oracle
Para Oracle, a través de sentencias de SQL se puede obtener la información de la fecha del último login de los usuarios:
1 2 3 4 5 6 | sql> select username, last_login_date from users; +----------+-----------------+ | username | last_login_date | +----------+-----------------+ | david | 2017-01-01 | +----------+-----------------+ |
Para bloquear las cuentas que no se han autenticado en los ultimos 90 días, se debe ejecutar el siguiente comando:
1 2 | sql> update users set locked = 1 where (current_date - 90) > last_login_date; |
MySQL/MariaDB
Para este tipo de bases de datos, en el artículo “How to find unused MariaDB/MySQL accounts” se pueden encontrar detalles del procedimiento a seguir.
Si conoces forma adicionales de identificar y bloquear cuentas inactivas en otras plataformas, puedes dejarnos tu comentario.