GNU/Linux >> Linux の 問題 >  >> Cent OS

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

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

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

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

前提条件#

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

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

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

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

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

Firewalldゾーン#

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

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

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

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

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

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

Firefoxのランタイムと永続的な設定#

Firewalldは、ランタイム構成と永続構成の2つの別個の構成セットを使用します。

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

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

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

  1. ランタイム構成を変更し、永続的にします:

    sudo firewall-cmd <options>sudo firewall-cmd --runtime-to-permanent
  2. 永続的な構成を変更し、firewalldデーモンをリロードします:

    sudo firewall-cmd --permanent <options>sudo firewall-cmd --reload
FirewallDの有効化#

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

sudo dnf install firewalldsudo systemctl enable firewalld --now

ファイアウォールサービスのステータスは、次のコマンドで確認できます:

sudo firewall-cmd --state

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

Firewalldゾーン#

変更していない場合、デフォルトのゾーンはpublicに設定されます 、およびすべてのネットワークインターフェイスがこのゾーンに割り当てられます。

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

次のように入力すると、デフォルトのゾーンを確認できます。

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

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

ゾーンターゲットの変更#

ターゲットは、指定されていない着信トラフィックのゾーンのデフォルトの動作を定義します。次のいずれかのオプションに設定できます:defaultACCEPTREJECT 、および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を使用します オプションの後に、デフォルトにするゾーンの名前を続けます。

たとえば、デフォルトのゾーンを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
  2. ゾーンにルールを追加します:

    sudo firewall-cmd --zone=memcached --add-port=11211/udp --permanentsudo firewall-cmd --zone=memcached --add-port=11211/tcp --permanentsudo firewall-cmd --zone=memcached --add-source=192.168.100.30/32 --permanent
  3. 変更をアクティブ化するには、firewalldデーモンをリロードします。

    sudo firewall-cmd --reload

Firewalldサービス#

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

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

sudo firewall-cmd --get-services

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

/usr/lib/firewalld/services/http.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>WWW (HTTP)</short>
  <description>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.</description>
  <port protocol="tcp" port="80"/>
</service>

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

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

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

sudo firewall-cmd --zone=public --list-services
ssh dhcpv6-client http

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

sudo firewall-cmd --runtime-to-permanent

--list-servicesを使用します --permanentと一緒に 変更を確認するオプション:

sudo firewall-cmd --permanent --zone=public --list-services
ssh dhcpv6-client http

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

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

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

新しいFirewallDサービスの作成#

すでに述べたように、デフォルトのサービスは/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を開きます ファイルを作成し、<short>内でサービスの短い名前と説明を変更します および<description> タグ。変更する必要がある最も重要なタグは、portです。 タグ。開くポート番号とプロトコルを定義します。

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

/etc/firewalld/services/plexmediaserver.xml
<?xml version="1.0" encoding="utf-8"?>
<service version="1.0">
<short>plexmediaserver</short>
<description>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.</description>
<port protocol="udp" port="1900"/>
<port protocol="tcp" port="32400"/>
</service>

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

sudo firewall-cmd --reload

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

ポートとソースIPを開く#

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

ソースIPを開く#

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

たとえば、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を削除するための構文は、追加する場合と同じです。 --remove-sourceを使用するだけです --add-sourceの代わりに オプション:

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

ソースポートを開く#

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

たとえば、ポート8080を開くには あなたが実行した現在のセッションのパブリックゾーンで:

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

プロトコルはtcpのいずれかです。 、udpsctp 、またはdccp

変更を確認します:

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

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

sudo firewall-cmd --runtime-to-permanent

ポートを削除するための構文は、ポートを追加する場合と同じです。 --remove-portを使用するだけです --add-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アドレスに転送する#

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

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

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

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

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

Cent OS
  1. CentOS7にNginxをインストールして構成する方法

  2. CentOS7でファイアウォールを構成する方法

  3. CentOSにHAProxyをインストールして設定する方法は?

  1. CentOS7でfirewalldを有効にして使用する方法

  2. CentOS7でFirewallDを使用してファイアウォールを設定する方法

  3. CentOS7にRedisをインストールして設定する方法

  1. CentOS7にGitLabをインストールして構成する方法

  2. CentOS7にRedmineをインストールして設定する方法

  3. CentOS8にRedisをインストールして設定する方法