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 よりわかりやすいのかも知れませんが。