IP /ポートに関するファイアウォールのルールがどのように機能するかは知っていますが、ファイアウォールが個々のプログラムをどのように処理するかはわかりません。
言い換えれば、ファイアウォールは、プログラムがインターネットにアクセスしてそれを停止したいことをどのようにして知るのでしょうか。
アプリケーションフィルタリングファイアウォールは、カーネルレベルでオペレーティングシステムに接続されており、ファイルアクセスを認識します。そのファイルアクセス認識には、ネットワークソケットが含まれます。
これを視覚的に示すために:
-i
lsof -i
を使用ファイアウォールは、上記のアプリケーションと同じように、要求プロセスと関連するネットワーク情報(ポート、状態、アドレスなど)を認識しますが、接続を変更、防止、または閉じることもできます。
Jeff Farland の答えは絶対に正しいので、短くて速い答えを探しているなら、私の意見ではそれです。
ただし、正確な詳細(正確にどのように行われるかなど)を知りたいのですが、これはコメントするには長すぎるため、Windowsソフトウェアベースのファイアウォールに焦点を当てます。商用ソフトウェアアプリケーションファイアウォールを見つける可能性が最も高いです。これらのリンクの多くは開発者向けドキュメントに直接リンクされており、非常に迅速に技術的になります。読者の方ではない場合は、お詫び申し上げます。ただし、誰かへの役立つ紹介になることを願っています。
基本的に、Windowsには実際には、フィルターの除外、要求の拒否、要求の挿入などを可能にするOS機能のセット全体があります。この主題に関するドキュメントを見つけるのに最も簡単なのは、多くの人が使用する ファイルフィルターマネージャー から始まります。ウイルス対策製品。そこには、各リクエストがどのように機能するかを正確に示す見事な図があります。基本的に、ドライバースタックがあり、その一部には、優先順位で並べ替えられてリクエストに適用される一連のミニフィルターが含まれています。これはおそらくあなたの平均的なアンチウイルスが行うことであり、多くのアンチウイルス製品を同時にインストールできない理由です。それらは互いに干渉します。これはファイルベースのアクティビティ用ですが、次のようになります。
ファイアウォールの場合、今後は、Vistaで発生した多くのセキュリティ変更の1つである Windows Filtering Platform について話すのが最も理にかなっています。関心のある直接リンクは、以前のバージョンのWindowsで アプリケーションレベルのファイアウォールを実装できる多くの方法 を説明する部分です。基本的に、それは非常に複雑であり、2つのファイアウォールが衝突を引き起こすだけでなく、実際のシステムを不安定にする理由もあります。それとは別に、多くのベンダーがファイアウォールを作成していました。
WPFを説明する本当に簡単な方法は、次のとおりです。2つのオプションを利用できます。カーネル(Windows自体)は、適用できるデフォルトのフィルターの特定のセットを提供します(サンプルを見るとかなり柔軟です)。さらに何かをしたい場合は、上記のミニフィルターと本質的に同じアイデアであるコールアウトドライバーを作成する必要があります。コールアウトドライバモードでは、パケットの内容を検査し、その情報に基づいてパケットに対してやりたいことを何でも行うことができます。
この変更を導入する理由は、 カーネルパッチ保護 の導入です。これは、ドライバーがWindowsのコアを不要な方法で変更するのを防ぐメカニズムです。それと相まって、ドライバーを書かなくても多くのフィルタリングを行うことは完全に可能です。 このサンプルコード を参照してください。そして、あなたがそれを作ることに興味があるか、私がこれをどこで見つけたのか疑問に思っているなら、ここにステップがあります MSDNからWFPベースの製品 ページを構築することについて学びます。
だから、基本的に、ジェフが言ったことは本当に。明らかに、LinuxとMac OSXはまた異なります。私は、ほとんどの人がこのような製品を使用するOSに集中しようとしました。
ところで;ジェフはProcessExplorerについて言及しました。 sysinternalsユーティリティは、これらおよびその他のフィルタリングAPIを使用して、最近表示される情報を提供します。
ここでステップをバックアップし、投稿の間に書き込みます-そこにはさまざまな種類のファイアウォールがあります。ファイアウォールに組み込まれている機能とネットワーク内のファイアウォールの場所は、ファイアウォールが実行できることと大きく関係しています。ファイアウォールがデータを送信するプログラムを検出できるかどうかは、これらの要因と大きく関係しています。
まず、定義-ファイアウォールは(本当に大まかに)ネットワーク上のトラフィックを監視およびフィルタリングするものとして定義できます。かもね:
プラグインできる場所ならどこにでも配置できますが、一般的な考え方は、保護したいものと信頼できないものの間に配置することです。
そこから、目まぐるしい数の種類のファイアウォールがあり、それらがどのように機能するかは、ファイアウォールが実行できることに大きな影響を及ぼします。バリエーションの例を次に示します。
監視対象のネットワーク層-アプリケーション、セッション、ネットワーク層が重要です。見た目が十分であれば、他のレイヤーで動作するファイアウォールを見つけることができると確信していますが、それらは大きなものです。
プロキシvs.ステートフル-プロキシタイプのファイアウォールの場合、実行できるのは、このメッセージを、指定されたターゲットの間違ったルールと正しいルールのセットと比較することだけです。ステートフルな場合は、前に来たことに基づいて一連のルールを構築できます。
これらの3つのこと(場所、監視できるネットワークの層、プロキシかステートフルか)を組み合わせると、ファイアウォールの機能にさまざまなバリエーションが生まれます。
一般に、すべてのファイアウォールには、動作の良し悪しに関する一連のルールがあります。ファイアウォールに似ていない機能を備えた保護されたコンピュータシステムで実行されているアプリケーションレベルのファイアウォールについて話しているのでない限り、ファイアウォールはできないと思います。プログラムを見つけて、実行を停止します。たとえば、Microsoft Wordを使用していることを確認して、使用を停止できるファイアウォールについては聞いたことがありません。
ただし、アプリケーションファイアウォールが実行できることは、ブロックアプリケーションレベルトラフィックです。 、これにより一部のアプリケーションが役に立たなくなります。たとえば、インターネットにアクセスせずにWebブラウザを使用してみてください。通常、ファイアウォールがアプリケーションをブロックすると主張する場合、それはネットワーク送信の意味でのアプリケーションを意味します。その意味で、私のWebブラウザによって生成されたHTTPトラフィックはアプリケーションと見なされます。
ルールは、「着信HTTP GETリクエストを許可しない」などの非常に単純なものから、ある種の攻撃のハンドルを示す一連のリクエストの診断などの複雑なものまでさまざまです。重要なのは、ファイアウォールが実行する必要があるのは、メッセージがどこから来たように見え、どこに向かっているのか、そして何が入っているのかということです。
最後の注意点-暗号化方式は、ファイアウォールが実行できることと実行できないことを変更します。ファイアウォールがSSL/TLSセッションを終了すると、SSL送信でもアプリケーションレベルの処理を実行できますが、SSL/TLSまたはその他の暗号化された経路がクライアントからサーバーへの場合、ファイアウォールが実行できる最善の方法です。 SSLが適切に形成されていることを確認してください。
IPとポートを参照しているので、ネットワークベースのファイアウォールを参照していると仮定します。すべてのアプリケーション対応ファイアウォールが同じではないため、私が経験したファイアウォールであるパロアルトネットワークスについてのみ話すことができます。特定のベンダーに言及することがこのWebサイトの規則に違反している場合は、この回答を削除してください。
パロアルトネットワークスのアプリケーションベースのルール/ポリシーはすべて、ネットワークベースのアプリケーション識別に基づいています。つまり、PANは、すべてのポートで常にすべてのトラフィックのディープパケットインスペクションを実行するため、ファイアウォールはエンドポイントで実行されているアプリケーションを認識または認識しません。
Palo Altoは、トラフィック分析の4つの方法(アプリケーションプロトコル検出(SSL復号化を含む)、アプリケーションプロトコルデコード、アプリケーション署名、およびヒューリスティック)を使用します。私はこれらが流行語のように聞こえることを知っていますが、要点は複数の方法が使用されているということです。ところで、それらのどれもプロキシベースではありません、それは良いことです。
トラフィックが分類されると、ルール/ポリシーが適用されます。ルールには、LDAPグループやユーザー、QoS、ゾーンなどを含めることができます。ところで、他の項目と一緒にルールでポートとIPアドレスを使用することもできます。
パロアルトが特定のセッションのアプリケーションを識別できない場合は、それをブロックできます。つまり、デフォルトでは拒否されます。もちろん、最初はブロックを有効にする前に警告するだけです。 Palo Altoはこれらのセッションのレポートを提供するため、戻ってアプリケーションを識別できなかった理由を特定できます。理由に応じて、いくつかの修復方法があります。
アプリケーション層(第3世代)ファイアウォールを確認することをお勧めします。 これらは特定のプロトコルまたはアプリケーションを認識するタイプです。