web-dev-qa-db-ja.com

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

私は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コンテナーを使用しました。

8
Ivan

のように見えます

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

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

/ etc/default/dockerと ncomment DOCKER_OPTS行を編集します。

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

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

  • UFWはiptablesの真の状態を通知しません(衝撃的ではありませんが、それでも変わりません)。
  • 公開したくないものに対しては、Dockerで-pオプション(または-P)を使用しないでください。
  • ループバックインターフェイスまたは内部IPのいずれかにのみバインドします。
6
Ivan