インターネットから直接接続できるホスト上でDBを運用しないというのは大前提だけど、小規模なサイトを運用しているとそうもいってられない
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に穴あけられるから当然だめ。サーバアプリケーションを立ち上げる場合、そもそもそのアプリケーションがどこから接続可能になってるか把握しておき、その上でさらにファイアウォールで防御を固めるようにしたい