前書き
WordPressは、無料でオープンソースの非常に堅牢なコンテンツ管理システム(CMS)です。 誰でもコメントしたり、アカウントを作成したり、WordPressに投稿したりできるため、多くの悪意のある攻撃者は、ブルートフォース攻撃によってWordPressサイトを侵害およびスパムするボットとサーバーのネットワークを作成しました。 ツールFail2banは、DropletとWordPressサイトの両方への不正アクセスを防ぐのに役立ちます。 不審または繰り返しログインに失敗したことに注意し、Dropletのファイアウォールルールを変更することにより、それらのIPを予防的に禁止します。
このガイドでは、Ubuntu 14.04 LAMPサーバーでFail2banのバージョン0.9.3を使用し、スパムログプラグインを使用してWordPressと統合します。
前提条件
このガイドを完了するには、次のものが必要です
-
the one-click WordPress instanceまたはyour own WordPress Dropletを使用する1つのUbuntu 14.04ドロップレット
-
管理タスク用のsudo特権で構成された非rootユーザー。 Ubuntu 14.04 initial server setup guideをたどることで、これを設定する方法を学ぶことができます。
-
このHow To Install and Use Fail2ban on Ubuntu 14.04 tutorialに従って、Fail2banをセットアップおよび構成します。
-
How To Configure Secure Updates and Installations in WordPress on Ubuntuのガイドに従ってください
[[step-1 -–- installing-the-wordpress-fail2ban-plugin]] ==ステップ1-WordPressFail2banプラグインのインストール
まず、ブラウザでhttps://your_server_ip/wp-admin
にアクセスし、WordPressのインストール時に作成した管理者資格情報を使用して、WordPressサイトにログインします。 ログインすると、次の画面が表示されます。これはWordPressダッシュボードです。
左側のサイドバーでPluginsという単語を探します。これは、サイドバーの約半分に表示されます。 Pluginsをクリックすると、次の画面が表示されます。
上部の右側のセクションで、Add Newをクリックできます。 これにより、サイトをカスタマイズ、セキュリティ保護、または拡張できる新しいプラグインをWordPressサイトに追加できます。 この場合、Fail2banプラグインを検索します。 次の画面は次のように表示されます。
検索フィールドにFail2banと入力し、キーボードのENTER
を押します。 結果は、いくつかのプラグインを示す画面を返すはずです。インストールするプラグインはWP fail2banです。
Install Nowをクリックしてインストールを開始すると、Activate PluginとReturn 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インスタンスは、不正なログイン試行、コメントスパム、サイトへの侵入に対してはるかに堅牢で安全になりました。