Si visito mi URL web y fuerzo el puerto 3306 (MySQL), veo una página web sospechosa:
¿Esto está exponiendo alguna vulnerabilidad para mí? ¿Debo bloquear el puerto 3306?
Veo dos opciones aquí:
Sólo acceso local
Configure MySQL Server para que solo escuche en el puerto TCP 3306 en 127.0.0.1 (localhost). De esta manera, un servidor web interno aún puede comunicarse con el servidor de base de datos.
La conexión directa a la base de datos es que el servidor ya no está disponible, pero se puede resolver mediante un túnel SSH (como se describe en la respuesta de mk444)
Esto se puede lograr editando el archivo my.cnf . Busque "escuchar", lo más probable es que esté configurado a algo como:
escucha 0.0.0.0:3306
Esto debería cambiarse a:
escucha 127.0.0.1:3306
No olvide reiniciar el servidor MySQL antes de que los cambios surtan efecto.
Acceso remoto restringido
Otra opción es mantener la configuración como está y usar iptables para bloquear todas las conexiones entrantes al puerto TCP 3306 con la excepción de su dirección IP (principal).
Ambas opciones funcionarán, sin embargo, por experiencia, sé que a menudo no se usa iptables-persistent. Lo que significa que si el servidor web / de base de datos se reinicia, el conjunto de reglas de iptables se pierde y el puerto TCP 3306 vuelve a estar abierto para el mundo exterior.
Si no es necesario, definitivamente elimine ese servicio. Es un posible punto de entrada para los atacantes y puede ver el número de versión de MySQL. Lo primero que me viene a la mente es realizar algunos análisis de Nmap, vuln-scans, mysql-brute, etc ...
Si necesita usar este servicio, hay algunas buenas respuestas en esta publicación del servidor: enlace
Una solución alternativa es crear un túnel ssh desde su máquina para que pueda conectarse localmente. Aquí hay un buen artículo sobre cómo puede crear un túnel ssh con MySQL. enlace
Lea otras preguntas en las etiquetas web-application mysql