Linuxでfirewalldを使い始める方法

公開: 2022-07-08
Linuxコマンドラインを示すノートパソコンの画面。
fatmawati achmad zaenuri / Shutterstock.com

コマンドラインまたはGUIインターフェイスで簡単に構成できるLinux用の最新の強力なファイアウォールを探している場合は、 firewalldがおそらく探しているものです。

ファイアウォールの必要性

ネットワーク接続には、発信元と宛先があります。 発信元のソフトウェアが接続を要求し、宛先のソフトウェアが接続を受け入れるか拒否します。 受け入れられると、データのパケット(一般にネットワークトラフィックと呼ばれます)は、接続を介して双方向に通過できます。 これは、自宅の部屋全体で共有している場合でも、ホームオフィスからリモートで仕事に接続している場合でも、離れた場所にあるクラウドベースのリソースを使用している場合でも同じです。

ファイアウォールは実際に何をしますか?
関連ファイアウォールは実際に何をしますか?

優れたセキュリティ慣行では、コンピュータへの接続を制限および制御する必要があります。 これはファイアウォールが行うことです。 これらは、IPアドレス、ポート、またはプロトコルでネットワークトラフィックをフィルタリングし、構成済みの事前定義された一連の基準(ファイアウォールルール)を満たさない接続を拒否します。 彼らは特別なイベントの警備員のようなものです。 あなたの名前がリストにない場合、あなたは中に入っていません。

もちろん、ファイアウォールルールを制限して、通常のアクティビティが制限されることは望ましくありません。 ファイアウォールを構成するのが簡単なほど、競合するルールや厳格なルールを誤って設定する可能性が低くなります。 ファイアウォールは複雑すぎて理解できない、またはコマンド構文が不透明すぎるため、ファイアウォールを使用しないというユーザーからよく耳にします。

firewalldファイアウォールは強力ですが、コマンドラインと専用のGUIアプリケーションの両方で簡単にセットアップできます。 内部的には、Linuxファイアウォールはカーネル側のネットワークフィルタリングフレームワークであるnetfilterに依存しています。 ここユーザーランドでは、 iptablesufw 、単純なファイアウォール、 firewalldなど、 netfilterと対話するためのツールを選択できます。

私たちの意見では、 firewalldは機能性、粒度、シンプルさの最高のバランスを提供します。

Firewalldのインストール

firewalldには2つの部分があります。 firewalld機能を提供するデーモンプロセスであるfirewalldと、 firewall-configがあります。 これはfirewalldのオプションのGUIです。 firewall-configには「d」がないことに注意してください。

Ubuntu、Fedora、およびManjaroへのfirewalldのインストールは、すべての場合で簡単ですが、それぞれがプレインストールされているものとバンドルされているものについて独自の見解を持っています。

Ubuntuにインストールするには、 firewalldfirewall-configをインストールする必要があります。

 sudoaptインストールfirewalld 

Ubuntuにfirewalldをインストールする

 sudo apt installfirewall-config 

Ubuntuにfirewall-configをインストールする

Fedoraには、 firewalldがすでにインストールされています。 firewall-configを追加するだけです。

sudo dnf install firewall-config

Fedoraにfirewall-configをインストールする

Manjaroでは、どちらのコンポーネントもプリインストールされていませんが、1つのパッケージにバンドルされているため、1つのコマンドで両方をインストールできます。

 sudo pacman -Sy Firewalld 

Manjaroに1つのコマンドでfirewalldとfirewall-configをインストールする

コンピューターが起動するたびにfirewalldデーモンを実行できるようにする必要があります。

 sudo systemctl enable Firewalld 

起動時にfirewalldが自動起動できるようにする

そして、デーモンを起動して、現在実行されるようにする必要があります。

 sudo systemctl start Firewalld 

Firewalldデーモンを起動します

systemctlを使用して、 firewalldが起動し、問題なく実行されていることを確認できます。

 sudosystemctlステータスfirewalld 

systemctlを使用してfirewalldのステータスを確認する

また、 firewalldを使用して、実行されているかどうかを確認することもできます。 これは、 --stateオプションを指定したfirewall-cmdコマンドを使用します。 firewall-cmdには「d」がないことに注意してください。

 sudo Firewall-cmd --state 

Firewall-cmdコマンドでfirewalldのステータスを確認する

これでファイアウォールがインストールされて実行されたので、ファイアウォールの構成に進むことができます。

ゾーンの概念

firewalldで保護されたファイアウォールは、ゾーンに基づいています。 ゾーンは、ファイアウォールルールと関連するネットワーク接続のコレクションです。 これにより、操作可能なさまざまなゾーン(およびさまざまなセキュリティ制限のセット)を調整できます。 たとえば、通常の日常の実行用に定義されたゾーン、より安全な実行用の別のゾーン、および「何も入っていない、何も出ていない」完全なロックダウンゾーンがあるとします。

