web-dev-qa-db-ja.com

MySQLポートをインターネットに開くのは安全ではありませんか?

これに関するコンセンサス サーバー障害の質問 は、MySQLにポート3306を開くことは、SSHトンネルを使用してMySQLにアクセスするよりも危険であると思われます。

特にログインがUSERSテーブルの特定のホストにロックダウンされる可能性があるため、強力な認証情報があればMySQLを安全に保つことができると思います。

SSHよりも安全でないMySQL接続について何かありますか、それとも3306を攻撃しようとする接続が何らかの形でデータベースを圧倒するリスクがあるのですか?

16
Sean Fahey

不要な場合は閉じてください。

脆弱性

MySQL自体に脆弱性がないかどうかを確認することはできません。次に DOS攻撃 の例を示します(そして 可能な攻撃 だけではありません)。

MySQLへの非IP制限付きリモートアクセスを許可する

MySQLへのリモートアクセスを許可すること自体は脆弱性ではありませんが、他の脆弱性と組み合わせて使用​​できるシナリオがあります。

たとえば、サイトが構成ファイルを公開しているとしましょう:誰でもデータベース接続の資格情報を読み取ることができます。攻撃者がリモートでデータベースに接続できる場合、一部またはすべてのデータが危険にさらされます(他の攻撃も可能である可能性があります(たとえば、outfileへのアクセスが許可されている場合のコード実行))。しかし、リモート接続が不可能な場合、攻撃者はこの情報をほとんど使用できません(パスワードが他の場所で使用されていない場合(例:ssh)も同様)。

公開されている構成ファイルは一例にすぎません。別の例として、ブラインドSQLインジェクションを考えてみましょう。データベースパスワードの取得は比較的高速ですが、データベース全体の取得には大量のリクエストが必要になります。そのため、リモートで接続できると非常に便利です。

MySQLへのIP制限付きリモートアクセスを許可する

(これは単なる推測です)udpを使用してMySQLに接続できるようですので、IPスプーフィングが可能です。直接フィードバックを必要としない攻撃(たとえば、outfileを介してコードをファイルに書き込むなど)がこのように機能する(データベースの資格情報が取得されている場合)と考えられます。

暗号化

MySQLは暗号化されていませんが、デフォルトではsshが暗号化されていることも考慮する必要があります(セットアップはそれほど簡単ではないようです)。つまり、MySQLへの直接アクセスが提供されている場合、ほとんどのユーザーは安全でない接続を使用します。

17
tim

ポートを開くだけでは、SSHポートを開くよりも本質的に危険ではありません。

問題は、ポートを使用できるすべてのアプリケーションプログラムがハッキングされ、データベースを危険にさらすために使用される可能性があることです。クライアント側で実行されているものは本質的に信頼されません。

0
ddyer