カテゴリー: WordPress アクセス制限

  • WordPressのxmlrpc.phpを無効にして不正アクセス対策

    WordPressのxmlrpc.phpはウェブサイト攻撃の「踏み台」に使われているそうです。
    WordPressの16万サイトが大規模攻撃の踏み台に、「Pingback」機能悪用
    私の手持ちサイトも妙な不正アクセスが発生して、参りました。
    xmlrpc.phpにはリンクが張られたことを通知する機能があります。
    これを「Pinback」と呼びます。
    自分が何の悪意も無くとも、このPinbackの仕組みを使って他のサイトを攻撃する「踏み台」に使われかねません。
    xmlrpc.phpを削除してもWordPress本体のバージョンアップで復活してしまいます。
    なのでxmlrpc.phpそのものを無効にしておきましょう。
    ちなみにxmlrpc.phpを無効にすると、メールアドレスを送信して記事投稿する機能も失われます。
    functions.phpを書き換える必要があります。
    以下の記述をfunctions.phpに追加します。

    add_filter(‘xmlrpc_enabled’, ‘__return_false’);

    xmlrpcを無効にするプラグインもありますが、
    Disable XML-RPC Pingback
    このプラグインを利用する場合は、GETにしか対応してないので、POSTで攻撃されると効果が無いとのこと。
    GETメソッドはURLにパラメータが付く送信方法。
    POSTメソッドはURLにパラメータが付かない送信方法とのことですが、私も詳しくはわかりません。
    ちなみにこのプラグインで以下の記述がfunctions.phpに追加されるとのこと。

    add_filter( ‘xmlrpc_methods’, ‘Remove_Pingback_Method’ );
    function Remove_Pingback_Method( $methods ) {
    unset( $methods[‘pingback.ping’] );
    unset( $methods[‘pingback.extensions.getPingbacks’] );
    return $methods;
    }

    .htaccessで無効化する方法もありますが、

    <Files xmlrpc.php>
    Deny from all
    </Files>

    この場合は攻撃者が諦めない内はサーバー負荷は続くらしいです。
    最も負荷がかからないのは以下の方法とのこと。
    wordpressのxmlrpc.phpに対するブルートフォースアタックを防ぐ

    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^xmlrpc\.php$ “http\:\/\/0\.0\.0\.0\/” [R=301,L]
    RewriteRule ^index\.php$ – [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    7
    RewriteCond %{REQUEST_FILENAME} !-d
    8
    RewriteRule . /index.php [L]
    </IfModule>

    xmlrpc.phpにアクセスすると自動的に「http://0.0.0.0/」にリダイレクトします。

  • wp-login.phpへのアクセス制限を.htaccessで制御する

    wp-login.phpへのアクセス制限を.htaccessで制御する方法です。

    <Files wp-login.php>
    order deny,allow
    deny from all
    allow from example.com
    allow from XXX.XXX.XXX.XXX
    </Files>

    赤字の部分を自分のプロバイダのドメイン、またはIPアドレスに書き換えます。
    そして.htaccess内に記述します。
    「deny from all」は全てのアクセスを拒否します。
    「allow from~」は指定したドメインかIPアドレスに当てはまるアクセスのみ許可します。