あるゾーンから別のゾーンに移動し、効果的にあるレベルのセキュリティから別のレベルに移動するには、ネットワーク接続を、それが存在するゾーンから、実行したいゾーンに移動します。

これにより、定義されたファイアウォールルールのセットから別のルールへの移動が非常に高速になります。 ゾーンを使用する別の方法は、ラップトップで自宅にいるときに1つのゾーンを使用し、外出してパブリックWi-Fiを使用しているときに別のゾーンを使用することです。

firewalldには、事前に構成された9つのゾーンが付属しています。 これらは編集でき、さらにゾーンを追加または削除できます。

  • drop :すべての着信パケットがドロップされます。 発信トラフィックは許可されます。 これは最も妄想的な設定です。
  • ブロック:すべての着信パケットがドロップされ、 icmp-host-prohibitedメッセージが発信者に送信されます。 発信トラフィックは許可されます。
  • 信頼済み:すべてのネットワーク接続が受け入れられ、他のシステムが信頼されます。 これは最も信頼できる設定であり、キャプティブテストネットワークや自宅などの非常に安全な環境に制限する必要があります。
  • public :このゾーンは、他のどのコンピューターも信頼できないパブリックネットワークまたは他のネットワークで使用するためのものです。 一般的で通常は安全な接続要求の少数の選択が受け入れられます。
  • 外部:このゾーンは、NATマスカレード(ポート転送)が有効になっている外部ネットワークで使用するためのものです。 ファイアウォールは、トラフィックをプライベートネットワークに転送するルーターとして機能します。このネットワークは、到達可能でありながらプライベートです。
  • 内部:このゾーンは、システムがゲートウェイまたはルーターとして機能する場合に、内部ネットワークで使用することを目的としています。 このネットワーク上の他のシステムは一般的に信頼されています。
  • dmz :このゾーンは、境界防御の外側の「非武装地帯」にあり、ネットワークへのアクセスが制限されているコンピューター用です。
  • 作業:このゾーンは作業機械用です。 このネットワーク上の他のコンピューターは一般的に信頼されています。
  • ホーム:このゾーンはホームマシン用です。 このネットワーク上の他のコンピューターは一般的に信頼されています。

自宅、職場、および内部ゾーンの機能は非常に似ていますが、それらを異なるゾーンに分割すると、特定のシナリオの1セットのルールをカプセル化して、ゾーンを好みに合わせて微調整できます。

良い出発点は、デフォルトゾーンが何であるかを見つけることです。 これは、 firewalldがインストールされたときにネットワークインターフェースが追加されるゾーンです。

 sudo Firewall-cmd --get-default-zone 

デフォルトのfirewalldゾーンを見つける

デフォルトのゾーンはパブリックゾーンです。 ゾーンの構成の詳細を表示するには、 --list-allオプションを使用します。 これにより、ゾーンに追加または有効化されたものがすべて一覧表示されます。

 sudo Firewall-cmd --zone = public --list-all 

パブリックゾーンの詳細を一覧表示する

このゾーンはネットワーク接続enp0s3に関連付けられており、DHCP、mDNS、およびSSHに関連するトラフィックを許可していることがわかります。 このゾーンに少なくとも1つのインターフェースが追加されているため、このゾーンはアクティブです。

firewalldを使用すると、ゾーンへのトラフィックを受け入れるサービスを追加できます。 そのゾーンは、そのタイプのトラフィックの通過を許可します。 これは、たとえば、mDNSがポート5353とUDPプロトコルを使用し、それらの詳細をゾーンに手動で追加することを覚えておくよりも簡単です。 あなたもそれを行うことができますが。

イーサネット接続とWi-Fiカードを備えたラップトップで前のコマンドを実行すると、似たようなものが表示されますが、2つのインターフェイスがあります。

 sudo Firewall-cmd --zone = public --list-all 

2つのインターフェイスが含まれるゾーン

両方のネットワークインターフェースがデフォルトゾーンに追加されました。 ゾーンには、最初の例と同じ3つのサービスのルールがありますが、DHCPとSSHが名前付きサービスとして追加され、mDNSがポートとプロトコルのペアとして追加されています。

すべてのゾーンを一覧表示するには、 --get-zonesオプションを使用します。

 sudo Firewall-cmd --get-zones 

すべてのfirewalldゾーンを一覧表示

すべてのゾーンの構成を一度に確認するには、 --list-all-zonesオプションを使用します。 これをlessパイプにパイプする必要があります。

 sudo Firewall-cmd --list-all-zones | 以下

すべてのゾーンの詳細を一覧表示

これは、リストをスクロールしたり、検索機能を使用してポート番号、プロトコル、およびサービスを検索したりできるので便利です。

以下に表示されるすべてのゾーンの詳細

