ブログに戻る

Iptablesファイアウォールルールのリスト表示と削除

Iptablesファイアウォールルールのリスト表示と削除

Iptablesは、ほとんどのLinuxディストリビューションにデフォルトで付属している主要なファイアウォールです。ネットワークセキュリティの処理を担当しています。データパケットを一連のルールと比較し、そのルールに従って接続を許可、拒否、または転送するようにシステムに指示することで動作します。このチュートリアルでは、ルールの表示と削除、パケットとバイトのカウンターの確認とクリア、およびチェーンのフラッシュ(初期化)の方法を説明します。準備はいいですか?始めましょう!

前提条件

チュートリアルに入る前に、1つ明確にしておきましょう。このガイドで紹介するすべてのヒントやテクニックは、別の仮想マシン上で実行されています。システムが完全に混乱してしまう可能性を排除できるため、あなたも同様にすることをお勧めします。これらのプロセスを完全にマスターした後にのみ、実際の環境に適用するようにしてください。

このチュートリアルでは、すべての手順を説明するためにUbuntuを使用します。ただし、ディストリビューションに関係なく、同様に動作するはずです。

ルールの表示

仕様によるルールの表示

まず、仕様によるすべてのアクティブなルールを確認してみましょう。次のコマンドを実行します。

iptables list

以前にiptablesのルール作成を行ったことがある場合、その類似性に気づくかもしれません。出力は、「iptables」の部分を除いて、それらを作成するために使用されたコマンドに似ています。また、iptablesルールの設定ファイルとも同様の構造を共有しています。

特定のチェーンの表示

もう少し具体的なことを試してみましょう。すべてのiptablesルールを報告する代わりに、特定のチェーンのルールを報告するようにiptablesに指示します。たとえば、TCP、INPUT、OUTPUTなどです。これを行うには、「-S」フラグの後にチェーン名を指定します。

list specific chain

テーブル形式でのルールの表示

テーブル表示は、異なるルールを比較する際に便利です。「-L」フラグを使用して、すべてのアクティブなルールをテーブル形式で報告するようにiptablesに指示します。

list rules as table iptables

出力には、チェーンごとにソートされた現在のすべてのルールが含まれています。前のセクションと同様に、INPUT、TCP、OUTPUTなどの特定のチェーンでリスト出力をフィルタリングすることも可能です。これを行うには、「-L」フラグの後にチェーンを指定します。

filter by chain

出力を少し分解してみましょう。今回のケースでは、ルールがあるため、出力が少し乱れて見えるかもしれません。出力の最初の行は、デフォルトポリシー(DROP)を伴うチェーン名(INPUT)を宣言しています。次の行は、テーブル列のヘッダーを指定しています。残りはチェーンのルールです。ヘッダーが何を示しているか見てみましょう。

  • target: パケットがルールに一致した場合、このセクションは実行すべきアクションを定義します。パケットの許可(accept)、破棄(drop)、ログ記録(log)、または別のチェーンへの送信などがあります。
  • prot: プロトコルを定義します。たとえば、udp, tcp, icmp, またはallなどです。
  • opt: この列はIPオプションを示します。めったに使用されません。
  • source: パケットの送信元(IPアドレスまたはサブネット)。値は特定のアドレスまたは「anywhere(どこからでも)」になります。
  • destination: パケットの送信先(IPアドレスまたはサブネット)。値は特定のアドレスまたは「anywhere(どこへでも)」になります。

お気づきかもしれませんが、最後の列にはラベルがありません。これは、ルールのオプションを示すために使用されるためです。前のフィールドに収まらなかったルールのすべての部分が含まれます。送信元/送信先ポートからパケットの接続状態など、あらゆるものが含まれる可能性があります。

パケット数と総サイズ

パケットとバイトのカウンターのクリア

iptablesルールを一覧表示する際、各特定のルールに一致したパケットの数と、パケットの総サイズ(バイト単位)を確認することもできます。これは、どのルールがパケットに一致しているか大まかなイメージを把握する必要がある場合に便利な指標です。

この例では、INPUTチェーンを使用します。今回は、詳細モードを表す「-v」フラグを追加します。

package and byte counters iptables

テーブル出力に「pkts」と「bytes」という2つの追加フィールドが含まれていることに気づくでしょう。

パケット数と総サイズのリセット

状況によっては、前に示したカウンターをリセットしたい場合があります。システムが再起動されると、カウンターは自動的にクリアされます。手動で強制的にリセットすることもできます。パケット数と合計サイズをリセットするには、「-Z」フラグを使用します:

