BLOGTIMES
2015/02/05

FirewallD で NIC が所属するゾーンを変更する

  centos7  networking  firewalld 
このエントリーをはてなブックマークに追加

Linux マシンに NIC を2枚差しして、一方にグローバルアドレスを振り、もう一方を内部セグメントにつなぐというパターンはよくあるのではないでしょうか。この場合にパケットフィルタリングのルールを外側は厳しめにして、ssh などは内側からだけアクセスさせるような使い方になると思います。

今回は FirewallD を使ってそれぞれの NIC が所属するゾーンを別々にしてやることにより前述のようなパターンを実現します。FirewallD ではゾーン*1という概念があり、ゾーンごとに別々のフィルタリングルールを適用することができます。ゾーンはデフォルトの public から、あらゆるパケットが許可される trusted まで様々なゾーンがあらかじめ定義されています。ゾーンは送信元や送信先のアドレスをCIDR で指定する方法もありますが、今回はインターフェースで識別することにします。

下記の例は外側を public 、内側を work にして、外側は https だけ、内側は https と ssh を許可する例です。

# ゾーンへのサービスの追加 firewall-cmd --zone=work --add-service=ssh --permanent firewall-cmd --zone=work --add-service=https --permanent firewall-cmd --zone=public --remove-service=ssh --permanent firewall-cmd --zone=public --add-service=https --permanent firewall-cmd --reload # NIC のゾーンの付け替え firewall-cmd --zone=work --change-interface=eth1 --permanent firewall-cmd --reload firewall-cmd --zone=work --change-interface=eth1

※2015/2/13追記: この方法では再起動すると設定が消えるので、他の方法を模索しました。

以下のようにしてやれば、今回の設定がきちんと反映されているかどうか確認できます。

# firewall-cmd --get-active-zones work interfaces: eth1 public interfaces: eth0 # firewall-cmd --list-all --zone=public public (default, active) interfaces: eth0 sources: services: dhcpv6-client https ports: masquerade: no forward-ports: icmp-blocks: rich rules: # firewall-cmd --list-all --zone=work work (active) interfaces: eth1 sources: services: dhcpv6-client https ipp-client ssh ports: masquerade: no forward-ports: icmp-blocks: rich rules:

少し時間がかかりましたが、だいぶ FirewallD も思い通りに動かせるようになってきました。

2016/6/3 追記

zone を変更するときには nmcli を使うのがいいみたいです。


トラックバックについて
Trackback URL:
お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/7374
Trackbacks
このエントリにトラックバックはありません
Comments
愛のあるツッコミをお気軽にどうぞ。[policy]
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
コメントはありません
Comments Form

コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。

OpenID を使ってログインすることができます。

Identity URL: Yahoo! JAPAN IDでログイン