Backdrop CMSへの不正アクセス対策『IP address blocking』と『Antiscan』

Backdrop CMSでは最近のログメッセージを閲覧できる機能があります。

上部メニューバーの「レポート」の中に「最近のログメッセージ」という項目があるので、クリックすると閲覧できます。

今回は偶然このページを開いてみただけだったのですが、ログインしないと見られないサイトのはずがAnonymous (未承認ユーザー)によるアクセスが異常に多かったため、不審に思って調べてみました。

よく見ると「wp-content/plugins/WordPressCore/include.php」「wp-includes/~」など、wordpress内にあるようなファイルをURLで直接指定してアクセスしようとしたのかな、と思わせる動きをしています。Wordpressではブルートフォースアタックなど日常茶飯事なので(Limit Login Attempts Reloadedなどのセキュリティ系プラグインを入れると痛感します)、Backdrop CMSで構築されたサイトにも同様のアタックを仕掛けてきているんだろうなぁという印象。

↓各行のリンクをクリックすると詳細が見られます。

当該サイトはログインしないと1ページも見られないようにしてあるので、URLから直接アクセスしようとしたところで何も表示はされないでしょう。しかしなんとなく気持ち悪い感じもあり、セキュリティ対策がないか調べました。

モジュール「IP address blocking」と「Antiscan」

https://backdropcms.org/project/ip_blocking

管理用バー>機能>モジュールの新規追加 から「IP address blocking」で検索してインストールし、有効化します。

※このモジュールを有効化すると、前述の「最近のログメッセージ」に以下のような警告文が現れることがあります。

Warning: Cannot modify header information – headers already sent by (output started at /core/includes/bootstrap.inc:3132) in ip_blocking_boot() (line 113 of /modules/contrib/ip_blocking/ip_blocking.module)

これを回避するには 管理用バー>設定>開発>パフォーマンス で「Use background fetch for cached pages」のチェックを外して「設定を保存」ボタンをクリックすればOKだそうです。

「Antiscan」はサーバ内の特定のファイルにアクセスしようとしてきたIPアドレスを自動でブロックしてくれるモジュールです。

「Antiscan」は上記の「IP address blocking」モジュールに追加して使用するモジュールで、サイト内の特定のファイルにアクセスしたユーザーを自動でブロックできるようになります。

Antiscanの設定にはhttps://(自分のサイトアドレス)/admin/config/people/antiscanからアクセスします。Restricted path patternsという欄に特定のファイル(実際に存在するかしないかは関係ない)を追加で記述することができます。デフォルトでは「elrekt,eval-stdin.php,/fck,phpmyadmin,/wp-*,wlwmanifest.xml,xmlrpc.php,」というファイルやディレクトリが制限対象(この対象にアクセスしたIPを不正とみなす)として登録されていますが、自分で追加したり削除したりすることが可能です。当該サイトでは「/wordpress」「/wp」「/demo」「ads.txt」なども追加しました。

不正なアクセスなのかこちらの不具合なのかよくわからないアクセスも存在

不審なログはかなり減りましたが、「必要なファイルがサーバになくアクセスできない」「単なるリンク切れ」という可能性も捨てきれないログがまだ多数あります。

例えば

  • themes/テーマ名/images/add.png
  • apple-touch-icon-precomposed.png
  • files/js/js_HnyXfIHO8njQaDRdL_YMpkqmXX6x6VJK-tX1XI290sX.js

など。

他に調べてみてもいまいち不正アクセスなのか判断できないものがあります。そんな時はログメッセージの詳細ページからそのURLにアクセスしたIPアドレスをコピーし、「AbuseIPDB」というサイトで検索してみると参考になるかもしれません。

AbuseIPDBはWordpressやBackdrop CMSなどに不正アクセスしてくるIPアドレスがデータベースとして提供されている、IPアドレスのブラックリストのようなものです。このサイトで検索して「found in our database!」と表示されれば不正アクセスを繰り返しているIPアドレスだとわかるので、判断材料としてはかなり強力だと思います。

Antiscanで自分がブロックされてしまった場合

前述の通り、Antiscanの設定ページ(https://(自分のサイトアドレス)/admin/config/people/antiscan)ではデフォルトの制限対象を自分で追加することができますが、この際に失敗して全ての訪問者のIPアドレスがブロックされるという現象が起こってしまいました。今回の原因は制限対象の記述欄内で気づかないうちに改行が入ってしまっており、制限対象に¥r¥nという文字列が挿入されてしまっていたことでした。トップページにアクセスしただけでもブロックされるようになり、完全に「詰み」の状態です。

この時はまず制限対象が記載されているサーバ上のファイルを書き換えて、原因と思われる記述を削除します。

自分のBackdropサイトにFTPで接続し、ルート/files/config_(英数字の羅列)/active/antiscan.settings.jsonを開きます。

この部分の怪しい部分を修正・削除したり、デフォルトに戻すなどします。

次にphpMyAdmin(など)でデータベースのテーブル「blocked_ips」を確認し、制限対象として想定していないURLを含むレコードにチェックを入れ、削除します。

これでブロックが解除され、無事サイトにアクセスできるようになりました。

トップに戻る