GNU/Linux >> Linux の 問題 >  >> Linux

RedHatベースのディストリビューションでfirewalldを使用する

Firewalldは、RHELベースのディストリビューションのファイアウォールとしてiptablesに取って代わりました。 Firewalldが使用する構文はよりユーザーフレンドリーです。この投稿では、firewalldが実行され、サーバーの起動時に起動することを確認する方法を示します。また、永続的で柔軟なファイアウォールルールを作成する方法も示しています。

:RedHat®、CentOS®、AlmaLinux®、RockyLinux®もfirewalldを使用しているため、この記事のすべてのコマンドは、Rackspaceが利用できるRHELベースのイメージでも機能します。

基本的なfirewalldの概念

Firewalldはゾーンを使用します ルールのグループを管理します。ゾーンはネットワークインターフェースに接続され、特定のネットワークで許可されるトラフィックと拒否されるトラフィックを決定します。

この機能は、パブリックインターフェイスに非常に厳格なファイアウォールを確立し、CloudNetworkインターフェイスにさらにリラックスしたファイアウォールを確立する場合に役立つことがあります。 firewalldが事前定義されているゾーンに精通することは役に立ちます。 Firewalldには、信頼性の低いものから信頼性の高いものの順に、次の事前定義されたゾーンがあります。

  • drop :このゾーンは発信接続のみを許可します。応答なしで着信接続をドロップします。
  • blockdropに似ていますが 、このゾーンは、icmp-host-prohibitedを使用して着信リクエストを拒否します またはicmp6-adm-prohibited メッセージ。
  • public :このゾーンは、パブリックネットワークの場合、またはネットワーク上の他のコンピューターを信頼しない場合に使用します。このゾーンは、ケースバイケースで着信接続を受け入れます。
  • external :ファイアウォールがゲートウェイとして機能する外部ネットワークでこのゾーンを使用します。このゾーンは、ネットワークアドレス変換(NAT)マスカレード用に構成されているため、内部ネットワークはプライベートですが到達可能です。
  • internal :このゾーンは、他のコンピューターが適度に信頼できるゲートウェイの内部に使用します。
  • dmz :このゾーンは、非武装地帯(DMZ)にある隔離されたコンピューターに使用します。このゾーンでは、Secure Shell(SSH)とInternet Control Message Protocol(ICMP)のみが許可されます。
  • work :このゾーンは仕事用のコンピューターに使用します。
  • home :このゾーンは家庭環境に使用してください。
  • trusted :ネットワーク上のすべてのコンピューターを信頼する場合は、このゾーンを使用してください。

ファイアウォールを使用するには、ルールを作成してゾーンのプロパティを変更してから、ネットワークに最も適切なゾーンにネットワークインターフェイスを割り当てます。

ファイアウォールを起動し、起動時に有効にします

デフォルトでは、firewalldを有効にして、サーバーを再起動してから、atbootを開始する必要があります。

--stateを使用すると、ファイアウォールが実行されているかどうかを簡単に確認できます。 次の例に示すように、フラグ:

    [user@server ~]$ sudo firewall-cmd --state
    Finding out about your zones

Firewalldが実行されていない場合は、次のコマンドを実行して有効にし、開始できます。

    [user@server ~]$ sudo systemctl enable firewalld
    [user@server ~]$ sudo systemctl start firewalld

次のコマンドを実行すると、現在デフォルトのゾーンであるゾーンを確認できます。

    [user@server ~]$ sudo firewall-cmd --get-default-zone

次のコマンドを実行すると、どのネットワークインターフェイスがどのゾーンに割り当てられているかを確認できます。

    [user@server ~]$ sudo firewall-cmd --get-active-zones

:デフォルトでは、すべてのネットワークインターフェイスがパブリックゾーンに割り当てられます。

次のコマンドを実行して、パブリックゾーンに関連付けられているルールを見つけることもできます。

    [user@server ~]$ sudo firewall-cmd --list-all --zone=public

出力は次の例のようになります。

    public (default, active)

    interfaces: eth0 eth1

    sources:

    services: dhcpv6-client http https ssh

    ports: 1025/tcp

    masquerade: no

    forward-ports:

    icmp-blocks:

    rich rules:

出力は、パブリックゾーンがデフォルトであり、eth0およびeth1ネットワークインターフェイスがあることを示しています。動的ホスト構成プロトコル(DHCP)(dhcpv6-client )、SSH、ハイパーテキスト転送プロトコル(HTTP)、セキュアHTTP(HTTPS)トラフィック、およびポート1025での伝送制御プロトコル(TCP)トラフィックが許可されます。 。

