不正アクセスとサーバーへのハッキングは深刻な脅威です。そのため、ファイアウォールをネットワークセキュリティ手法の一部として導入する必要があります。iptables ルールの操作方法を理解することは、Linux システムでこれらのリスクを軽減するための基本的なスキルです。このチュートリアルは、iptables ルールの表示と削除などの基本的なファイアウォール概念に精通するために役立ちます。 Ubuntuこれは、簡単なコマンドを実行してこれを達成するのに役立ちます。iptables ルールをリストアップまたは削除する方法について説明する前に、iptables ルールが何であり、なぜ使用するのかについて説明しましょう。
Iptablesとは何ですか?
iptables はコマンドラインファイアウォールユーティリティで、以下を通じてトラフィックを許可またはブロックします ポリシーチェーンシステム上で接続が試みられると、iptablesはリスト内のマッチするルールを探し、ネットワークセキュリティの堅固なサポートになります。ルールが見つからない場合は、デフォルトアクションにフォールバックします。
iptables はほとんどのシステムにデフォルトでインストール済みです Linuxディストリビューション。次のコマンドで更新またはインストールできます:
sudo apt-get install iptables
Iptables を使用する理由は何ですか?
Linux コマンドラインファイアウォールとして、iptables はシステム管理者が設定可能なテーブルルールを通じて受信および送信トラフィックを管理できます。Iptables は、ビルトインまたはユーザー定義ルールを含むチェーンを持つテーブルのセットを使用します。
前のセクションで説明したように、iptables は Linux システムのネットワークセキュリティにおいて重要な役割を果たしています。このあとの内容では、iptables のすべてのルール一覧を表示する方法、iptables ルールの表示と削除の概念など、これらの操作について主に説明します。
より詳しくは、この記事では iptables の基本的なタスクをいくつか紹介します。ルールの一覧表示、パケットとバイトカウンターの削除、iptables ルールの削除、チェーンのクリア、すべてのチェーンの削除とすべてのトラフィックの許可といった操作方法を説明します。
Ubuntu における Iptables 完全ガイド
iptablesのルールを確認する前に、Linuxサーバーを使用していることと、iptablesコマンドがインストールされていることを確認してください。これらの要件に加えて、sudo権限が必要です。ファイアウォール設定時は、SSHトラフィック(デフォルトではポート22)をブロックしてサーバーへのアクセスを失わないよう注意してください。ファイアウォール設定が原因でアクセスできなくなった場合、アウトオブバンドコンソール経由で接続して修正する必要があります。
仕様別にルールをリストアップ
アクティブな iptables ルールを確認できます 表形式で または ルール仕様のリスト。ほぼ両方のコマンドは異なる形式で同じ情報を提供しますが、アクティブなiptablesのすべてのルールを仕様ごとに一覧表示するには、iptablesコマンドを以下のオプション付きで実行する必要があります。 -S オプション:
sudo iptables -S
このiptables show rulesコマンドを実行すると、以下のような出力が表示されます:

特定のチェーンをリスト表示する
show iptables の出力を INPUT、OUTPUT などの特定のチェーンに限定したい場合は TCPの場合、-S オプションの直後にチェーン名を指定できます。例えば、以下の iptables show rules コマンドは TCP チェーンを指定するのに役立ちます。
sudo iptables -S TCP

前述の通り、iptables のルール表示を実現するもう1つの方法があります。つまり、iptables のルールをルール表の形で見る方法です。この手法について説明しましょう。
テーブル形式でルールをリストアップ
コマンドを使って iptables のルールをテーブル形式で表示すると、様々なルールを比較できます。以下の iptables 表示コマンドを実行する必要があります。 -Lオプション これらすべてのアクティブなルールをテーブル形式で出力するには:
sudo iptables -L
このコマンドはチェーン別に整列した現在のすべてのルールを表示します。INPUT、OUTPUT、TCP など特定のチェーンに出力を限定する方法があります。-L オプションの直後にチェーン名を指定する必要があります。iptables のルール表示を INPUT チェーンに限定した例を示します:
sudo iptables -L INPUT

上記出力の1行目はチェーン名(この場合は INPUT)とそのデフォルトポリシー(DROP)を示しています。次の行はテーブル内の各列のヘッダとチェーンのルールが含まれています。これらについて説明します:
- Target: パケットがルールに該当する場合、ターゲットはそのパケットに対して何を行うかを決定します。パケットを受け入れたり、ドロップしたり、ログに記録したり、さらに多くのルールと照合するために別のチェーンに送信したりできます。
- prot: プロトコル(TCP、udp、ICMP、all など)
- opt: IP オプションを示します(ほとんど使用されません)
- source: トラフィックのソース IP アドレス/サブネットを表示します
- destination: トラフィックの宛先 IP アドレス/サブネットを表示します
ラベルのない列はルールのオプションを示し、前の列に示されていないルールの任意の部分です。この情報は、ソースおよび宛先ポートからパケットの接続状態まで、何でもあり得ます。
パケット数と合計サイズを表示するには?
iptables のルールをリストアップするとき、各 iptables ルールに該当するパケット数と合計バイト数を表示できます。これはどのルールがパケットに一致しているかを理解するのに役立ちます。 -L と -v オプションを一緒に使用する必要があります。 それ
INPUT チェーンを再度使用し、-v オプションを付ける例を示します:
sudo iptables -L INPUT -v

