DBAtlas · Atlas de operaciones de bases de datos

Auditar cuentas de riesgo: contraseña vacía, host '%', SUPER, mysql_native_password

MySQLSeguridad

Comando

SELECT user, host, plugin,
       CONCAT_WS(', ',
         IF(authentication_string = '' AND account_locked = 'N', 'EMPTY PASSWORD', NULL),
         IF(host = '%', 'ANY HOST', NULL),
         IF(plugin = 'mysql_native_password', 'NATIVE AUTH', NULL),
         IF(Super_priv = 'Y', 'SUPER', NULL),
         IF(Grant_priv = 'Y', 'GRANT OPTION', NULL),
         IF(File_priv = 'Y', 'FILE', NULL),
         IF(ssl_type = '', 'NO TLS REQUIRED', NULL),
         IF(password_expired = 'Y', 'EXPIRED', NULL),
         IF(account_locked = 'Y', 'LOCKED', NULL)) AS findings,
       password_last_changed
FROM mysql.user
WHERE user NOT IN ('mysql.sys', 'mysql.session', 'mysql.infoschema')
ORDER BY (Super_priv = 'Y') DESC, user;

-- Accounts holding powerful dynamic privileges
SELECT GRANTEE, PRIVILEGE_TYPE FROM information_schema.USER_PRIVILEGES
WHERE PRIVILEGE_TYPE IN ('SUPER', 'SYSTEM_VARIABLES_ADMIN', 'CONNECTION_ADMIN', 'BINLOG_ADMIN', 'REPLICATION_SLAVE_ADMIN')
ORDER BY GRANTEE;

Qué hace

Lista los hallazgos de seguridad por cuenta en una fila: sin contraseña, conectable desde cualquier lugar, plugin de autenticación heredado, privilegios SUPER / GRANT / FILE y sin exigencia de TLS; la segunda consulta muestra los privilegios dinámicos peligrosos.

Cuándo usarlo

En auditorías de seguridad periódicas, en un servidor recién heredado y antes de una actualización a 8.4.

Precaución

La consulta lee mysql.user directamente y necesita SELECT sobre ella. Las cuentas de rol están bloqueadas sin contraseña, por lo que EMPTY PASSWORD solo se reporta para cuentas desbloqueadas. Super_priv es el privilegio estático SUPER; como 8.0 lo divide en privilegios dinámicos, revise también la segunda consulta. Las cuentas marcadas NATIVE AUTH deben pasar a caching_sha2_password antes de 8.4: ALTER USER 'u'@'h' IDENTIFIED WITH caching_sha2_password BY '...'; los clientes / conectores antiguos pueden no soportar caching_sha2_password, pruébelos primero.

Abrir en DBAtlas →

Relacionado