SQLserver – 不正アクセスを防止する

頻繁に来る不正アクセス

以前から、サーバーのアプリケーションログに「ユーザー ‘sa’ はログインできませんでした。」というイベントが多数記録されており、時々「ログファイルが一杯になった」という警告まで出ていました。SQLserverへの不正アクセスです。IPアドレスを当ブログのIPアドレスの計算方法 でチェックをかけると、当然のことですが、全て外国からのものでした。
当サーバーには、ポートのフィルターをセットしていて、誰でも知っているTCP/1433、1434、UDPは閉じてあります。動的ポートが生きているのかと思い、MSのサイトの説明に従って、動的ポートを削除し、固定ポートをセットしました。IP1~IPALLまであるのも、「すべて受信待ち」をいいえにして、ローカルアドレスのみ有効にしました。これでいいと思い、翌日見て見ると、また例の失敗イベントが山ほど書き込まれていました。

ポートが固定できない?

MSの説明どおりにやってもポートは固定できないのではないかという疑問も生じました。その場合には、現在の外に開いているサーバーをやめて、ローカルの閉じたサーバーにするしかないとも考えました。
それにしても分からないのは、開けるポートの情報は山ほどありますが、閉じるポートの情報はほとんどないということです。攻撃してくる側はSQLserverを知り尽くしており、高いWeb技術を持っている訳ですから、これでは勝負になりません。サーバーを引っ越す前に、それでもと思い検索してみると、やっとのことでポートを記載しているページを見つけました。
SQLserverの使用する全ポート
これを見るとSQLserverは沢山のポートを使用しているのが分かります。この中から当サーバーでは、開いているポートを書き出し、それを閉じることにしました。この中には、既に閉じている1433、1434のポートももちろんあります。

ようやく攻撃ポートを閉じる

翌日、ログを見てみると、例のログイン失敗は完全に無くなっていました。ようやくポートを閉じることができました。それにしてもSQLserverは無防備なサーバーです。ファイアウォールで囲っていないと大変危険ではないかと思います。多くのWindowsレンタルサーバーがSQLserverを動作させています。中には古いサーバーもあるかもしれません。攻撃するハッカーからは、格好の的であり、既に「saでログイン」されているサーバーもあるような気がします。

Comments are closed.