Javaまたは他の高級言語で独自のファイアウォールを構築しますか?

Javaまたは他の高級言語で独自のファイアウォールを構築しますか?

投稿しましたServerFaultの特殊ファイアウォール設定に関する質問しかし、情熱的なソフトウェア開発者として、私は独自のソフトウェアをリリースすることも検討しています。

私は高級言語、できるだけJavaやNode.JSを使用することに興味があります。 LinuxまたはIllumosには、すべてのネットワークパケットを取得して自分のアプリケーションに供給して、許可、削除、または拒否する必要があるかどうかを判断できるシステムがありますか? (または書き換え)

私はICMP、UDP、TCPパケットだけに興味があります。私はトラフィックをスニッフィングして許可するかどうかを判断できるJavaアプリケーションを作成すると想像しました。たとえば、HTTPトラフィックのHost場合は、ヘッダーを調べて、ブラウザがどのWebサイトにアクセスしようとしているかを確認できます。

これは潜在的なスループットを減らす可能性があることを知っていますが、おそらくあなたが推奨する解決策には、警告の影響を明確にするための文書があります。

ファイルシステムの代わりにファイアウォールを使用することを除いて、FUSEを要求するのとほぼ同じです。

そのようなプログラムはありますか?それとも、常にファイアウォール用のC / C ++コードを書くのですか?

ベストアンサー1

Linuxベースのプラットフォームには、Javaプログラムで開いてパケットを許可するかどうかを判断できるnetlinkソケットがあります。ソケットはルールを介してネットワークスタックに含めることができますiptables。もちろん、ここでユーザーモードフィルタに転送されるパケットの種類を制限することもできます。

これに関するマニュアルページの内容は次のとおりです。

ログ

この宛先は、一致するパケットのユーザ空間ロギングを提供します。ルールに対してこの宛先が設定されると、Linuxカーネルはnetlinkソケットを介してこのパケットをマルチキャストします。これにより、1つ以上のユーザースペースプロセスがさまざまなマルチキャストグループに参加してパケットを受信できます。

netfilterプロジェクトの複雑さと複雑さを考えると、解決しようとしている問題に対する解決策を追求することが価値があるかもしれません。 (それ以外のSEの質問で扱っているものかもしれません。まだ見ていません。)

おすすめ記事