web-dev-qa-db-ja.com

Linux iptablesを使用してステートレスのパケットフィルタリングファイアウォールを実装する

私がネットワークセキュリティのキャリアを始めたとき、ほぼ10年前の業界標準は、一部のアプリケーションレイヤープロトコルを検査する機能さえ備えたステートフルファイアウォールでした。パケットフィルタリングファイアウォールが前世代のファイアウォールであると聞いただけです。厳密なパケットフィルタリング、ステートレスファイアウォールがどのように機能するかを理解する必要はありません。今、私はそれをよりよく理解したいと思います。私はインターンにこれを聞いてもらいました、そして私は彼に2つのファイアウォールの違いを見せたいと思います。 iptablesを使用して、ステートレスパケットフィルタリングファイアウォールを設定できると思います。問題は、ステートレスファイアウォールがファイアウォールの背後から発生する着信応答をどのように追跡するかがわからないことです。そのようなファイアウォールを実装する方法についてオンラインでいくつかのリソースを見つけるために最善を尽くしました。いくつかの記事へのポインタは非常に役に立ちます。

2
user1720897

ステートレスファイアウォールの場合、プロトコル、ポート番号、および発信元IPアドレスに基づいて、パケットを受け入れるかドロップすることができます。たとえば、以下のルールは、ポート80にバインドされている192.168.1.xサブネットからのすべてのTCPパケットを受け入れます。

-A INPUT -p tcp -s 192.168.1.0/24 -m tcp --dport 80 -j ACCEPT

出力の場合、ルールは似ています。したがって、発信(出力)パケットは、一致するルールがある場合にのみ受け入れられます。以下のルールは、ポート80での発信パケットのみを許可します。

-A OUTPUT -o eth0 -p tcp --sport 80 -j ACCEPT

ステートフルファイアウォールの場合、状態を監視することができます。たとえば、以下のルールは、ポート80へのパケットを受け入れるのは、ポート80が新しい接続を開始するか、既存の接続に関連付けられている場合のみです。追跡は、カーネルモジュール「ip_conntrack」によって行われます。すべてのアクティブな接続のテーブルを保持します。

-A INPUT -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
2
limbenjamin