Firewalld の設定

CentOS 7 への移行に伴い iptables から Firewalld へ移行したのですが、Firewalld の wiki を見てもよくわからなかったところの覚書。

interface と source は OR 条件

サーバーに接続できる IP アドレスを制限しようとして、例えば以下のように設定したとします。

# firewall-cmd --zone=home --add-interface=eth0
# firewall-cmd --zone=home --add-source=11.22.33.44/32

すると意図に反して eth0 を使った通信は全て許可されてしまいます。 interface が eth0、またはソースアドレスが 11.22.33.44 の通信が許可されるのです。

正しくは –add-source のみ実施します。

現行設定と起動時設定は別々に行う

設定をすぐに反映させ、さらに起動時にもその設定を残るようにするには以下の 2つのコマンドを入力しなければなりません。

# firewall-cmd --zone=home --add-source=11.22.33.44/32
# firewall-cmd --permanent --zone=home --add-source=11.22.33.44/32

最初の行で現在の設定が変更され、–permanent をつけることで永続的な設定、すなわち firewalld 起動時の設定が変更されます。

まあ、移行してしまえば、全体的には iptables よりわかりやすいのかも知れませんが。