170513
DOS攻撃をはじめて受け、対処したことがあった。以下まとめ。

ダッシュボードが重い
作業中、急に重くなった。直前にプラグイン、php、javascript等の更新はしてないのに。

phpyadminも重い
こちらも急に重くなった。

サイトまでも重い
ブラウザの問題かと、Yahoo!JAPANなど他サイトにアクセス。通常に表示されるので、サーバーの問題ではと思い至る。

サーバーのアクセス状況を確認
レンタルサーバーでのことだったので、障害情報を見たが該当なし。同領域を使用している、他のドメインサイトを閲覧したところ、普通に表示される。サーバーの問題ではない。すまん、あらぬ疑いだった。

エラーログを確認
遅ればせ。FTP接続でwordpressのログを取得できる場合、ローカルにダウンロードして確認。
このレンタルサーバーでは、VPS(仮想専用サーバー)のコンソールで見るしかなかったので、Apacheコマンドをぽちぽち入力して確認。Apacheコマンドは以下のようなの。
エラーログを確認
# less /var/log/httpd/error_log

ファイルの内容を監視して表示を更新
# tail -f /var/log/httpd/access_log # tail -f /var/log/httpd/error_log

参考)Apacheのログ: Linux初心者のためのLinux入門
DOS攻撃されていたのが判明
特定の同一IPが怒涛の勢いでアクセス、同時にエラーが発生していることがわかった。ログを見ている最中も続々、サイトはとうとう504エラーでダウン。

特定IPのアクセスを制限
取り急ぎ、特定IPのアクセスを制限することにした。
が、FTPソフトで.htaccessをダウンロードしようとして、権限がないとサーバーにしかられる。またもやApacheコマンドをぽちぽち。
.htaccessの権限を確認
#ls -l .htaccess

.htaccessの権限を変更(例:newownに変更)
#chown newown .htaccess

参考)Linux:chownでファイルやディレクトリの所有者を変更する | raining
ダウンロードした.htaccessに下記を追記。
order allow,deny
allow from all
deny from XXX.XXX.XXX.XXX/99

※XXX~XXXはアクセスを禁止したいIP。99はIPのサブネットマスク。

参考)特定IPドメイン/IPアドレス サーチ 【whois情報検索】
IPアクセス制限を確認
.htaccessを更新後、アクセスログを見ると、はじかれているのがわかった。

サイト、ダッシュボード、phpMyadminのアクセス状況も通常に戻った。

人心地ついたところで、エラーはなんだ?と検索。Wordpressに標準搭載されている、xmlrpc.php(モバイルから投稿できる機能)の脆弱性をつかれたものらしい。削除は、Wordpressのバージョンアップ時にまたインストールされるので、無意味らしい。

xmlrpc.phpアクセスを制限
これも.htaccessに記述して更新。
<Files "xmlrpc.php">
    order deny,allow
    deny from all
</Files>

IPアクセス制限は、アクセスしてからの処理なので。サーバー負荷対策としては、ほかによかろう方法があり。それについては、上記の参考をご覧ください。

脆弱性をつかれるファイルは、ほかにもあるらしいが。今回はこれまで。Wordpressプラグイン「WP Security Audit Log」で様子見。

以上、ご参考になれば幸いです。