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

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

適切に構成されたファイアウォールは、システム全体のセキュリティの最も重要な側面の1つです。

FirewallDisは、システムのiptablesルールを管理し、それらを操作するためのD-Busインターフェイスを提供する完全なファイアウォールソリューションです。 CentOS 7以降、FirewallDはデフォルトのファイアウォール管理ツールとしてiptablesに取って代わります。

このチュートリアルでは、CentOS 7システムでFirewallDを使用してファイアウォールを設定する方法を示し、FirewallDの基本的な概念を説明します。

前提条件#

このチュートリアルを開始する前に、sudo権限を持つユーザーアカウントまたはrootユーザーでサーバーにログインしていることを確認してください。ベストプラクティスは、rootではなくsudoユーザーとして管理コマンドを実行することです。 CentOSシステムにsudoユーザーがいない場合は、次の手順に従ってsudoユーザーを作成できます。

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

FirewallDは、iptablesチェーンとルールではなく、ゾーンとサービスの概念を使用します。構成するゾーンとサービスに基づいて、システムとの間で許可または禁止されるトラフィックを制御できます。

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

Firewalldゾーン#

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

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

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

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

ファイアウォールで保護されたサービスは、ゾーン内に適用され、特定のサービスの着信トラフィックを許可するために必要な設定を定義する事前定義されたルールです。

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

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

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

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

FirewallDのインストールと有効化#
  1. FirewalldはデフォルトでCentOS7にインストールされますが、システムにインストールされていない場合は、次のように入力してパッケージをインストールできます。

    sudo yum install firewalld
  2. Firewalldサービスはデフォルトで無効になっています。ファイアウォールのステータスは次の方法で確認できます:

    sudo firewall-cmd --state

    インストールしたばかりの場合、または以前にアクティブ化したことがない場合、コマンドはnot runningを出力します 。それ以外の場合は、runningが表示されます 。

  3. FirewallDサービスを開始し、起動時に有効にするには:

    sudo systemctl start firewalldsudo systemctl enable firewalld

ファイアウォールゾーンの操作#

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
public
  interfaces: eth0 eth1

上記の出力は、両方のインターフェースが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:

上記の出力から、パブリックゾーンがアクティブであり、デフォルトとして設定されており、両方のeth0で使用されていることがわかります。 およびeth1 インターフェイス。また、DHCPクライアントとSSHに関連する接続が許可されます。

使用可能なすべてのゾーンの構成を確認する場合は、次のように入力します。

sudo firewall-cmd --list-all-zones

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

インターフェースのゾーンの変更#

--zoneを使用すると、インターフェースゾーンを簡単に変更できます。 --change-interfaceと組み合わせたオプション オプション。次のコマンドは、eth1を割り当てます 作業ゾーンへのインターフェース:

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

次のように入力して変更を確認します:

sudo firewall-cmd --get-active-zones
work
  interfaces: eth1
public
  interfaces: eth0

デフォルトゾーンの変更#

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

たとえば、デフォルトゾーンをホームに変更するには、次のコマンドを実行する必要があります。

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

次のコマンドで変更を確認します:

sudo firewall-cmd --get-default-zone
home
ポートまたはサービスを開く#

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 --permanent --zone=public --add-service=http

--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サービスを削除します。

適切なサービスが利用できないPlexMediaServerなどのアプリケーションを実行している場合はどうなりますか?

このような状況では、2つのオプションがあります。適切なポートを開くか、新しいFirewallDサービスを定義できます。

たとえば、Plexサーバーはポート32400でリッスンし、TCPを使用します。現在のセッションのパブリックゾーンでポートを開くには、--add-port=を使用します。 オプション:

sudo firewall-cmd --zone=public --add-port=32400/tcp
プロトコルは、tcpのいずれかになります。 またはudp

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

sudo firewall-cmd --zone=public --list-ports
32400/tcp

ポートを維持するには32400 再起動後に開き、--permanentを使用して同じコマンドを実行し、永続的な設定にルールを追加します オプション。

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

sudo firewall-cmd --zone=public --remove-port=32400/tcp
新しい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を使用できます 他のサービスと同じように、ゾーン内のサービス。

ファイアウォール付きの転送ポート#

あるポートから別のポートまたはアドレスにトラフィックを転送するには、最初に--add-masqueradeを使用して目的のゾーンのマスカレードを有効にします スイッチ。たとえば、externalのマスカレードを有効にします ゾーンタイプ:

sudo firewall-cmd --zone=external --add-masquerade
  • 同じサーバー上のあるポートから別のポートにトラフィックを転送する

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

sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toport=8080
  • トラフィックを別のサーバーに転送する

次の例では、ポート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

フォワードをパーマネントにしたい場合は、--permanentを追加するだけです。 オプション。

FirewallDを使用したルールセットの作成#

次の例では、Webサーバーを実行している場合にファイアウォールを構成する方法を示します。サーバーにはインターフェースeth0が1つしかないことを前提としています 、SSH、HTTP、およびHTTPSポートでのみ着信トラフィックを許可する必要があります。

  1. デフォルトゾーンをdmzに変更します

    デフォルトではSSHトラフィックのみが許可されるため、dmz(非武装)ゾーンを使用します。デフォルトゾーンをdmzに変更し、それをeth0に割り当てるには インターフェイスで、次のコマンドを実行します:

    sudo firewall-cmd --set-default-zone=dmzsudo firewall-cmd --zone=dmz --add-interface=eth0
  2. HTTPおよびHTTPSポートを開きます:

    HTTPおよびHTTPSポートを開くには、永続的なサービスルールをdmzゾーンに追加します。

    sudo firewall-cmd --permanent --zone=dmz --add-service=httpsudo firewall-cmd --permanent --zone=dmz --add-service=https

    ファイアウォールをリロードして、変更をすぐに有効にします:

    sudo firewall-cmd --reload
  3. 変更を確認する

    dmzゾーン構成設定を確認するには、次のように入力します。

    sudo firewall-cmd --zone=dmz --list-all
    dmz (active)
      target: default
      icmp-block-inversion: no
      interfaces: eth0
      sources:
      services: ssh http https
      ports:
      protocols:
      masquerade: no
      forward-ports:
      source-ports:
      icmp-blocks:
      rich rules:

    上記の出力は、dmzがデフォルトのゾーンであり、eth0に適用されていることを示しています。 インターフェイスとssh(22)http(80)およびhttps(443)ポートが開いています。


Cent OS
  1. UbuntuとCentOSでiptablesを使用してファイアウォールを設定する方法

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

  3. CentOS / RHEL 7 :firewall-cmd を使用してファイアウォールでポートを開く方法は?

  1. CentOS7でFirewallDを使用してファイアウォールを構成する

  2. CentOS8Linuxでファイアウォールを無効にする方法

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

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

  2. CentOS7でFirewallDを設定する

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