毎日、インターネット上のすべてのサイトに大量のボットが訪れます。その中には、YandexやGoogleのような重要なボットもあれば、潜在的に危険なボットも含まれています。ウェブサーバーのログを分析すると、不審なイベントが見つかることがあります。最近では、ソーシャルエンジニアリング(ソフトウェアそのものの脆弱性ではなく、開発者や管理者によるミスや不備を狙う手法)を利用したハッキングが増加しています。今回は、バックアップファイルやphpMyAdminを検索するボットをブロックする方法をご紹介します。この対策には、Fail2Ban、フィルタ、およびルール(ジェイル)を使用します。作業はCentos 7で行いました。
バックアップファイルを検索するボット
ボットは、ルートから典型的なフォルダに至るまでアーカイブ形式のバックアップファイルを探します。バックアップファイルが見つかると、その情報はおそらくボットの所有者に送信されます。バックアップファイルには、サイトへのアクセスを可能にするファイルやデータベースが含まれていることが多いです。これらのファイルは、サーバーやホスティング間のサイト移行後に削除されずに残されていることがよくあります。
フィルタを追加します
backup-scan.local
[Definition]
failregex = ^ - - .*./(backup.tgz|backup.zip|backup.tar) HTTP/1.0" 404|301 ignoreregex =
ルールを追加します:
[backup-scan]
enabled = true
filter = backup-scan
action = iptables-multiport[chain="INPUT", name="backup-scan", port="http,https", protocol="tcp", blocktype="REJECT --reject-with icmp-port-unreachable"]
sendmail[dest="admin-mail@domain.tld", sender="fail2ban", sendername="Fail2Ban", name="backup-scan"]
logpath = /var/www/vhosts/system/*/logs/accesslog
maxretry = 5
試行回数を減らすことで、感度を大幅に向上させ、ウェブサービスへの負荷を軽減できます。サイト所有者には、サーバー上のすべてのアーカイブ形式のバックアップファイルを削除することをお勧めします。ボットは、ドメイン名を含むアーカイブも検索するため、ここでは基本的なルールを提示しています。
phpMyAdmin、ルートキット、バックドアを検索するボット
これらのボットは、phpMyAdminのインストールを探し、その脆弱性を狙った攻撃やパスワードクラックを試みます。phpMyAdminは非常に人気のあるデータベース管理ツールであり、バージョンや設定に応じて定期的に攻撃を受けることがあります。
フィルタを追加します:
phpmyadmin.local
[Definition]
failregex = ^ - - ../(phpmyadm1n|mysqladmin)/index.php
^ - - ../(pma.php|pmd_online.php|db_pma.php) HTTP/1.0" (404|301|200)
ignoreregex =
フィルタでは2つの条件を指定しています。2つ目の条件は、侵入されたサイトに設置された不正スクリプト(ルートキットやバックドア)を探すボットもブロックします。
ルールを追加します:
[phpmyadmin-scan]
enabled = true
filter = phpmyadmin
action = iptables-multiport[chain="INPUT", name="phpmyadmin", port="http,https", protocol="tcp", blocktype="REJECT --reject-with icmp-port-unreachable"]
sendmail[dest="admin-mail@domain.tld", sender="fail2ban", sendername="Fail2Ban", name="phpmyadmin-scan"]
logpath = /var/www/vhosts/system/*/logs/accesslog
maxretry = 5
設定内のメールアドレスを自分のものに変更することを忘れないでください。このアドレスに、ルール、IPアドレスに関する通知が送信されます。ログファイルのパスも確認し、自分のパスを指定する必要があります。この場合、異なるフォルダに配置された複数のログファイルが処理されますが、必要に応じて複数のログファイルを指定できます。phpMyAdminを使用した後は、読み取り権限を削除してアクセスできないようにすることをお勧めします。頻繁に使用する場合は、htaccessとhtpasswdを使用して、ウェブサーバーレベルでパスワード保護を追加することも可能です。