web-dev-qa-db-ja.com

Ubuntuをフォークボムから保護する方法

誰かがフォーク爆弾について話しているのを聞いて、いくつかの研究を行い、コマンドラインで入力して、コンピューターで悪いことをすることができる奇妙な外観の文字に関する恐ろしい情報を見つけました。理解できないコマンドは発行しませんが、何が起こるかわかりません。

一部のOSでは、管理者がフォークプロセスの影響を軽減するためにユーザープロセスにある程度の制限を設定できると聞きましたが、このUbuntuのデフォルトの保護はSudo特権を持つ人がこれを設定する必要がありますか?もしそうなら、どのように?

72
dblang

/etc/security/limits.confを変更することにより、Ubuntuおよび他のほとんどのLinuxディストリビューションで生成できるプロセスの量を簡単に制限できます。

sudoedit /etc/security/limits.conf

次に、このファイルの下部に次の行を追加します。

*    hard     nproc     nnn

どこ:

  • hardは、リブートせずに変更できないように、カーネルレベルで制限を設定します。
  • nprocは、ユーザーごとのプロセスの最大数です。
  • nnnは、システムの計算に使用する数値です:

    ps aux -L | cut --delimiter=" " --fields=1 | sort | uniq --count | sort --numeric-sort | tail --lines=1
    

上記のコマンドは、すべてのユーザー(threads を含む)のすべてのプロセスをリストし、それらを合計して、最大量のプロセスを持つユーザー名をリストします。安全のために、上記のコマンドを実行する前に通常必要な数のアプリケーションを開き、安全のためにその数を2倍にします。

この制限を設定したら、再起動する必要がありますが、システム上の各 non-root ユーザーに影響します。そのため、root以外のユーザーがfork bombを実行すると、その厳しい制限があります。

グループおよびワイルドカードの制限は、デフォルトではrootユーザーに適用されません。スーパーユーザーにルールを適用する場合は、ルールでリテラルユーザー名rootを使用します。

また、すぐに再起動したくない場合は、Sudo ulimit -u 800を使用できます。これは、実行中のセッションにのみ制限を設定しますが、Sudo特権を持つフォーク爆弾によって簡単に回避できます!

再起動後、/etc/security/limits.confにあるものが使用されます。

フォークボムに関する追加情報:マルウェアや恐ろしいものではありません。それらは通常、自分自身を2回呼び出すスクリプトのような基本的なもので構成されており、マシン上の存在が指数関数的に増加します。急速なペースでメモリフットプリントが小さくても、使用可能なRAMがすべていっぱいになり、マシンがフリーズまたは再起動します。唯一の危険は、保存されていない情報を失うことです。私は、フォークボムを悪意のあるソフトウェアよりもいたずらとして分類します。

重要なリマインダー:

98%のアクションが確実でない場合、コマンドラインで何かを実行することはほとんどありません。実行中のコマンドを読み取れない場合は、実行しないでください。これは、読み取り不能な16進/ base64文字のチャンクにdoubleを適用します。これを使用して、あらゆる種類の意地悪を隠すことができます。コマンドがわからない場合は、常に buntu Manpages でアクションを検索できます。また、Sudoを使用する場合は、rootユーザーとして実行されるため、特に注意が必要です。

72
Marco Ceppi

私が好きな簡単な方法は、エイリアスを作成することです。エイリアスは常に適用されるわけではありません。上記の答えを確認してください。

alias :="echo No."

いま

$ :(){ :|: & };:
bash: syntax error near unexpected token `('
1
Adrian Webster