WordPressと画像認証
セキュリティ向上とスパムコメント排除のため、Wordpressに画面認証を導入します。
画面認証といえばこんな感じ。
スパム対策といえばAkismetが有名で、実際とてもよく仕事をしていると感じていますが最近これをすり抜けるスパムにお目にかかるようになりましたので画像認証を併用してスパムの排除に取り組みたいと思います。
今回はプラグインをインストールしてこの機能を実装してみます。今回もトラブル続きで大変でしたが。。。
画像認証を行うプラグイン「SI CAPTCHA AntiSpam」をインストール
ダッシュボード → プラグイン → 新規追加 と進み、「CAPTCHA 」と入力して検索してみます。すると該当するプラグイン「SI CAPTCHA Anti-Spam」が出てきました。
そのままこいつをインストールしてみます。
最初はスパムコメントを排除するのが目的だったのですが、他にも用途があるようなので以下のとおりとしました。
ログインフォームでこいつを使用することでブルートフォース(総当り攻撃)の回避に役立つということなので、コメントフォーム(こちらはスパム対策)以外にもチェックをつけました。
テキストラベルの設定も可能となっており、値が違ったり空白だった場合に表示する文字列を設定できるようです。
ここは自分がわかりやすいように設定したらよいでしょう。
設定ができたら「オプション更新」をクリックして反映させましょう。
作業が完了したら一度ログアウトして、きちんと動作するか試してみます。
画面認証が使えない!?ログインできない!?
ここで問題が発生。自分の環境(自宅サーバ)では以下のエラーが表示され、画像認証が使用できない状態に。
エラー: si-captcha.phpプラグインによると、PHPにGD image supportが見当たりません! PHPにGD image supportが有効になっていない理由については、サーバ管理者にお問合せください。 エラー: si-captcha.phpプラグインによると、PHPにimagepng機能が見当たりません! PHPにimagepng機能が有効になっていない理由については、サーバ管理者にお問合せください。
さて困った。入力すべき文字列も分からず全くログインできなくなってしまいました。
強硬策になりますが仕方ないのでプラグインを削除します。
FTPでwp-content/plugins/si-captcha-for-wordpressをディレクトリごと削除します。これで画像認証なしでのログインに戻ったので一度ログインしなおしてプラグインを再インストール。
原因を調べるとPHPスクリプトから直接グラフィックを操作するモジュール「php5-gd」が必要ということ。
自分のサーバでは過去にインストールした記憶もないモジュールなのでコンソールから
sudo apt-get update sudo apt-get install php5-gd
にてさくっとインストールします。
その後、再度ログアウト→ログインを試すと今度は無事画像が表示され、認証が機能していることが確認できました。
コメントフォームを見てみるとこちらも動作している様子。(当記事の下の方にあるコメントフォームをご覧いただくと様子がわかるかと思います)
まとめ
今回はスパム対策として、そして結果的にブルートフォースアタック対策としてWordpressのプラグイン「SI CAPTCHA Anti-Spam」を導入しました。
Akismetだけでもフィルタとして十分機能してくれているのですが、画像認証と合わせることでより効果を発揮してくれれば・・・と期待しています。