好奇心から以下に示すものを試してみたい場合は、あなたの責任であると警告します
フォーク爆弾の簡単な説明。 フォーク爆弾はGNU / Linuxで何をしますか?
:(){:|:&} ;:
これは一種のサービス拒否攻撃またはDoS攻撃であり、基本的にはコンピューター上の使用可能なスペースを飽和させますが、どの言語でもフォーク爆弾を使用することは可能ですが、ここでは焦点を当てます。 bash、とても奇妙に見えるその形によって
非常に複雑に見えますが、それは単純です。それはそれ自体を呼び出す単純な関数です...今フォークポンプ人間が読めるXD
:(){:|:&} ;:
ここに簡単な関数...
function(){var1 = $ 1 echo "関数"}
読むことができ、少しプログラミングできる人のために
爆弾(){爆弾| ポンプ&};ポンプ
ご覧のとおり、これは非常に単純で、自分自身を呼び出す関数を作成します。この関数は、目標に到達するまで停止せず、コンピューターを飽和させるサイクルを作成します。
要約すると...
:(){
それは呼ばれる関数です:
:|:
この関数は、再帰とパイプを使用して自分自身を呼び出します。 最悪の部分はあなたがもう一度電話するときです...
&
バックグラウンド関数を実行するため、すべてのリソースが使い果たされるまでプロセスを終了できません
} ;:
関数が終了し、再度呼び出されます...
誰かが、初心者にとっては奇妙なことさえある魅惑的なコードを見たいと思った場合でも、小さなロジックが解決しないことは何もありません
この記事はで書かれています 私たちのフォーラム によって 和田テキストを少し編集して、ここに持ってきます。
アルフレッド。
実際、興味深いことに、今日、彼らがあなたにフォーク爆弾を投げたとしても、プログラムが生成できるプロセスの数を制限するセキュリティレベルが設定されているため、何も起こりません。Arch、Gentooなどのディストリビューションのみです。 。デフォルトではこれらの制限はなく、作成する必要があります。
Teteと私はこのトピックについて笑いながら一日を過ごしているので面白いです。Archをインストールする多くの人はそれをインストールして環境を置くだけですが、構成する必要がある他の多くの非常に重要なことを忘れています(または少なくとも彼らは必要なのは、本当は今の状況がわからないということです)だから、「インストールが簡単で速い」と言われました。
とにかく、Pythonの爆弾でそれを説明する方が少し簡単だったと思います。これはさらに明確です。
実際、これらのプロセス実行設定は通常、ArchやGentooのようなミニマリズムでGNU / Linuxディストリビューションをインストールするときに非常に重要です。
ちなみに、私がArchを使い始めるのは、オーブンから出たばかりのプログラムとインターフェースのバージョンをテストすることです。 とにかく、そのフォーク爆弾は非常に興味深いものです。
はい、Pythonで理解する方がはるかに簡単です。誰かが興味を持っている場合に備えて、ここに残しておきます。
輸入OS
Trueの場合:
—-os.fork()
そして再帰的に:
輸入OS
def爆弾():
—-os.fork()
- 爆弾()
爆弾()
そしてnanoは、debian 7 Stableでは、これに対するセキュリティもありません。少なくともpythonでは、システムが即座にハングすることに注意してください。
ご挨拶。
さて、私はUbuntuでフォーク爆弾を実行しました、そしてコンピュータは即座に失速しました
ポンプを非アクティブ化するには、ターミナルのプロセスをulimit -u 50で制限し、ポンプを非アクティブ化:p。
いずれにせよ、現在のOSではアクティブにできるプロセスの数が制限されていることに注意する必要があります。Fedoraでフォーク爆弾を発射するだけで何も起こりません。
間違いありませんが、たとえば、solarisとwindows(私がテストした場所)は保護されていません。
涼しい! 🙂
同じことをする; しかし、今回はそれを便利にします。つまり、Windowsで実行して、何が起こるかを確認します。 GNU / Linuxではありません。
非常に不思議なことに、コンピューター妨害の対象に近いので、それがGnashプレーヤーに当てはまるかどうかはわかりません。Vimeoサイトではビデオを完璧に実行しますが、YouTubeでは240ピクセルの解像度にほとんど達しません。 私はプログラマーではないので、Dailymotionsでは、私には理解できない何かを再現しません。
これが変わらなければ、フリーソフトウェアのサポーターが私たちのビデオを差別なくすべての人に広めるために公開することは悪い考えではないと思います。
Gnashはこれに注意を払う必要がありますが、開発が遅かったため、MozillaはShumwayと呼ばれるJavascriptに基づいて独自のFlashプレーヤーを作成することを選択しました。 GNU / Linuxで使用しているFlashPlayerを交換できるように、Shumwayが間もなくリリースされることを願っています。
そして、自分自身を保護する方法を言うつもりはないので、非常に基本的な方法(特にNoobs Archersの場合)はプロセスの数を制限することです。このために/etc/security/limits.confに移動し、次の行を追加します:
*ハードnproc1000
これにより、プロセスをその量に制限します。たとえば、その量に設定します(ただし、フル実行時のOS全体ははるかに少なく、約200〜300プロセスです)。フォーク爆弾を適用しても、OSは完全に機能し続けます。プロセスの数を非常に少ない数に制限すると、一部のプログラムがプロセスを作成することを望み、OSがそれを許可しないため、他の結果をもたらす可能性があることは明らかです。私の場合、1000プロセスに制限されています。完璧
私はそれを
* soft nproc 500
* hard nproc 1000
arch wikiは100でソフト、200でハードを推奨していますが。
問題ないはずなのに、爆弾を投げてテストするのが怖い…xD
シールドする最も簡単な方法は、ulimits値を制限して、ポンププロセスを強制終了できるようにすることです。
興味深い記事です。Slackwareでそれを防ぐために、/ etc /プロファイルファイルでulimitを使用します
ulimitを制限することの問題は、何をするかに応じてシステムの使用を制限する可能性があることです。