MySQLへの安全な接続-MySQLのSSL対Stunnel対SSHトンネリング


15

MySQLサーバーに接続するPHPアプリケーションがあり、Webおよびアプリケーションサーバーとデータベース間の接続を保護したいと考えています。

ピーク時には、Webサーバーは何百ものデータベースへの同時接続を行い、多数の小さな読み取りと書き込みを実行します。これは最適ではないことを認識しており、これと並行してデータベース接続の数を減らすことに取り組んでいます。

現在、データベースへの永続的な接続が有効になっていないため、将来的にはこれとは別に実装するつもりです。

ハードウェアに関しては-MySQLサーバーはWebサーバーと同様に非常にチャンキー(16コア)です。それらは専用サーバーです。

私の質問は、データベースサーバーへの接続を保護および暗号化する最も高性能な方法を取り巻いています。

これまでの研究では、主なパフォーマンスオーバーヘッドはSSL接続のセットアップにあることが示唆されています。SSLが接続されると、パフォーマンスの低下はほとんどありません。そして、接続を保護する各方法について私が持っているものは次のとおりです。

  1. MySQL SSL証明書-通常のSSLと同じように機能します。クライアント証明書を使用して、不正な接続を防止できます。既存のセットアップとの永続的な接続はありません。ファイアウォールの開いているポートでMySQLをリッスンさせる必要があります。
  2. un。ポートsslトンネルへのポートをセットアップします。MySQLを再構成する必要はありません。悪意のあるMySQL接続の試行を防ぐために、通常のMySQLリスニングポートを閉じることができます。持続的接続はサポートしていません。不明なパフォーマンスヒット。
  3. SSHトンネリング。クライアントとサーバーの間にSSHトンネルを作成します。MySQLを再構成する必要はありません。悪意のあるMySQL接続の試行を防ぐために、通常のMySQLリスニングポートを閉じることができます。永続的な接続をサポートしますが、これらは時々ドロップアウトします。不明なパフォーマンスヒット。

これは私が得ることができる限りです。ベンチマークの限界を認識しています-ベンチマークを実行した経験では、実際のトラフィックをシミュレートすることは非常に困難です。私は誰かがMySQLを保護する自分の経験に基づいていくつかのアドバイスを望んでいたのですか?

ありがとう


どんな種類のサーバー/ネットワークアーキテクチャがありますか?どのようなシナリオを防止しようとしていますか?すべてのサーバー間通信が個別のスイッチ/ VLAN上にある場合、スニッフィング防止保護は必要ないかもしれません。パフォーマンスに関してopenssl speedは、保護とパフォーマンスの妥協のニーズに合った暗号を実行および選択してください。
マルチン

@Marcin-openssl速度のヒントをありがとう。私が防止しようとしているシナリオは、mysqlへの不正な接続とサーバー間の通信の暗号化です。3つのアプローチを比較するためのさらなる支援はありがたいことに受け取っています。
ダストラ

1
3)autosshを使用してドロップアウト効果を減らします。切断された場合、自動的に再接続します。ここでは多くの状況でうまく機能します。
ansi_lumen

回答:


5

私はssh-tunnelを使用し、autosshではなくを使用しsshます。パフォーマンスについては、SSHプロトコルは高度にカスタマイズ可能であり、必要に応じて接続を微調整できます。

しかし、接続がセットアップされた後、顕著なオーバーヘッドは期待できません。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.