タグ: セキュリティ

  • 【中級編】出来ればやっておきたいセキュリティ対策5つ

    【中級編】出来ればやっておきたいセキュリティ対策5つ

    こんにちは、WordPress制作・カスタマイズ専門のgiscoです。

    前回の記事では、最低限やっておきたいセキュリティ対策をご紹介しました。
    今すぐにでも出来る対策ばかりですので、是非ご自分のサイトで行ってみてください。

    今回の記事は中級編という事で、ある程度知識のある方に今すぐ行って頂きたいセキュリティ対策をご紹介いたします。

    1. 管理画面のURLを変更

    WordPressの管理画面URLは、デフォルトのままでは/wp-admin/となっていますが、この事は世界中のハッカーが知っており、まさに格好のターゲットにされています。

    管理画面のURLを変更するだけで、セキュリティリスクを減らすことができます。

    こちらのプラグインは、管理画面のURLを変更するためだけのプラグインですので、動作が軽く、サイトの表示スピードに影響を与えません。

    https://ja.wordpress.org/plugins/login-rebuilder/

    インストールし有効化すると、管理画面の「設定」のサブメニューに「ログインページ」という項目ができます。

    「ログインページ」の設定画面

    「新しいログインファイル」の欄に、新たに任意のファイル名を入力します。
    書き込める状態であれば、ファイルは自動生成されます。

    この時点ではまだ、wp-admin/のURLでログイン画面が表示されてしまいます。

    次に、「ステータス」の欄を稼働中に、「著者ページの閲覧」を404ステータスに設定してください。

    「ステータス」と「著者ページの閲覧」の位置

    記事を書く著者が複数いるサイトの場合は、「著者ページの閲覧」を受け入れるに設定する事をお勧めいたします。

    なぜ著者ページを404にする必要があるかというと、ご自身のサイトのトップページで「?author=1」をURLにつけてアクセスしてみてください。

    おそらく、普段WordPressサイトにログインする際に入力するユーザー名が出てきたと思います。

    テーマの作り方などにもよりますが、WordPressの著者一覧ページは、そのままWordPressユーザー名で表示されるケースが多いです。

    つまり、ハッカーからすれば管理画面のURLは分かっているし、ユーザー名まで分かっている状態なんです…。

    残るはパスワードだけですが、ブルートフォースのツールを使えば、そう長くない時間で突破されてしまうでしょう。

    恐ろしいですが、大丈夫です。次のセキュリティ対策へいきましょう。

    2. 設定した管理画面にBasic認証

    次の対策は、古くから存在する古典的な方法ですが、効果のほどは正直微妙です。無いよりはあった方がマシというレベルです。

    .htaccessというファイルと、.htpasswdというファイルを設置するだけですので、ウェブサーバがApacheの場合は簡単ですね。

    ウェブサーバがNginxの場合は、nginx.confに記述する必要があります。

    Web上に、さまざまな.htpasswd作成ツールがありますが、ありがたくこちらを使わせて頂きましょう。

    .htpasswd作成支援ツール

    さて、まだ不安な要素がありますのでどんどん対策していきましょう!

    3. uploads/内でのphp実行禁止

    WordPressではアップロードされたファイルは「uploads」というディレクトリに格納されます。

    このuploadsディレクトリ内に不審なphpファイルを見つけた場合、そのファイルはバックドアの可能性が高いです。

    私のお客様でも、実際にバックドアが仕込まれてしまい、サイトが乗っ取られてしまったとの問い合わせが度々あります。

    uploadsディレクトリは画像の格納フォルダですので、通常のWordPressの挙動としては、phpを実行するタイミングが無いのです。

    以下のコードを.htacessファイルに記述し、uploads/ディレクトリ直下に配置しましょう。

    <FilesMatch \.php$>
    	SetHandler none
    </FilesMatch>

    これで、万が一バックドアを仕掛けられても、phpを実行する事ができなくなりました。

    安心レベルが少しあがりましたが、まだ不安で寝つきが悪いでしょう。

    4. wp-config.phpの権限変更

    以前の記事では、wp-config.phpファイルの場所を移動しました。

    これにより、公開ディレクトリ外に設置しデータベース情報を盗み見られるリスクを減らしました。

    今回は、wp-config.phpの権限を変更して、管理者以外が閲覧すらできないようにしましょう。

    FTPなどでサーバーへ接続し、wp-config.phpファイルの権限を「400」に設定しましょう。

    これだけです!

    5. XML-rpcの無効化

    WordPressには、外部のアプリケーションと通信するためにxml-rpc.phpというファイルが存在しています。

    ただ、このファイルはWordPressが「b2」というブログシステムだった頃の名残であり、現在はほぼ使用されることがありません。

    このファイルを利用するのは、有名なところで言うと「JetPackプラグイン」と「ハッカー」くらいです。

    JetPackは、WordPressの開発元であるAutomattic社が公式に発表しているプラグインですが、このプラグインを使っていないのであれば下記のコードを.htaccessに追記して無効化することをお勧めいたします。

    <Files xmlrpc.php>
    order allow,deny
    deny from all
    </Files>

    xmlrpcを悪用した攻撃手法はDDoS攻撃です。

    大量のpingbackを送信しサーバーをダウンさせる事が出来てしまいます。

    JetPackを使用していない方は、是非こちらの対策を試してみてください。

    まとめ

    この記事では、前回とは違いファイルを編集したりする作業が入るため、中級編としてご紹介いたしました。

    どれも簡単に行えるものですので作業に慣れている方は是非対応してみてください。

    まだ初回を見ていない!という方はこちらからどうぞー。

    WordPressテーマ制作・カスタマイズのgiscoでは、面倒なセキュリティ周りの設定を、低コストで対応致しますので、是非お気軽にご相談ください!

    次回は、上級編を書きたいと思います。

  • 【ハッカーの大好物】今すぐアップデートした方が良いプラグイン8選

    【ハッカーの大好物】今すぐアップデートした方が良いプラグイン8選

    こんにちは、WordPressテーマ制作・カスタマイズのgiscoの中の人です。

    私がWordPress制作会社で働いていた時代、様々な種類のお問い合わせがありましたが、その中でも常に上位にあった内容が「ハッキングされた」というものでした。

    以前の記事でも掲載しましたが、WordPressサイトがハッキングされてしまう原因は、FTP情報の漏洩や安易なログイン情報、そしてプラグインにあります。

    不安がある方はまず、こちらの記事を参考に最低限のセキュリティ対策を施してください。

    ハッキングの経路

    下記はハッキングの経路を多い順に表したグラフです。
    一目で分かる通り、圧倒的にプラグインからのハッキングが多くなっています。

    Wordfence hacked website survey

    in a survey from Wordfence of hacked website owners, over 60% of the website owners who knew how the hacker got in attributed it to a plugin or theme vulnerability.

    Wordfenceの行った調査によると、どのようにハッキングされたが判明したサイト所有者の60%以上が、プラグインまたはテーマの脆弱性に起因すると考えている。

    https://kinsta.com/blog/is-wordpress-secure/

    つまり、どんなにセキュリティ対策を施したところで、インストールしているプラグイン自体に脆弱性があった場合は、常にハッキングの脅威に晒され続けるという事になってしまいます。

    この記事で紹介されているプラグインをインストールしている場合、できるだけ早くアップデートをする必要があります。

    1. duplicator

    脆弱性のあるバージョン1.3.26以下
    修正されたバージョン1.3.28
    最新バージョン1.3.40.1

    脆弱性の内容は、悪意のあるコードを含むファイルをダウンロードさせられるというものです。

    プラグイン自体が悪いのではなく、プラグインの一部のソースコードを悪意を持った第三者が利用する事でサイトを踏み台にされてしまいます。

    簡単な設定だけでWordPressサイトを複製し、テスト環境やローカル環境の作成に役立つプラグインです。

    現在の最新バージョンでは解消されているようなので、該当のバージョンをインストールしている方は、すぐにアップデートをしましょう。

    2. Secure File Manager

    すでにダウンロードが出来ないようになっているため、embed出来ないようですが、キャプチャとリンクだけ掲載しておきます。

    https://wordpress.org/plugins/secure-file-manager/
    脆弱性のあるバージョン2.5以下
    修正されたバージョンなし
    最新バージョンなし

    脆弱性の内容は、プラグインのコードを介してリモードで任意のLinuxコマンドを実行できてしまうという内容でした。恐ろしい。。。

    私が制作会社に勤務していた頃、「このプラグインを入れたい」と仰るお客様が非常に多かったのを覚えています。

    たしかに、FTPなどのクライアントソフトを使わずとも簡単にファイルを操作ができるので便利だとは思いますが、逆に言えば、管理画面に入られてしまったら悪意のある第三者に、全ての権限を与えてしまう事になります。

    このプラグインを入れている場合、アップデートも出来ませんので今すぐプラグインの削除することを推奨いたします。 

    3. Elementor Website Builder

    脆弱性のあるバージョン2.8.4以下
    修正されたバージョン2.8.5
    最新バージョン3.0.14

    脆弱性の内容は、XSS(クロスサイトスクリプティング)の危険性があるという事でした。

    飛ぶ鳥を落とす勢いの、大人気プラグインですね。

    最近頂くサイト制作依頼の中で、このプラグインを導入したいというお客様は非常に多くなってきています。

    使い方に慣れてしまえば自由度も高く、便利なプラグインですね!

    ただ、私としてはこのプラグインに頼らずに、サイト内では共通したパーツを使いまわせるようにカスタマイズした方が良いと考えています。

    4. W3 Total Cache

    脆弱性のあるバージョン0.9.7.3以下
    修正されたバージョン0.9.7.4
    最新バージョン0.15.2

    脆弱性の内容は、上記同様にXSSでした。

    こちらのプラグインは、もはや説明不要ですね。

    なんかよく分からないけど入れてしまうプラグインランキング1位と言っても過言では無いかもしれません。

    キャッシュの最適化はパフォーマンスにおいて非常に重要となりますが、プラグインに頼らずにできる限り自分で行う方がオススメです。

    giscoでは、サーバーキャッシュ、ブラウザキャッシュなどの設定代行も承っていますので、お気軽にご相談ください。

    5. NextGEN Gallery

    脆弱性のあるバージョン3.2.8
    修正されたバージョン3.2.10
    最新バージョン3.4.7

    脆弱性の内容は、SQLインジェクションでした。

    サイトの情報がデータベースから盗まれたり、ひどい場合はサイトURLを書き換えられてしまったりする恐れがあります。

    ギャラリープラグインの中でも有名どころでしたので、インストールされている方も多いのでは無いでしょうか。

    一時期、アクセスログを覗くとこのプラグインファイルに対して、おびただしい量のアクセスがありドン引きした事を覚えています。

    giscoでは、ギャラリーなどもプラグインを使わずに対応できます。

    6. FancyBox for WordPress

    脆弱性のあるバージョン3.0.2
    修正されたバージョン3.0.3
    最新バージョン3.3.0

    脆弱性の内容はXSSで、サイトにiframe、スクリプトを埋め込まれ、外部のサイトにアクセスを誘導されてしまうという内容でした。

    こちらのプラグインも、非常に多くの利用者がおり、かなりの数のWordPressサイトが感染してしまった事を覚えています。

    画像のポップアップはプラグインを使わずとも実装できます。
    ちなみにgiscoなら1万円程度で対応可能です。

    7. Redirection

    脆弱性のあるバージョン3.6.2
    修正されたバージョン3.6.4
    最新バージョン4.9.2

    脆弱性の内容は、CSRF(クロスサイトリクエストフォージェリ)でした。

    これは、セッション情報などを抜き取られ、ユーザーが意図しない処理を強制的に実行させられてしまうという攻撃方法で、掲示板などに勝手に犯行予告を書き込まれてしまったり、全く身に覚えのない商品購入をされてしまったりするものです。

    非常に恐ろしい攻撃手法ですので、ECサイトやコミュニティサイトなどを運営している場合は、まず一度確認した方がよいかもしれません。

    8. Contact Form 7 DatePicker

    こちらのプラグインは、有名プラグイン「Contact Form 7」のアドオンとして開発されたプラグインです。

    WordPress.org側でembedの許可が降りていないため、キャプチャとリンクのみの掲載とさせていただきます。

    https://wordpress.org/plugins/contact-form-7-datepicker/
    脆弱性のあるバージョン2.6.0以下
    修正されたバージョンなし
    最新バージョンなし

    脆弱性の内容は、権限エスカレーションです。

    アプリケーションやファイル、フォルダなどが持つ権限を改ざんするという攻撃方法です。

    危険度が非常に高いため、もしご自分のサイトでインストールされている場合は、今すぐに削除する必要があります。

    まとめ

    WordPressには様々なプラグインが公開されていますが、安易にインストールし数を増やしてしまうと、重大なセキュリティリスクを負ってしまう事に繋がりかねません。

    アップデートにより、画面が真っ白になってしまった!という方は、以下の記事を参考にしてください。

    カスタマイズや機能追加は、プロに任せてしまうのが最も安心です。
    giscoでは、どんなカスタマイズでも承っておりますので、是非お気軽にご相談ください!

  • WordPressで最低限やっておくべきセキュリティ対策5つ

    WordPressで最低限やっておくべきセキュリティ対策5つ

    WordPressを使用したサイトはセキュリティが弱い。

    なんて話をよく聞くことがありますが、本当にそうでしょうか?

    WordPressは世界で最も利用されているCMSで、インターネット上の39%のサイトがWordPressで出来ています

    相対数が多いのでハッキングの対象になりやすい傾向はあるものの、CMS本体としてのセキュリティに問題があるケースは多くありません。

    また、WordPressはマイナーバージョンアップが頻繁に行われており、アップデートを都度行っておけば、常にセキュリティを高く保つことが出来ます。

    ハッキングされてしまう多くの原因は別のところにあり、以下の項目を対策していなければ、どのCMSを使おうが全く同じ結果になることでしょう。

    1. ユーザー名・パスワードの見直し

    これは、WordPressだけではなくFTP等にも言える事ですが、もしユーザー名が「admin」だとしたら1年以内にサイトがハッキングされるかもしれません。

    ブルートフォースアタック(総当たり攻撃)によって試行されるユーザーリストの最上位のユーザー名が「admin」でしょう。

    最悪なケース「admin」

    そうならないためにも、まずはWordPressのユーザー名、パスワードを変更してください。

    以下のようなサイトでランダムに生成する事が出来ますので、なるべく強固なパスワードを生成する事でハッキングのリスクを最小限に抑えることが出来ます。

    https://www.luft.co.jp/cgi/randam.php

    2. プラグインの精査

    今、あなたのサイトで有効化されているプラグインは何個ありますか?

    プラグインは非常に便利な反面、数が増えれば増えるほどセキュリティのリスクは高くなります。

    本当に必要なプラグインだけ残して、昔からなんとなく有効化されていたプラグインは停止するべきです。

    「停止中」「更新可能」が無い状態が理想です。

    また、プラグインは定期的に更新していく必要がありますので、極力最新版を使うようにしましょう。

    こちらの記事では、脆弱性が発見されたプラグインについて記載しています。
    該当するプラグインをインストールしている場合は、ただちにアップデートしてください。

    3. 常時SSLで通信する

    近頃では、http://~から始まるウェブサイトは少なくなってきましたが、まだまだ存在しているようです。

    http://~での通信は、全ての情報が平文で送られているため、外部から情報を掠め取る事も、覗き見る事も出来てしまいます。

    セキュリティ上良く無いだけでなく、SEOにも悪影響を及ぼしますので、今すぐにでもSSLを導入しましょう。

    SSLには様々な種類がありますが、Let’s Encryptは誰でも無料で利用する事ができます。

    無料で利用できるSSL証明書「Let’s Encrypt」

    ただ1点、他のSSL証明書と違い更新期間が短いので、自動更新の設定をしておいた方が良いですね。

    4. wp-config.phpを移動

    通常であれば、サーバーのドキュメントルート直下にwp-config.phpを置いてある事が多いと思います。

    この状態は実は危険で、過去に一度.htaccessを書き換えられた結果phpファイルを表示できる状態にされてしまい、世界中にデータベース情報が流出していたお客様もいらっしゃいました。

    そこで、Webの公開ディレクトリ以外にwp-config.phpを置く事で、多少なりともセキュリティリスクを抑えるできます。

    Webの公開ディレクトリが「/var/www/public_html/」であれば、「/var/www/wp-config.php」となるように移動させます。

    wp-config.phpは、wp-load.phpにより読み込まれるのですが、ABSPATH(ドキュメントルート)にwp-config.phpが見つからない場合、dirname()によりひとつ上のディレクトリを探しに行くよう書かれています。

    *
     * If wp-config.php exists in the WordPress root, or if it exists in the root and wp-settings.php
     * doesn't, load wp-config.php. The secondary check for wp-settings.php has the added benefit
     * of avoiding cases where the current directory is a nested installation, e.g. / is WordPress(a)
     * and /blog/ is WordPress(b).
     *
     * If neither set of conditions is true, initiate loading the setup process.
     */
    if ( file_exists( ABSPATH . 'wp-config.php' ) ) {
    
    	/** The config file resides in ABSPATH */
    	require_once ABSPATH . 'wp-config.php';
    
    } elseif ( @file_exists( dirname( ABSPATH ) . '/wp-config.php' ) && ! @file_exists( dirname( ABSPATH ) . '/wp-settings.php' ) ) {
    
    	/** The config file resides one level above ABSPATH but is not part of another installation */
    	require_once dirname( ABSPATH ) . '/wp-config.php';
    
    } else {
    ///

    データベースへの接続情報は主にwp-config.phpに記述されていますので、とにかくこのファイルを閲覧できないようにする工夫が必要となります。

    5. 管理画面からのファイル編集を禁止

    WordPressには管理画面から直接ファイルを編集する機能が備わっています。

    管理画面にログイン後、「外観」→「テーマエディター」で表示される画面です。

    テーマエディター画面

    最初の項目と関連しますが、安易なユーザー名とパスワードによりログイン画面が突破されてしまった場合、悪意をもったコードをここから埋め込まれる可能性があります。

    安全のためにも、この画面からの編集を禁止してセキュリティリスクを減らしましょう。

    お使いのテーマのfunctions.phpをエディタで開き、下記のコードを最終行に追記します。

    define( 'DISALLOW_FILE_EDIT', true );

    管理画面へ戻り、「外観」のサブメニューの中から「テーマエディター」が消えていればOKです。

    まだまだ対策方法はありますが、「最低限」の対策ですので、近日中に続編を投稿致します!

    面倒な設定が多いので、個人でブログをやっている方には少し難しい内容も含まれると思います。

    WordPress制作のgiscoでは、セキュリティの対策代行や、ご相談を承っております!

    是非お気軽にご連絡ください!