質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

91.04%

  • CentOS

    2300questions

    CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

  • Docker

    496questions

    Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

CentOS7のfirewalldで設定しても、dockerで開いた無許可のポートに外部からアクセスできてしまう。

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 2,863

kotatsu_hal

score 15

CentOSサーバ上でnginxを80443ポートで受け付けています。
それとは別に同サーバ上でdockerコンテナを1234ポート(仮)で建てたのですが、このポートはホストOS→コンテナアクセス専用なため、外部に公開したくありません。
ところが、特に許可していないはずの1234ポートに外部回線のブラウザから普通にアクセスできてしまいました・・。

・nginx 80ポート → 許可
・nginx 443ポート → 許可
・docker 1234ポート → 拒否(したいができない・・)

firewalldの設定は以下の様になっており、 services: dhcpv6-client http https sshとなっているため1234ポートなんて適当なポートにアクセスできるワケないのですが、ブラウザからアクセスすると、レスポンスが帰ってきてしまいます。。
firewalld再起動、OS再起動も行いましたが、変わらずです。

[root@server]# firewall-cmd --reload
success

[root@server]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services: dhcpv6-client http https ssh
  ports:
  protocols:
  masquerade: no
  forward-ports:
  sourceports:
  icmp-blocks:
  rich rules:

[root@server]# docker run -d -p 1234:80 nginx
de61adf27ac5d918277543874c3928345f17a23078e7d85eb658e3fe24d1575a

イメージ説明

dockerで開いたポートは、firewalldの設定は反映されないということなのでしょうか??

動作確認しているOSは、さくらのクラウドの CentOS Linux release 7.3.1611 (Core)です。
よろしくお願いいたします。

一応、firewall-cmd --list-all-zone の結果を以下に記載します。

[root@server]# firewall-cmd --list-all-zone
work
  target: default
  icmp-block-inversion: no
  interfaces:
  sources:
  services: dhcpv6-client ssh
  ports:
  protocols:
  masquerade: no
  forward-ports:
  sourceports:
  icmp-blocks:
  rich rules:


drop
  target: DROP
  icmp-block-inversion: no
  interfaces:
  sources:
  services:
  ports:
  protocols:
  masquerade: no
  forward-ports:
  sourceports:
  icmp-blocks:
  rich rules:


internal
  target: default
  icmp-block-inversion: no
  interfaces:
  sources:
  services: dhcpv6-client http https mdns samba-client ssh
  ports:
  protocols:
  masquerade: no
  forward-ports:
  sourceports:
  icmp-blocks:
  rich rules:


external
  target: default
  icmp-block-inversion: no
  interfaces:
  sources:
  services: ssh
  ports:
  protocols:
  masquerade: yes
  forward-ports:
  sourceports:
  icmp-blocks:
  rich rules:


trusted
  target: ACCEPT
  icmp-block-inversion: no
  interfaces:
  sources:
  services:
  ports:
  protocols:
  masquerade: no
  forward-ports:
  sourceports:
  icmp-blocks:
  rich rules:


home
  target: default
  icmp-block-inversion: no
  interfaces:
  sources:
  services: dhcpv6-client mdns samba-client ssh
  ports:
  protocols:
  masquerade: no
  forward-ports:
  sourceports:
  icmp-blocks:
  rich rules:


dmz
  target: default
  icmp-block-inversion: no
  interfaces:
  sources:
  services: ssh
  ports:
  protocols:
  masquerade: no
  forward-ports:
  sourceports:
  icmp-blocks:
  rich rules:


public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services: dhcpv6-client http https ssh
  ports:
  protocols:
  masquerade: no
  forward-ports:
  sourceports:
  icmp-blocks:
  rich rules:


block
  target: %%REJECT%%
  icmp-block-inversion: no
  interfaces:
  sources:
  services:
  ports:
  protocols:
  masquerade: no
  forward-ports:
  sourceports:
  icmp-blocks:
  rich rules:
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

docker が firewalld を介さずに、直接 iptables で 1234 番ポートを開けているのだと思います。
iptables -nvL -t nat の PREROUTING チェインをたどっていくと、1234 番ポートを DNAT しているルールがあると思います。
また、iptables -nvL  の FORWARD チェインをたどっていくと、で外部→dockerコンテナへの接続が許可されていると思います。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/01/05 13:32

    ありがとうございました!
    `-p 1234` でポートを完全公開するのではなく、`--expose 1234` で内側に開けておいて、外からはnginxで受けてプロクシするようにしました。
    これ知らないままだったら、危ないところでした。
    助かりました!

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 91.04%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • CentOS

    2300questions

    CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

  • Docker

    496questions

    Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです