アンドロイド

CentOS 7でfirewalldを使用してファイアウォールをセットアップする方法

PXE Server Setup

PXE Server Setup

目次:

Anonim

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

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

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

前提条件

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

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

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

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

ファイアウォールゾーン

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

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

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

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

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

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

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

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

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

FirewallDのインストールと有効化

  1. FirewalldはデフォルトでCentOS 7にインストールされますが、システムにインストールされていない場合は、次を入力してパッケージをインストールできます。

    sudo yum install firewalld

    Firewalldサービスはデフォルトで無効になっています。 ファイアウォールの状態は次の方法で確認できます。

    sudo firewall-cmd --state

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

    sudo systemctl start firewalld sudo 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 オプションに続けて、 --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

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

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

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

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

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

たとえば、Plex Serverはポート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 オプションを使用して同じコマンドを実行し、永続的な設定にルールを追加します。

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

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

新しい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 サービスを使用できます。

Firewalldでの転送ポート

あるポートから別のポートまたはアドレスにトラフィックを転送するには、まず --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

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

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

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

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

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

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

    sudo firewall-cmd --set-default-zone=dmz sudo firewall-cmd --zone=dmz --add-interface=eth0

    HTTPおよびHTTPSポートを開きます。

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

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

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

    sudo firewall-cmd --reload

    変更を確認する

    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)ポートが開いていることを示しています。

結論

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

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

firewalld firewall iptables centosセキュリティ