アンドロイド

CentOS 8でファイアウォールを構成および管理する方法

passbolt

passbolt

目次:

Anonim

ファイアウォールは、着信および発信ネットワークトラフィックを監視およびフィルタリングする方法です。 特定のトラフィックを許可するかブロックするかを決定する一連のセキュリティルールを定義することで機能します。 適切に構成されたファイアウォールは、システム全体のセキュリティの最も重要な側面の1つです。

CentOS 8には、firewalldという名前のファイアウォールデーモンが付属しています。 システムのファイアウォールを動的に管理できるD-Busインターフェイスを備えた完全なソリューションです。

このチュートリアルでは、CentOS 8でファイアウォールを構成および管理する方法について説明します。また、FirewallDの基本的な概念についても説明します。

前提条件

ファイアウォールサービスを構成するには、rootまたはsudo特権を持つユーザーとしてログインする必要があります。

基本的なファイアウォールの概念

firewalldは、ゾーンとサービスの概念を使用します。 構成するゾーンとサービスに基づいて、システムとの間で許可またはブロックするトラフィックを制御できます。

firewall-cmd は、 firewall-cmd コマンドラインユーティリティを使用して構成および管理できます。

CentOS 8では、iptablesは、firewalldデーモンのデフォルトのファイアウォールバックエンドとしてnftablesに置き換えられています。

ファイアウォールゾーン

ゾーンは、コンピューターが接続されているネットワークの信頼レベルを指定する定義済みのルールセットです。 ネットワークインターフェイスとソースをゾーンに割り当てることができます。

以下は、FirewallDが提供するゾーンを、信頼されていないゾーンから信頼されるゾーンの信頼レベルに従って並べたものです。

  • drop :すべての着信接続は通知なしでドロップされます。 発信接続のみが許可されます。 block :すべての着信接続は、 IPv4 icmp-host-prohibited メッセージで、 icmp6-adm-prohibited で拒否 icmp6-adm-prohibited れます。 発信接続のみが許可されます。 public :信頼できない公共エリアで使用します。 ネットワーク上の他のコンピューターを信頼しませんが、選択した着信接続を許可できます。 external :システムがゲートウェイまたはルーターとして機能する場合、NATマスカレードが有効になっている外部ネットワークで使用します。 選択した着信接続のみが許可されます。 internal :システムがゲートウェイまたはルーターとして機能するときに、内部ネットワークで使用します。 ネットワーク上の他のシステムは一般的に信頼されています。 選択した着信接続のみが許可されます。 dmz :非武装地帯にあり、ネットワークの残りの部分へのアクセスが制限されているコンピューターに使用されます。 選択した着信接続のみが許可されます。 work :作業機械に使用されます。 ネットワーク上の他のコンピューターは一般的に信頼されています。 選択した着信接続のみが許可されます。 home :ホームマシンに使用されます。 ネットワーク上の他のコンピューターは一般的に信頼されています。 選択した着信接続のみが許可されます。 信頼済み :すべてのネットワーク接続が受け入れられます。 ネットワーク内のすべてのコンピューターを信頼します。

ファイアウォールサービス

ファイアウォールサービスは、ゾーン内に適用される定義済みのルールであり、特定のサービスの着信トラフィックを許可するために必要な設定を定義します。 このサービスを使用すると、1つのステップで複数のタスクを簡単に実行できます。

たとえば、サービスには、ポートのオープン、トラフィックの転送などに関する定義を含めることができます。

ファイアウォールランタイムおよび永続的な設定

Firewalldは、実行時構成と永続構成という2つの別個の構成セットを使用します。

ランタイム構成は実際の実行構成であり、再起動時に保持されません。 firewalldデーモンが起動すると、永続的な構成が読み込まれ、これがランタイム構成になります。

デフォルトでは、 firewall-cmd ユーティリティを使用してFirewalld設定に変更を加えると、変更はランタイム設定に適用されます。 変更を永続的にするには、コマンドに --permanent オプションを追加します。

両方の構成セットで変更を適用するには、次の2つの方法のいずれかを使用できます。

  1. ランタイム構成を変更して永続化します。

    sudo firewall-cmd sudo firewall-cmd --runtime-to-permanent

    永続的な構成を変更し、firewalldデーモンをリロードします。

    sudo firewall-cmd --permanent sudo firewall-cmd --reload

FirewallDを有効にする

CentOS 8では、firewalldがデフォルトでインストールされ有効になっています。 何らかの理由でシステムにインストールされていない場合は、次を入力してデーモンをインストールおよび起動できます。

sudo dnf install firewalld sudo systemctl enable firewalld --now

ファイアウォールサービスのステータスは次の方法で確認できます。

sudo firewall-cmd --state

ファイアウォールが有効になっている場合、コマンドは running を印刷 running 必要があります。 それ以外の場合は、実行されて not running

ファイアウォールゾーン

デフォルトゾーンは、別のゾーンに明示的に割り当てられていないすべてに使用されるゾーンです。

