Firewalld
関連記事
firewalld は Red Hat によって開発されているファイアウォールデーモンです。デフォルトで nftables を使用します。プロジェクトのホームページより:
- Firewalld は動的に管理されるファイアウォールを提供し、ネットワーク・ファイアウォールゾーンによってネットワーク接続やインターフェイスの信頼レベルを定義します。IPv4 と IPv6 のファイアウォールの設定、イーサネットブリッジ、IP セットをサポートします。実行時と永続的な設定オプションは分離されています。サービスやアプリケーションのインターフェイスを提供しファイアウォールのルールを直接追加することができます。
目次
インストール
使用方法
firewalld.service
を起動・有効化してください。
コンソールユーティリティ firewall-cmd
でファイアウォールのルールを制御できます。
firewalld が稼働中でない場合 firewall-offline-cmd
ユーティリティを使うことで設定できます。firewall-cmd
と構文は似ています。
GUI は firewalld パッケージに含まれている firewall-config
で利用できます。
設定
firewall-cmd
を使うことで実行時の設定を変更できます。
ゾーン
ゾーンは特定のインターフェイスに適用することができるルール集です。
現在のゾーンと割り当てられたインターフェイスを確認するには:
# firewall-cmd --get-active-zones
(ポートやサービスの追加・削除など) 一部のコマンドではゾーンを指定する必要があります。
--zone=zone_name
パラメータを使って名前でゾーンを指定できます。
ゾーンを指定しなかった場合はデフォルトゾーンが使われます。
ゾーンの情報
全てのゾーンとその設定を確認するには:
# firewall-cmd --list-all-zones
あるいは特定のゾーンの情報だけ取得するには:
# firewall-cmd --info-zone=zone_name
インターフェイスのゾーンを変更
# firewall-cmd --zone=zone --change-interface=interface_name
zone
はインターフェイスに割り当てたい新しいゾーンに置き換えてください。
デフォルトゾーン
新しいインターフェイスが接続されるとデフォルトゾーンが適用されます。以下のコマンドでデフォルトゾーンの名前を確認できます:
# firewall-cmd --get-default-zone
以下のコマンドでデフォルトゾーンを変更できます:
# firewall-cmd --set-default-zone=zone
サービス
サービスは特定のデーモンに合わせて作成されたルールです。例えば ssh
サービスは SSH に対応し、ゾーンに割り当てたときにポート 22 が開きます。
利用可能なサービスのリストを確認するには以下のコマンドを実行:
# firewall-cmd --get-services
特定のサービスの情報を確認するには:
# firewall-cmd --info-service service_name
ゾーンからサービスを追加・削除
ゾーンにサービスを追加するには:
# firewall-cmd --zone=zone_name --add-service service_name
サービスを削除するには:
# firewall-cmd --zone=zone_name --remove-service service_name
ポート
指定したゾーンのポートを直接開くことができます:
# firewall-cmd --zone=zone_name --add-port port_num/protocol
protocol
は tcp
または udp
に置き換えてください。
ポートを閉じるには --remove-port
オプションで同じポート番号とプロトコルを指定してください。
ヒントとテクニック
ポートあるいはサービスのタイムアウト
--timeout=value
オプションを使うことでサービスやポートの時間制限を追加することができます。値は何も付けないと秒数になり、m
や h
を後ろに付けることで分や時間になります。例えば SSH サービスを3時間の制約で追加するには:
# firewall-cmd --add-service ssh --timeout=3h
実行時の設定を永続的に変換
一時的な設定を永続化するには (再起動しても設定が消えなくなります):
# firewall-cmd --runtime-to-permanent
サービスの詳細をチェック
デフォルトでサポートされているサービスの設定ファイルは /usr/lib/firewalld/services/
に存在し、ユーザーが作成したサービスファイルは /etc/firewalld/services/
に配置されます。