Dockerがiptablesに穴を開ける件について

インターネットから直接接続できるホスト上でDBを運用しないというのは大前提だけど、小規模なサイトを運用しているとそうもいってられない

qiita.com

iptablesの前にまず0.0.0.0でバインドするの避けるべき

Dockerで何も考えずに-p 5432とか指定して起動してしまう人は多いんだけど、これは0.0.0.0:5432:5432の省略で、あらゆる場所からの接続を受け付ける。ファイアウォールがあったとしても本番環境では避けた方がいい、というか開発環境も0.0.0.0は避けた方がいい

-p 127.0.0.1:5432:5432 としてローカルホストからの接続のみを有効にしよう

というのも、最近はコワーキングスペースなどで共有Wi-Fiを使って開発することもあるだろう。0.0.0.0ということはそのコワーキングスペースにいる全員に対してポートを開いていることになる。そこで迂闊にDockerでデータベースを立ち上げてしまうと危険だ。特にローカル開発環境のMySQLはrootパスワード設定してないことが多く一発で侵入されてしまう。

mac/windowsファイアウォールを有効にしていれば大丈夫だが、デフォルトオフであるためオンにしてない人が意外と多い。Linuxもこの話の通りiptablesに穴あけられるから当然だめ。サーバアプリケーションを立ち上げる場合、そもそもそのアプリケーションがどこから接続可能になってるか把握しておき、その上でさらにファイアウォールで防御を固めるようにしたい