Una guía segura para habilitar el acceso remoto a MySQL en 2025
Este artículo proporciona métodos seguros para habilitar el acceso remoto a los servidores MySQL y MariaDB.

Una guía segura para habilitar el acceso remoto a MySQL en 2025

Este artículo le enseñará formas seguras y prácticas de habilitar el acceso remoto a los servidores MySQL y MariaDB en 2025. Siguiendo los consejos de seguridad y usando VPN y SSH, puede acceder a sus bases de datos fácilmente y con confianza.
0 acciones
0
0
0
0

 

¿Cómo habilitar el acceso remoto a MySQL/MariaDB de forma segura?

En esta guía actualizada (2025), exploramos formas prácticas y seguras de habilitar el acceso remoto a servidores MySQL y MariaDB. El objetivo es proporcionar una lista de verificación práctica para administradores de sitios, equipos de DevOps, bases de datos y desarrolladores para permitir el acceso únicamente a usuarios y aplicaciones autorizados, sin comprometer la seguridad.

 

Pasos generales y principios de seguridad

Resumen de pasos:

  • Diseño arquitectónico: Nunca No coloque la base de datos directamente en Internet público a menos que sea necesario.
  • Utilice una red privada (VPC/VLAN), VPN o túnel SSH.
  • Restrinja el acceso según direcciones IP y cree usuarios con Puntuación mínima.
  • Cifrado TLS/SSL para el tráfico de bases de datos y uso de autenticación fuerte (*caching_sha2_password* / *X.509*).
  • Habilite el registro y los límites de velocidad, utilice firewalls y sistemas de detección de intrusiones (IDS/IPS).
  • Revise el rendimiento y la latencia y seleccione la ubicación del centro de datos adecuada según la aplicación.

 

¿Por qué no debería exponerse MySQL directamente a Internet?

Las bases de datos son un objetivo atractivo para los hackers, ya que contienen datos y credenciales confidenciales. Abrir el puerto 3306 a internet sin restricciones ni cifrado aumenta el riesgo de fugas de datos, ataques de fuerza bruta y DDoS.

 

Paso a paso: Configuración de MySQL para acceso remoto (Instrucciones prácticas)

 

1) Editar el archivo de configuración

Archivos de configuración comunes:

  • MySQL (Debian/Ubuntu): /etc/mysql/mysql.conf.d/mysqld.cnf
  • María DB: /etc/mysql/mariadb.conf.d/50-server.cnf

De forma predeterminada, la línea puede dirección de enlace A 127.0.0.1 Está configurado. Para aceptar conexiones desde una IP específica o desde todas las direcciones:

Recomendado: Permitir IP específica:

bind-address = 192.0.2.10

No recomendado excepto en una red privada:

bind-address = 0.0.0.0

Después del cambio:

systemctl restart mysql

 

2) Creación de un usuario seguro con restricciones

Nunca del usuario raíz No usar para conexiones remotas. Comandos de ejemplo:

mysql -u root -p
CREATE USER 'appuser'@'203.0.113.45' IDENTIFIED WITH caching_sha2_password BY 'StrongP@ssw0rd!';
GRANT SELECT, INSERT, UPDATE, DELETE ON mydb.* TO 'appuser'@'203.0.113.45';
FLUSH PRIVILEGES;

Puntos importantes:

  • Es mucho más seguro utilizar una dirección IP específica ('203.0.113.45') en lugar de '%'.
  • Determinación Permisos mínimos (menor privilegio).
  • Utilice direcciones privadas para conexiones desde dentro de la red privada (por ejemplo, 10.xxx).

 

3) Habilitación de SSL/TLS para MySQL

Ejemplo rápido de creación de CA y certificados con OpenSSL:

openssl genrsa 4096 -out ca-key.pem
openssl req -new -x509 -nodes -days 3650 -key ca-key.pem -out ca.pem -subj "/CN=MyDB-CA"

