Linuxでfirewalldを使い始める方法

  • Firewalldは、コマンドラインまたはGUIインターフェースを通じて簡単に設定できる、Linux向けの最新かつ強力なファイアウォールです。
  • ファイアウォールは、セキュリティを強化するためにコンピュータへのネットワーク接続を制限し、制御するために重要です。
  • Firewalldはゾーンを使用してファイアウォールのルールを整理し、異なるセキュリティニーズに基づいて微調整やカスタマイズを行うことができます。

コマンドラインまたはGUIインターフェースで簡単に設定できる、Linux向けの最新かつ強力なファイアウォールをお探しの場合は、firewalldが最適な選択肢でしょう。

このサイバーセキュリティ啓発週間の記事は、Incogniとの提携により提供されています。

ファイアウォールが必要な理由は?

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

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

もちろん、ファイアウォールのルールを厳しすぎて、通常の活動が制限されることは避けたいでしょう。ファイアウォールを設定するのが簡単であればあるほど、矛盾したルールや厳しすぎるルールを誤って設定する可能性は低くなります。ファイアウォールは理解するのが難しすぎる、またはコマンド構文が不透明すぎるため、使用しないというユーザーからよく耳にします。

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

私たちの見解では、firewalldは機能性、詳細度、および単純さのバランスが最も優れています。

firewalldのインストール

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

Ubuntu、Fedora、およびManjaroへのfirewalldのインストールは、すべての場合で簡単です。ただし、それぞれに事前インストールされているものとバンドルされているものに対する独自の見解があります。

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

sudo apt install firewalld

sudo apt install firewall-config

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

sudo dnf install firewall-config

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

sudo pacman -Sy firewalld

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

sudo systemctl enable firewalld

そして、デーモンを起動して、今すぐ実行する必要があります。

sudo systemctl start firewalld

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

sudo systemctl status firewalld

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

sudo firewall-cmd --state

ファイアウォールをインストールして実行したので、設定に移ることができます。

ゾーンの概念

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

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

これにより、定義された1つのファイアウォールのルールセットから別のルールセットにすばやく移動できます。ゾーンを使用する別の方法は、自宅にいるときはラップトップで1つのゾーンを使用し、外出先で公共のWi-Fiを使用しているときは別のゾーンを使用することです。

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

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

ホーム、仕事、内部のゾーンは機能的には非常に似ていますが、それらを異なるゾーンに分離することで、特定のシナリオの1つのルールセットをカプセル化して、好みに合わせてゾーンを微調整できます。

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

sudo firewall-cmd --get-default-zone

デフォルトのゾーンはパブリックゾーンです。ゾーンの設定の詳細を見るには、--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

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

すべてのゾーンをリストするには、--get-zonesオプションを使用します。

sudo firewall-cmd --get-zones

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

sudo firewall-cmd --list-all-zones | less

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

ラップトップでは、イーサネット接続をパブリックゾーンからホームゾーンに移動します。これは、--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

サービスの追加と削除

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

sudo firewall-cmd --get-services

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

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

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

追加するポートとプロトコルを選択する場合は、それを行うこともできます。追加するトラフィックの種類のポート番号とプロトコルを知る必要があります。

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

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

ハイフン「-」で最初のポートと最後のポートを指定することで、ポートの範囲を指定できます(例: 「400-450」)。

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

GUIの使用

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

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

GUIを使用してfirewalldにサービスを追加するには、ゾーンのリストからゾーンを選択し、サービスのリストからサービスを選択するだけです。

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

実行中のセッションに変更を加え、変更が機能することをテストしてからコミットする場合は、「設定」メニューを「ランタイム」に設定します。変更を加えます。希望どおりに機能していることを確認したら、オプション > ランタイムから永続的なメニューオプションを使用します。

ゾーンにポートとプロトコルのエントリを追加するには、ゾーンリストからゾーンを選択して「ポート」をクリックします。追加ボタンをクリックすると、ポート番号を指定してメニューからプロトコルを選択できます。

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

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

氷山の一角

firewalldでは他にも多くのことができますが、これは起動して実行するために十分です。私たちが提供した情報があれば、ゾーンに意味のあるルールを作成できるようになります。