次のように入力して、デフォルトゾーンを表示できます。

sudo firewall-cmd --get-default-zone

public

利用可能なすべてのゾーンのリストを取得するには、次を入力します。

sudo firewall-cmd --get-zones

block dmz drop external home internal public trusted work

アクティブなゾーンとそれらに割り当てられたネットワークインターフェイスを表示するには:

sudo firewall-cmd --get-active-zones

次の出力は、インターフェイス eth0 および eth1 public ゾーンに割り当てられていることを示しています。

public interfaces: eth0 eth1

ゾーン構成設定は次の方法で印刷できます。

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

public (active) target: default icmp-block-inversion: no interfaces: eth0 eth1 sources: services: ssh dhcpv6-client ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:

上記の出力から、パブリックゾーンがアクティブであり、デフォルトターゲットである REJECT を使用していることがわかります。 出力は、ゾーンが eth0 および eth1 インターフェイスによって使用され、DHCPクライアントとSSHトラフィックを許可することも示しています。

sudo firewall-cmd --list-all-zones

このコマンドは、使用可能なすべてのゾーンの設定を含む膨大なリストを印刷します。

ゾーンターゲットの変更

ターゲットは、指定されていない着信トラフィックに対するゾーンのデフォルトの動作を定義します。 default ACCEPT REJECT 、および DROP いずれかのオプションに設定できます。

ゾーンのターゲットを設定するには、ゾーンを --zone オプションで指定し、ターゲットを --set-target オプションで指定します。

たとえば、 public ゾーンのターゲットを DROP に変更するには、次を実行します。

sudo firewall-cmd --zone=public --set-target=DROP

インターフェイスを別のゾーンに割り当てる

ゾーンごとに特定のルールセットを作成し、それらに異なるインターフェイスを割り当てることができます。 これは、マシン上で複数のインターフェースを使用する場合に特に便利です。

インターフェイスを別のゾーンに割り当てるには、ゾーンを --zone オプションで指定し、インターフェイスを --change-interface オプションで指定します。

たとえば、次のコマンドは eth1 インターフェイスを work ゾーンに割り当てます。

sudo firewall-cmd --zone=work --change-interface=eth1

次を入力して、変更を確認します。

sudo firewall-cmd --get-active-zones

work interfaces: eth1 public interfaces: eth0

デフォルトゾーンの変更

デフォルトゾーンを変更するには、 --set-default-zone オプションに続けて、 --set-default-zone の名前を使用します。

たとえば、デフォルトゾーンを home に変更するには、次のコマンドを実行します。

sudo firewall-cmd --set-default-zone=home

以下を使用して変更を確認します。

sudo firewall-cmd --get-default-zone

home

新しいゾーンを作成する

Firewalldでは、独自のゾーンを作成することもできます。 これは、アプリケーションごとのルールを作成する場合に便利です。

次の例では、 memcached という名前の新しいゾーンを作成し、ポート 11211 を開き、 192.168.100.30 IPアドレスからのみアクセスを許可します。

  1. ゾーンを作成します。

    sudo firewall-cmd --new-zone=memcached --permanent

    ゾーンにルールを追加します。

    sudo firewall-cmd --zone=memcached --add-port=11211/udp --permanent sudo firewall-cmd --zone=memcached --add-port=11211/tcp --permanent sudo firewall-cmd --zone=memcached --add-source=192.168.100.30/32 --permanent

    firewalldデーモンをリロードして、変更を有効にします。

    sudo firewall-cmd --reload

ファイアウォールサービス

firewalldを使用すると、サービスと呼ばれる事前定義されたルールに基づいて、特定のポートやソースへのトラフィックを許可できます。

デフォルトで利用可能なすべてのサービスのリストを取得するには、次を入力します。

sudo firewall-cmd --get-services

/usr/lib/firewalld/services ディレクトリ内の関連する.xmlファイルを開くと、各サービスに関する詳細情報を見つけることができます。 たとえば、HTTPサービスは次のように定義されます。

/usr/lib/firewalld/services/http.xml

WWW (HTTP) HTTP is the protocol used to serve Web pages. If you plan to make your Web server publicly available, enable this option. This option is not required for viewing pages locally or developing Web pages. WWW (HTTP) HTTP is the protocol used to serve Web pages. If you plan to make your Web server publicly available, enable this option. This option is not required for viewing pages locally or developing Web pages.

現在のセッション(ランタイム構成)のみで、パブリックゾーンのインターフェイスに着信HTTPトラフィック(ポート80)を許可するには、次のように入力します。

sudo firewall-cmd --zone=public --add-service=http デフォルトのゾーンを変更する場合は、 --zone オプションを --zone できます。

サービスが正常に追加されたことを確認するには、 --list-services オプションを使用します。

sudo firewall-cmd --zone=public --list-services

ssh dhcpv6-client

