デフォルトのWordPressインストールを保護するにはどうしますか?
どのチェックリストを使用していますか、ベストプラクティス、ヒント、トリックなど。
プラグイン、サードパーティツールに関する推奨事項は大歓迎です。
コアルールセットを使用したModSecurityは悪くありませんが、アプリが受け取るすべての入力に対して明示的に構成し、アウトバウンドで送信するエスケープされていない出力を修正することをお勧めします。これはフルプロキシモードで最適に機能しますが、埋め込みには他にもいくつかのユニークな利点があります。特にWordpressはめちゃくちゃ安全ではないので、両方を使用するのは賢明かもしれません。
1つのステップは、サーバー(通常はApache)を保護することです。これは、前の質問の回答 Apacheサーバーの強化 で概説されています。
.htaccess
ファイルIPアドレスでwp-adminディレクトリをロックダウンできます。つまり、指定したIPアドレスのみが管理ダッシュボードURLにアクセスできます。上記のすばらしいアドバイスに加えて、私は別の提案をします:私は最近、Wordpressプラグインを公開しました。これが役立つかもしれません。私はそれをForesight。Wordpressプラグインディレクトリからダウンロードできます:
http://wordpress.org/extend/plugins/foresight/
(これも githubでミラー化 です。)
プラグインは非常にシンプルです。管理者としてログインすると、サイドバーの[ツール]セクションに「Foresight」リンクをロードするだけです。そのリンクをクリックすると、一連のタブ付きiframeが表示され、それぞれに最新のWordpressエクスプロイトが以下の人気のあるエクスプロイトトラッカーで見つかったエクスプロイトを表示します。
このツールは特に派手なものではありません。 (私はそれを賢い管理者のためのばかげたツールと思います)、それは最終的にはたくさんのiframeをロードするだけであるということです。これを使用するには、定期的にロードしてエクスプロイトを参照し、使用するWordpressコアまたはプラグインのエクスプロイトに目を離さないでください。そのようなエクスプロイトを見つけた場合は、続行する最善の方法に関するインテリジェントな決定を行います。
このプラグインを作成したのは、最近のTimThumbの大失敗の後、多くのWordpress管理者がエクスプロイトトラッカーを監視していないことが明らかになったためです。そうするのは簡単です。
私も私の答えを追加します:
[〜#〜] https [〜#〜]を使用します(「Let's encrypt」による無料のsslも存在します)。
不明/パブリックPC/WIFIインターネットに資格情報を入力しない(インターネットをオンザフライで必要とする場合、モバイルからラップトップにインターネットを共有します)
安全なパスワードの使用
1人の管理者(自分)だけがいて、他の人を編集者として割り当てるなど...
毎日のニュースについて wpvulndb.com を購読する。
Pen-Testプラグイン( these など)でサイトをチェックする。
Two-Way Authorizationプラグインを使用します。
Nicename
とDisplayName
を変更します-username
とは異なる値に設定します。
ログインページの警告を無効にする(iThemesプラグインを使用)
ブルートフォースブロック(iThemesプラグインを使用)
wp-admin
urlを変更(iThemesプラグインを使用)
ダッシュボードからのPLUGIN/THEMEファイルの変更を無効にする(iThemesプラグインを使用)
場合によっては、IP LOGIN RESTRICTORプラグインを使用します(/wp-admin
領域にページを入力しようとすると、許可されていないすべてのIPをブロックします。
セキュリティプラグイン(iThemesなど)のインストール。
特定のサイトが非常に重要である場合、私はpluginsとテーマ**のみを使用します。これは、セキュリティのために行ごとに確認したソースです。
CORE&PLUGINS&THEMESの自動更新を有効にします!
「不良IP/botをブロック」プラグインを使用します。
アクティビティプラグインをインストールして、アクティビティを時々検査します。
他の国から誰かが入国した場合は、IPのログインレコードを確認してください。
公衆インターネットを使用している場合はログアウトします。
誰かが双方向認証、wp-admin
バックエンドの難読化、または以下を使用したその他の制限を回避する可能性があります:
「COOKIE Brute forcing」(ユーザーパスワードチェックの代わり)。
AndroidのWordPressアプリ(WPに接続する方法があるため、2要素の詳細を尋ねる必要はありません)
JSON-APIコマンド(2要素の詳細などは要求しません...)
役に立たない「ヒント」:
あなたはこれらのいくつかを聞いたかもしれませんが、それらは役に立たないです:
ソース内のwp-*
リンクを非表示にします(まったく役に立たないため、誰かがファイルをチェックするだけです(つまり、example.com/wp-settings.php
で200 HTTPコードをチェックします)。
非表示WordPress version/readme(役に立たない。誰かがサイトのソースをチェックして、使用しているバージョンを理解しているためです)
管理者の変更username(役に立たない、誰でもあなたのユーザー名を表示できます:yoursite.com/wp-json/wp/v2/users
私がトップで言ったことをしない限り)
iThemes Securityプラグイン は、ログイン名、データベースプレフィックス、ソルトの変更、さらには管理領域とログインページの変更/非表示などを行うのに非常に適しています。権限の確認にも適しています。
Jetpackプラグインを使用して「保護」をオンにした場合でも、DoS攻撃にさらされるxmlrpc.phpを保護する方法については、あまり見たことがないものがあります。 WordPressのIP範囲によるxmlrpc.phpアクセスのみを許可するために、このコードを.htaccessまたはApacheファイルに配置することがわかりました。
<files xmlrpc.php="">
Order Deny,Allow
Deny from all
Allow from 192.0.64.0/18
Satisfy All
ErrorDocument 403 http://127.0.0.1/
</files>
うまくいけば、これが役に立ちますか、おそらく誰かがxmlrpc.phpを保護するより良い方法を知っていますか?
このトピックには 数百の記事 があります。以下の記事をお読みください。
http://wp.tutsplus.com/tutorials/11-quick-tips-securing-your-wordpress-site/
http://www.problogger.net/archives/2011/08/11/take-5-minutes-to-make-wordpress-10-times-more-secure/
http://wp.smashingmagazine.com/2011/11/10/securing-your-wordpress-website/
http://www.makeuseof.com/tag/security-makeover-wordpress-site-websitedefender/
http://www.makeuseof.com/tag/18-useful-plugins-and-hacks-to-protect-your-wordpress-blog/
余裕がある場合は、専用のサーバーをレンタルして、同じサーバーでホストされている他の侵害されたWebサイトが影響を受けないようにします。 Webサイトのセキュリティを確保するためにできる限りのことはできますが、ホストが古いバージョンのApacheまたはLinuxを使用している場合は、それだけで問題が解決する可能性があります。
プラグインのチェックサムやコードレビューを定期的に実行します。ハッカーがプラグインにシェルコードを挿入するのはよくあることです。シェルコードを期待したり、そこを探したりすることはなく、プラグインが実行されるたびに実行されるからです。インストールしたことを確認できないプラグインが見つかった場合は、それを削除します。プラグインが最後に変更された日付にも注意し、プラグインに加えた変更を文書化します。
パスワードを保存する必要がある場合は、安全に保管してください。ユーザーごとのソルトで強力なハッシュアルゴリズムを使用します(2つのソルトが同じであってはなりません)。ユーザーsalt(格納されている場合)は、別のデータベースにある必要があります。安全な方法でパスワードを保存する方法について この記事 (OSWASP)をお読みください。
データベースと言えば、最小特権ルールを使用します。ユーザーの資格情報が正しいかどうかを確認するには、root権限は必要ありません。
必ずすべてのユーザー入力に対して検証を実行してください。検索、登録フィールドなどの場合、これは簡単です。コメント/返信はそれほど多くありません。有効な入力のホワイトリストを設定し、その他すべてを制限します。たとえば、登録ページでは、ユーザー名フィールドでa-z、A-Z、0-9以外を許可する理由はありません。それ以外はすべて明示的に制限する必要があります。私の経験から、ウェブサイトに侵入する最も簡単な方法(WordPressかどうかにかかわらず)は、無能な検証を利用することです。ホワイトリストと文字エスケープを利用してください。
すべての攻撃ベクトルを説明します。 Wordpressインストールのみを実行している場合、それを保護することは比較的簡単です。ただし、将来的には、追加のプラグインとアプリケーション(フォーラム、eコマース、分析など)をインストールする可能性があります。次に、それらが最新の状態に保たれ、安全なパスワードがあることを確認する必要があります。
ロックアウトされる前にユーザーが試行できるログイン試行の回数を制限します。個人的には、適切な名前の " Limit Login Attempts "を使用していますが、 Login Lockdown など、かなりの数があります。一部の人々はまた、彼らのログインページでCAPTCHAを使います、それは好みの問題です。これにより、ブルートフォース攻撃(すでに不十分な侵入方法)が成功する確率を大幅に削減できます。オプションのロギングも有効にします。
追加情報が必要な場合は、遠慮なくご連絡ください。追加することはたくさんありましたが、あなたのエネルギーを節約するために削除することにしました;)
自己監査の場合、 plecost に注目してください。
戦術と戦略の非常に包括的なリストについては、必ず http://codex.wordpress.org/Hardening_WordPress をチェックしてください。あなたの質問に対する他の回答にも同様に役立つリンクがあります。十分なカバレッジがあると感じるまで、それぞれを順番に調べます。
また、インストールするプラグインとその数についても十分に注意してください。 WordPressは絶え間ない開発とピアレビューの下にありますが、同じことはこれらのプラグインの多くには言えません。それぞれのプラグインはセキュリティ上のリスクを表し、維持する必要があります。