Firewallサービスの設定
firewalldの利用が推奨されている
memo
※2019年 現時点で directルールが上手く動かない気がしている
#
Firewalldのインストールfirewalldの稼働状況確認
インストールされていない場合インストールする
NetworkManager管理環境で後からfirewalldをインストールした場合、管理の競合が発生する場合があるためNetworkManagerを再起動しておく
#
ZONE定義firewalld は、ゾーン および サービス の概念を使用し、トラフィック管理を簡素化します。ゾーンは、事前定義したルールセットです。ネットワークインターフェースおよびソースはゾーンに割り当てることができます。許可されているトラフィックは、コンピューターが接続されるネットワークと、このネットワークが割り当てられているセキュリティーレベルに従います。ファイアウォールサービスは、特定のサービスに着信トラフィックを許可するのに必要な設定を扱う事前定義のルールで、ゾーンで適用されます。
firewalld は、インターフェースに追加する信頼レベルと、そのネットワークのトラフィックに従って、複数のネットワークを複数のゾーンに分類できます。接続は、1 つのゾーンにしか指定できませんが、ゾーンは多くのネットワーク接続に使用できます。
インストール時に、firewalld のデフォルトゾーンは public ゾーンに設定されます。
zone name | example |
---|---|
block | IPv4 の場合は icmp-host-prohibited メッセージ、そして IPv6 の場合は icmp6-adm-prohibited メッセージで、すべての着信ネットワーク接続が拒否されます。システム内で開始したネットワーク接続のみが可能です。 |
dmz | 公開アクセスが可能ではあるものの、内部ネットワークへのアクセスには制限がある非武装地帯にあるコンピューター用。選択した着信接続のみが許可されます。 |
drop | 着信ネットワークパケットは、通知なしで遮断されます。発信ネットワーク接続だけが可能です。 |
external | マスカレードを特別にルーター用に有効にした外部ネットワーク上での使用向けです。自分のコンピューターを保護するため、ネットワーク上の他のコンピューターを信頼しません。選択された着信接続のみが許可されます。 |
home | そのネットワークでその他のコンピューターをほぼ信頼できる自宅での使用。選択した着信接続のみが許可されます。 |
internal | そのネットワークでその他のコンピューターをほぼ信頼できる内部ネットワークでの使用。選択した着信接続のみが許可されます。 |
public | そのネットワークでその他のコンピューターを信頼できないパブリックエリアでの使用。選択した着信接続のみが許可されます。 |
trusted | すべてのネットワーク接続が許可されます。 |
work | そのネットワークで、その他のコンピューターをほぼ信頼できる職場での使用。選択した着信接続のみが許可されます。 |
LANに接続しているNICがデフォルトでどのzoneに登録されているかを確認
デフォルトで割り当てられるZoneは下記にて定義されている
#
ZONEにデフォルトで定義されているポリシー現在の割り当てられているZONEに定義されているポリシー
指定のZONEに定義されているポリシー
#
デフォルト割り当てゾーンの変更デフォルトで利用されるZONEの変更
#
NIC割当ZONEの設定NICの登録ゾーンを変更する場合はnmcliコマンドで設定する。
#
ポリシーの設定firewalldにてZONEにポリシーを追加する
firewalldではデフォルトでOUT側通信に対する制御がありません、firewalldを利用する場合は幾つかのポリシー定義・管理方法からサービスに合った方法を選択する必要がある
全ての方法を利用してポリシーを定義することも可能だが、管理が煩雑になるため注意する
firewalldはバックグラウンドでnftablesを利用しポリシーを管理している
デフォルトでは INPUT
, FORWARD
, OUTPUT
全てのチェインについて何もルールが設定されていない
また通常ポリシーにて定義してあるサービスも表示されない
memo
OS系よりfirewalldで管理している通常ルール、リッチルールとダイレクトルールは別管理になっているっぽく
今までのようにダイレクトルールで全てのポリシー管理ができない(多分)
インプット側の通信はfirewalldの通常ルール、アウトプット側の通信はダイレクトルールと定義をそれぞれ設定する必要がある
処理優先順位は 通常ルール(デフォルトall drop)>ダイレクトルール(デフォルト all accept)?
#
通常ポリシー定義サービス、ポート単位でポリシーを管理できる
特定の宛先からの通信、OUT側通信に対するポリシーは定義できません
デフォルトで利用されているポリシー定義方法
- 許可ポートの追加
レンジで登録したい場合は -add-port=5060-5061/udp
のように指定する
- 許可サービスの追加
ポートやポートレンジをサービスとして登録し、サービスの許可、拒否という管理も行えます。
現在登録されているサービスの確認
- サービスの追加
- 登録したサービスを削除
#
リッチルールによるポリシー定義サービスやポート単位の許可・拒否ではなく細かく制御したいときに利用できるルールを作成できます
OUT側通信に対するポリシーは定義できません
- リッチルールの基本書式
- 定義内容の確認
定義例
#
ダイレクトルールによるポリシー定義firewalldを経由してnftablesに直接定義を記述するようにルールを作成できる
接続元、インターフェース指定、OUT側通信と詳細定義を行うことができる
ダイレクトルールとはそのままfirewalldの管理ポリシー定義ベースで運用するのではなく、nftables同様kernelポリシーとして直接定義するルール
- 書式
定義例
#
ダイレクトルールによるポリシー定義(XML)XML形式で記述する事でiptables時と同様にポリシーを簡単に管理、配布する事が出来る
ルールを反映
設定後、他のポリシーにて定義した内容を削除する
#
操作ロック他root実行されているアプリケーションからfirewallの設定を変更されたくない場合ロックすることが可能
- ロック状態の確認
- ロックの有効化、無効化