Ansible

Ansible firewalldを使ってみた

More than 3 years have passed since last update.

Ansibleでfirewalldを使ったのですが、今後も結構使いそうなのでメモもかねて投稿。


firewalld

名前の通り、firewalldの操作に使います。

firewalld - Manage arbitrary ports/services with firewalld


Options

parameter
required
default
choices

immediate
(added in 1.9)
no

permanent
yes

port
no

rich_rule
no

service
no

state
no

enabled/disabled

timeout
no

zone
no
system-default


公式ページには以下の例がある。

1.httpsのポートを開ける

- firewalld: service=https permanent=true state=enabled

2.8081のtcpポートを閉じる

- firewalld: port=8081/tcp permanent=true state=disabled

3.161から162までのudpポートをあける

- firewalld: port=161-162/udp permanent=true state=enabled

4.dmzゾーンのhttpポートを開ける

- firewalld: zone=dmz service=http permanent=true state=enabled

5.rich-ruleの適用(ftpのポートを開け、1分ごとにauditを使ってロギングする)

原文:Allow new IPv4 and IPv6 connections for service ftp and log 1 per minute using audit

- firewalld: rich_rule='rule service name="ftp" audit limit value="1/m" accept' permanent=true state=enabled


困った点

firewall-cmdはpermanentオプションを付けた場合と付けなかった場合で以下の違いがある。

permanentを付けない:一時的に適用。reloadすると適用から外れる。

permanentを付ける:継続的に適用。reloadすると適用される。

そのため、1番の例だと

継続的に適用したい+すぐに適用したい場合、

- firewalld: service=https permanent=true state=enabled

- service: name=firewalld state=restarted


とか書かなきゃいけないのかな、と思っていたのですが

immediate(added in 1.9)を付けるとすぐに適用されるみたい。

だからこう書ける。

- firewalld: service=https permanent=true state=enabled immediate=true

かなり綺麗に記述できるようになりますね。


ちなみに

ちなみに、firewallを変えると、そのホスト上で動いている

Dockerコンテナのネットワークがおかしくなるんですが、

バグなんでしょうか。。。