Linuxでfirewalldを使い始める方法
公開: 2022-07-08 コマンドラインまたはGUIインターフェイスで簡単に構成できるLinux用の最新の強力なファイアウォールを探している場合は、 firewalld
がおそらく探しているものです。
ファイアウォールの必要性
ネットワーク接続には、発信元と宛先があります。 発信元のソフトウェアが接続を要求し、宛先のソフトウェアが接続を受け入れるか拒否します。 受け入れられると、データのパケット(一般にネットワークトラフィックと呼ばれます)は、接続を介して双方向に通過できます。 これは、自宅の部屋全体で共有している場合でも、ホームオフィスからリモートで仕事に接続している場合でも、離れた場所にあるクラウドベースのリソースを使用している場合でも同じです。
優れたセキュリティ慣行では、コンピュータへの接続を制限および制御する必要があります。 これはファイアウォールが行うことです。 これらは、IPアドレス、ポート、またはプロトコルでネットワークトラフィックをフィルタリングし、構成済みの事前定義された一連の基準(ファイアウォールルール)を満たさない接続を拒否します。 彼らは特別なイベントの警備員のようなものです。 あなたの名前がリストにない場合、あなたは中に入っていません。
もちろん、ファイアウォールルールを制限して、通常のアクティビティが制限されることは望ましくありません。 ファイアウォールを構成するのが簡単なほど、競合するルールや厳格なルールを誤って設定する可能性が低くなります。 ファイアウォールは複雑すぎて理解できない、またはコマンド構文が不透明すぎるため、ファイアウォールを使用しないというユーザーからよく耳にします。
firewalld
ファイアウォールは強力ですが、コマンドラインと専用のGUIアプリケーションの両方で簡単にセットアップできます。 内部的には、Linuxファイアウォールはカーネル側のネットワークフィルタリングフレームワークであるnetfilter
に依存しています。 ここユーザーランドでは、 iptables
、 ufw
、単純なファイアウォール、 firewalld
など、 netfilter
と対話するためのツールを選択できます。
私たちの意見では、 firewalld
は機能性、粒度、シンプルさの最高のバランスを提供します。
Firewalldのインストール
firewalld
には2つの部分があります。 firewalld
機能を提供するデーモンプロセスであるfirewalldと、 firewall-config
があります。 これはfirewalld
のオプションのGUIです。 firewall-config
には「d」がないことに注意してください。
Ubuntu、Fedora、およびManjaroへのfirewalld
のインストールは、すべての場合で簡単ですが、それぞれがプレインストールされているものとバンドルされているものについて独自の見解を持っています。
Ubuntuにインストールするには、 firewalld
とfirewall-config
をインストールする必要があります。
sudoaptインストールfirewalld
sudo apt installfirewall-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
が起動し、問題なく実行されていることを確認できます。
sudosystemctlステータスfirewalld
また、 firewalld
を使用して、実行されているかどうかを確認することもできます。 これは、 --state
オプションを指定したfirewall-cmd
コマンドを使用します。 firewall-cmd
には「d」がないことに注意してください。
sudo Firewall-cmd --state
これでファイアウォールがインストールされて実行されたので、ファイアウォールの構成に進むことができます。
ゾーンの概念
firewalld
で保護されたファイアウォールは、ゾーンに基づいています。 ゾーンは、ファイアウォールルールと関連するネットワーク接続のコレクションです。 これにより、操作可能なさまざまなゾーン(およびさまざまなセキュリティ制限のセット)を調整できます。 たとえば、通常の日常の実行用に定義されたゾーン、より安全な実行用の別のゾーン、および「何も入っていない、何も出ていない」完全なロックダウンゾーンがあるとします。
あるゾーンから別のゾーンに移動し、効果的にあるレベルのセキュリティから別のレベルに移動するには、ネットワーク接続を、それが存在するゾーンから、実行したいゾーンに移動します。
これにより、定義されたファイアウォールルールのセットから別のルールへの移動が非常に高速になります。 ゾーンを使用する別の方法は、ラップトップで自宅にいるときに1つのゾーンを使用し、外出してパブリックWi-Fiを使用しているときに別のゾーンを使用することです。
firewalld
には、事前に構成された9つのゾーンが付属しています。 これらは編集でき、さらにゾーンを追加または削除できます。
- drop :すべての着信パケットがドロップされます。 発信トラフィックは許可されます。 これは最も妄想的な設定です。
- ブロック:すべての着信パケットがドロップされ、
icmp-host-prohibited
メッセージが発信者に送信されます。 発信トラフィックは許可されます。 - 信頼済み:すべてのネットワーク接続が受け入れられ、他のシステムが信頼されます。 これは最も信頼できる設定であり、キャプティブテストネットワークや自宅などの非常に安全な環境に制限する必要があります。
- public :このゾーンは、他のどのコンピューターも信頼できないパブリックネットワークまたは他のネットワークで使用するためのものです。 一般的で通常は安全な接続要求の少数の選択が受け入れられます。
- 外部:このゾーンは、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 | 以下
これは、リストをスクロールしたり、検索機能を使用してポート番号、プロトコル、およびサービスを検索したりできるので便利です。
ラップトップでは、イーサネット接続をパブリックゾーンからホームゾーンに移動します。 これは、 --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
は192のサービスをリストしました。 ゾーンでサービスを有効にするには、 --add-service
オプションを使用します。
--add-service
オプションを使用して、ゾーンにサービスを追加できます。
sudo Firewall-cmd --zone = public --add-service = 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
にサービスを追加するのは、ゾーンのリストからゾーンを選択し、サービスのリストからサービスを選択するのと同じくらい簡単です。
[構成]ドロップダウンメニューから[ランタイム]または[永続]を選択して、実行中のセッションまたは永続的な構成を変更することを選択できます。
実行中のセッションに変更を加え、それらが機能することをテストした後でのみ変更をコミットするには、「構成」メニューを「実行時」に設定します。 変更を加えます。 彼らがあなたが望むことをしていることに満足したら、[オプション]>[永続的な実行]メニューオプションを使用します。
ポートとプロトコルエントリをゾーンに追加するには、ゾーンリストからゾーンを選択し、[ポート]をクリックします。 追加ボタンをクリックすると、ポート番号を入力し、メニューからプロトコルを選択できます。
プロトコルを追加するには、「プロトコル」をクリックし、「追加」ボタンをクリックして、ポップアップメニューからプロトコルを選択します。
インターフェイスをあるゾーンから別のゾーンに移動するには、[接続]リストでインターフェイスをダブルクリックし、ポップアップメニューからゾーンを選択します。
氷山の一角
firewalld
でできることは他にもたくさんありますが、これで十分に稼働できます。 提供された情報を使用して、ゾーンで意味のあるルールを作成できます。