wordpressでのセキュリティ対策

wordpressにbotプログラムを仕込まれ、踏み台にされないようにするための対策です。

1.wp-login.phpや/wp-admin/以下に対してアクセス制限する。

http://wpdocs.sourceforge.jp/Brute_Force_Attacks

まず、ハッカーはwordpressのupload機能を使って、サーバにbotプログラムをインストールしようとトライします。このため、まずwordpressのアカウント奪取のために管理者アカウントのID/PWを盗みにきます。盗み方はwp-login.phpに無数のID/PWを投げつけ成功するまでアクセスし続けます。このため、wp-login.phpへのアクセス元を極力絞ってリスクを軽減させます。同じサーバで複数のwordpressを使っている場合は、httpd.conf等に下記の内容を追加します。

<Files wp-login.php>
Order deny,allow
Deny from all
Allow from .jp
</Files>

Allow fromはプロバイダ単位、IP単位まで制限した方がベターですが、概ねこの攻撃を仕掛けてくるのは.comドメインが多いので、上記設定を追加しておけば運用も楽かと思います。同様にログイン後ディレクトリ/wp-admin/以下に対しては下記の設定を行います。

<Location /wp-admin/>
Order deny,allow
Deny from all
Allow from .jp
</Location>

2.wordpressは最新版にしておく

「最新版にしろ」っていつもいうので、よっぽど自信が無さそうなので、最新版にしてあげましょう。プラグインとか怪しいですが、1の対策でとりあえずよしとしましょう。

3.wordpressファイル所有者とhttpdの実行ユーザを同じにする。

wordpressのハッキングは/wp-contents/uploads/以下のディレクトリ以下にbotファイルを設置します。このためディレクトリ権限が重要になってくるわけですが、まずhttpd実行ユーザとディレクトリの所有者を同じにしておかないとゴチャゴチャになるので、合わせておきましょう。また、このユーザはコマンド実行権限のないnologinユーザとします。apacheであればデフォルトのdaemonにしておくことをお勧めします。

4.FTPやSCP経由でapache実行ユーザでサーバにファイルアップロードしない。

3の続きですが、apacheをログイン権限のあるユーザで動作させることは非常に危険です。FTPやSCPでファイルアップする場合、nologinユーザでは不可能なため、実行ユーザで行うことになりますが、これらのアカウントはサーバ上でコマンドを実行可能なため、system関数などでより多彩な攻撃を受けることになります。ファイルアップの必要がある場合はapache実行ユーザと異なるユーザを使いましょう。

5.ファイル、ディレクトリの所有権を一定にする。

phpファイルであれば644、ディレクトリであれば755とします。wp-config.phpは600が良いそうです。

# cd [wordpressインストールディレクトリ]
# find . -type d -exec chmod 755 {} \;
# find . -name \*php  -exec chmod 644 {} \;
# find . -name wp-config.php -exec chmod 600 {} \;

6.mrtgなどでトラフィック、サーバ負荷を常時監視する。

サーバに異常が無いか、随時監視します。(24時間貼りつく必要も無いけど。。)

と、色々書いてきましたが、wordpressを技術的なバックボーン無い方が運用されることは避けた方が良いと思います。wordpressを使ったハッキングはgoogle等の検索ロボットを利用して、サーバ上にアップロードしたプログラムを起動させてサーバ内部から外部に大量のデータをばら撒きます。通常のブラウザアクセスでは404を返すため、ブラウザ上ではファイルが何も置かれていないように見えます。これらを検知するためにはサーバへのログインしてサーバ監視を行うことは必須となります。wordpressなどのオープンソースは便利である反面、その内容が公開されているため、セキュリティリスクも高いソフトウエアとなります。個人情報を扱うサービス等には決して利用されることのないように。