Tenemos una aplicación PHP que se conecta a un servidor MySQL, y deseamos asegurar las conexiones entre los servidores web y de aplicaciones y la base de datos.
En las horas pico, los servidores web realizan cientos de conexiones simultáneas a la base de datos y realizan muchas lecturas y escrituras pequeñas. Sé que esto no es óptimo, y estoy trabajando para reducir el número de conexiones de bases de datos en paralelo a esto.
Actualmente no tenemos conexiones persistentes a la base de datos activadas, y aunque tenemos la intención de hacerlo en el futuro, me gustaría implementar esto independientemente de eso.
En cuanto al hardware: el servidor MySQL es bastante grueso (16 núcleos) al igual que los servidores web. Son servidores dedicados.
Mi pregunta luego rodea la forma más eficaz de asegurar y cifrar las conexiones al servidor de la base de datos.
Mi investigación hasta ahora ha sugerido que la sobrecarga de rendimiento principal es con la configuración de la conexión SSL: una vez que se conecta SSL, hay poca penalización de rendimiento. Y esto es lo que tengo sobre cada método para asegurar la conexión:
- Certificados SSL de MySQL: funciona igual que SSL normal. Puede usar certificados de cliente para evitar conexiones no autorizadas. No hay conexiones persistentes con nuestra configuración existente. Todavía tengo que tener MySQL escuchando en un puerto abierto en el firewall.
- aturdimiento Configure un puerto a puerto del túnel SSL. No tiene que reconfigurar MySQL. Puede cerrar el puerto de escucha normal de MySQL para evitar intentos de conexión de MySQL maliciosos. No admite conexiones persistentes. Golpe de rendimiento desconocido.
- Túneles SSH. Cree un túnel SSH entre el cliente y el servidor. No tiene que reconfigurar MySQL. Puede cerrar el puerto de escucha normal de MySQL para evitar intentos de conexión malintencionados de MySQL. Admite conexiones persistentes, pero a veces se desconectan Golpe de rendimiento desconocido.
Esto es lo más lejos que he podido llegar. Soy consciente de las limitaciones de los puntos de referencia: en mi experiencia al ejecutarlos, es muy difícil simular el tráfico del mundo real. ¿Esperaba que alguien tuviera algún consejo basado en sus propias experiencias de asegurar MySQL?
Gracias
fuente
openssl speed
y elija cifras que se ajusten a sus necesidades de protección frente a compromiso de rendimiento.Respuestas:
Iría con el túnel ssh y lo haría en
autossh
lugar de hacerlossh
. Sobre el rendimiento, diría que el protocolo SSH es altamente personalizable y puede ajustar su conexión, si es necesario.Pero no esperaría una sobrecarga notable después de configurar la conexión.
fuente
Al mirar los puntos de referencia de este artículo (MySQL Performance Blog), realmente debe evitar la capacidad SSL nativa de MySQL.
fuente