再起動後にポート80を開いたままにするには、 --permanent オプションを使用して同じコマンドをもう一度実行するか、次を実行します。

sudo firewall-cmd --runtime-to-permanent

--list-services --permanent オプションを使用して、変更を確認します。

sudo firewall-cmd --permanent --zone=public --list-services

ssh dhcpv6-client

サービスを削除するための構文は、サービスを追加するときと同じです。 --add-service フラグの代わりに --remove-service 使用するだけです:

sudo firewall-cmd --zone=public --remove-service=http --permanent

上記のコマンドは、パブリックゾーンの永続的な構成から http サービスを削除します。

新しいFirewallDサービスの作成

既に述べたように、デフォルトのサービスは /usr/lib/firewalld/services ディレクトリに保存され /usr/lib/firewalld/services 。 新しいサービスを作成する最も簡単な方法は、ユーザーが作成したサービスの場所である /etc/firewalld/services ディレクトリに既存のサービスファイルをコピーし、ファイル設定を変更することです。

たとえば、Plex Media Serverのサービス定義を作成するには、SSHサービスファイルを使用できます。

sudo cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/plexmediaserver.xml

新しく作成した plexmediaserver.xml ファイルを開き、サービス内の短い名前と説明を変更します そして タグ。 変更する必要がある最も重要なタグは、開くポート番号とプロトコルを定義するポートタグです。

次の例では、ポート 1900 UDPおよび 32400 TCPを開いています。

/etc/firewalld/services/plexmediaserver.xml

plexmediaserver Plex is a streaming media server that brings all your video, music and photo collections together and stream them to your devices at anytime and from anywhere. plexmediaserver Plex is a streaming media server that brings all your video, music and photo collections together and stream them to your devices at anytime and from anywhere.

ファイルを保存してFirewallDサービスをリロードします。

sudo firewall-cmd --reload

これで、他のサービスと同じゾーンで plexmediaserver サービスを使用できます。

ポートとソースIPを開く

Firewalldでは、サービス定義を作成せずに、信頼できるIPアドレスまたは特定のポートからのすべてのトラフィックをすばやく有効にすることもできます。

ソースIPを開く

特定のIPアドレス(または範囲)からのすべての着信トラフィックを許可するには、ゾーンを --zone オプションで指定し、ソースIPを --add-source オプションで指定します。

たとえば、 public ゾーンの192.168.1.10からのすべての着信トラフィックを許可するには、次を実行します。

sudo firewall-cmd --zone=public --add-source=192.168.1.10

新しいルールを永続化します。

sudo firewall-cmd --runtime-to-permanent

次のコマンドを使用して変更を確認します。

sudo firewall-cmd --zone=public --list-sources

192.168.1.10

ソースIPを削除する構文は、ソースIPを追加するときと同じです。 --add-source オプションの代わりに --remove-source 使用するだけです:

sudo firewall-cmd --zone=public --remove-source=192.168.1.10

ソースポートを開く

特定のポートですべての着信トラフィックを許可するには、 --zone オプションでゾーンを指定し、 --zone --add-port オプションでポートとプロトコルを --add-port ます。

たとえば、現在のセッションのパブリックゾーンでポート 8080 を開くには、次を実行します。

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

プロトコルは tcp udp sctp 、または dccp いずれか dccp

変更を確認します。

sudo firewall-cmd --zone=public --list-ports

8080

再起動後もポートを開いたままにするには、-- --permanent フラグを使用して同じコマンドを実行するか、次を実行して、永続的な設定にルールを追加します。

sudo firewall-cmd --runtime-to-permanent

ポートを削除するための構文は、ポートを追加する場合と同じです。 --add-port オプションの代わりに --remove-port 使用するだけです。

sudo firewall-cmd --zone=public --remove-port=8080/tcp

転送ポート

あるポートから別のポートにトラフィックを転送するには、まず --add-masquerade オプションを使用して目的のゾーンのマスカレードを有効にします。 たとえば、 external ゾーンのマスカレードを有効にするには、次のように入力します。

sudo firewall-cmd --zone=external --add-masquerade

IPアドレスのあるポートから別のポートにトラフィックを転送する

次の例では、同じサーバー上のポート 80 からポート 8080 にトラフィックを転送しています。

sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toport=8080

別のIPアドレスにトラフィックを転送する

次の例では、IP 10.10.10.2 サーバーのポート 80 からポート 80 にトラフィックを転送しています。

sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toaddr=10.10.10.2

別のポート上の別のサーバーにトラフィックを転送する

次の例では、IP 10.10.10.2 サーバー上のポート 80 からポート 8080 にトラフィックを転送しています。

sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=10.10.10.2

転送ルールを永続化するには、次を使用します。

sudo firewall-cmd --runtime-to-permanent

結論

CentOS 8システムでfirewalldサービスを構成および管理する方法を学習しました。

システムを適切に機能させるために必要なすべての着信接続を許可し、不要な接続をすべて制限してください。

firewalld firewall centosセキュリティ