タグ:wordpress

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プラグインに、アクセスIPログを取得するのがあり。それで今のところは様子見。そのプラグイン名、あらためて追記します。

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

0630
以下、個別の記事するほどでない諸々。

投稿にテンプレートの選択ボックスが表示されない時には
状況は以下。
・テンプレート用プラグインを使わない
・自作テンプレートを作成、FTPアップ
・ところが投稿画面にテンプレート選択ボックスが表示されない

対処は簡単。テンプレート名の下に、投稿タイプを記述すれば表示される。
<?php
/*
Template Name: 投稿テンプレート
Template Post Type: post
*/
?>
固定ページでも使う場合は、タイプに「,」区切りで「page」を記述。

【関連リンク】
WordPressで投稿ごとにテンプレートを変える
記事中「新しくなったテンプレート」の箇所によった。ありがとうございました。

テーマは公式がやりやすいかも
私の感想ですが、改変しやすい。

以外はサンプルがいかに素敵でも、作りこまれた記事あってのものなので。記事なんもない状態から、サンプルを手本に作るのは効率が悪い。

たとえるならBootstrap。テンプレートなのに、その作りを理解しないとソースが肥大化するって、なんじゃそりゃと思う。

プラグインはおすすめ、使い方を考慮して選別
おすすめは「Wordpress プラグイン おすすめ 2017」などで検索。

ヒットした該当記事から、目的にあうプラグインを選別。

そして「プラグイン名 使い方」で検索。

困ったときの対処法がどれだけあるか、承知の上で使うと後々よいと思う。

子テーマを作って改修すると後が楽

子テーマ作るの面倒~と、親テーマを直に改変した場合。

親テーマのアップデート時、改変した部分が上書き・削除される場合がある。

なので、最初から子テーマを作って改修すると、後が楽。

検証はGoogle Chromeが楽
Wordpressに限らず。

なんてcssの何行目のこのクラスが~と、おかしな箇所をマーカー付きで示してくれる。

そしてその個所に、試しでコードを記述、解決法を確定することができる。

ほかのブラウザで見ておかしなところも、Chromeであたりをつけて解決しやすい。


今回、思いつくのはこんなところでしょうか。

またの機会に「ログイン有無で表示をかえる」「会員サイトの作り方」をと思います。

862dc05723a2fcf1b6515901950b0965_l
サイトをリニューアルしてみた、からまもなく。URLにwordpressフォルダ名がついているのは、あまりにかっこ悪いので、直した。
修正前の例)http://noriki.jp/wb/
修正後の例)http://noriki.jp/
アクセス設定で直す方法
一般的な直し方として、フォルダの位置はそのまま、アクセス設定を変える方法がある。
以下、おおまかな手順。(詳細は関連リンクをご覧ください)
  1. wordpressにログイン。
  2. メニュー「設定」>「一般」の「サイトアドレス」を変更、保存。
  3. FTP接続。wordpressフォルダ内の「index.php」「.htaccess」をルートにコピー。
  4. ルートにコピーした「index.php」「.htaccess」を編集、保存。
直せなかった
前述の方法をとったが、直せなかった。そこで、wordpressフォルダをサブからルートへ移動することにした。

wordpressフォルダをルートへ移動する
簡単です。FTP接続して移動するだけ。その前に、お勧めとして二点。
  1. バックアップ
  2. この後で編集する、DBの該当箇所を確認しておく
移動した「index.php」「.htaccess」を編集する
簡単です。wordpressフォルダの箇所を削除するだけ。
例)「/wp/noriki.jp/」は「/wp」を削除し、「/noriki.jp」にして保存。

DBを編集する
  1. phpMyAdmin などで、wordpress のDBにアクセス。
  2. DBのうち、テーブル「wp-options」1行目の「option_value」において、wordpressフォルダの箇所を削除・保存。
    例)「http://noriki.jp/wp/」は「/wp」を削除し、「http://noriki.jp/」にして保存。

wordpressの設定を編集
上記の手順により、wordpressのログインURLはルートに変わっている。下記にアクセス(※)し、「サイトのアドレス」を編集・保存。
※アクセスエラーになる場合、少し間をおいてからアクセスしてみてください。処理時間が多少要るようです。
アクセス先:例)http://noriki.jp/wp-admin/options-general.php
編集例)http://noriki.jp
以上、ご参考になれば幸いです。

【関連リンク】
WordPress を専用ディレクトリに配置する - WordPress Codex 日本語版
一般的な直し方は、「3 既存のサブディレクトリを使ってルートディレクトリに表示する場合」。

WordPress をディレクトリごと移動する方法 - minorio のプログラミング・メモ
ありがとうございました。

↑このページのトップヘ