IPTables (Linux ファイアウォール) コマンドの初心者向けガイド


コンピューターをしばらく使用している場合は、「ファイアウォール」という言葉に精通している必要があります。一見複雑に見えることはわかっていますが、このチュートリアルでは、IPTable の基礎と基本的なコマンドの使用について説明します。あなたがネットワーキングの学生であっても、ネットワークを深く掘り下げたいとしても、このガイドの恩恵を受けることができます.

ファイアウォールの仕組みは非常に単純です。信頼できるネットワークと信頼できないネットワークの間にバリアを作成するため、システムを悪意のあるパケットから保護できます。

しかし、何が安全で何が安全でないかをどのように判断するのでしょうか?デフォルトでは、ファイアウォールのルールを設定する権限がありますが、送受信されるパッケージをより詳細に監視するには、IPTables が最も必要なものです。

IPTables は、パーソナル コンピューティングに使用することも、ネットワーク全体に適用することもできます。 IPTables を使用して、着信または発信ネットワーク パケットを監視、許可、またはブロックできる一連のルールを定義します。

理論部分全体に焦点を当てるのではなく、実際の世界で重要なことだけを議論します.それでは、IPTables の中心的な概念を理解することから始めましょう。

IPTables の概念を理解する

IPTables について議論する際には、テーブル、チェーン、およびルールという 3 つの用語を理解する必要があります。これらは重要な部分なので、それぞれについて説明します。

それでは、テーブルから始めましょう。

IPTables には 5 種類のテーブルがあり、それぞれに異なるルールが適用されます。それでは、最も一般的なテーブル \Filer から始めましょう。

