テクニカルニュース

新機能

【2013年2月】新しいファイアウォール firewalld

ここに掲載するコンテンツはレッドハット社の許諾を得て、レッドハット・テクニカルニュースメールのバックナンバーを公開しています。

コンテンツのレッドハット社メール配信:2013年2月


【2】新しいファイアウォール firewalld

Red Hat Enterprise Linux や Fedora のファイアウォールの実装は従来、Linux カーネルに組み込まれた netfilter と呼ばれるカーネルモジュールを iptables や system-config-firewall を用いてユーザーランドから設定する静的なものでした。

次期 Red Hat Enterprise Linux のベースとなる Fedora 18 では、あらたなファイアウォールとして、ポリシー(ルール)を変更すると動的にそれらが適用される firewalld というデーモンが追加されました。


ファイアウォールのルールをダイナミックに変更したいケースがあります。たとえば KVM による仮想化環境では「ある仮想マシンの仮想 NIC に、あらかじめ指定した IP アドレス宛のパケットのみを送受信させたい」というような希望があります。この場合クラスタ内での仮想マシンの移動や起動・終了にともなってファイアウォールのルールを変更する必要があります。


従来から使われている system-config-firewall では、ファイアウォールのポリシーを変更後、それを反映する際にはファイアウォールを完全に再起動します。再起動するということは、ファイアウォールの netfilter カーネルモジュールをアンロードし、新しい設定を必要とするモジュールをロードすることも含みます。

モジュールをアンロードすると、いままでのファイアウォールの状態や既に確立した接続を中断することになり、ダイナミックな変更をしたい場合には問題が発生します。


firewalld はファイアウォールを動的に管理し、設定を反映する時にファイアウォール全体の再起動を必要としません。接続のトラッキング状態を確認して設定変更を反映するため、前述のダイナミックな変更による問題を避けることができます。また dbus によるインタフェースを提供しているので他のサービスやコマンドからファイアウォールを操作したい場合に整合性をもって管理をおこなうことができます。


firewalld では、「ゾーン」という概念でポリシーを管理します。いくつかの利用用途を想定したゾーンがあらかじめ提供されています。ゾーンによってポリシー変更の可否や、内向きパケットで通過を許可するサービスが異なっていますが、新規のゾーンを追加することも可能です。ネットワーク接続や NIC はそれぞれただ 1 つのゾーンに属します。複数のネットワークに接続した環境での設定が用意になります。

firewalld の設定変更は、コマンドラインツールである「firewall-cmd」や、GUI ツールである「firewall-config」から操作するのが一般的です。それでは一般的な利用方法を確認していきましょう。


ファイアウォール設定を接続状態のリセットをせずにリロードする:

# firewall-cmd --reload

ゾーンやサービスのリストを表示させるには以下を実行します。ゾーン設定を細かく確認したい場合は、「--list-all-zones」オプションを付けます。


サポートされる全てのゾーンのリストを取得する:

# firewall-cmd --get-zones
block drop work internal external home dmz public trusted

現在利用されているゾーンと、ゾーンにひもづく NIC を表示する:

# firewall-cmd --get-active-zones
internal: em1

サポートされる全てのサービスのリストを取得する:

# firewall-cmd --get-services
cluster-suite pop3s bacula-client smtp ipp radius bacula ftp mdns
samba dhcpv6-client dns openvpn imaps samba-client http https ntp
vnc-server telnet libvirt ssh ipsec ipp-client amanda-client
tftp-client nfs tftp libvirt-tls

サポートされる全ての ICMP タイプのリストを取得する:

# firewall-cmd --get-icmptypes
redirect router-solicitation parameter-problem
destination-unreachable echo-request echo-reply source-quench
time-exceeded router-advertisement

全てのゾーンについて、対応するインタフェースと利用する機能を表示する:

# firewall-cmd --list-all-zones
<中略>
internal
  interfaces: em1
  services: ipp-client mdns dhcpv6-client samba-client ssh
  ports: 
  forward-ports: 
  icmp-blocks: 
<以下略>

デフォルトで利用されるゾーンを確認・設定するには以下を実行します。

# firewall-cmd --get-default-zone
# firewall-cmd --set-default-zone=<zone>

いかがでしょうか。今回は確認方法のみのご案内となりましたが firewalld は Fedora 18 にて標準ファイアウォールとなっており、次期 Red Hat Enterprise Linux 7 にも取り込まれる予定です。


より詳細に firewalld を学ぶ場合、FedoraProject の wiki に情報がまとまっております。是非ご確認ください。


ページトップへ戻る

Red Hatトップへ戻る