Actualizando hash/contraseña de MySQL v4.1

Contenido de página

Con el lanzamiento de MySQL 4.1, el mecanismo de hash de contraseñas se actualizó para producir contraseñas más seguras. MySQL continuó admitiendo los antiguos hashes de contraseñas de MySQL por razones de compatibilidad hasta MySQL 5.6. Al actualizar a la versión 5.6 de MySQL (o el equivalente de MariaDB) o superior, MySQL aleatorizará las contraseñas utilizando un hash de contraseña antiguo. La asignación aleatoria de la contraseña para los usuarios de MySQL puede evitar que los sitios web se conecten a las bases de datos de forma adecuada y provocar la caída del sitio.

Hash de contraseña

Las contraseñas almacenadas en una base de datos (si se hacen de manera responsable) no se almacenan en una forma legible por humanos. En el caso de una violación de seguridad, esto evita que los atacantes tengan contraseñas de texto sin formato que se puedan usar para acceder fácilmente a las cuentas de los usuarios. La conversión de contraseñas a una forma no legible por humanos es donde entra en juego el hash.

El hash es un proceso mediante el cual una cadena de caracteres (una contraseña en este caso) se transforma matemáticamente en un hash criptográficamente seguro. Un hash se vería como una serie de caracteres aleatorios sin sentido y se almacena en una base de datos como una representación de una contraseña. Esto difiere de algo como el cifrado en que el hash no está destinado a revertirse. Una contraseña se puede convertir fácilmente en un hash, pero un hash no se puede volver a convertir fácilmente en una contraseña. Cuando un usuario intenta autenticarse con una contraseña, la contraseña proporcionada se somete a la misma operación de hash y se compara con el hash de la base de datos. Si los valores hash coinciden, el usuario se autentica e inicia sesión.

Si bien se supone que los hash no son reversibles, no es realmente cierto. Los hash se pueden "descifrar" y convertir de nuevo en una contraseña utilizable si se le da suficiente tiempo o ingenio. Las funciones hash han evolucionado y se han vuelto más seguras a medida que se han descifrado las funciones hash existentes. El hash utilizado por MySQL para contraseñas anteriores a MySQL 4.1 ahora se considera un hash débil y puede ser descifrado más fácilmente en manos de un atacante. El hash de contraseña introducido en MySQL 4.1 es mucho más fuerte y mucho más difícil de descifrar.

Para instalaciones de WordPress, el usuario y contraseña de MySQL se guarda en el archivo

Localizar la contraseña a actualizar

Si un sitio se conecta a una base de datos MySQL, tiene que almacenar el nombre de esa base de datos y el usuario y la contraseña utilizados para conectarse a ella en algún lugar. Por lo general, se almacena en un archivo plano y, por lo general, será un archivo de configuración.

WordPress

Para instalaciones de WordPress, el usuario y contraseña de MySQL se guarda en el archivo wp-config.php. En dicho archivo se encuentran variables de configuración, para las base de datos son definidas como  DB_USER y DB_PASSWORD, ejemplo del archivo.

define('DB_USER', 'user');
define('DB_PASSWORD', 'password'); 

Joomla

Para instalaciones de Joomla, el usuario y contraseña de MySQL se guarda en el archivo configuration.php file. En dicho archivo se encuentran variables de configuración, para las base de datos son definidas en las lineas con declaraciones de  $user y $password, ejemplo de líneas.

public $user = 'user';
public $password = 'password';


Drupal

Para instalaciones de Drupal, el usuario y contraseña de MySQL se guarda en el ruta sites/default/settings.php. En ese archivo existe varios arreglos uno de estos especifica datos de configuración de base de datos con el nombre de $databases y dentro de este arreglo las propiedades de username y password, ejemplo de archivo.

 $databases['default']['default'] = array (
  'database' => 'databasename',
  'username' => 'user',
  'password' => 'password',
  'host' => 'localhost',
  'port' => '3306',
  'driver' => 'mysql',
  'prefix' => '',
  'collation' => 'utf8mb4_general_ci',
);

En versiones antiguas de Drupal, la información de la base de datos puede variar.

Magento

Para instalaciones de Magento, el usuario y contraseña de MySQL se guarda en el ruta app/etc/local.xml. En ese archivo los valores de base de datos de definen entras las etiquetas de <username> y <password>,ejemplo de archivo

<connection>
	<host><![CDATA[localhost]]></host>
	<username><![CDATA[user]]></username>
	<password><![CDATA[password]]></password>
	<dbname><![CDATA[databasename]]></dbname>
	<initStatements><![CDATA[SET NAMES utf8]]></initStatements>
	<model><![CDATA[mysql4]]></model>
	<type><![CDATA[pdo_mysql]]></type>
	<pdoType><![CDATA[]]></pdoType>
	<active>1</active>
</connection>

Cambiar contraseña para usuarios de MySQL

(con prefijo de cPanel formato cpanel_usuario)

  1. Ingresar al cPanel y buscar la seccion de Base de datos / Databases
  2. Usar la opcion de Base de datos MySQL / MySQL Databases
  3. Dentro de esta opción en la seccion final se encuentra Usuarios actuales / Current Users y dos columnas una llamada Acciones / Actions debajo de esta encontrar la opcion de Cambiar contraseña / Change password
  4. Al dar click sobre Cambiar contraseña / Change password se deberá colocar la nueva contraseña o contraseña actual para que sea actualizada con el nuevo hash de MySQL


Cambiar contrasñea para el usuario de cPanel

( sin prefijo  o caracter _ )

  1. Ingresar al cPanel y buscar la seccion de Preferencias / Preferences
  2. Usar la opcion de Seguridad de la & contraseña / Password & security
  3. Dentro de esta opción se usara la sección de Contraseña / Password para realizar el cambio de contraseña por un nuevo dato el cual será la nueva contraseña de ingreso al cPanel, FTP y MySQL principal

Errores que se pueden generar con un hash no actualizado

  • Connection using old (pre-4.1.1) authentication protocol ref used (client option 'secure_auth' enabled)