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
-
前の記事
Linux echoでファイル作成時に改行を入れる 2021.09.21
-
次の記事
javascript lodashを使って配列からランダムに値を抽出する 2021.09.22
この方法だとdockerデーモンを再起動させると全て元に戻ります
ご指摘有難うございます。取り急ぎ、ページの方にはご指摘頂いた内容を追記いたしました。