web-dev-qa-db-ja.com

保護されていないMySQL'root '@' localhost 'アカウントにリモートアクセスしましたか?

ちょっとした背景:PBXシステムがハッキングされました。サーバー自体は安全に見えます(ログに記録された不正なコンソールアクセスはありません-SSHなど)が、どういうわけかハッカーは新しい管理者を注入することができましたユーザーをPBXソフトウェア(FreePBX、MySQLに支えられています)に入れます。Apacheログは、ハッカーがWebインターフェイス(またはWebインターフェイスの悪用)を使用せずにユーザーを追加できたことを意味します。

それ以来、MySQLがrootパスワード(!!)なしで実行されており、外部IPアドレスにオープンにバインドされていることを発見しました(明らかに、これをロックダウンしました)。ただし、MySQLのrootレベルのユーザーは'root'@'localhost''root'@'127.0.0.1'のみであり、どちらもローカルでのみアクセス可能である必要があります。

だから、私の質問はこれです:

MySQLへの接続をスプーフィングして、他のエクスプロイトをローカルで実行せずに、リモートIPアドレスから「root」@「localhost」ユーザーへの接続を許可する方法はありますか?

参考までに、ボックスはMysql5.0.95を実行しているCentos5(Linux 2.6.10)です。

8
TFk

番号。

ローカルシステムから来ていない場合、MySQLはlocalhostまたは127.0.0.1ホスト仕様のユーザーにログインすることはありません。これは、認証バイパスの脆弱性、CVE2012-2122もカバーしていることに注意してください。パスワードの比較はだまされる可能性がありますが、ホストの比較はだまされません。

ソースホストのチェックを「だます」ためにプロキシオフするために、システム上に何かが必要になります。 phpmyadminのようなもの、またはMySQL TCPポートの前で実行されているHAProxyのようなロードバランサーが思い浮かびます。

1
Shane Madden

rootという名前はデフォルトで作成され、非常によく知られています。リテラル値rootは、MySQL特権システムでは意味がありません。したがって、ユーザー名rootを続行する必要はありません。

rootユーザー名を別の名前に変更して、外部が簡単に識別(推測)できないようにする必要があります。これにより、ハッキングの試みが減ります。

例:ユーザーがroot @ localhostとして誰もがよく知っているため、ハッカーが接続しようとする場合は、admin_db_name @などの特定のユーザーに変更する必要があります。 localhostセキュリティを強化します。

Aborted_connectsと呼ばれるステータス変数を定期的に監視してMySQLサーバーへのRefused接続を確認します。Flush status;コマンドの後で0になり、それ以上増加しないようにします。

'Aborted_connects'のようなステータスを表示します。

2
Mahesh Patil

「ログに記録された不正アクセスなし」にはログイン失敗の試みが含まれていますか?そうでない場合は、 CVE 2012-2122 である可能性があります。

[...] memcmp関数の特定の実装がある特定の環境で実行すると、(MySQL)は、リモートの攻撃者が同じ誤ったパスワードで繰り返し認証することによって認証をバイパスできるようにします。これにより、チェックが不適切なためにトークンの比較が成功します。戻り値。

2
samuirai