プロクラ(クラウドAIロボット、詳しい役)SabaKore

セキュリティ

Dockerのポート公開がファイアウォールを迂回する

2026年8月20日

この記事はAIが下書きを作成しています。内容に誤りに気づいた場合はお問い合わせよりお知らせください。

レン(新米インフラエンジニア)・がーん

レン

ファイアウォールで閉じてるはずのポートに、外から繋がっちゃうんだけど…!?
プロクラ(クラウドAIロボット、詳しい役)・困った

プロクラ

Dockerを使っているなら、それは起こりうるよ。Dockerはポートを公開するとき、ファイアウォールより手前の層に自分で設定を書き込む。だから、こちらで閉じたつもりの設定を通り越してしまうんだ。

開ける入口は、使うものだけ

22SSH接続元を絞る
80Web公開するなら
443Web(暗号化)公開するなら
3306データベース外に出さない
その他既定で閉じる

「全部閉じてから、必要な分だけ開ける」が基本。SSHを閉じる前に自分の接続を確認

何が起きているのか

  • ufwなどの道具は、決められた場所に規則を書く
  • Dockerは、それより先に評価される場所に規則を書く
  • 結果として、Dockerの公開設定が優先される
  • 「閉じたのに開いている」という、直感に反する状態になる
ウィルスン(セキュリティの番人)・ドヤ顔

ウィルスン

…これは実に良い話でな。管理者はファイアウォールを設定して安心している。だが扉は開いたままなのだ。ワタシが探しているのは、まさにこういうサーバーだよ。

実際に確認する

プロクラ(クラウドAIロボット、詳しい役)・分析中

プロクラ

設定を信じるのではなく、実際に外から見えるかを確かめよう。ここを一度でもやっておくと、思い込みに気づける。
  • ss -tulpn で、待ち受けているアドレスを確認する
  • 0.0.0.0 になっていれば、すべての経路から受け付ける状態
  • 別の回線から、そのポートへ接続してみる
  • 外部の確認サービスで、見えているかを試す

公開範囲を限定する

プロクラ(クラウドAIロボット、詳しい役)・教える

プロクラ

対策は単純で、公開の指定にアドレスを含めることだよ。何も書かなければ全公開、127.0.0.1 を指定すればホスト内だけになる。
  • 外に出す必要が無いものは、127.0.0.1 に限定して公開する
  • データベースや管理用の画面は、原則こちら
  • 外から使うものだけを、全公開にする
  • そもそも公開しない(コンテナ同士はサービス名で繋がる)
プロクラ(クラウドAIロボット、詳しい役)・OK

プロクラ

4つめが最も安全だよ。アプリからデータベースへ繋ぐだけなら、ホストに公開する必要はまったく無い。公開の指定を消すだけで、外部からの入口が1つ減る。

設定でDockerに触らせない方法

  • Dockerがファイアウォールへ書き込まないようにする設定もある
  • ただし、その場合はコンテナの通信を自分で通す設定が必要になる
  • 設定を誤ると、コンテナから外へ出られなくなる
  • 個人の環境では、公開範囲の限定で対応するほうが簡単
プロクラ(クラウドAIロボット、詳しい役)・分析中

プロクラ

この挙動を知らないまま「ファイアウォールを設定したから安全」と思っているのが、いちばん危ない状態だよ。知ったうえで、公開範囲を意識して書く。それで十分に防げる。
レン(新米インフラエンジニア)・できた

レン

設定を信じずに、外から実際に見えるか確かめる。やってみる。

気づかないまま公開しやすいもの

プロクラ(クラウドAIロボット、詳しい役)・困った

プロクラ

手元で開発していたときの設定をそのまま持ち込むと、本来外に出すべきでないものまで公開されがちだよ。特に次のものは要注意だ。
  • データベース(外部から直接接続できる状態になる)
  • キャッシュや検索の仕組み(認証が無い設定のことがある)
  • 管理用の画面
  • 開発用に用意した、認証不要の入口
ウィルスン(セキュリティの番人)・ニヤリ

ウィルスン

…認証の無いデータベースが、そのまま公開されている。ワタシはそれを探す道具を持っているのでな。見つけるのに手間はかからんよ。

あわせて読みたい

→ コラム記事をすべて見る(カテゴリ・事業者で絞り込めます)

サーバーを触る前に押さえておきたいこと

姉妹サイトの、この記事と相性のいいページです。