Ubuntu14.04でFail2Banを使用してWordPressを保護する方法
序章
WordPressは、無料でオープンソースの非常に堅牢なコンテンツ管理システム(CMS)です。 誰でもコメントしたり、アカウントを作成したり、WordPressに投稿したりできるため、多くの悪意のある攻撃者が、ブルートフォース攻撃によってWordPressサイトを侵害し、スパムを送信するボットやサーバーのネットワークを作成しています。 ツールFail2banは、DropletとWordPressサイトの両方への不正アクセスを防ぐのに役立ちます。 疑わしいまたは繰り返されるログインの失敗を記録し、Dropletのファイアウォールルールを変更することでこれらのIPを積極的に禁止します。
このガイドでは、Ubuntu 14.04 LAMPサーバーでバージョン0.9.3のFail2banを使用し、スパムログプラグインを使用してWordPressと統合します。
前提条件
このガイドを完了するには、
-
ワンクリックWordPressインスタンスまたは独自のWordPressドロップレットを使用した1つのUbuntu14.04ドロップレット
-
管理タスク用のsudo権限で構成された非rootユーザー。 Ubuntu 14.04初期サーバーセットアップガイドに従って、これをセットアップする方法を学ぶことができます。
-
このUbuntu14.04チュートリアルにFail2banをインストールして使用する方法に従って、Fail2banをセットアップおよび構成します。
-
Ubuntu上のWordPressで安全なアップデートとインストールを構成する方法のガイドに従ってください
ステップ1-WordPressFail2banプラグインをインストールする
まず、次のURLにアクセスしてWordPressサイトにログインします https://your_server_ip/wp-admin
ブラウザで、WordPressのインストール中に作成した管理者の資格情報を使用します。 ログインすると、WordPressダッシュボードである次の画面が表示されます。
左側のサイドバーでPluginsという単語を探します。これは、サイドバーのほぼ半分に表示されます。 プラグインをクリックすると、次の画面が表示されます。
上部の右側のセクションで、[新規追加]をクリックできます。 これにより、サイトをカスタマイズ、保護、または拡張できる新しいプラグインをWordPressサイトに追加できます。 この場合、Fail2banプラグインを検索します。 次の画面は次のように表示されます。
検索フィールドにFail2banと入力し、を押します。 ENTER
キーボードで。 結果は、いくつかのプラグインを示す画面を返すはずです。インストールするプラグインは WPfail2banです。
[今すぐインストール]をクリックしてインストールを開始します。ここで、プラグインのアクティブ化とプラグインインストーラーに戻るの2つのプロンプトが表示されます。 プラグインのアクティブ化を選択すると、ブラウザはインストールされているプラグインのリストに戻り、新しい WPfail2banプラグインがリストに含まれます。 このとき、詳細を表示をクリックして、新しいプラグインの詳細を表示できます。 コンテンツやコメントでWordPressサイトをスパムするために使用される可能性のある特定のユーザーのブロックなどの機能を有効にする方法を理解するのに役立つFAQもあります。
ステップ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
フィルタを適切に配置すると、ファイルを編集して、Fail2banが適切な認証ログを指すようにできます。 /etc/fail2ban/jail.local
. Fail2banのjailは、IPアドレスのフィルターを提供する一連のルールとアクションを指します。
ファイルを開く jail.local
nanoまたはお気に入りのテキストエディタを使用します。
- sudo nano /etc/fail2ban/jail.local
ファイルが開いたら、一番下までスクロールして、最後に次の行を追加します。 これらの行はプラグインを有効にし、フィルターを wordpress-hard.conf
以前にコピーしたフィルター filters.d
ディレクトリで、アクセス試行の適切なロギング宛先を設定し、このトラフィックが着信することを指定します http
と https
ポート。
[wordpress-hard]
enabled = true
filter = wordpress-hard
logpath = /var/log/auth.log
maxretry = 3
port = http,https
ファイルを保存して閉じます。
次に、ターミナルで次のコマンドを実行して、Fail2banを再起動し、新しいフィルターが適切に配置されていることを確認できます。
- sudo service fail2ban restart
ステップ3–コンピューターからのログイン試行を無視する
偶発的な認証の失敗によってあなたや他の既知のユーザーが禁止されるのを防ぐために、自分のローカルコンピューターのパブリックIPアドレスを無視することをお勧めします。
LinuxベースのOSを使用している場合は、次のコマンドを使用します。
curl ipecho.net/plain ; echo
それ以外の場合は、 http://checkip.dyndns.org
コンピュータのパブリックIPアドレスを決定します。 別の場所にWordPressサイトの他のユーザーがいる場合は、そのユーザーのアドレスも検索することをお勧めします。
開ける jail.local
再度編集する場合:
- 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ステータスを使用して、ログインの成功がフィルターによって記録されていないことを確認できます。
- 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がサイトにアクセスするのを確実にブロックします。
ステップ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インスタンスは、不正なログイン試行、コメントスパム、およびサイトへの侵入に対して、はるかに堅牢で安全になります。