序章

WordPressは、無料でオープンソースの非常に堅牢なコンテンツ管理システム(CMS)です。 誰でもコメントしたり、アカウントを作成したり、WordPressに投稿したりできるため、多くの悪意のある攻撃者が、ブルートフォース攻撃によってWordPressサイトを侵害し、スパムを送信するボットやサーバーのネットワークを作成しています。 ツールFail2banは、DropletとWordPressサイトの両方への不正アクセスを防ぐのに役立ちます。 疑わしいまたは繰り返されるログインの失敗を記録し、Dropletのファイアウォールルールを変更することでこれらのIPを積極的に禁止します。

このガイドでは、Ubuntu 14.04 LAMPサーバーでバージョン0.9.3のFail2banを使用し、スパムログプラグインを使用してWordPressと統合します。

前提条件

このガイドを完了するには、

ステップ1-WordPressFail2banプラグインをインストールする

まず、次のURLにアクセスしてWordPressサイトにログインします https://your_server_ip/wp-admin ブラウザで、WordPressのインストール中に作成した管理者の資格情報を使用します。 ログインすると、WordPressダッシュボードである次の画面が表示されます。

dashboard screen

左側のサイドバーでPluginsという単語を探します。これは、サイドバーのほぼ半分に表示されます。 プラグインをクリックすると、次の画面が表示されます。

plugin add new

上部の右側のセクションで、[新規追加]をクリックできます。 これにより、サイトをカスタマイズ、保護、または拡張できる新しいプラグインをWordPressサイトに追加できます。 この場合、Fail2banプラグインを検索します。 次の画面は次のように表示されます。

add new search

検索フィールドにFail2banと入力し、を押します。 ENTER キーボードで。 結果は、いくつかのプラグインを示す画面を返すはずです。インストールするプラグインは WPfail2banです。

fail2ban plugin

[今すぐインストール]をクリックしてインストールを開始します。ここで、プラグインのアクティブ化プラグインインストーラーに戻るの2つのプロンプトが表示されます。 プラグインのアクティブ化を選択すると、ブラウザはインストールされているプラグインのリストに戻り、新しい WPfail2banプラグインがリストに含まれます。 このとき、詳細を表示をクリックして、新しいプラグインの詳細を表示できます。 コンテンツやコメントでWordPressサイトをスパムするために使用される可能性のある特定のユーザーのブロックなどの機能を有効にする方法を理解するのに役立つFAQもあります。

ステップ2—WordPressフィルターをFail2banに適用する

このWordPressプラグインには、新しいカスタムFail2banフィルターが含まれています。 このステップでは、Fail2banがsyslogに送信される認証ログを正しく解析して使用できるように、そのフィルターをインストールします。

まず、フィルターをWordPressプラグインディレクトリから適切なFail2banフィルターの場所に移動します。 保護を強化するために、「ハード」WordPressフィルターを使用します。

  1. sudo cp /var/www/html/wp-content/plugins/wp-fail2ban/filters.d/wordpress-hard.conf /etc/fail2ban/filter.d/

あなたの新しいと wordpress-hard.conf フィルタを適切に配置すると、ファイルを編集して、Fail2banが適切な認証ログを指すようにできます。 /etc/fail2ban/jail.local. Fail2banのjailは、IPアドレスのフィルターを提供する一連のルールとアクションを指します。

ファイルを開く jail.local nanoまたはお気に入りのテキストエディタを使用します。

  1. sudo nano /etc/fail2ban/jail.local

ファイルが開いたら、一番下までスクロールして、最後に次の行を追加します。 これらの行はプラグインを有効にし、フィルターを wordpress-hard.conf 以前にコピーしたフィルター filters.d ディレクトリで、アクセス試行の適切なロギング宛先を設定し、このトラフィックが着信することを指定します httphttps ポート。

[wordpress-hard]

enabled = true
filter = wordpress-hard
logpath = /var/log/auth.log
maxretry = 3
port = http,https

ファイルを保存して閉じます。

次に、ターミナルで次のコマンドを実行して、Fail2banを再起動し、新しいフィルターが適切に配置されていることを確認できます。

  1. sudo service fail2ban restart

ステップ3–コンピューターからのログイン試行を無視する

偶発的な認証の失敗によってあなたや他の既知のユーザーが禁止されるのを防ぐために、自分のローカルコンピューターのパブリックIPアドレスを無視することをお勧めします。

LinuxベースのOSを使用している場合は、次のコマンドを使用します。

curl ipecho.net/plain ; echo

それ以外の場合は、 http://checkip.dyndns.org コンピュータのパブリックIPアドレスを決定します。 別の場所にWordPressサイトの他のユーザーがいる場合は、そのユーザーのアドレスも検索することをお勧めします。

開ける jail.local 再度編集する場合:

  1. sudo nano /etc/fail2ban/jail.local

次の行は、WordPressにアクセスしたい既知のホストの値を互いに区切るスペースを使用して、ローカルサーバーIP(localhost)で始まる無視されたIPアドレスを一覧表示します。 これを、WordPressプラグインのセットアップ手順で追加したignoreipステートメントの下のDEFAULTセクションに追加します。

ignoreip = 127.0.0.1/8 your_computer_ip

エディターを保存して終了します。

ステップ4–フィルターのテスト

フィルタが機能しているかどうかをテストするには、WordPressサイトの wp-admin サイトからログアウトして、再度ログインします。

このFail2banjailステータスを使用して、ログインの成功がフィルターによって記録されていないことを確認できます。

  1. sudo fail2ban-client status wordpress-hard

次のような結果が表示されます。

Status for the jail: wordpress-hard
|- filter
|  |- File list:	/var/log/auth.log 
|  |- Currently failed:	0
|  `- Total failed:	0
`- action
   |- Currently banned:	0
   |  `- IP list:	
   `- Total banned:	0

あなたが見るなら auth.log ファイルの場合、ファイルの下部にログインが成功したことが表示されます。 tail これにより、出力の最後の10行が表示されます。

  1. sudo tail /var/log/auth.log

成功した認証は次のように表示されます。

Month Day Hour:Minute:Second your_server wordpress(your_server_ip)[PID]: Accepted password for admin from your_computer_ip

許可されていないユーザーまたは認証の失敗がログに表示された場合、新しいプラグインは、ファイアウォールルールを適切に変更することにより、このIPがサイトにアクセスするのを確実にブロックします。

ステップ5–ログファイルのローテーション

WordPressサイトで不正なログインが大量に試行され、ログファイルが急速に増加している場合は、ファイルを編集して、ログファイルをローテーションして新しいログファイルにすることができます。 /etc/logrotate.conf.

  1. sudo nano /etc/logrotate.conf

これらの行を追加して、ファイルの最大サイズ、ログのアクセス許可、および週数を設定します。 たとえば、更新される前にファイルが存在する週数として4を設定できます。

/var/log/auth.log {
    size 30k
    create 0600 root root
    rotate 4
}

ファイルを適切に保存して終了します。

結論

このガイドの手順に従って、Fail2banプラグインをインストールして構成し、ローカルIPアドレスを除外して、作業をテストしました。 また、ログファイルが無期限に大きくならないようにログローテーションを設定します。 これで、WordPressインスタンスは、不正なログイン試行、コメントスパム、およびサイトへの侵入に対して、はるかに堅牢で安全になります。