【iptables実践】04 高度な使い方:iptablesモジュールの状態拡張

1. シーンの説明

内部ホストがニュース Web サイト、つまりポート 80 にアクセスしたいとします。http メッセージの内容を正しく取得するため。このネットワークメッセージを次のように設定する必要があります

  • 送信パケット、宛先ポート、ポート 80 が許可されます。
  • 受信パケット (送信元ポート、ポート 80) が許可されると、
    通常どおり Web を閲覧できます。
    ただし、これを行うと、次の図に示すようにセキュリティ上のリスクも発生します。
    ここに画像の説明を挿入します

ハッカーの送信元メッセージがポート 80 であれば、ホストに接続できます。これは私たちを攻撃するために利用される可能性があります。
この問題の本質は、実際のところ、私たちは率先して他の人とつながりたいだけであり、他の人は率先して私とつながるべきではないということです。私がターゲット ポート 80 を指定してメッセージをリクエストすると、そのメッセージはポート 80 のみを通過します。あなたが私に応答メッセージを送信するとき、あなたは自分のポート 80 を通してのみ私に接続したいと考えていますが、私はそれらをすべて拒否します。
したがって、この処理は次のような効果になります
ここに画像の説明を挿入します

2. TCPメッセージ原理の分析

TCP 接続の確立には 3 ウェイ ハンドシェイクが行われ、3 ウェイ ハンドシェイクの後、正式な通信が開始されます。
したがって、ハッカーが自分のポート 80 を介して私に接続したい場合、彼は最初のハンドシェイクを開始するため、この接続メッセージを拒否できれば、ハッカーはポート 80 を介して私を攻撃することはできなくなります。

3. iptablesの接続状態

iptables のステータス追跡接続には、NEW、ESTABLISHED、RELATED、INVALID、UNTRACKED の 4 種類があり、具体的なステータス情報は次のとおりです。

  • 1. NEW ステータス: このデータ パケットが最初に受信したデータ パケットであることを示します。
  • 2. ESTABLISHED 状態: 応答が送受信されている限り、データ テーブルの状態は NEW から ESTABLISHED に変化し、この状態はこの接続の後続のデータ パケットと一致し続けます。
  • 3. RELATED 状態: データ パケットのステータスが ESTABLISHED 状態の接続に関連している場合、それは RELATED とみなされます。つまり、接続が RELATED 状態になりたい場合は、最初に ESTABLISHED が必要です。繋がり。
  • 4. INVALID 状態: どの接続状態に属するか、または関係がないことが識別できないため、通常、このようなデータ パケットは拒否されます。
  • 5. UNTRACKED: パケットのステータスが untracked の場合、パケットが追跡されていないことを意味します。パケットのステータスが Untracked の場合、通常、関連する接続が見つからないことを意味します。 state モジュール
    ここに画像の説明を挿入します
    .status で定義されている 5 つのタイプのうちの 1 つだけなので、先ほどの問題に戻って考えてみましょう。
    今の問題の根本は、そのメッセージが以前に送信されたメッセージに対する応答であるかどうかを判断する方法です。
    先ほどの例の問題は、状態拡張モジュールを使用して解決できます。パケットのステータスが ESTABLISHED の場合、パケットは以前に送信されたパケットに対する応答でなければならないため、ステータスが ESTABLISHED のパケットを解放するだけで済みます。それでも心配しない場合は、RELATED または ESTABLISHED ステータスのすべてのパケットを許可できます。これは、私たちに応答するパケットのみがファイアウォールを通過できることを意味します。他の人が独自に送信した新しいパケットの場合例は次のとおりです。
[root@test-c ~]# iptables -t filter -I INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
[root@test-c ~]# iptables -t filter -A INPUT -j REJECT

おすすめ

転載: blog.csdn.net/suyuaidan/article/details/133500585