dockerで構築したコンテナにfirewallで制限をかける

dockerで構築したコンテナにfirewallで制限をかける

dockerで構築したコンテナにfirewallで制限をかける方法を記述してます。

環境

  • OS Rocky Linux release 8.4 (Green Obsidian)
  • docker 20.10.7

コンテナにfirewallで制限

正しいやり方かわかりませんが、「/etc/firewalld/zones」に「docker.xml」が作成されているので、

<?xml version="1.0" encoding="utf-8"?>
<zone version="1.0" target="ACCEPT">
  <short>docker</short>
  <description>zone for docker bridge network interfaces</description>
</zone>

これがあると、firewallで制限しても、dockerからポートフォワーディングされた通信は全て許可されます。
例えば、firewallで80番ポートを開放してなくても、dockerから80番ポートがポートフォワーディングされていたら、接続ができてしまいます。
※コメント頂いた通り、この方法だとdockerコンテナを再起動すると、再度設定する必要があるようです。

一応、zoneの名前を確認して、

firewall-cmd --get-active-zones

<出力結果>
docker
  interfaces: br-t802f41377dc br-58b55695435d docker0
public
  interfaces: eth0

zoneを削除します。

sudo firewall-cmd --permanent --delete-zone=docker

これで「docker.xml.old」にリネームされます。

設定を反映させるため、firewallを再起動します。

sudo firewall-cmd --reload

※もしくは「docker.xml」に記述されている内容を全て削除して再起動します。

次に、 「public.xml」 の方に制限をかけると期待する動作になりました。
※firewall側では、dockerのネットワークも許可する必要があります。

設定を反映させるためには再起動を実行します。

sudo firewall-cmd --reload