ラップトップでは、イーサネット接続をパブリックゾーンからホームゾーンに移動します。 これは、 --zoneおよび--change-interfaceオプションを使用して実行できます。

 sudo Firewall-cmd --zone = home --change-interface = enp3s0 

ホームゾーンへのネットワークインターフェイスの追加

ホームゾーンを見て、変更が加えられているかどうかを確認しましょう。

 sudo Firewall-cmd --zone = home --list-all 

ネットワークインターフェイスが追加されたホームゾーン

そしてそれは持っています。 イーサネット接続がホームゾーンに追加されます。

ただし、これは永続的な変更ではありません。 保存されている構成ではなく、ファイアウォールの実行構成を変更しました。 再起動するか、 --reloadオプションを使用すると、以前の設定に戻ります。

変更を永続的にするには、適切な名前の--permanentオプションを使用する必要があります。

これは、ファイアウォールの保存された構成を変更することなく、1回限りの要件に合わせてファイアウォールを変更できることを意味します。 構成に送信する前に、変更をテストすることもできます。 変更を永続的にするには、使用する形式は次のとおりです。

 sudo Firewall-cmd --zone = home --change-interface = enp3s0 --permanent

いくつかの変更を加えたが、それらのいくつかで--permanentを使用するのを忘れた場合は、 --runtime-to-permanentオプションを使用して、ファイアウォールの現在実行中のセッションの設定を構成に書き込むことができます。

 sudo Firewall-cmd --runtime-to-permanent 

ファイアウォール構成の再ロード

関連: DHCP(動的ホスト構成プロトコル)とは何ですか?

サービスの追加と削除

firewalldは多くのサービスについて知っています。 --get-servicesオプションを使用してそれらをリストできます。

 sudo Firewall-cmd --get-services 

Firewalldが名前で参照できるサービスのリスト

私たちのバージョンのfirewalldは192のサービスをリストしました。 ゾーンでサービスを有効にするには、 --add-serviceオプションを使用します。

認められたサービスのリスト

--add-serviceオプションを使用して、ゾーンにサービスを追加できます。

 sudo Firewall-cmd --zone = public --add-service = http 

ゾーンへのHTTPサービスの追加

サービスの名前は、 firewalldのサービスリストのエントリと一致する必要があります。

サービスを削除するには、 --add-service--remove-serviceに置き換えます

ポートとプロトコルの追加と削除

追加するポートとプロトコルを選択したい場合は、それも可能です。 追加するトラフィックのタイプのポート番号とプロトコルを知っている必要があります。

HTTPSトラフィックをパブリックゾーンに追加しましょう。 これはポート443を使用し、TCPトラフィックの形式です。

 sudo Firewall-cmd --zone = public --add-port = 443 / tcp 

ゾーンへのポートとプロトコルのペアリングの追加

最初と最後のポートの間に「400-450」のようにハイフン「 - 」を付けることで、さまざまなポートを指定できます。

ポートを削除するには、 --add-port--remove-port portに置き換えます。

関連: TCPとUDPの違いは何ですか?

GUIの使用

「スーパー」キーを押して、「ファイアウォール」と入力し始めます。 firewall-configアプリケーションのレンガの壁のアイコンが表示されます。

そのアイコンをクリックして、アプリケーションを起動します。

GUIを使用してfirewalldにサービスを追加するのは、ゾーンのリストからゾーンを選択し、サービスのリストからサービスを選択するのと同じくらい簡単です。

[構成]ドロップダウンメニューから[ランタイム]または[永続]を選択して、実行中のセッションまたは永続的な構成を変更することを選択できます。

構成ドロップダウンメニュー

実行中のセッションに変更を加え、それらが機能することをテストした後でのみ変更をコミットするには、「構成」メニューを「実行時」に設定します。 変更を加えます。 彼らがあなたが望むことをしていることに満足したら、[オプション]>[永続的な実行]メニューオプションを使用します。

ポートとプロトコルエントリをゾーンに追加するには、ゾーンリストからゾーンを選択し、[ポート]をクリックします。 追加ボタンをクリックすると、ポート番号を入力し、メニューからプロトコルを選択できます。

Firewall-configGUIを使用したポートとプロトコルのペアリングの追加

プロトコルを追加するには、「プロトコル」をクリックし、「追加」ボタンをクリックして、ポップアップメニューからプロトコルを選択します。

ファイアウォール設定GUIのパブリックゾーンのプロトコル

インターフェイスをあるゾーンから別のゾーンに移動するには、[接続]リストでインターフェイスをダブルクリックし、ポップアップメニューからゾーンを選択します。

ファイアウォール設定GUIでのネットワークインターフェイスのあるゾーンから別のゾーンへの移動

氷山の一角

firewalldでできることは他にもたくさんありますが、これで十分に稼働できます。 提供された情報を使用して、ゾーンで意味のあるルールを作成できます。