firewalldのデフォルトゾーンをDROPで運用する
こんにちは!Azusaです。
昨日に引き続きfirewalldについて書いていきたいと思います。
firewalldのデフォルトゾーンとしてインターフェースが設定されている”public”ですが、”taget=default”に設定されており、許可されていないプロトコルやポートへの通信には拒否メッセージが返されます。
サーバのセキュリティとしては、許可されていない通信に対しては無視してもらうのが好ましいため、”target=DROP”で運用することにしました。
基本的にはコマンドラインから”zone=public”のtargetをDROPに設定するだけで問題はないのですが、IPv6での環境に対応させるには少しルールを追加してあげる必要があります。
DHCPv6を使ってアドレスを設定している方はserviceに”dhcpv6-client”が必要です。
# firewall-cmd --permanent --zone=public --set-target DROP
# firewall-cmd --permanent --zone=public --add-service dhcpv6-client
# firewall-cmd --reload
IPv4ではIPアドレスの設定等にARPを使うようで、firewalldのtargetがDROPであっても、その通信は通すようになっています。
しかしIPv6ではICMPでのやりとりが必要なようで、ARPのようにデフォルトでは許可されていないのでICMPでの必要なメッセージを受け入れるように設定しないと名前解決等ができずに通信ができません。
最低限必要だと思われるメッセージは、ルータから使えるアドレス空間を伝達してIPv6アドレスを設定するための”router-advertisement”、名前解決のために応答及び問い合わせをするための”neighbour-advertisement”,”neighbour-solicitation”で、合計3種類のメッセージを受け入れるように設定する必要があります。
まず、IPv6のICMPを受け入れるために、
# firewall-cmd --permanent --zone=public --add-protocol ipv6-icmp
そして、デフォルトではブラックリスト方式でICMPメッセージを選択する方式ですが、不要なメッセージを返さないようにホワイトリスト方式にするため、”icmp-block-inversion”を有効にします。
そして、先程挙げた3種類のメッセージを追加します。
# firewall-cmd --permanent --zone=public --add-icmp-block-inversion
# firewall-cmd --permanent --zone=public --add-icmp-block router-advertisement
# firewall-cmd --permanent --zone=public --add-icmp-block neighbour-advertisement
# firewall-cmd --permanent --zone=public --add-icmp-block neighbour-solicitation
# firewall-cmd --reload
以上でIPv6環境でも”target=DROP”で運用できるかと思います。
その他に公開しているサービスやポート等があれば普段どおりに追加していけば問題ありません。
前回の記事と合わせて設定することで、ブラックリストに入っているIPからの全通信を無視して、ブラックリストから漏れているものに関しても不正アクセスを試みる通信に返答を返さなくなるのでよりセキュアな運用ができるのではないかと思います。
興味がある方はIPSetを利用して不正アクセスを遮断するための前回の記事も御覧ください。
ではまた次の記事で!