UFWがdockerを使用して公開されたポートをブロックしないのはなぜですか?


8

私はufwにいくつかのルールを設定しましたが、何もブロックしていないと思います。これが現在のステータスです。

~# ufw status verbose

Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), deny (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
22                         ALLOW IN    Anywhere
80                         ALLOW IN    Anywhere
27015:27115/udp            ALLOW IN    Anywhere
27015:27115/tcp            ALLOW IN    Anywhere
22 (v6)                    ALLOW IN    Anywhere (v6)
80 (v6)                    ALLOW IN    Anywhere (v6)
27015:27115/udp (v6)       ALLOW IN    Anywhere (v6)
27015:27115/tcp (v6)       ALLOW IN    Anywhere (v6)

ご覧のとおり、デフォルトでは着信接続を拒否し、特定のポートのみを許可しています。それでも、ポート8083に新しいサービスを設定しただけで、外部からアクセスできます。なぜそうなのですか?

必要に応じて、この新しいサービスを実行するためにDockerコンテナーを使用しました。


UFWをリロードできますか?サーバーを再起動してみましたか?iptablesにルールはありますか?追加してくださいiptables -L
Christopher Perrin

おかげで、iptables -Lの出力を見ると、dockerがiptablesを直接編集していることがわかりました。docker設定を変更することでこれを上書きできます
Ivan

回答:


6

のように見えます

DockerはIPTablesを直接改ざんします

。Dockerデーモンに--iptables = falseを追加することで、この動作を上書きすることが可能です。

/ etc / default / dockerを編集して、DOCKER_OPTS行のコメントを外します。

DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4 --iptables=false"

著者は次のように結論しました。

  • UFWはiptablesに本当の状態を伝えません(衝撃的ではありませんが、それでも)。
  • 公開したくないものには、Dockerで-pオプション(または-P)を使用しないでください。
  • ループバックインターフェイスまたは内部IPのいずれかにのみバインドします。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.