openssl genrsa 4096 -out server-key.pem
openssl req -new -key server-key.pem -out server-req.csr -subj "/CN=db.example.com"
openssl x509 -req -in server-req.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem -days 3650

openssl genrsa 4096 -out client-key.pem
openssl req -new -key client-key.pem -out client-req.csr -subj "/CN=dbclient"
openssl x509 -req -in client-req.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out client-cert.pem -days 3650

Colocación de certificados en mi.cnf:

[mysqld]
ssl-ca=/etc/mysql/ssl/ca.pem
ssl-cert=/etc/mysql/ssl/server-cert.pem
ssl-key=/etc/mysql/ssl/server-key.pem

Después de reiniciar, la capacidad de requerir que los usuarios utilicen certificados:

ALTER USER 'appuser'@'203.0.113.45' REQUIRE X509;
-- یا فقط TLS بدون client cert:
ALTER USER 'appuser'@'203.0.113.45' REQUIRE SSL;

Conexión segura desde el cliente:

mysql -u appuser -p -h db.example.com --ssl-mode=REQUIRED --ssl-ca=ca.pem

 

4) Uso del túnel SSH

Adecuado para administradores y con acceso limitado cuando TLS no está disponible. En el equipo cliente:

ssh -fN -L 3306:127.0.0.1:3306 [email protected]

Este método lo conecta al puerto local 3306, que está tunelizado al servidor remoto.

 

5) Configuración del firewall

Ejemplo con ufw (permitir sólo la IP especificada):

ufw allow from 203.0.113.45 to any port 3306 proto tcp

Con firewalld:

firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="203.0.113.45" port protocol="tcp" port="3306" accept'
firewall-cmd --reload

Comprobación del puerto:

ss -tlnp | grep 3306
telnet db.example.com 3306

 

Más protección: soluciones avanzadas y recomendadas (2025)

 

Uso de una red privada, VPC y VPN

En lugar de abrir el puerto de la base de datos a internet, utilice una red privada entre la aplicación y la base de datos. Si utiliza nuestro servicio, puede usar una red privada y BGP/VRF para una conexión segura.

Para usuarios distribuidos, se recomienda VPN o IPsec para que el tráfico de la base de datos viaje solo por canales cifrados.

 

Bastion Host y Zero Trust

Implementar un host bastión con autenticación de dos factores (MFA) y registro completo de sesiones es un enfoque más seguro que abrir puertos directamente. El modelo de confianza cero implica que cada conexión debe estar autenticada y solo se permiten recursos específicos.

 

Autenticación y algoritmos

  • MySQL 8: Uso de contraseña sha2 de almacenamiento en caché En lugar de contraseña nativa de mysql Es más seguro.
  • En casos sensibles, utilice Certificados de cliente X.509 Recomendado.
  • Administrar contraseñas con un administrador de secretos o una bóveda (como HashiCorp Vault, AWS Secrets Manager) es mejor que colocar contraseñas en archivos o códigos.

 

Protección contra ataques y restricciones

  • Mantenga max_connect_errors bajo y saltar-nombre-resolver Habilitar para evitar retrasos basados en DNS.
  • Usando fail2ban con un filtro especial mysql-auth para bloquear IP maliciosas.
  • Límite de velocidad de conexión general y configuración adecuada de connection_timeout.

 

Monitoreo y registro

Habilitar registros de auditoría, registros generales y registros de consultas lentas y utilizar herramientas como Prometheus + Grafana o Percona Monitoring es esencial para identificar patrones maliciosos y problemas de rendimiento.

 

Consejos prácticos para elegir la ubicación y configuración del centro de datos según la aplicación

