web-dev-qa-db-ja.com

サーバーへのMySQLアクセスのみを許可するためのベストプラクティス?

ユースケースは次のとおりです。

1つのボックスに構築されたSaaSシステム(開発環境))があります。すべてをUbuntu 10.10を実行するクラウド環境に移動しました。1つのサーバーがアプリケーションを実行し、もう1つのサーバーがデータベースを実行します。 。基本的な考え方は、データベースを実行するサーバーには、正しいRSAキーを持っているアプリケーションと管理者のマシンだけがアクセスできるようにする必要があるということです。

私の質問:

ファイアウォールを使用してMySQLを除くすべてのポートへのアクセスをブロックするか、ファイアウォール/ iptablesをスキップして、他のすべてのサービス/ポートを完全に無効にする方がよいでしょうか?さらに、MySQLを非標準ポートで実行する必要がありますか?このデータベースは非常に機密性の高い情報を保持するため、適切に保護するために可能な限りのことを行っていることを確認したいと思います。

よろしくお願いします。しばらくここを読んでいますが、これが私が最初に尋ねた質問です。私もいくつか答えようとします=)

2
Calvin Froedge

理想的には、最大のセキュリティのために、複数のレイヤーが必要です。

これには、ネットワークポートへのすべてのアクセスをブロックするファイアウォール(shorewallのセットアップは非常に簡単です)や、tcpwrappers(hosts.allow/hosts.deny)を使用してさまざまなデーモンへのアクセスを制限するものなどが含まれます。

データベースサーバーが(静的IPを使用して)特定のサーバーからの接続のみを受信して​​いる場合、このIPを標準のファイアウォール構成、tcwrapper、およびmysql認証方法と組み合わせて使用​​して、アクセスをその1つのサーバーのみにさらに制限することもできます。

3

サーバー間のある種の安全なトンネルが理想的であり、そうでない場合はDBサーバーへのすべてのアクセスをブロックします。

それを除けば、ファイアウォールを使用して、冗長に見える場合でも(たとえば、現在ポートXでリッスンしているデーモンがあるかどうかにかかわらず)、不要なものと不要なものをすべてフィルタリングすることをお勧めします。 (netfilterのDROPを介して)すべてをフィルタリングすることの「良い」点の1つは、単純なTCPポートスキャンをすばやく簡単に実行できないことです。

また、DBをインターネットに公開する必要がある場合は、DBのデフォルトポートを変更することも悪い考えではないと思います。 「セキュリティ対策」として、それだけでそれについて幻想を抱かないでください。

1
Andrew Barber

ベストプラクティスとして、使用されていないサービスを無効にし、ボックスをファイアウォールで保護する必要があります。これを行うと、多層防御の原則が適用されます。ログのノイズを減らすのに役立つ可能性があるため、mysqlのデフォルトポートを変更できますが、これだけを行う必要はありません。

データベースに機密情報が含まれる場合は、MySqlに精通していないため、そのデータに暗号化を使用することを検討する必要があります。

security.se の質問 " MySql Server Hardening "も確認する必要があります。

0
sdanelson

ねえ、/ etc /hosts.allowedと/etc/hosts.denyで試してみてください

ALL:ALLをホストに追加すると拒否されますが、IPとmysqldはhosts.allowedに追加されます。続きを読む:

http://linux.about.com/od/commands/l/blcmdl5_hostsal.htm

これが最も簡単な方法です。

構成は次のようになります。

/etc/hosts.allow ALL:(Your-Connecting-IP)および/etc/hosts.deny ALL:ALL

localhostをallowedに追加するのは良い考えかもしれません。

0
Lerikun