
chackdは、毎秒カーネルパラメータtcp_challenge_ack_limitをランダム化してサイドチャネル攻撃を防ぐデーモンです。
最近発表されたサイドチャネル攻撃はコミュニティの強い注目を集めています[1]。多くのサーバーやスマートフォンデバイスにとって、この攻撃はIPv4接続に対して危険であると考えられています。カーネルは次のバージョンでこの問題を修正することは間違いありません。しかし、特定の理由や単なる怠惰からカーネルを更新しない管理者もいるかもしれません。
パラメータを非常に高い値に調整する[2]とうまく機能します。その一方で、サーバーアプリケーションでは不必要なトラフィックが発生する可能性があります。これを防ぐために、私はchackdプログラムを作成しました。これは[1]で提示された解決策を目標にパラメータ化できるようになっています。
chackデーモンはこの仕事を非常にうまく、かつシンプルに行います。以前の私の構想ではローダブルカーネルモジュールを検討していましたが、ユーザー空間とカーネル空間の間にproc vfsと呼ばれる強力なインターフェースがあるため、これを破棄しました。procファイルを使えば、シンプルなデーモンで仕事ができます。
これは私の最初のオープンソースプロジェクトであり、challenge_ack_limit攻撃から保護したいがカーネルを更新できない管理者にとって有益です。コンパイルしてサーバーで実行するだけです。
このプロジェクトを「コミュニティ標準」にするために、コミュニティの助けが必要です。
srcファイル内のTODOを確認してください。私が取り組みたい事項があります。自由にブランチしてください。このプロジェクトから多くを学びたいと思います。
Makefile - Makefileをインストールやカーネルリリースクエリなどを備えた標準的なものにしたいという願望。
start_daemon - デーモンをクラッシュさせる可能性のあるコード部分は修正する必要があります。
stop_daemon - 標準的でないコード部分は修正する必要があります。
init_daemon - デーモンをクラッシュさせる可能性のあるコード部分は修正する必要があります。
main - 私の意図は、メインパラメータを単純な整数として指定することです。現在はうまく機能しています。しかし、もっと良い処理方法があるかもしれません。
"sysctl net.ipv4.tcp_challenge_ack_limit"の1秒間隔の出力
net.ipv4.tcp_challenge_ack_limit = 222
net.ipv4.tcp_challenge_ack_limit = 227
net.ipv4.tcp_challenge_ack_limit = 191
net.ipv4.tcp_challenge_ack_limit = 178
net.ipv4.tcp_challenge_ack_limit = 229
net.ipv4.tcp_challenge_ack_limit = 167
net.ipv4.tcp_challenge_ack_limit = 189
net.ipv4.tcp_challenge_ack_limit = 229
Bastian Pukallus、[email protected] までメールしてください。
[1] http://www.cs.ucr.edu/~zhiyunq/pub/sec16_TCP_pure_offpath.pdf
[2] https://www.mail-archive.com/[email protected]/msg705042.html