WordPressで攻撃を受けやすいファイルとセキュリティ対策
先日「ホームページにアクセスができない」という連絡があり、調べてみたら驚きの結果が!
WordPress でつくられたサイトなのですが、ウェブのドキュメントルートを確認すると cs.php というファイルだけしかありませんでした。
最初は作業ミスかなにかと思いタイムスタンプを確認して、その旨連絡をしたのですが、「何もやってません」という回答。
drwxr-xr-x 2 webusr webgrp 4096 Dec 10 14:55 httpdocs
10日の14時55分に更新されてます。
残されたファイルを見てみると、拡張子の通りphpで書かれたものだけど暗号化されており、まったく読めない。かなり怪しい
先ずはこのファイルについて調査します。
サーバの負荷を確認すると一目瞭然。調べなければいけないのは負荷の高い時間帯のログです。
less access_ssl_log* | grep "POST" | grep "200" | less
アクセスログを確認してみると、、ありました。144.217.***.*** - - [10/Dec/2019:02:43:25 +0900] "POST /cs.php HTTP/1.0" 200 11335 "https://www.liberta-law.jp/cs.php" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36"
この直前に、同じIPアドレスからのログも確認できます。
144.217.***.*** - - [10/Dec/2019:02:41:35 +0900] "POST /wp-content/uploads/2019/12/tbl_geed.php HTTP/1.0" 200 8689 "https://www.liberta-law.jp/wp-content/uploads/2019/12/tbl_geed.php" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36"
144.217.***.*** - - [10/Dec/2019:02:41:39 +0900] "POST /wp-content/uploads/2019/12/tbl_geed.php HTTP/1.0" 200 31537 "https://www.liberta-law.jp/wp-content/uploads/2019/12/tbl_geed.php" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36"
144.217.***.*** - - [10/Dec/2019:02:41:50 +0900] "POST /wp-content/uploads/2019/12/tbl_geed.php HTTP/1.0" 200 32136 "https://www.liberta-law.jp/wp-content/uploads/2019/12/tbl_geed.php" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36"
144.217.***.*** - - [10/Dec/2019:02:42:22 +0900] "POST /wp-content/uploads/2019/12/tbl_geed.php HTTP/1.0" 200 11836 "https://www.liberta-law.jp/wp-content/uploads/2019/12/tbl_geed.php" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36"
さらにこの手前のログには、wp-login.php、xmlrpc.php、に海外からの多数のアクセスが確認できました。
そして、zgepd_oddsd.phpというファイルがヨーロッパからアップロードされているのが確認できました。
185.232.67.*** - - [06/Dec/2019:02:12:37 +0900] "POST /wp-content/uploads/2019/12/zgepd_oddsd.php HTTP/1.0" 200 356 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3198.0 Safari/537.36 OPR/49.0.2711.0"
uploadsディレクトリの下にPOSTされたファイルは、ステータス200で返されているので、この段階ではWordPressにログインできていることが分かります。
今回の事象では、wp-content/uploads ディレクトリでphpスクリプトを実行されているのが問題だったと考えられます。
以前の経験では、画像ファイルに見せかけたphpファイルなどをアップロードされたケースもあります。
ちなみに今回の WordPress は最近インストールした最新版です。
wp-content/uploads ディレクトリでphpスクリプトの実行を禁止するなど、細かいセキュリティ設定をちゃんとやっておくことが重要ですね。
とはいえ、WordPressをアップデートしてしまうと書き戻ってしまったり、複数のサイトを管理している場合は日々の管理がもっと大変です。
そこで Plesk(プレスク)を活用
まずは、改ざんされる前のバックアップデータからリストア
Plesk は複数のドメインが管理できるのですが、バックアップからのリストアはドメイン単位で選択可能です。
リストアが完了したら、セキュリティの強化を行います。
19項目のセキュリティ設定をクリックひとつで行うことができます。
さらに、マルウェアに感染したファイルがないかも確認します。
ここまでやれば完璧です。
そしてこの一連のセキュリティ対策作業が、 Plesk(プレスク)を使っていれば前述のように簡単に実施することができます。