使用可能なゾーンのリストを取得するには、次のコマンドを実行します。

    [user@server ~]$ sudo firewall-cmd --get-zones
ゾーンを設定する

--change-interface=を使用して、セッション中にゾーン間でインターフェースを移動できます 引数と--zone 口論。ファイアウォールが再起動すると、インターフェースはデフォルトのゾーンに戻ります。

    [user@server ~]$ sudo firewall-cmd --zone=internal --change-interface=eth1

インターフェイスの永続ゾーンを定義するには、インターフェイスの構成ファイルを開き、次の行を追加します。

    ...
    ONBOOT=yes
    ZOME=internal

ファイルを保存して閉じてから、次のコマンドを実行してネットワークとファイアウォールを再起動し、変更を強制的に有効にします。

    [user@server ~]$ sudo systemctl restart network
    [user@server ~]$ sudo systemctl restart firewalld
ルールを設定する

Firewalldには、ポート番号やプロトコルタイプではなく、サービスのみを追加できる定義済みのサービスが付属しています。たとえば、httpを許可することができます tcp port 80ではなく 。

次のコマンドを使用して、これらのサービスのリストを取得できます。

    [user@server ~]$ sudo firewall-cmd --get-services

次に、次のコマンド例を使用してサービスを追加します。

    [user@server ~]$ sudo firewall-cmd --add-service=http

構成はすぐに有効になりますが、再起動後は存続しません。サーバーの再起動時にこれらのタイプのサービス構成を再起動できるようにするには、--permanentを追加する必要があります 口論。次の例に示すように、構成がすぐに有効になり、サービスも再起動するように、これらのコマンドの両方を順番に実行することをお勧めします。

    [user@server ~]$ sudo firewall-cmd --add-service=http
    firewall-cmd --permanent --add-service=http

/ usr / lib / firewalld / services / に移動すると、firewalldの事前定義されたルールに関する追加の詳細を取得できます。 ディレクトリとファイルの読み取り。

リッチルールを設定する

豊富なルール これは、firewalldで条件を定義する方法です。リッチルールの最も一般的な使用例は、特定のIPアドレスまたはIPアドレス範囲からのアクセスを許可することです。次のコマンドは、192.168.0.0ネットワーク上の任意のIPからTCPポート80へのアクセスを有効にし、ルールを永続的にします。

    [user@server ~]$ sudo firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.0/24" service name="http" accept'
    [user@server ~]$ sudo firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.0/24" service name="http" accept' --permanent

豊富なルールの例については、Fedora®Wikiを参照してください。

サービスを定義する

/ usr / lib / firewalld / services / にファイルを配置することで、独自のサービスを作成し、ルールを作成するときに参照できます。 ディレクトリ。既存の.xmlをコピーして、このタスクを実行する最も簡単な方法 このディレクトリにファイルを保存してから、詳細を変更します。

次のコマンド例は、既存のファイルを新しいファイルにコピーします。

    [user@server ~]$ sudo cp /usr/lib/firewalld/services/http.xml /usr/lib/firewalld/services/myservice.xml

次のコマンドは、編集用に新しいファイルを開きます。

    [user@server ~]$ sudo vim /usr/lib/firewalld/services/myserver.xml

ファイルは次の例のようになります。

    <!--?xml version="1.0" encoding="utf-8"?-->
    <service>
      <short>My Custom Service</short>
      <description>A brief description of the service. This rule allows port 1134 on TCP for my application.</description>
      <port protocol="tcp" port="1134"></port>
    </service>

変更を適用するには、ファイル名から .xmlを引いた名前で次のコマンドを使用します ファイル拡張子:

    [user@server ~]$ sudo firewall-cmd --add-service=myservice
    [user@server ~]$ sudo firewall-cmd --permanent --add-service=myservice

コメントや質問をするには、[フィードバック]タブを使用します。私たちと会話を始めることもできます。


Linux
  1. Linuxでのfirewalldの初心者向けガイド

  2. FirewallDとは何ですか?Linuxに実装する方法

  3. 基本的なファイアウォールファイアウォール管理

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

  2. Redhat Disable Firewall –開始、停止、有効化、無効化

  3. RHEL7ベースのディストリビューションにLAMPスタックをインストールします

  1. KDEに基づく最高のLinuxディストリビューション

  2. さまざまなLinuxディストリビューションにSnapをインストールして使用する方法

  3. WHMでDNSゾーンマネージャーを使用するにはどうすればよいですか?