いまさらながら、WordPressのセキュリティを考えてみた。その1 wp-login.phpを不正アクセスから守る
不正アクセスはある日突然やってくる
下の画像は、自宅サーバーで運用しているサイトのアクセスログの一部なのですが、
WordPressのログインファイルであるwp-login.phpに1,095回もアクセスがあったことがわかりました。
そもそも自宅サーバーのディスク領域を第三者へ貸し出すようなことはしていませんし、自宅からのWEBサーバーへのアクセスはログを記録しないように設定していますので、外部からのアクセスであることは明らかですし、アクセスログを見ると、
213.239.241.214 *****************.net – [13/Jul/2011:23:04:14 +0900] "POST /wp-login.php HTTP/1.1" 200 3265 "http%3A%2F%2F*****************.net%2Fwp-login.php?redirect_to=http%3A%2F%2F*****************.net%2Fwp-admin%2F&reauth=1" "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.172.30 Safari/530.5"
こんなアクセスが数百件単位でずら~っと並んでいました。
どうやら、当方の管理するサイトのWordPressが不正アクセスの標的になってしまったようです。
いくら、IDとパスワードで守られているとはいえ、このままでは不正アクセスの餌食になってしまいますので、タイトルどおりいまさらながらWordPressのセキュリティを考えてみました。
wp-login.phpを不正アクセスから守る3つのステップ
wp-login.phpを不正アクセスから守る3つのステップは以下のとおりです。
恥ずかしい話、当方ワードプレスを運用開始してから今回の不正アクセスが発覚するまで放置していました(すみません)が、WordPressを使ったことがある方は、wp-login.phpがシステムログ引用のファイルであることは知っていますので、不正アクセスの標的になりやすいので、WordPress運用の初期の段階で対策を実施することを強くお勧めします。
wp-login.phpを不正アクセスから守る3つのステップ
1 wp-login.phpへのアクセスを制限する
2 robots.txtを使用してwp-login.phpの検索サイトへのインデックスを防ぐ
3 表示されるページからのwp-login.phpへのリンクをはずす
wp-login.phpへのアクセスを制限する(wp-login.phpをLAN内部からのみアクセスできるようにする)
WordPressのインストールが簡単ですが、先ほども書いたとおりWordPressを使ったことがある方は、wp-login.phpがシステムログイン用のファイルであることは知っていますので、不正アクセスの標的になりやすいです。
実際の運用では、サイトの管理者(または投稿者)がシステムにログインできれば問題がありませんで、特定者以外がwp-login.phpへアクセスできないようにサーバーで設定します。
WEBサーバーの設定ファイルを編集できる(root権限あり)場合
wp-login.phpにアクセスできるIPを制限するサンプルです。
viエディタの起動
# vi /etc/httpd/conf.d/deny_access.conf
<Files "wp-login.php">
SetEnvIf Remote_Addr 192.168.1 local-access
Order Allow,Deny
Allow from env=local-access
</Files>
WEBサーバーの再起動
# service httpd restart
WEBサーバーの設定ファイルを編集できない(root権限なし)場合
サーバー(WordPress本体)へのアクセスがLAN内または、固定IP環境などアクセスする(できる)クライアントのIPが限定できる場合は、上記の設定例を参考にして.htaccessを使用してアクセス制限を行います。
動的IP環境からのアクセス等IPが限定できない場合は、wp-login.phpのパスワード制限等別の方法を考えます。
robots.txtを使用してwp-login.phpの検索サイトへのインデックスを防ぐ
まずはこちらのGoogleで『inurl:wp-config.php』を実行した結果をご覧ください。
意外と、様々なサイト内のwp-config.phpが検索サイトにインデックスされている状況にお気づきになると思います。
これは、システムにログインできるか否かは別として、本来は外部に表示したくないシステムへの入り口が外部に公開されていることをあらわしています。
このままでは不正アタックの標的になりやすいので、クローラーに対しwp-login.php(とwp-adminなどのWordPressのインストールディレクトリ)をインデックスしない(インデックスから削除する)ように通知します。
viエディタの起動
$ vi /home/user1/public_html/robots.txt
/home/user1/public_html/の部分は各自の環境に置き換えてください。
/home/user1/public_html/robots.txtに下記のとおり記述します。
User-Agent: *
disallow: wp-login.php
disallow: /wp-admin
disallow: /wp-content
disallow: /wp-includes
表示されるページからのwp-login.phpへのリンクをはずす
これ、意外と見落としがちなのですが、WordPressのデフォルトテーマなどにwp-login.phpへのリンクが設定されている場合がありますので、このようなリンクは表示しないように設定しましょう。
タグ
2011/07/18 | コメント/トラックバック(0) | トラックバックURL |
カテゴリー:セキュリティ