Nous avons une application PHP qui se connecte à un serveur MySQL, et nous souhaitons sécuriser les connexions entre les serveurs web et d'application et la base de données.
Aux heures de pointe, les serveurs Web établissent plusieurs centaines de connexions simultanées à la base de données et effectuent de nombreuses petites lectures et écritures. Je suis conscient que ce n'est pas optimal et je travaille à réduire le nombre de connexions à la base de données en parallèle.
Nous n'avons pas de connexions persistantes à la base de données actuellement activées, et bien que nous ayons l'intention de le faire à l'avenir, j'aimerais l'implémenter indépendamment de cela.
Côté matériel - le serveur MySQL est assez volumineux (16 cœurs) tout comme les serveurs Web. Ce sont des serveurs dédiés.
Ma question concerne ensuite la manière la plus performante de sécuriser et de crypter les connexions au serveur de base de données.
Jusqu'à présent, mes recherches ont suggéré que la principale surcharge de performances concerne la configuration de la connexion SSL - une fois SSL connecté, il y a peu de pénalité en termes de performances. Et voici ce que j'ai sur chaque méthode de sécurisation de la connexion:
- Certificats SSL MySQL - fonctionne exactement comme SSL standard. Peut utiliser des certificats clients pour empêcher les connexions non autorisées. Aucune connexion persistante avec notre configuration existante. Il faut encore que MySQL écoute sur un port ouvert du pare-feu.
- stunnel. Configurez un tunnel port à port ssl. Vous n'avez pas à reconfigurer MySQL. Peut fermer le port d'écoute MySQL normal pour empêcher les tentatives de connexion MySQL malveillantes. Ne prend pas en charge les connexions persistantes. Coup de performance inconnu.
- Tunneling SSH. Créez un tunnel SSH entre le client et le serveur. Vous n'avez pas à reconfigurer MySQL. Peut fermer le port d'écoute MySQL normal pour empêcher les tentatives de connexion MySQL malveillantes. Prend en charge les connexions persistantes, mais celles-ci tombent parfois en panne. Coup de performance inconnu.
C'est tout ce que j'ai pu obtenir. Je suis conscient des limites des benchmarks - dans mon expérience de leur exécution, il est très difficile de simuler le trafic dans le monde réel. J'espérais que quelqu'un aurait des conseils basés sur ses propres expériences de sécurisation de MySQL?
Merci
la source
openssl speed
et choisissez des chiffres qui correspondent à vos besoins de protection vs compromis de performances.Réponses:
J'irais avec le ssh-tunnel et le ferais avec
autossh
au lieu dessh
. À propos des performances, je dirais que le protocole SSH est hautement personnalisable et que vous pouvez affiner votre connexion si nécessaire.Mais je ne m'attendrais pas à une surcharge notable une fois la connexion établie.
la source
En consultant les références de cet article (MySQL Performance Blog), vous devriez vraiment éviter la capacité SSL native de MySQL.
la source