web-dev-qa-db-ja.com

Auditdを使用したhttpd PHP Scriptsの決定

背景

サーバーに問題があり、悪意のあるPHP=ファイルがWebルートの下のすべての書き込み可能なディレクトリに書き込まれることを許可しています。現在、問題は発生していません。これらのディレクトリは、phpスクリプト(またはそれらの一部の画像/ビデオでない限り、他のもの)の提供をブロックされ、何かが作成されるとすぐに電子メール通知を受け取りますが、明らかに修正したいと思います。

サーバー上のJoomlaとWordpressのインストールが最新であることを確認するなど、さまざまな手段を講じましたが、それでも継続します。かなり古いバージョンのを実行しているサーバーにクライアントサイトがあります。犯人かもしれないと思うeコマースシステム。

質問

そのため、これらすべての書き込み可能なディレクトリをすべて監視するようにauditdを設定し、問題が再び発生するのを待ってログを収集しましたが、発生した通常のアクティビティから確認するログエントリがすでにあります。

それは私が疑ったとおりであり、もちろんPHPスクリプトがファイルに書き込む場合、exeに対してすべてのauditd/usr/sbin/httpdを示します。以下のサンプル出力を参照してください。 CWDに基づいて、問題の原因となっているサイトを知ることは可能ですが、それは変更される可能性があり、信頼できません。特定のスクリプトを知っていることも役立ちます。

ですから、auditd/usr/sbin/httpdを介してアクションを生成しているスクリプト名(編集:または呼び出しスタック)またはその情報に近いものをログに記録させることは可能ですか?

時間-> 2016年11月30日(水)14:36:30

type = PATH msg = audit(1480516590.911:180239):item = 1 name = "/ home/web/www.example.com/html/cache/example.php" inode = 539842913 dev = 08:05 mode = 0100644 ouid = 48 ogid = 48 rdev = 00:00 objtype = CREATE

type = PATH msg = audit(1480516590.911:180239):item = 0 name = "/ home/web/www.example.com/html/cache /" inode = 539833631 dev = 08:05 mode = 040777 ouid = 634 ogid = 634 rdev = 00:00 objtype = PARENT

type = CWD msg = audit(1480516590.911:180239):cwd = "/ home/web/www.example.com/html"

type = SYSCALL msg = audit(1480516590.911:180239):Arch = c000003e syscall = 2 success = yes exit = 36 a0 = 7f9baf272550 a1 = 241 a2 = 1b6 a3 = 9 items = 2 ppid = 26483 pid = 30957 auid = 4294967295 uid = 48 gid = 48 euid = 48 suid = 48 fsuid = 48 egid = 48 sgid = 48 fsgid = 48 tty =(none)ses = 4294967295 comm = "httpd" exe = "/ usr/sbin/httpd" key = "write_to_open_web_directories"

14
Nigel B. Peck

auditdは、システムコールまたはファイルアクセスでのみ呼び出されるため、スタックトレースを実行したり、他の情報を取得したりすることはできません。スタックトレースはユーザー空間からのみアクセス可能であり、スタックをほどく必要があるため、significantオーバーヘッドが発生します。

コメントで述べたように、%Pをアクセスログ構成に追加して、auditdとの相関のためのPIDを取得するか、mod_securityからの完全なリクエストをログに記録できます。

mod_phpを変更するか、LD_PRELOADを使用して、ファイルを開いたときに関連するリクエストに情報を追加することもできます。

1
David