Reset packet counts and aggregate size

このコマンドはすべてのチェインのカウンターをリセットすることに注意してください。他のコマンドと同様に、特定のチェインのカウンターをリセットすることも可能です。たとえば、次のコマンドはINPUTチェインのカウンターをリセットします:

reset particular counter

カウンターのリセット動作をより細かく指定することも可能です。特定のチェインの下にある特定のルールのカウンターをリセットできます。そのためには、チェイン名の下にルール番号を追加します:

reset specific rule

ルールの削除

指定によるルールの削除

iptablesルールを削除する方法は複数あります。ルールの最初の削除方法は、ルールの指定によるものです。削除するには、「-D」フラグの後にルールの指定を続けます:

Delete rules by specification

以前にiptablesルールを追加したことがある場合は、その類似性に気づくでしょう。ここで変更されたのは、「-A」フラグの代わりに「-D」フラグが使用されていることだけです。

チェインと番号によるルールの削除

仕様を指定してルールを削除するには、少し手間がかかりますよね?ルールの仕様を覚えなくても削除できるとしたらどうでしょうか?チェインと番号でルールを削除してみましょう!最初の方法(仕様による削除)と比較して、仕様全体を手元に用意する必要がないため、比較的簡単です。

この方法には、対象ルールのチェインと行番号が必要です。行番号はどこで取得するのでしょうか?それを確認するには、次のコマンドを実行します:

Delete rules by chain and number - get line number

すべてのルールとその行番号を含む大きな出力が表示されます。出力を絞り込むには、「-L」フラグの後にチェイン名を使用します:

Delete rules by chain and number - filter

出力には、追加の列「num」が表示されます。これは各ルールの行番号を示しています。対象の番号を特定したら、削除を実行します:

delete iptables rule

チェインのフラッシュ

iptablesの場合、チェインのフラッシュとは何でしょうか?それは、特定のチェインの下にあるすべてのルールを削除するプロセスです。ルールを大量に削除する必要がある場合は、この方法を使用できます。チェインのフラッシュを実行する前に、iptables-saveを使用して既存のルールのバックアップを作成することを強くお勧めします。これは、現在のすべてのチェインとルールを出力する組み込みのiptablesツールです。出力はテキストファイルにエクスポートできます:

iptables rules export

単一チェインのフラッシュ

チェインをフラッシュする方法を確認しましょう。「-F」フラグの後に、対象のチェインを指定します:

flush a single chain

すべてのチェインのフラッシュ

すべてのチェインをフラッシュする前に、自分が何を行っているかを理解していることを確認してください。これにより、iptablesファイアウォールのすべてのルールが削除されます。事前にiptablesルールのバックアップを作成しておく必要があります。

準備はいいですか?次のコマンドを実行して、すべてのiptablesチェインをフラッシュします:

flush all changes

ルールのフラッシュ、チェインの削除、およびすべて許可

このセクションで説明する手順を実行すると、ファイアウォールが事実上無効になり、制限のないネットワークトラフィックが許可されます。前のセクションと同様に、続行する前にiptablesのバックアップを作成しておくことをお勧めします。まず、組み込みチェインのそれぞれのデフォルトポリシーをACCEPTに変更します。これは、iptablesによってSSH経由でサーバーからロックアウトされないようにするためです:

Flush rules, delete chains and accept all

次に、natテーブルとmangleテーブルをフラッシュします:

 flush nat and mangle tables

 mangle tables

すべてのチェインをフラッシュし、デフォルト以外のチェインをすべて削除します:

Flush all the chains

 delete all the non-default chains

次に、結果を確認してみましょう:

iptables result

最後に

Iptablesは強力なファイアウォールです。このガイドが、iptablesのファイアウォールルールの表示および削除方法を学ぶ上で役立つことを願っています。また、実際の環境に適用する前に、必ず練習することを忘れないでください。

快適なコンピューティングを!

author

Akshay Nagpal

著者 · CloudSigma

Preslav DobrevはCloudSigmaのクリエイティブデザイナーであり、従来型および革新的なマーケティングチャネルを活用した一貫性のあるビジネスアイデンティティに注力しています。彼は芸術的なビジョンと戦略的マーケティングを融合させ、インパクトのあるブランドナラティブを生み出すことに長けています。

コメント

コメントはまだありません。最初のコメントを投稿しましょう。