0

マルウェアがファイルの末尾または先頭にコードを追加することがあるため、サーバーで問題に直面しています。私の知る限り、セキュリティの抜け穴を修正しました。私のホスティング プロバイダーは、現在セキュリティが十分であると通知していますが、私は自分のサイトでのウイルス/マルウェアの活動に神経質になっています。計画はありますが、sed や awk や gawk などの Linux エディターに精通していないので、あなたの助けが必要です。私の PHP の知識を使用してこれを行うことができますが、それは非常にリソース集約的です。

マルウェア/ウイルスはファイルの先頭または末尾にコードを追加するため (ウェブサイトにエラーが表示されないようにするため)、すべての .php ファイルを再帰的に調べるコマンドの書き方を教えてください (私は使用します他のタイプのファイルを変更するためのヘルプ) を親ディレクトリとすべてのサブディレクトリに追加し、ファイルの最初と最後に特定のタグを追加します (XXXXXX_START と YYYYYY_END など)。

次に、すべての .php ファイルを読み取り、コードの最初の行が XXXXX_START で最後の行が YYYYYYY_END であるかどうかを確認し、ファイルが異なる場合はレポートを作成するスクリプトが必要です。

cron をセットアップしてすべてのファイルをチェックし、不一致が見つかった場合はレポートをメールで送信します。

ウイルスがコメント行の後にデータを追加する可能性があるため、これが 100% 絶対確実ではないことはわかっていますが、これは私が考えることができる最良のオプションです。


最初にデータを追加するために次のコマンドを試しました-

sed -i -r  '1i add here' *.txt

ただし、これは再帰的ではなく、親ディレクトリ ファイルのみに行を追加します。

それから私はこれを見つけました - BEGIN と END は特別なパターンです。入力レコードの照合には使用されません。むしろ、awk スクリプトに起動情報またはクリーンアップ情報を提供するために使用されます。BEGIN ルールは、最初の入力レコードが読み取られる前に 1 回実行されます。END ルールは、すべての入力が読み取られた後に 1 回実行されます。例えば:

awk 'BEGIN { print "Analysis of `foo'" }
     /foo/ { ++foobar }
     END   { print "`foo' appears " foobar " times." }' BBS-list

しかし、残念ながら、私は何も解読できませんでした。

上記の詳細に関するヘルプは大歓迎です。他の提案は大歓迎です。

よろしく、

ニチン

4

3 に答える 3

1

以下を使用してファイルを変更できます(.bakというバックアップファイルも作成されます)。

find . -name "*.php" | xargs sed -i.bak '1iSTART_XXXX
$aEND_YYYY'

次のシェルスクリプトを使用して、ファイルをチェックできます。

for f in `find . -name "*.php" -print`
do
    START_LINE=`head -1 $f`
    END_LINE=`tail -1 $f`

    if [[ $START_LINE != "START_XXXX" ]]
    then
        echo "$f: Mismatched header!"
    fi

    if [[ $END_LINE != "END_YYYY" ]]
    then
        echo "$f: Mismatched footer!"
    fi
done
于 2011-09-06T07:17:45.493 に答える
1

バージョン管理および/またはバックアップを使用します。疑わしいアクティビティが発生した場合は、ライブ サイトをザッピングし、バックアップまたはバージョン管理ソースから再インストールします。

于 2011-09-06T06:46:47.463 に答える
0
$ find . -type f | grep "txt$" | xargs sed -i -r  '1i add here'

現在のディレクトリ内またはその下のすべてのファイルにそのコマンドを適用します。おそらく、grep ロジックを find に折りたたむこともできますが、私は単純な呪文が好きです。

于 2011-09-06T04:29:09.517 に答える