web-dev-qa-db-ja.com

一部/ほとんどのLinuxユーザーのPerlを無効にしますか?

サーバーのWebアカウントの1つが数回ハッキングされました。誰かが phpBB フォーラムを介してPerlスクリプトをダウンロードし、Perlスクリプトを使用してやりたいことをすべて行うたびに(主に [〜#〜] irc [〜#〜]に接続します そして開始 DDoS スクリプトのコードに従って攻撃)。

ほとんど(一部のプロセスではPerlを使用しているため、Perlを使用していないため)または一部の特定のユーザーに対してPerlを無効にしたいと思います。

どうすれば適切に実行できますか? Debian を使用しています。

3
Guillaume

Perlを無効にすることは効果的なセキュリティではないことにGillesは同意します。攻撃される可能性のある方法は他にも多数あるため(pythonスクリプト、bashスクリプト、phpスクリプト、実行可能ファイルなど)、その制限/usr/bin/Perl特定のユーザーグループに副作用がある場合があります(たとえば、Perlスクリプトを通常のユーザーとして呼び出すプログラムなど)。

ただし、余談ですが、Linuxで特定のユーザーに制限したいアプリケーションがある場合の簡単な方法は、まずグループを作成してから、そのグループにユーザーを追加します。次のコマンドは、ubuntuでこれを実行します(Perlグループを作成し、それにuser1、user2、user3を追加します:

Sudo addgroup Perl
Sudo adduser user1 Perl
Sudo adduser user2 Perl   
Sudo adduser user3 Perl

次に、Perlが現在どこにあるかを見つけます(which Perl私のシステムでは/usr/bin/Perl)Perlの所有権とパーミッションが現在何であるかを見つけます(ls -l /usr/bin/Perl on ubuntuはデフォルトでユーザーrootとグループrootが所有するように設定されています)すべてのユーザーに読み取り/実行権限があり、Perlグループでない限り他のユーザーに対して無効にする必要があります。

Sudo chgrp Perl /usr/bin/Perl
Sudo chmod o-rx /usr/bin/Perl

Perlグループのメンバーではないシステム上の攻撃者が端末に到達できる場合、自分のバージョンのPerl実行可能ファイルをアップロードできることに注意してください(または、他のユーザーの読み取りアクセス権を削除しなかった場合、ローカルtmpディレクトリにコピーし、実行可能ビットを設定して(chmodを実行できる場合)、その実行Perlスクリプトを独自の実行可能ファイルから使用します。

7
dr jimbob

Perlを無効にしても意味がありません。 Perlで記述できるエクスプロイトは、別の言語でも記述できます。たとえば、PHPを無効にするつもりはありません。

すでに非常に安全なシステムを採用している場合(例:脆弱性はまれであり、システムのごく一部にのみ影響を与える傾向があり、任意のコードの実行を有効にする直接的な方法がない場合)、すべてのメソッドを無効にする価値があります。スクリプト。これにより、一部の脆弱性が悪用される範囲を制限できます。たとえば、少数のASCII文字のみを挿入できる場合、スクリプトを作成するのは簡単ですが、マシンの実行可能ファイルを作成することは大きな課題となる可能性があります。

あなたが遭遇した種類の脆弱性に対して、インタープリターを無効にすることは役に立ちません。攻撃者はPHPまたはマシンコードをアップロードする可能性があります。あなたはメッセンジャーを撃っています。

発生している攻撃は Remote File Inclusion (RFI)テクニックと呼ばれます。これは基本的に、リモートシェルを生成するために悪意のあるコードをアップロードするために利用されている脆弱なWebアプリケーションの結果です。

Perlを特に無効にする必要はありません。たとえば、攻撃者が使用するphpBBなどの脆弱なアプリケーションの識別を開始し、そのアプリケーションにパッチを適用するか完全に削除して、アップグレードされたバージョンに置き換えることができます。

ボックスが危険にさらされているため、ホストで実行されているバックドアがすでにインストールされている可能性があるため、上記の方法に頼るのはほとんど安全ではありません。サーバーに物理的にアクセスできる場合は、ネットワーク上でサーバーを停止してみてください。リモートアクセスがある場合は、ファイアウォールルールを回避して、最初に自分のOrigin(IPアドレス)の場所にのみアクセスできるようにします。

あなたができることの1つは、ネットワーク層からのすべての着信トラフィックを明示的に拒否し、特定のポートまたは使用されているポートのトラフィックのみを指定することです:TCP/22,80 2つ目は、リモートシェルをバインドおよび生成しないことです。

Perlを削除すると、ホストで実行されているすべてのPerl依存アプリケーションが壊れます。

2
John Santos