問題が発生し、その対処方法がわかりませんでした。 Windows 2008 R2サーバー上にSQLサーバーがあります。このSQL Server 2005は、インターネット上の別の場所にある別のSQL ServerからDBサブスクリプションを受信するために使用されています。ファイアウォールを介してSQLサーバーのポートを開いていますが、スコープでは、他のSQLサーバーのIPを入力しています。そうすることで、他のSQL Server(IPがファイアウォールルールのスコープにリストされている)からの要求でない限り、そのポートを介した接続要求がSQL Serverに到達しないことを望みました。しかし、ログを見ると、何百もの「login failed user sa」エントリがあります(それらは1秒ごとに来ています)。一部のハッカーは、ユーザーのsaパスワードを推測するためにブルートフォースを試みているようです。しかし問題は、なぜこれらの要求がファイアウォールスコープにリストされているIPアドレスからではないのに、Windowsがこれらの要求をSQL Serverに到達させているのかということです。このSQL Serverを保護する正しい方法は何ですか。他のSQL ServerのIP以外のIPは、このSQLサーバーに接続する必要はありません。
編集-詳細情報:
別のマシンからsqlサーバーポートでtelnetを実行しました。 Telnetは、ファイアウォールスコープで具体的に言及されているマシンから実行された場合を除き、失敗します。したがって、ファイアウォールがSQLサーバーポートを正常にブロックしているようです。しかし、なぜSQL Serverログに異なるIPアドレスからのユーザー "sa"へのログイン要求の失敗が表示されるのでしょうか。ハッカーがポート80経由でマシンに侵入し、SQLサーバーへの接続を試みている可能性はありますか?ポート80と443は誰でも利用できます。 SQLサーバーポートを除いて、他のすべてのポートは閉じられています(特定のIPに対してのみ開かれています)。訪問者をSQLサーバーに誘導する可能性のあるポート80のWebサーバー上で実行されているものはありません。実際、Webサーバーにはindex.html(SQLに接続されていない純粋なHTML)ファイルが1つだけあります。これは、将来使用するためにセットアップされているテストサーバーにすぎません。 SQL Serverでのみデータをテストします。
編集:
ファイアウォール接続を有効にして、ドロップ接続と成功接続の両方を含めました。現在、すべてをトレースしています。次に、SQL Serverログに移動し、中国のさまざまなIPアドレスからの失敗したログイン試行を確認します。ただし、ファイアウォールログにこれらのIPアドレスのエントリはありません。これはどのようにして可能ですか?ファイアウォールを完全にバイパスしてSQLサーバーにアクセスできますか?ファイアウォールポートが開いていて、そこから侵入できる場合、ファイアウォールログにはそのIPアドレスのエントリが表示されます。私は完全に途方に暮れています。
ファイアウォールが正しく設定されていないようです。これが最初のステップです。
通常、私は自分が書いた本をひっくり返すことはしませんが、この場合は例外を設けます。それは SQL Serverのセキュリティ保護 と呼ばれ、良いスタートを切るでしょう。
単純に言った-あなたはしません。ファイアウォールなどは使用しません。SQLサーバーにはインターネット上に存在する権利がありません。例外はほとんどありません。
複製のために、適切なVPNをセットアップします。
ファイアウォールを適切に構成する以外に、SQL Serverをブルートフォース攻撃から保護するための一般的な推奨事項を以下に示します。
「sa」アカウントを無効にします。正確なログイン名を知ることで、攻撃が容易になります
ALTER LOGIN sa DISABLE
別のオプションは、「sa」アカウントの名前をわかりにくい名前に変更することです
ALTER LOGIN sa WITH NAME = SimonXZY
ここでより有用な推奨事項: ブルートフォースまたは辞書攻撃の防止:ブルートをルートから遠ざける方法