リストに pkts と bytesという2つの新しい列が追加されたことに注意してください。iptables のすべてのルール表示コマンドを実行する様々な方法を学習しました。次はパケットカウントと合計サイズをリセットする方法を知る時が来ました。
パケット数と合計サイズをリセットするには?
ルールのパケットおよびバイトカウンターをクリアまたはゼロにしたい場合は、-Z オプションを使用する必要があります。また、再起動が発生するとリセットされます。これは、サーバーが既存ルールに一致する新しいトラフィックを受信しているかどうかを確認したい場合に便利です。
以下を使用して、すべてのチェーンとルールのカウンターをクリアできます: -Z オプション 単独で
sudo iptables -Z
特定のチェーン内のすべてのルールのカウンターを削除するには、-Z オプションを使用してチェーンを指定する必要があります。例えば、以下のコマンドは INPUT チェーンのカウンターをクリアするために使用されます:
sudo iptables -Z INPUT
特定のルールのカウンターを削除したい場合は、チェーン名とルール番号を正確に指定する必要があります。例えば、INPUT チェーンの最初のルールのカウンターをゼロにするには、以下のコマンドを実行できます:
sudo iptables -Z INPUT 1
iptables のすべてのルール表示コマンドとパケットおよびバイトカウンターをリセットする方法を知ることに加えて、iptables ルールを削除する方法を知ることは有用です。
iptables ルールを削除するには?
複数のコマンドを使用して Iptables ルールを削除したり、チェーン内のすべてのルールを削除したりできます。ここではこれらの方法について説明します。
仕様別にルールを削除
Iptables ルールを削除する方法の1つは、ルール仕様を使用することです。これにより、iptables コマンドを -D オプション とルール仕様で実行できます。この方法を使用してルールを削除する場合、ルールリストの出力である iptables -S を参考にして利用できます。
たとえば、無効な受信パケットを破棄するルール (-A INPUT -m conntrack –ctstate INVALID -j DROP) を削除するには、次のコマンドを実行します。
sudo iptables -D INPUT -m conntrack --ctstate INVALID -j DROP
-A オプションはルール作成時の位置を指定するもので、ここでは除外する必要があります。
チェーンと番号でルールを削除
Iptables ルールを削除するもう1つの方法は、チェーンと行番号を使用することです。次のコマンドを入力して、ルールの行番号を確認し、テーブル形式でルールをリストアップし、 –line-numbers オプション:
sudo iptables -L --line-numbers