<オール>

  • テーブルのフィルター – これは、IPTables を使用する際のデフォルトのメイン テーブルです。これは、ルールを適用する際に特定のテーブルを指定しない場合は常に、フィルター テーブルに適用されることを意味します。その名前が示すように、フィルター テーブルの役割は、パッケージが目的地に到達することを許可するか、要求を拒否するかを決定することです。
  • NAT (ネットワーク アドレス変換) – その名前が示すように、このテーブルを使用すると、ユーザーはネットワーク アドレスの変換を決定できます。このテーブルの役割は、パケット アドレスの送信元と宛先を変更するかどうか、および変更する方法を決定することです。
  • Mangle テーブル – このテーブルを使用すると、パケットの IP ヘッダーを変更できます。たとえば、パケットが維持できるネットワーク ホップを延長または短縮するように TTL を調整できます。同様に、他の IP ヘッダーも好みに応じて変更できます。
  • RAW テーブル – このテーブルの主な用途は、接続を追跡することです。これは、進行中のセッションの一部としてパケットを表示するようにパケットをマークするメカニズムを提供するためです。
  • セキュリティ テーブル – セキュリティ テーブルを使用すると、ユーザーはネットワーク パケットに内部 SELinux セキュリティ コンテキスト マークを適用できます。
  • ほとんどのユースケースでは、テーブルの最後の 2 つのタイプ (RAW とセキュリティ) はあまり行う必要がなく、最初の 3 つのオプションのみがメイン テーブルとしてカウントされます。

    さて、チェーンについて話しましょう。

    それらは、ルールを適用できるネットワークのルート内のポイントで動作します。 IPTables には 5 種類のチェーンがあり、それぞれについて説明します。各タイプのテーブルで各タイプのチェーンを使用できるわけではないことに注意してください。

    <オール>

  • プレルーティング – このチェーンは、受信パケットがネットワーク スタックに入ると適用され、パケットの最終的な宛先に関するルーティングの決定が行われる前であっても処理されます。
  • 入力チェーン – パケットがネットワーク スタックに入るポイントです。
  • フォワード チェーン – システムを通じてパケットが転送されるポイントです。
  • 出力チェーン – 出力チェーンは、パケットがシステムを経由して発信されたときにパケットに適用されます。
  • ポストルーティング – これはプレルーティング チェーンの完全な反対であり、ルーティングの決定が行われると、転送または発信パケットに適用されます。
  • ここで議論するのはルールだけです。これは、ここで説明した 3 つの中で最も簡単なルールです。それでは、理論的な部分に残っているものを完成させましょう。

    ルールは、ユーザーがネットワーク トラフィックを操作するためのセットまたは個々のコマンドに他なりません。各チェーンが動作するようになると、パケットは定義されたルールに対してチェックされます。

    1 つのルールが条件を満たさない場合、次のルールにスキップされ、条件を満たしている場合、次のルールはターゲットの値によって指定されます。

    各ルールには、一致コンポーネントとターゲット コンポーネントの 2 つのコンポーネントがあります。

    <オール>

  • 一致するコンポーネント – プロトコル、IP アドレス、ポート アドレス、インターフェース、およびヘッダーによって一致するルールを定義するためのさまざまな条件です。
  • ターゲット コンポーネント – 条件が満たされるとトリガーされるアクションです。
  • 以上が説明の部分で、Linux の IPTables に関連する基本的なコマンドについて説明します。

    Linux に IPTables ファイアウォールをインストールする

    Pop!_OS などの最新の Linux ディストリビューションでは、IPTables がプリインストールされていますが、システムに IPTables パッケージがない場合は、以下の指示に従って簡単にインストールできます。

    dnf コマンドで IPTables をインストールします。

    $ sudo dnf install iptables-services
    

    重要: Firewalld を使用している場合は、インストールに進む前に無効にする必要があります。ファイアウォールを完全に停止するには、次のコマンドを使用する必要があります。

    $ sudo systemctl stop firewalld
    $ sudo systemctl disable firewalld
    $ sudo systemctl mask firewalld
    

    apt コマンドで IPTables をインストールします。

    $ sudo apt install iptables
    

    IPTables をインストールしたら、次のコマンドでファイアウォールを有効にできます。

    $ sudo systemctl enable iptables
    $ sudo systemctl start iptables
    

    IPTable サービスの状態を監視するには、次のコマンドを使用できます。

    $ sudo systemctl status iptables
    

    Linux での IPTables コマンドの基本を学ぶ

    インストールが完了したら、IPTables の構文に進むことができます。これにより、デフォルトを微調整し、必要に応じて構成できるようになります。

    IPTables の基本的な構文は次のとおりです。

    # iptables -t {type of table} -options {chain points} {condition or matching component} {action}
    

    上記のコマンドの説明を理解しましょう。

    最初の部分は -t で、使用可能な 5 つのテーブル オプションから選択できます。コマンドから -t 部分を削除すると、フィルター テーブルがそのまま使用されます。デフォルトのテーブル タイプ。

    2番目の部分はチェーン用です。ここでは、さまざまなチェーン ポイント オプションから選択できます。これらのオプションは以下のとおりです。

    • -A – チェーンの最後に新しいルールをチェーンに追加します。
    • -C – ルールがチェーンの要件を満たしているかどうかをチェックします。
    • -D – ユーザーがチェーンから既存のルールを削除できるようにします。
    • -F – ユーザーが定義した各ルールを削除します。
    • -I – ユーザーが指定された位置に新しいルールを追加できるようにします。
    • -N – まったく新しいチェーンを作成します。
    • -v – list オプションとともに使用すると、詳細情報が表示されます。
    • -X – チェーンを削除します。

    一致するオプションは、チェーンの要件を確認するための条件です。さまざまなオプションから選択できます。その一部を以下に示します。

    Protocols -p
    Source IP -s
    Destination IP -d
    IN interface -i
    OUT interface -o
    

    TCP の場合、次のとおりです。

    -sport
    -dport
    --tcp-flags
    

    さて、アクション部分を考えるとNATなどのテーブルの種類によって利用できるオプションが異なり、マングルテーブルは他に比べて選択肢が多いです。アクションを使用して、特定のテーブルまたはチェーンをターゲットにすることもできます。

    最もよく使用されるアクションは Jump (-j) で、次のようないくつかのオプションが提供されます。

    • ACCEPT – パケットを受け入れ、トラバースを終了するために使用されます。
    • DROP – パケットをドロップしてトラバースを終了するために使用されます。
    • REJECT – これは DROP とよく似ていますが、拒否されたパケットを送信元に送信します。
    • RETURN – サブチェーン内のパケットのトラバースを停止し、特定のパケットを上位のチェーンに送信しますが、影響はありません。

    構文が完成したら、基本的な構成を含む IPTables の使用方法を示します。

    デフォルトでファイアウォールを通過するものを確認したい場合は、現在の一連のルールを一覧表示するのが最適な方法です。適用されたルールを一覧表示するには、次のコマンドを使用します。

    $ sudo iptables -L
    

    このセクションでは、特定のポートのネットワーク トラフィックを許可または拒否する方法を示します。できる限り役立つように、よく知られているポートをいくつか紹介します。
    HTTPS ネットワーク トラフィックを許可する場合は、次のコマンドを使用してポート番号 443 を許可する必要があります。

    $ sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
    

    同様に、次のコマンドで HTTP Web トラフィックを無効にすることもできます。

    $ sudo iptables -A INPUT -p tcp --dport 80 -j REJECT
    

    使用するコマンド オプションの説明:

    • -p は指定されたプロトコルをチェックするために使用され、この場合は TCP です。
    • --dport は宛先ポートの指定に使用されます。
    • -j は、アクション (受け入れまたはドロップ) を実行するために使用されます。

    はい、IP アドレスからネットワーク トラフィックを制御することもできます。 1 つまたは 2 つだけでなく、IP アドレスの範囲も制御します。その方法を説明します。

    特定の IP アドレスを許可するには、指定されたコマンド構造を使用します。

    $ sudo iptables -A INPUT -s 69.63.176.13 -j ACCEPT
    

    同様に、特定の IP からのパケットをドロップするには、指定されたコマンド構造を使用する必要があります。

    $ sudo iptables -A INPUT -s 192.168.0.27 -j DROP
    

    必要に応じて、指定されたコマンド構造を利用して IP アドレスの範囲を制御することもできます。

    $ sudo iptables -A INPUT -m range --src-range 192.168.0.1-192.168.0.255 -j REJECT
    

    ルールの作成中に間違いを犯してしまう場合があり、それらの間違いを克服する最善の方法はルールを削除することです。定義されたルールの削除は、このガイド全体で最も簡単なプロセスであり、それらを削除するには、最初にそれらをリストする必要があります.

    定義済みのルールを数字で一覧表示するには、次のコマンドを使用します。

    $ sudo iptables -L --line-numbers
    

    ルールを削除するには、指定されたコマンド構造に従う必要があります。

    $ sudo iptables -D <INPUT/FORWARD/OUTPUT> <Number>
    

    INPUT から 10 番目のルールを削除したいので、次のコマンドを使用するとします。

    $ sudo iptables -D INPUT 10
    

    ルールが正常に削除されたかどうかをクロスチェックするには、特定のコマンドでルールを一覧表示する必要があります。

    $ sudo iptables -L –line-numbers
    

    ご覧のとおり、10 番目のルールが正常に削除されました。

    適用後に正常に機能しているルールを保存しなければならない理由を疑問に思われるかもしれません。問題は、システムが再起動すると、保存されていないすべての定義済みルールが削除されることです。

    RHEL ベースのディストリビューションにルールを保存するには:

    $ sudo /sbin/service iptables save
    

    Debian 派生物にルールを保存するには:

    $ sudo /sbin/iptables–save
    

    IPtable ファイアウォール ルールの詳細については、次の詳細なガイドをご覧ください。

    • すべての Linux 管理者が知っておくべき 25 の便利な IPtable ファイアウォール ルール

    このガイドでは、すべての人がメリットを享受できるように、物事をシンプルにするよう努めてきました。これは IPTables に関する基本的な説明ガイドでした。質問がある場合は、コメントでお気軽に質問してください。