Orientación según el tipo de aplicación:

  • Comercio (Forex/Criptomonedas): Es importante que el RTT al servidor de la plataforma de intercambio/operador sea el más bajo; se recomienda elegir una ubicación cercana a la plataforma. Nuestro servicio ofrece esta opción con más de 85 ubicaciones.
  • Juego de azar: Las bases de datos de juegos requieren un ping bajo; el enrutamiento BGP optimizado y una red de baja latencia son importantes. Los servidores VPS para juegos y los servidores anti-DDoS son útiles.
  • IA/Renderizado: Para cargas altas de E/S y de procesamiento, la combinación de servidores de GPU y de base de datos en la misma zona de red privada reduce la latencia.
  • Sitios web y aplicaciones: El uso de una CDN y un caché de capa de aplicación (Redis/Memcached) junto con una base de datos en una red privada proporciona el mejor equilibrio entre velocidad y costo.

 

Ejemplos de configuración de my.cnf sugeridos para diversos usos

Configuración para un servidor de carga media (web/aplicación):

[mysqld]
bind-address = 10.0.1.5
max_connections = 200
innodb_buffer_pool_size = 2G
skip-name-resolve = 1
ssl-ca=/etc/mysql/ssl/ca.pem
ssl-cert=/etc/mysql/ssl/server-cert.pem
ssl-key=/etc/mysql/ssl/server-key.pem

Para servidores de IA/rending dedicados y de alta carga:

innodb_buffer_pool_size = 16G
innodb_flush_method = O_DIRECT
innodb_io_capacity = 2000

Ajuste siempre la configuración en función de las necesidades de RAM, E/S y aplicaciones.

 

Lista de verificación de seguridad final antes de habilitar el acceso remoto

  • Uso de una red privada o VPN para el tráfico de la base de datos
  • Restringir direcciones IP permitidas en el firewall
  • Cree usuarios con privilegios mínimos y utilice algoritmos hash seguros
  • Habilitar TLS/SSL y, si es necesario, los certificados de cliente
  • No usar root para conexiones remotas
  • Habilitar registro; enviar registros a un sistema externo
  • Establecer límites de conexión y usar fail2ban
  • Monitoreo y alerta en caso de aumentos inusuales de tráfico o errores
  • Copias de seguridad periódicas y pruebas de recuperación

 

Conclusión y recomendación final

Habilitar el acceso remoto a MySQL en 2025 debería ser rápido y seguro. La mejor estrategia: Considere primero una red privada o VPN, luego agregue TLS y restricción de IP, y limite el acceso al mínimo indispensable.

Usar Bastion Host, MFA y registro avanzado aumentará su seguridad. Si necesita un servidor altamente estable, una red de baja latencia y funciones de seguridad, nuestros servicios incluyen más de 85 ubicaciones globales, servidores GPU, servidores de cómputo, servidores anti-DDoS, VPS para comercio y juegos, CDN y red BGP, con opciones listas para usar y personalizables.

 

Preguntas frecuentes

También te puede gustar
La diferencia entre un proxy directo y un proxy inverso

La diferencia entre un proxy directo y un proxy inverso

En este artículo, exploraremos las diferencias clave entre los proxies directos e inversos. Comprender estos conceptos le ayudará a tomar mejores decisiones para su infraestructura de red. El artículo incluye definiciones, aplicaciones y ejemplos prácticos de configuración.
Las mejores formas de prevenir ataques DDoS

Mejores prácticas para prevenir ataques DDoS para administradores de sitios web

Los ataques DDoS (Denegación de Servicio Distribuido) son una de las amenazas de seguridad más comunes y destructivas para sitios web y servidores. Al enviar un gran volumen de solicitudes maliciosas, estos ataques saturan los recursos del servidor y provocan graves ralentizaciones, tiempo de inactividad del sitio web e incluso la pérdida de ingresos y reputación de marca. Para los administradores de sitios web y servidores, familiarizarse con los métodos básicos para abordar los ataques DDoS es una necesidad, no una opción. En este artículo, examinaremos las soluciones técnicas y prácticas más eficaces para prevenir y reducir el impacto de los ataques DDoS de forma experta.