Ubuntu 14.04でFail2Banを使用してWordPressを保護する方法

前書き

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

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

前提条件

このガイドを完了するには、次のものが必要です

[[step-1 -–- installing-the-wordpress-fail2ban-plugin]] ==ステップ1-WordPressFail2banプラグインのインストール

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

Dashboard screen

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

Plugin

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

Add New Search

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

Fail2ban

Install Nowをクリックしてインストールを開始すると、Activate PluginReturn to Plugin Installerの2つのプロンプトが表示されます。 Activate Pluginを選択すると、ブラウザはインストールされているプラ​​グインのリストに戻り、新しいWP fail2banプラグインがリストに含まれます。 この時点で、View detailsをクリックして、新しいプラグインに関する詳細情報を表示できます。 コンテンツやコメントでWordPressサイトをスパムするために使用される可能性のある特定のユーザーのブロックなど、機能を有効にする方法を理解するのに役立つFAQもあります。

[[step-2 -—- applying-the-wordpress-filter-to-fail2ban]] ==ステップ2—WordPressフィルターをFail2banに適用する

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

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

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

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

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

sudo nano /etc/fail2ban/jail.local

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

[wordpress-hard]

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

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

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

sudo service fail2ban restart

[[step-3 -–- ignoring-login-attempts-from-your-computer]] ==ステップ3–コンピューターからのログイン試行を無視する

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

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

curl ipecho.net/plain ; echo

それ以外の場合は、http://checkip.dyndns.orgにアクセスして、コンピューターのパブリックIPアドレスを確認してください。 WordPressサイトの他のユーザーが別の場所にいる場合は、そのアドレスも検索できます。

jail.localを開いて再度編集します。

sudo nano /etc/fail2ban/jail.local

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

ignoreip = 127.0.0.1/8 your_computer_ip

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

[[step-4 -–- testing-the-filter]] ==ステップ4–フィルターのテスト

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

このFail2ban jailステータスを使用して、ログインが成功したことをフィルターが記録しなかったことを確認できます。

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行の出力が表示されます。

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がサイトへのアクセスをブロックするようにします。

[[step-5 -–- rotating-your-log-files]] ==ステップ5–ログファイルの回転

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

sudo nano /etc/logrotate.conf

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

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

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

結論

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

Related