Fedora 18 から導入された FirewallD は、ダイナミックファイヤーウォールと呼ばれるもので、iptables と ip6tables に代わるモノだ。しかし、バージョンが上がる毎にマシにはなっているのだが、色々と問題があり、サーバー用のファイヤーウォールとしては、Fedora 22 でも十分とは言えない印象だ。しかし、それ以外の印象では実用レベルに達しつつある印象なので、GUI での使用を前提とした説明をしてみようと思う。

 

※ FirewallD に関する基本的な事は、コチラコチラで確認して下さい。

 

FirewallD を有効にする

FirewallD を使用するために、iptables や ip6tables を無効にする必要があります。管理者権限で、次のコマンドを実行します。

 


# # iptables と ip6tables を終了する。
# systemctl stop iptables ip6tables
#
# # iptables と ip6tables を使用不可にする。
# systemctl mask iptables ip6tables
#
# # FirewallD をデフォルト起動にする。
# systemctl enable firewalld
#
# # FirewallD を起動する。
# systemctl start firewalld

 

※ iptables や ip6tables がインストールされていない場合は、無効化などの処理は必要ありません。

 

FirewallD 用の GUI ツールをインストールする

FirewallD 用の GUI ツールを管理者権限でインストールします。

 


# # DNF でインストールする場合。
# dnf install firewall-config
#
# # YUM でインストールする場合。
# yum install firewall-config

 

※ Fedora22 からは DNF を用いてインストールを行います。詳しくはコチラをご覧下さい。

 

ファイヤーウォールの設定(firewall-config)

アプリケーション『ファイヤーウォールの設定』(コマンド名:firewall-config)を起動します。

 

FirewallD 用 GUI ファイヤーウォールの設定 画面

firewall-config 『設定』項目

『設定』 … ゾーンなどの設定が割り当てられる範囲

 

  • 『実行時』 … 現在の設定で、一時的なメモリ上の存在。再鼓動後などには消失し、『永続』設定が『実行時』設定にコピーされる。
  • 『永続』 … OS 起動時などに割り当てられる設定。ファイルに保存される。

 

firewall-config 『オプション』メニュー

『オプション』メニュー

 

  • 『Firewalld の再読み込み』 … FirewallD の再読み込みが行われます。この時、『実行時』設定は失われ、『永続』設定になります。
  • 『接続のゾーンの変更』 … 複数のネットワークインターフェースが存在する場合、その切り替えを行います。
  • 『標準のゾーンの変更』 … デフォルトのゾーンを指定します。OS 起動時などに適応されるゾーン。
  • 『パニックモード』 … 全ての送受信パケットを遮断します。ネットワーク攻撃などを受けている場合などの緊急時に使用します。
  • 『ロックダウン』 … 他のアプリケーションなどから、設定を変更出来ない様にします。
  • 『永続的にする実行時設定』 … 『実行時』設定を『永続』設定にコピーします。

 

firewall-config 『表示』メニュー

『表示』メニュー

 

『表示』メニューでは、通常使用しない項目の表示/非表示を切り替えます。これらの項目は、『/etc/firewalld/』の『icmptype.xml』『direct.xml』『lockdown-whitelist.xml』に該当します。それぞれのフォーマットなどについては、コマンドの『man firewalld.icmptype』『man firewalld.direct』『man firewalld.lockdown-whitelist』で確認して下さい。

 

firewall-config 『サービス』定義

設定を『永続』で『サービス』を選択する事により、サービスの定義が行えます。

 

『ポートとプロトコル』でポート番号と tcp / udp を指定し、『モジュール』で Netfilter ヘルパーモジュールを指定(通常は必要ありません)、『送信先』にアドレスを指定して対象を限定する事が出来ます。『送信先』のアドレスは1つしか指定できませんので、フィルター目的ではなく、特定のマシンからのアクセスのみを許可する場合などに利用します。この情報は『/etc/firewalld/services』に記録されます。フォーマットなどについては、コマンドの『man firewalld.service』で確認して下さい。

 

firewall-config 『ゾーン』設定

『ゾーン』は『サービス』(ポート開放を含む)、『ポート』(番号やサービスによるポート開放)、『マスカレーディング』(外部への転送)、『ポート転送』(内部・外部へのポート転送)、『ICMP フィルター』(pingなどへの応答)、『高度なルール』(IP フィルター)、『<interface>』(ネットワークインターフェースの割当)、『送信元』(ホワイトリスト)などを、一纏めにして管理する単位です。詳しくはコマンドの『man firewalld.zones』で確認して下さい。

 

サービス(デーモンなどのサーバーソフトウェア)を起動しており、ポートを開放する必要がある場合は『ゾーン』を編集し、そのゾーンが適用されている必要があります。

 

ここで設定されている『高度な設定』や『送信元』などは、カーネルレベルで適用されますので、デーモンの ACL(アクセス制限)よりも優先されます。

 

また、『永続』で設定された『ゾーン』は、『/etc/firewalld/zones/』に保存されます。

 

『高度なルール』では IP フィルターが作成できますが、iptables コマンドの知識が無いと、厳しいかも知れません。詳しくは『man iptables』で確認して下さい。

 

firewall-config 『高度なルール』追加

  • 『ファミリー』 … 『IPv4 と IPv6』、『ipv4』、『ipv6』の何れかを選択します。
  • 『要素』 … 『サービス』、『ポート』、『プロトコル』、『icmp-block』、『forward-port』(ポート転送)、『マスカレード』(外部への転送)の何れかを選択します。
  • 『アクション』 … 『accept』(受付)、『reject』(拒否)、『drop』(破棄)の何れかを選択します。
  • 『送信元』 … 送信元の IP アドレス(マスク指定も可能)を指定します。
  • 『送信先』 … 送信先の IP アドレス(マスク指定も可能)を指定します。
  • 『ログ』 … カーネルログの指定を行います。syslog を使用している場合は『/var/log/messages』、ジャーナルログを使用している場合は『journalctl -f -k』コマンドを管理者権限で実行すれば確認できます。
  • 『監査』 … Audit への記録を行います。詳しくは『man auditd』で確認して下さい。

 

※ 『高度なルール』ではバグも多く、あまり実用的では無いかも知れません。特定の国などをブラックリストに指定したい場合などはコチラでスクリプトを公開しています。宜しければご利用下さい。