実行後、すべての Iptables ルールには行番号が表示され、num ヘッダーで示されます。
削除するルールがわかり、そのチェーンと行番号を把握したら、iptables -D コマンドをチェーンとルール番号で使用する必要があります。たとえば、無効なパケットを破棄する入力ルールを削除する場合、INPUT チェーンのルール 3 であることがわかります。次のコマンドを実行してください。
sudo iptables -D INPUT 3
チェーンをフラッシュするには?
チェーン内のすべての Iptables ルールを削除する方法があります。これを チェーンをフラッシュすると呼びます。ここではこれを行うさまざまな方法について説明します。詳しく説明する前に、デフォルトポリシーが drop または deny のチェーンをフラッシュする場合、SSH 経由でサーバーからロックアウトされないように注意してください。ロックアウトされた場合、コンソール経由で接続してアクセスを修正する必要があります。
単一チェーンのフラッシュ
特定のチェーンをフラッシュする、つまりチェーン内のすべてのルールを削除するには、 -F または同等のもの –flush オプション と選択したチェーンの名前を使用します。INPUT チェーン内のすべてのルールを削除する場合はどうしますか?簡単です。次のコマンドを実行してください。
sudo iptables -F INPUT
すべてのチェーンをフラッシュ
すべてのチェーンを削除またはフラッシュするには、-F または同等の –flush オプションを単独で使用できます。
sudo iptables -F
すべてのルールをフラッシュし、すべてのチェーンを削除し、すべてを受け入れるには?
この時点で、すべてのファイアウォールルール、テーブル、チェーンをフラッシュし、すべてのネットワークトラフィックを許可する方法について説明します。このプロセスは事実上ファイアウォールを無効にすることに注意してください。したがって、ファイアウォール設定を最初からやり直す場合のみ、このセクションに従ってください。
まず、組み込みチェーンの各々のデフォルトポリシーを ACCEPT に設定する必要があります。これを行う主な理由は、SSH によってサーバーからロックアウトされないようにするためです。
sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT
次に、nat テーブルと mangle テーブルをフラッシュし、すべてのチェーンを (-F)フラッシュし、デフォルト以外のチェーンをすべて削除します。 (-X) こんな感じで:
sudo iptables -t nat -F
sudo iptables -t mangle -F
sudo iptables -F
sudo iptables -X
前のコマンドを実行した後、ファイアウォールはすべてのネットワークトラフィックを許可します。ルールを現在表示したい場合は、ルールがないことが表示されます。INPUT、FORWARD、OUTPUT チェーンなど、3つのデフォルトチェーンのみが残ります。
Ubuntu で iptables を設定する方法
基本的なファイアウォール動作と同様に、Iptables ルールは各チェーンにリストされている順序で読み込まれます。つまり、正しい順序でルールを設定する必要があります。新しいルールを追加すると、ルールリストの最後に追加されます。特定のリスト位置に新しいルールを追加するには、 iptables -I <index> -command を使用して挿入します。 ザ <index> このコマンドでルールを挿入する順序番号です。入力するインデックス番号を確認するには、次のコマンドを使用できます。
sudo iptables -L --line-numbers
各ルール行の最初の番号は、チェーン内での位置を示しています。特定の既存ルールの上に新しいルールを追加するには、その既存ルールのインデックス番号を使用する必要があります。例えば、チェーンの最上部に新しいルールを追加したい場合は、以下のコマンドをインデックス番号1で実行します。
sudo iptables -I INPUT 1 -p tcp --dport 80 -j ACCEPT
iptables と firewalld の違いは何ですか?
iptablesとfirewalldは、パケットフィルタリング(静的フィルタリング)用に特別に設計されたLinuxシステムのファイアウォール管理に役立つ実践的なツールです。パケットフィルタリングは、入出力情報パケットを管理することで特定のネットワークへのアクセスをユーザーが制御できるファイアウォール戦略です。あらかじめ設定されたファイアウォールルールに基づいて、送信元と宛先のプロトコル、ポート、IPアドレスに従って、パケットを通過させるか拒否するかのいずれかが行われます。これらのルールは非常に効率的なセキュリティメカニズムを提供し、パケットフィルタリングはシステムLAN(ローカルエリアネットワーク)の外部からルーティングされたデバイスに対する優れた防御となります。
firewalldはもともとiptablesを処理するために導入されたソフトウェアであり、ユーザーがそれをより簡単に操作できるようにするためのものです。firewalldとiptablesの導入を踏まえて、両者をより詳しく比較してみましょう。
iptables vs firewalld: システム設定
firewalldとiptablesは異なる設定とデフォルトストレージ設定を使用しています。iptablesの場合、変更があるたびに古いルールをすべてフラッシュして新しいルールを読み込む必要があるため、システムはリブートする必要があります。しかし、firewalldを使用する場合、ルールは再作成されず、代わりに相違点と変更が既存ルールに適用されるため、実行時に効果を確認することができます。
iptables vs firewalld: ユーザーインターフェース
firewalldはグラフィカルユーザーインターフェース(GUI)を使用しています。一方、iptablesはコマンドラインインターフェース(CLI)を使用しており、一部のユーザーにとってLinuxカーネルのファイアウォールルールにアクセスするのが困難な場合があり、firewalldがより簡潔な選択肢となります。iptablesは短いコマンドのみを使用するため応答時間が短いという点は考慮する価値があります。これらのことはさておき、どちらにも用途があるため、自分がより快適に操作できるものを選択してください。
最後に: iptables でルールを確認する
iptablesはLinuxオペレーティングシステム用に特別に開発された、非常に柔軟なファイアウォールユーティリティです。Linuxの初心者であろうと、プロのシステム管理者であろうと、iptablesルールが役に立つ方法があります。この記事は主にこのファイアウォールユーティリティの基本的なコマンド(iptablesルール表示とiptablesルール削除を含む)について述べており、Linuxの機能を簡潔にレビューすることを目的としています。さらに、以下のサービスを利用することができます。 Linux VPSホスティングソリューション このすばらしいオペレーティングシステムの真の潜在能力を引き出すために。Cloudzyでは、ウェブホスティング、ウェブアプリのデプロイ、コード開発、テスト、自動化環境の構築など、様々なユースケースに対応するKVM搭載のLinux VPSプランを提供しています。
よくあるご質問
Linux の iptables ルールをすべて仕様別に一覧表示するには?
現在アクティブなiptablesルールをすべて、その仕様または機能別にリストアップしたい場合は、iptablesコマンドの後に -Sフラグを使用することで可能です。この場合、 sudo キーワードの使用に注意してください。
sudo iptables -S
iptables のルールを削除するには?
特定のチェーンを削除する場合、チェーン内のすべてのルールが削除されるため、以下の操作が必要です。 -Fまたはflushオプションとチェーン名を使用します。 OUTPUT チェーン内のすべてのルールを削除したいとしましょう。どうすればいいでしょうか?以下のコマンドを実行する必要があります。
sudo iptables -F OUTPUT
Ubuntu での iptables はどのように機能しますか?
iptablesファイアウォールは、ネットワークトラフィックをルールセットと比較します。iptablesルールは、ルールと一致するパケットの特性を指定し、パケットが一致した場合に実行するアクションを指定しています。もちろん、特定のルールと一致するパケットを設定するための多くのオプションがあります。
iptables のルールは即座に適用されますか?それはなぜですか?
はい、iptablesルールは即座に有効になります。スクリプトはINPUTおよびOUTPUTチェーンに追加され、ルールはこれらのチェーンの末尾に追加されているためです。