
Nginxは悪質なボット、スパムリファラーブロッカー、脆弱性スキャナー、ユーザーエージェント、マルウェア、アドウェア、ランサムウェア、悪意のあるサイトをブロックし、抗DDOS、Wordpressテーマ検出器のブロック、および常習犯向けのFail2Ban監獄を備えています。
| リポジトリ | スポンサーになる |
|---|---|
| スポンサーになると、あなたのロゴとドメインへのリンクがここに表示されます。このプロジェクトをスポンサーしたい場合は、[email protected] までメールしてください。現在、Github のスポンサープログラムでは南アフリカはまだサポートされていません。 | |
| https://ko-fi.com/mitchellkrog で私をサポートしてください |
ブロッカーが更新されたとき、または重要またはミッションクリティカルな(破損の可能性がある)変更が行われるときに通知を受け取れるよう、Github の通知を購読してください。
これは新しい推奨インストール方法です。このリポジトリに提供され、Alpine Linux のパッケージメンテナの1人である Stuart Cardall @itoffshore によって管理されている一連のシェルスクリプトを使用して行います。
以下の手順は、ブロッカーに必要なすべてのファイルをダウンロードし、nginx.conf と nginx .vhost ファイルに必要な include を追加するスクリプトを含む、迅速かつ手間のかからないインストールプロセスです。セットアップスクリプトは、vhost 設定ファイルが /etc/nginx/sites-available/ にあり、各 vhost 設定ファイルの拡張子が .vhost であることを前提としています。
手動インストールの手順については、https://github.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/blob/master/MANUAL-CONFIGURATION.md を参照してください。
setup-ngxblocker、install-ngxblocker、update-ngxblocker はすべて、コマンドラインからカスタムのインストール/更新場所を設定できます。(手順のステップ11で、これらのスクリプトと標準以外の Nginx ロケーションの使用方法を確認できます)
setup、install、update のいずれかのスクリプトを --help または -h 付きで実行すると、オプションを表示できます。
注意: Let's Encrypt SSL 証明書を使用している方には、Webroot Authenticator Method が推奨され、100%動作する方法です。httpチャレンジ方式を使用している人にいくつか問題があるようです。ただし、webroot は完璧に動作することを確認しています。現時点では、http-01 チャレンジ方式が certbot または nginx のバグなのかは不明です。
Nginx からの重複ネットワークレポートはバグではなく、修正することもできません。これはブロッカーの意図した動作です。IPブラックリストの毎日の更新により、一部の既知のIPとレンジがブラックリストに登録されます old value "1"。これらはロード順序の最後にある globalblocklist の最後でホワイトリストに登録され、既知の良好なIPが新しい value "0" に設定されてホワイトリストに登録されます。この方法はブロッカーの初日からこのままであり、今後もこのままです。これらは単純な [WARN] メッセージであり、[EMERG] メッセージではありません。Nginx の動作には一切影響しません。
install-ngxblocker を /usr/local/sbin/ ディレクトリにダウンロードし、スクリプトを実行可能にしてください。```sh sudo wget https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/install-ngxblocker -O /usr/local/sbin/install-ngxblocker sudo chmod +x /usr/local/sbin/install-ngxblocker
お使いのLinuxディストリビューションにwgetがない場合は、上記のwgetコマンドを以下のようにcurlを使用して置き換えることができます:```sh
curl -sL https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/install-ngxblocker -o /usr/local/sbin/install-ngxblocker
パッケージをインストールしてください。```sh pkg install www/nginx-ultimate-bad-bot-blocker
あるいは、portmaster 経由でインストール:```sh
portmaster www/nginx-ultimate-bad-bot-blocker
次に、install-ngxblocker スクリプトを DRY-MODE で実行します。これにより、スクリプトが行う変更と、ダウンロードするファイルが表示されます。これは単なる DRY-RUN であり、まだ変更は行われません。
install-ngxblocker は、セットアップスクリプトと更新スクリプトを含む、必要なすべてのファイルをダウンロードします。```sh cd /usr/local/sbin sudo ./install-ngxblocker
これにより、行われる予定の変更の出力が次のように表示されます
**(注: これはDRY-RUNのみであり、変更は一切行われていません)**```text
Checking url: https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/include_filelist.txt
** Dry Run ** | not updating files | run as 'install-ngxblocker -x' to install files.
Creating directory: /etc/nginx/bots.d
REPO = https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master
Downloading [FROM]=> [REPO]/conf.d/globalblacklist.conf [TO]=> /etc/nginx/conf.d/globalblacklist.conf
Downloading [FROM]=> [REPO]/conf.d/botblocker-nginx-settings.conf [TO]=> /etc/nginx/conf.d/botblocker-nginx-settings.conf
REPO = https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master
Downloading [FROM]=> [REPO]/bots.d/blockbots.conf [TO]=> /etc/nginx/bots.d/blockbots.conf
Downloading [FROM]=> [REPO]/bots.d/ddos.conf [TO]=> /etc/nginx/bots.d/ddos.conf
Downloading [FROM]=> [REPO]/bots.d/whitelist-ips.conf [TO]=> /etc/nginx/bots.d/whitelist-ips.conf
Downloading [FROM]=> [REPO]/bots.d/whitelist-domains.conf [TO]=> /etc/nginx/bots.d/whitelist-domains.conf
Downloading [FROM]=> [REPO]/bots.d/blacklist-user-agents.conf [TO]=> /etc/nginx/bots.d/blacklist-user-agents.conf
Downloading [FROM]=> [REPO]/bots.d/blacklist-ips.conf [TO]=> /etc/nginx/bots.d/blacklist-ips.conf
Downloading [FROM]=> [REPO]/bots.d/bad-referrer-words.conf [TO]=> /etc/nginx/bots.d/bad-referrer-words.conf
Downloading [FROM]=> [REPO]/bots.d/custom-bad-referrers.conf [TO]=> /etc/nginx/bots.d/custom-bad-referrers.conf
REPO = https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master
Downloading [FROM]=> [REPO]/setup-ngxblocker [TO]=> /usr/local/sbin/setup-ngxblocker
Downloading [FROM]=> [REPO]/update-ngxblocker [TO]=> /usr/local/sbin/update-ngxblocker
setup-ngxblocker、install-ngxblocker、update-ngxblocker はすべて、コマンドラインからカスタムのインストール/更新場所を設定できます。
setup、install、update のいずれかのスクリプトを --help または -h を付けて実行すると、オプションを確認できます。
次に、install スクリプトを -x パラメータを付けて実行し、リポジトリから必要なファイルをすべてダウンロードします。```sh cd /usr/local/sbin/ sudo ./install-ngxblocker -x
これにより、以下の出力が得られます:```text
Checking url: https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/include_filelist.txt
Creating directory: /etc/nginx/bots.d
REPO = https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master
Downloading [FROM]=> [REPO]/conf.d/globalblacklist.conf [TO]=> /etc/nginx/conf.d/globalblacklist.conf...OK
Downloading [FROM]=> [REPO]/conf.d/botblocker-nginx-settings.conf [TO]=> /etc/nginx/conf.d/botblocker-nginx-settings.conf...OK
REPO = https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master
Downloading [FROM]=> [REPO]/bots.d/blockbots.conf [TO]=> /etc/nginx/bots.d/blockbots.conf...OK
Downloading [FROM]=> [REPO]/bots.d/ddos.conf [TO]=> /etc/nginx/bots.d/ddos.conf...OK
Downloading [FROM]=> [REPO]/bots.d/whitelist-ips.conf [TO]=> /etc/nginx/bots.d/whitelist-ips.conf...OK
Downloading [FROM]=> [REPO]/bots.d/whitelist-domains.conf [TO]=> /etc/nginx/bots.d/whitelist-domains.conf...OK
Downloading [FROM]=> [REPO]/bots.d/blacklist-user-agents.conf [TO]=> /etc/nginx/bots.d/blacklist-user-agents.conf...OK
Downloading [FROM]=> [REPO]/bots.d/blacklist-ips.conf [TO]=> /etc/nginx/bots.d/blacklist-ips.conf...OK
Downloading [FROM]=> [REPO]/bots.d/bad-referrer-words.conf [TO]=> /etc/nginx/bots.d/bad-referrer-words.conf...OK
Downloading [FROM]=> [REPO]/bots.d/custom-bad-referrers.conf [TO]=> /etc/nginx/bots.d/custom-bad-referrers.conf...OK
REPO = https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master
Downloading [FROM]=> [REPO]/setup-ngxblocker [TO]=> /usr/local/sbin/setup-ngxblocker...OK
Downloading [FROM]=> [REPO]/update-ngxblocker [TO]=> /usr/local/sbin/update-ngxblocker...OK
必要なファイルはすべて、リポジトリから直接、Nginx上の正しいフォルダにダウンロードされました。
必ず、以下の2つのコマンドを実行して、セットアップスクリプトとアップデートスクリプトを実行可能に設定してください。これはステップ4以降に進む前に重要です。```sh sudo chmod +x /usr/local/sbin/setup-ngxblocker sudo chmod +x /usr/local/sbin/update-ngxblocker
**setup-ngxblocker、install-ngxblocker、update-ngxblocker はすべて、コマンドラインからカスタムのインストール / 更新場所を設定できます。**
**setup、install、update の各スクリプトを --help または -h を付けて実行すると、オプションを表示できます。**
************************************************
<img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/step-4.png"/>
次に、setup-ngxblocker スクリプトを DRY-MODE で実行します。これにより、どのような変更が行われるか、どのファイルがダウンロードされるかが表示されます。これは DRY-RUN のみであり、まだ変更は加えられません。```sh
cd /usr/local/sbin/
sudo ./setup-ngxblocker
これで以下のような出力が得られます(以下の出力は、nginx.confファイルに /etc/nginx/conf.d/* のデフォルトのincludeがすでに含まれていることを前提としています) 私が知っているすべてのNginxインストールには、全バージョンで配布されているnginx.confファイルにこのデフォルトのincludeが含まれています。```text Checking url: https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/include_filelist.txt
** Dry Run ** | not updating files | run as 'setup-ngxblocker -x' to setup files.
INFO: /etc/nginx/conf.d/* detected => /etc/nginx/nginx.conf inserting: include /etc/nginx/bots.d/blockbots.conf; => /etc/nginx/sites-available/mydomain2.com.vhost inserting: include /etc/nginx/bots.d/ddos.conf; => /etc/nginx/sites-available/mydomain2.com.vhost inserting: include /etc/nginx/bots.d/blockbots.conf; => /etc/nginx/sites-available/mydomain1.com.vhost inserting: include /etc/nginx/bots.d/ddos.conf; => /etc/nginx/sites-available/mydomain1.com.vhost
Whitelisting ip: x.x.x.x => /etc/nginx/bots.d/whitelist-ips.conf
このスクリプトは、あなたのIPをwhitelist-ips.confファイルにも自動的にホワイトリスト登録します。
追加のIPやIPレンジは、/etc/nginx/bots.d/whitelist-ips.conf にあるカスタマイズ可能な whitelist-ips.conf ファイルに追加できます。
**setup-ngxblocker、install-ngxblocker、update-ngxblocker はすべて、コマンドラインからカスタムのインストール/更新場所を指定して設定できます。**
**setup、install、update の各スクリプトを --help または -h を付けて実行すると、オプションを表示できます。**
************************************************
<img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/step-5.png"/>
次に、setupスクリプトを -x パラメータ付きで実行し、nginx.conf に必要な変更をすべて加え(必要な場合)、さらに必要なインクルードをすべてのvhostファイルに追加します。
この setup-ngxblocker スクリプトは、/etc/nginx/sites-available にあるすべてのvhostファイルの拡張子が .vhost であることを前提としています。すべてのvhost設定ファイルの拡張子を .vhost にするのは良い習慣ですが、既存の .conf などをそのまま使いたい場合は、`-e` パラメータを使用してvhostファイルの拡張子を指定するように setup-ngxblocker を変更して実行するだけです。
たとえば、vhostファイルの拡張子が .conf の場合は、次のように追加のコマンドラインパラメータを付けて setup-ngxblocker を実行します。
`sudo ./setup-ngxblocker -x -e conf`
それでは、setupスクリプトを実行して、Bot Blocker をすべてのサイトで有効にするために必要な変更をすべて加えてもらいましょう。```sh
cd /usr/local/sbin/
sudo ./setup-ngxblocker -x
次のような出力が表示されます:```text Checking url: https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/include_filelist.txt
INFO: /etc/nginx/conf.d/* detected => /etc/nginx/nginx.conf inserting: include /etc/nginx/bots.d/blockbots.conf; => /etc/nginx/sites-available/mydomain2.com.vhost inserting: include /etc/nginx/bots.d/ddos.conf; => /etc/nginx/sites-available/mydomain2.com.vhost inserting: include /etc/nginx/bots.d/blockbots.conf; => /etc/nginx/sites-available/mydomain1.com.vhost inserting: include /etc/nginx/bots.d/ddos.conf; => /etc/nginx/sites-available/mydomain1.com.vhost
Whitelisting ip: x.x.x.x => /etc/nginx/bots.d/whitelist-ips.conf
お気づきかもしれませんが、このスクリプトはテストベッドサーバー上のすべての .vhost ファイルにインクルードを追加し、さらに whitelist-ips.conf ファイルにご自身のIPアドレスをホワイトリスト登録しています。追加のIPまたはIPレンジは、/etc/nginx/bots.d/whitelist-ips.conf にあるカスタマイズ可能な whitelits-ips.conf ファイルに追加できます。
このセットアップスクリプトが行ったことは、単に以下のインクルード文を .vhost ファイルに追加しただけです。また、/etc/nginx/conf.d/* を nginx.conf のインクルードに追加します(まだ nginx.conf にない場合)。そうしないと、スクリプト全体が失敗します。```nginx
# Bad Bot Blocker
include /etc/nginx/bots.d/ddos.conf;
include /etc/nginx/bots.d/blockbots.conf;
setup-ngxblocker、install-ngxblocker、update-ngxblocker はすべて、コマンドラインからカスタムのインストール/更新場所を設定できます。
setup、install、update の各スクリプトは、--help または -h を指定して実行すると、オプションを表示できます。
ここで nginx の設定をテストします
sudo nginx -t
すると、次のように表示されるはずです。```text nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
************************************************
<img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/step-7.png"/>
ここで Nginx をリロード / 再起動するだけで、Bot Blocker は即座に有効になり、すべての Web サイトを保護します。
`sudo nginx -t && sudo nginx -s reload`
または
`sudo service nginx restart`
以上で、ブロッカーが有効になり、何千もの悪意のあるボットやドメインからサイトを保護します。
************************************************
<img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/step-8.png"/>
次に、cron を設定して、ブロッカーを毎日自動更新し、常に最新の保護を維持できるようにします。
`sudo crontab -e`
crontab ファイルの末尾に次の行を追加します。`-e` コマンドラインパラメータを追加すると、更新レポートの送信先メールアドレスを指定できます。もちろん、`[email protected]` は実際のメールアドレスに置き換えてください。置き換えないと、スクリプトが更新されたときにメールを受信できません。
`00 22 * * * sudo /usr/local/sbin/update-ngxblocker -e [email protected]`
これにより、毎晩午後10時にブロッカーが更新されます。
もっと頻繁に更新したい場合(私は1日に3〜4回更新をプッシュすることもあります)、次のようにcronを8時間ごとに実行するよう設定できます。ただし、1日1回で十分以上です。
`00 */8 * * * sudo /usr/local/sbin/update-ngxblocker -e [email protected]`
更新後にメール通知を受け取りたくない場合(Nginx がリロード時に EMERG を起こす可能性があるため推奨しません)、cron を次のように実行してください。
`00 */8 * * * sudo /usr/local/sbin/update-ngxblocker -n`
<a href="https://www.mailgun.com/">mailgun</a> 経由でメールを送信したい場合は、cron を次のように実行します。
`00 22 * * * sudo /usr/local/sbin/update-ngxblocker -g [email protected] -d yourdomain.com -a mailgun api key -f [email protected]`
以上で、ブロッカーは自動的に最新の状態を保ち、globalblacklist.conf ファイルの最新バージョンをダウンロードすると Nginx をリロードします。
************************************************
<img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/step-9.png"/>
以下のファイルは、環境や要件に合わせてカスタマイズできます。これらのファイルは、上記の自動更新スクリプトによる更新中に変更されることはありません。そのため、ここで行ったカスタマイズは更新時に上書きされることはありません。```text
/etc/nginx/bots.d/whitelist-ips.conf
/etc/nginx/bots.d/whitelist-domains.conf
/etc/nginx/bots.d/blockbots.conf
/etc/nginx/bots.d/blacklist-domains.conf
/etc/nginx/bots.d/blacklist-user-agents.conf
/etc/nginx/bots.d/blacklist-ips.conf
/etc/nginx/bots.d/bad-referrer-words.conf
/etc/nginx/bots.d/custom-bad-referrers.conf
/etc/nginx/bots.d/ddos.conf
なんらかの「よくわからない」理由で、実際に GoogleBot があなたのサイトにアクセスするのをブロックしたいとしましょう。その場合は、/etc/nginx/bots.d/blacklist-user-agents.conf ファイルに GoogleBot を追加するだけで、GoogleBot のデフォルトのホワイトリストが上書きされます。これは、デフォルトでホワイトリストに登録されている他のボットにも同様に適用されます。
すべてのインクルードファイルには、わかりやすいようにコメントが付いています。
(動作していることをテストする)
テスト
別の Linux マシンのターミナルから、自分のドメイン名に対して以下のコマンドを 1 つずつ実行してください。
❗ 下記の例の http:// yourdomain.com ❗ を、実際のドメイン名 ❗ に置き換えてください
curl -A "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.96 Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" -I http://yourdomain.com
curl -A "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" -I http://yourdomain.com
200 OK で応答するはずです
curl -A "Xenu Link Sleuth/1.3.8" -I http://yourdomain.com
curl -A "Mozilla/5.0 (compatible; AhrefsBot/5.2; +http://ahrefs.com/robot/)" -I http://yourdomain.com
次のいずれかのエラーメッセージで応答するはずです:
curl -I http://yourdomain.com -e http://100dollars-seo.com
curl -I http://yourdomain.com -e http://zx6.ru
次のいずれかのエラーメッセージで応答するはずです:
Nginx Ultimate Bot Blocker は現在機能しており、あなたのウェブサイトを保護しています !!!
❗ 下記の例の http:// yourdomain.com ❗ を、実際のドメイン名 ❗ に置き換えてください
Cloudflare の CDN / キャッシングシステムを使用している Cloudflare ユーザーは、常に Cloudflare CDN を無効にしてください(グレーのクラウドに設定)。
テスト中は、以下の正しいレスポンスコードが得られます:
これは仕様によるものです。CDN がその役割を果たしているのです。つまり、サーバーからの最初のレスポンスが、444 または 443 レスポンスを発行してボットに「立ち去れ」と伝えたのです。
Cloudflare はそのレスポンスをキャッシュするため、2 回目のテストでは 520 Origin Error オリジンエラーメッセージが返されます。
ブロッカーをテストしている間は、CDN / キャッシングシステムを無効にし、テストに満足したら、ライブ環境で CDN / キャッシュを再度有効にしてください。ボットには Cloudflare からそのレスポンスを受け取ってもらいたいからです。
他のほとんどの CDN システムもおそらく同じ動作を示すため、テスト中は常に CDN を無効にして、テストを妨げるものを排除してください。テストが完了したら、必ず CDN を再度有効にしてください !!
Cloudflare CDN を有効にしたら、もう一度テストしてください。
テスト中に、次のエラーが発生した場合
これは CDN が機能していることを意味します。
ブロッカーを標準以外の NGINX フォルダの場所にインストールする
Nginx を自分でビルドする人は、標準の nginx フォルダの場所 /etc/nginx を持っていない場合があります。
このようなユーザーは、以下のようにコマンドラインでフォルダの場所を指定して、install-ngxblocker、setup-ngxblocker、update-ngxblocker を実行できます。
sudo ./install-ngxblocker -x -c /usr/local/nginx/conf.d -b /usr/local/nginx/bots.d
sudo ./setup-ngxblocker -x -c /usr/local/nginx/conf.d -b /usr/local/nginx/bots.d
sudo ./update-ngxblocker -c /usr/local/nginx/conf.d -b /usr/local/nginx/bots.d -e [email protected]
これにより、指定した場所にファイルが自動的に配置され、カスタムの場所を使用して vhost にインクルードが行われ、update-ngxblocker が新しいアップデートを取得すると、globalblacklist.conf ファイル内の「Include」セクションも自動的に書き換えられ、独自のカスタム場所が使用されます。これらの優れたスクリプトへの貢献に対して、Stuart Cardall @itoffshore に改めて感謝します。
Nginx からの重複ネットワークレポートはバグでもなく、修正することもできません。これはブロッカーの意図された動作です。IP ブラックリストの毎日の更新により、いくつかの既知の IP とレンジがブラックリストに登録され、old value "1" になります。その後、これらは globalblocklist の最後でホワイトリストに登録され、ロードの順序によって、既知の良好な IP が新しい value "0" に設定され、それによってホワイトリストに登録されます。この動作はブロッカーの初日からこのままであり、今後もこのままです。これらは単なる [WARN] メッセージであり、[EMERG] メッセージではありません。Nginx の動作には一切影響しません。
(4000 を超える悪質なリファラー、スパムリファラー、ユーザーエージェント、悪質なボット、悪質な IP、ポルノ、ギャンブル、クリックジャッキングサイト、収益性の高い SEO 企業、Wordpress テーマ検出器が含まれ、さらに増え続けています)
このプロジェクトには数千時間に及ぶプログラミングとテストが費やされています。ぜひ応援してください。
ボットは、ユーザーエージェントを偽装して、他のソフトウェアやウェブサイトのように見せかけようとします。そのユーザーエージェント名は、無害で、完全に正当に見えることもあります。
たとえば、「^Java」ですが、Project Honeypot によると、これは実際には最も危険なものの 1 つです。しかし、多くの正当なボットのユーザーエージェント文字列には「Java」が含まれているため、「Java」をブロックする多くのアプローチは無知であるだけでなく、Google や Bing のクローラーを含む非常に正当なクローラーまでブロックしてしまいます。そして、ボットブロッキングスクリプトを書く人々がそれをテストすることはほとんどないということが、私にはよくわかります。
スパムリファラーとスパムドメイン名は、非常に巧妙な手法を使ってあなたのサイトから離れ、ウェブを閲覧している何も知らない人々に広告を配信したり、ブラウザにマルウェア、アドウェア、ランサムウェアを仕込んだりする、収益性の高いクリックジャッキングおよびクリックリダイレクトキャンペーンを実行します。その後、それらは収益性の高いボットネットワークの一部になります。
このボットブロッカーには、ほとんどの人が Nginx ログで見ることすらできない数百のドメイン名と IP アドレスが含まれています。これは、私のすべてのサイトが SSL で動作し、Content-Security-Policy (CSP) を使用している結果です。CSP は、Nginx に到達する前に物事をブロックします。そして、私は最悪のドメインとボットのいくつかをこれまでに収集し、今後も収集し続けています。
大量のポルノ、ギャンブル、フェイクニュースのウェブサイトもこのブロッカースクリプトでブロックされており、これも急速に増え続けています。
残念ながら、世の中にあるほとんどのボットブロッカースクリプトは、他の人のスクリプトを単にコピー&ペーストして、自分の作品のように見せかけたものです。このスクリプトは https://github.com/mariusv によって作成されたものに触発され、私もそのプロジェクトに貢献しましたが、まったく新しいレイアウトに変更し、大幅に整理して、ゼロから始めました。現在は完全に独立したプロジェクトです。クリーンで、動作し、徹底的にテストされています。
この nginx バッドボットブロッカーリストは、グローバルな Nginx インクルードファイルとして設計されており、Nginx の map $http_user_agent、map $http_referer、geo $validate_client ディレクティブを使用しています。
これにより、.conf ファイルは Nginx によって一度メモリにロードされ、運営するすべてのウェブサイトで利用できるようになります。Nginx の vhost conf ファイルで Include ステートメントを使用するだけです。
この素晴らしい点は、すべてのウェブサイトで使用される 1 つの中央ファイルであることです。つまり、修正を加える場所は 1 つだけです。つまり、ログファイルで発見した新しいボットを追加するだけです。変更は、「sudo service nginx reload」を実行するだけで、すべてのサイトに即座に適用されます。ただし、リロードする前に、必ず sudo nginx -t を実行して設定変更をテストしてください。
ファイルサイズは非常に小さいです。これを書いている時点、そしてこの最初の公開コミットの時点で、Nginx が無視するすべてのコメントを含むファイルサイズは わずか 185 kb で、すでに 5000 を超える悪質なドメイン、悪質なボット、悪質な IP アドレスが含まれています。非常に軽量なので、Nginx はその存在に気づきません。すでに数千のエントリが含まれています。この README の上部で合計が更新されています。
Nginx や Apache 向けの他の多くのバッドボットブロッカーは、単に他人のリストをコピー&ペーストしたものですが、このリストはゼロから構築され、これまで 10 か月以上にわたって徹底的にテストされてきました。これは毎日監視されている実際のサーバーログから得られたもので、ほぼ毎日 3〜10 件の新しい追加項目があります。
また、数か月にわたる継続的かつ定期的なテストとログファイルの監視を通じて、誤検知についても徹底的にテストされています。
悪質なリファラーにリストされているすべてのウェブサイトは、追加される前に 1 つずつチェックされます。ログファイル内の疑わしいものを、それが何であるかを最初に実際に確認せずにただコピーして、このようなブロッカーに追加することは.... 控えめに言っても愚かです。
Nginx には 444 という素晴らしいエラーがあり、文字通り接続を切断します。これらのルールはすべて 444 レスポンスを発行するため、ルールが一致すると、要求元の IP は応答を受け取らず、あなたのサーバーは存在しないか、オフラインに見えるでしょう。
/conf.d/globalblacklist.conf ファイルに記載されているテストコマンドラインの 1 つを使用した curl でのテストでは、単純に「curl: (52) Empty reply from server」が返され、それが悪質なリファラーとボットが受け取る応答です。
引き続き許可したいが、訪問頻度を制限したいボットやスパイダーには、私が含めた組み込みのレート制限機能を使用できます。ファイル全体に詳細なコメントが付いているので、理解できるはずです。問題がある場合は、私にメッセージを送ってください。
または、独自の悪質なリファラーやボットを提供したり、誤ってブロックされたボットやドメインを修正したりするには、このリポジトリのコピーをフォークし、ここにある個別ファイル に対してプルリクエスト (PR) を送信してください。
不正確なリストやその他の問題については、問題システムに報告してください。調査され、必要に応じて削除されます。私はユーザーの問題に非常に迅速に対応し、ボットブロッカーを動作させるために何日もかけて数え切れないほどのユーザーを支援してきました。私は頭がおかしいと言われるかもしれませんが(異論はあります)、人を助けることが大好きで、問題や、これを動作させるのに問題を抱えている人々を無視しません。
世の中の多くのリストは、おかしなドメインを hosts ファイルに入れています。あなたの hosts ファイルと DNS はこれを理解できません。このリストは、任意のオペレーティングシステムが理解できる正しい DNS 形式に変換されたドメインを使用しています。正しくフォーマットされたドメイン構造をリストに入れていないリストの使用は避けてください。
たとえば 次のドメイン:
lifehacĸer.com (K に注意)
実際には次のように変換されます:
xn--lifehacer-1rb.com
どのオペレーティングシステムでも nslookup を実行すると、正しく解決されます。
`nslookup xn--lifehacer-1rb.com````xn--lifehacer-1rb.com origin = dns1.yandex.net mail addr = iskalko.yandex.ru serial = 2016120703 refresh = 14400 retry = 900 expire = 1209600 minimum = 14400 xn--lifehacer-1rb.com mail exchanger = 10 mx.yandex.net. Name: xn--lifehacer-1rb.com Address: 78.110.60.230 xn--lifehacer-1rb.com nameserver = dns2.yandex.net. xn--lifehacer-1rb.com text = "v=spf1 redirect=_spf.yandex.net" xn--lifehacer-1rb.com nameserver = dns1.yandex.net.
- 参照: https://www.charset.org/punycode
************************************************
## 常に自分の行動を監視する:
**この実装後は、必ずWebサイトのログを監視してください**。まずは1つのサイトに導入し、すべてのWebサイトで本番運用する前に、考えられる誤検知がないか監視することをお勧めします。
ダチョウのように砂に頭を埋めてはいけません。責任あるサーバー運用者およびWebサイト所有者であるなら、ログを頻繁に監視しなければなりません。多くの方がここにたどり着いたのは、Nginxのログファイルに不審なものを最初に目にしたからでしょう。
また、ブロックしたい新しい不正なリファラーやユーザーエージェント文字列がないか、毎日ログを監視してください。このリストに追加する最良の情報源は、私のログではなく、あなた自身のサーバーログです。
あなた自身のログから得た不正なリファラーを、Pull Request (PR) を送ってこのプロジェクトに自由に貢献してください。ただし、このリストは悪質なアクセスの99%をブロックするために頼りになります。
************************************************
## ログを毎日監視する方法(簡単な方法):
**多大な感謝と敬意を込めて**
https://blog.nexcess.net/2011/01/21/one-liners-for-apache-log-files/
Webサイトのログファイルの上位リファラーを毎日監視するには、以下の簡単なcronジョブを使用します。これにより、特定のWebサイトのログファイルから、毎朝上位リファラー / ユーザーエージェントのリストがメールで送信されます。これは1つのサイトに対する1つのcronジョブの例です。監視したいサイトごとに複数のcronジョブを設定してください。以下は、毎朝8時に実行され、リファラーを抽出したログをメールで送信するcronです。「抽出した」とは、サイトのドメインやGoogle、Bingなどの他のリファラーが結果から除外されるという意味です。もちろん、下記の例ではログファイル名、ドメイン名、メールアドレスを変更する必要があります。ユーザーエージェントを収集する2番目のcronはリファラーを除外しませんが、最初の例のawk文 !~ をコピーしてその機能を追加することもできます。
##### Nginxでリファラーを毎日監視するためのCron
`00 08 * * * tail -10000 /var/log/nginx/mydomain-access.log | awk '$11 !~ /google|bing|yahoo|yandex|mywebsite.com/' | awk '{print $11}' | tr -d '"' | sort | uniq -c | sort -rn | head -1000 | mail -s "Top 1000 Referers for Mydomain.com" [email protected]`
これは、awkコマンドを使用してgoogle、bing、自分のドメイン名などのドメインを除外したリファラーの毎日のリストをメールで送信します。
##### Nginxでユーザーエージェントを毎日監視するためのCron
`00 08 * * * tail -50000 /var/log/nginx/mydomain-access.log | awk '{print $12}' | tr -d '"' | sort | uniq -c | sort -rn | head -1000 | mail -s "Top 1000 Agents for Mydomain.com" [email protected]`
これは、過去24時間にサイトを訪問した上位ユーザーエージェントのリストをメールで送信します。不正または不審なユーザーエージェント文字列を見つけるのに役立ちます。
************************************************
## FAIL2BANを使用してファイアウォールレベルで攻撃的なボットをブロックする:
多数の444エラーを生成するボットをNginxログで監視するために、私が作成したカスタムFail2Banフィルターとアクションを追加しました。このFail2Ban用のカスタムjailは1週間分のログをスキャンし、違反者を24時間 ban します。
これは、常習的な違反者を締め出し、444エラーでログファイルを埋め尽くすのを防ぐのに大いに役立ちます。
Nginx Bad Bot Blockerのこの素晴らしいアドオンの設定手順については、Fail2Banフォルダを参照してください。
************************************************
## Google Analyticsの「ゴースト」スパムを停止する:
単にNginxブロッカーを使用するだけでは、Google Analyticsのゴーストリファラースパムを止めることはできません。なぜなら、それらはAnalyticsに直接アクセスしており、必ずしもあなたのWebサイトに触れているわけではないからです。
ゴーストリファラースパムを防ぐには、Analyticsで正規表現フィルターを使用する必要があります。
このために、google-exclude-0*.txt ファイルがいくつか作成されています。これらはNginx Blockerが更新されると同時に更新されます。リストが増えるにつれて、さらに多くの除外ファイルが作成されるでしょう。
************************************************
## Google Analyticsの「ゴースト」スパムを停止するには、以下の簡単なビジュアルガイドに従ってください
以下のステップバイステップのビジュアル手順に従って、これらのgoogle-excludeファイルをセグメントとしてWebサイトに追加してください。
<table style="width:100%;margin:0;">
<tr>
<td align="left"><img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/google-analytics-ghost-spam-01.jpg" alt="Google Analytics - Adding Segments to Stop Ghost Spam"/></td>
</tr>
<tr>
<td align="left"><img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/google-analytics-ghost-spam-02.jpg" alt="Google Analytics - Adding Segments to Stop Ghost Spam"/></td>
</tr>
<tr>
<td align="left"><img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/google-analytics-ghost-spam-03.jpg" alt="Google Analytics - Adding Segments to Stop Ghost Spam"/></td>
</tr>
<tr>
<td align="left"><img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/google-analytics-ghost-spam-04.jpg" alt="Google Analytics - Adding Segments to Stop Ghost Spam"/></td>
</tr>
<tr>
<td align="left"><img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/google-analytics-ghost-spam-05.jpg" alt="Google Analytics - Adding Segments to Stop Ghost Spam"/></td>
</tr>
<tr>
<td align="left"><img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/google-analytics-ghost-spam-06.jpg" alt="Google Analytics - Adding Segments to Stop Ghost Spam"/></td>
</tr>
<tr>
<td align="left"><img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/google-analytics-ghost-spam-07.jpg" alt="Google Analytics - Adding Segments to Stop Ghost Spam"/></td>
</tr>
</table>
************************************************
## GOOGLE SEARCH CONSOLE / WEBMASTER TOOLSを使用してスパムドメインをブロックする
(google-disavow.txt ファイルの使用方法)
google-disavow.txt というGoogle Disavowテキストファイルの生成を追加しました。このファイルはGoogleのWebmaster Toolsで、これらすべてのドメインをスパムや悪質なリンクとしてブロックするために使用できます。注意して使用してください。
************************************************
## この完全なブロッカーを使用できない人向けのROBOTS.txt版?
多くの人はホスティング会社の管理下にあり、Webサイトの背後で稼働しているサーバーへのrootアクセス権を持っていません。もしあなたがこの状況なら、自動生成されたrobots.txtファイルを確認してください。これはある程度、多くの悪質なボットやユーザーエージェントをサイトから締め出すのに役立ちます。
************************************************
## この完全なブロッカーを使用できない人向けの.htaccess版?
多くの人はホスティング会社の管理下にあり、Webサイトの背後で稼働しているサーバーへのrootアクセス権を持っていません。
もしあなたがこの状況なら、<a href="https://github.com/mitchellkrogza/apache-ultimate-bad-bot-blocker/tree/master/.htaccess">このリポジトリ</a>にある自動生成されたSpam Referrer Blockerの.htaccessバージョンを確認してください。この.htaccessメソッド(APACHEサイトのみ)は、このブロッカーに含まれるすべてのスパムリファラーをサイトから締め出すのに役立ちます。
これは単にここで言及しているだけですが、CPanelシステムを使用している多くの人は、自分がNginxサーバーの背後にいると思っていますが、実際にはNginxプロキシサーバーの背後にあるApacheサーバーで動作しています。.htaccessはNginxサイトでは機能しません。
Nginx Webサーバーを使用していませんか? こちらを参照してください: [](https://github.com/mitchellkrogza/apache-ultimate-bad-bot-blocker)
************************************************
# フォーキングでもちゃんと動く!!!
## Nginx Bad Bot BlockerがあなたとあなたのWebサイトにもたらす効果をぜひお楽しみください。
### そして、このプロジェクトをサポートしてください。
このプロジェクトには数千時間のプログラミングとテストが費やされています。ぜひ応援してください。
[<img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/kofi4.png" alt="Buy me Coffee" width="300"/>](https://ko-fi.com/mitchellkrog)
************************************************
# あなたのWebサイトはハッキングされましたか?
[](mailto:[email protected]) までご連絡ください。サイトのクリーンアップとセキュリティ保護のお手伝いをします。
************************************************
### その他の素晴らしい無料プロジェクト
- https://github.com/mitchellkrogza/apache-ultimate-bad-bot-blocker
- https://github.com/mitchellkrogza/Badd-Boyz-Hosts
- https://github.com/mitchellkrogza/Ultimate.Hosts.Blacklist
- https://github.com/mitchellkrogza/Stop.Google.Analytics.Ghost.Spam.HOWTO
- https://github.com/mitchellkrogza/The-Big-List-of-Hacked-Malware-Web-Sites
- https://github.com/mitchellkrogza/fail2ban-useful-scripts
- https://github.com/mitchellkrogza/linux-server-administration-scripts
- https://github.com/mitchellkrogza/Travis-CI-Nginx-for-Testing-Nginx-Configuration
- https://github.com/mitchellkrogza/Travis-CI-for-Apache-For-Testing-Apache-and-PHP-Configurations
- https://github.com/mitchellkrogza/Fail2Ban-Blacklist-JAIL-for-Repeat-Offenders-with-Perma-Extended-Banning
- https://github.com/funilrys/PyFunceble
- https://github.com/funilrys/dead-hosts
- https://github.com/mitchellkrogza/The-Big-List-of-Hacked-Malware-Web-Sites
- https://github.com/mitchellkrogza/Suspicious.Snooping.Sniffing.Hacking.IP.Addresses
- https://github.com/mitchellkrogza/Fail2Ban.WebExploits
************************************************
### ハッキングされたマルウェア&WordPress Webサイトの新しいビッグリストもチェックしてください
このリポジトリには、私が見つけたマルウェアに感染したすべてのWebサイトのリストが含まれています。
ほとんどのサイト所有者は、自分のサイトがハッキングされ、マルウェアの植え付けに使用されていることに気づいていません。
こちらでチェックしてください: https://github.com/mitchellkrogza/The-Big-List-of-Hacked-Malware-Web-Sites
************************************************
### 写真に興味がありますか?
[mitchellkrog.com](https://mitchellkrog.com) または [Facebook](https://www.facebook.com/MitchellKrogPhotography) に立ち寄って訪問してください。またはTwitterでフォローしてください <a href='https://twitter.com/MitchellKrog'><img src="https://img.shields.io/twitter/follow/MitchellKrog.svg?style=social&label=Follow" alt='Follow @MitchellKrog'></a>
************************************************
### 謝辞とコントリビューター:
このプロジェクトに貢献してくださった皆様に感謝いたします。
このプロジェクトの背後で動作しているジェネレータースクリプトとコードの多くの部分は、何百ものソースからのスニペットを適応させたものです。
実際、全員を挙げるのは難しいですが、ここでは、常に新機能を導入するのに役立った小さなコードスニペットを提供してくれた主要な人々を何人か紹介します。彼らに感謝の気持ちを示し、彼らのプロジェクトもチェックしてみてください。
- Konstantin Goretzki @konstantingoretzki https://github.com/konstantingoretzki (Fail2Banフィルターの正規表現を改良)
- Stuart Cardall - https://github.com/itoffshore (インストール、更新、セットアップスクリプト & Alpine Linuxパッケージメンテナー)
- Mike van Eckendonk - https://github.com/Eckybrazzz
- Nissar Chababy @funilrys - https://github.com/funilrys/PyFunceble (アクティブ、非アクティブ、期限切れのドメイン名を確認するための優れたスクリプト)
- Marius Voila https://github.com/mariusv
- Cătălin Mariș https://github.com/alrra
- deformhead https://github.com/deformhead
- bluedragonz https://github.com/bluedragonz
- Alexander https://github.com/shoonois
- Steven Black https://github.com/StevenBlack
- Fail2Ban - https://github.com/fail2ban
- Stevie-Ray Hartog https://github.com/Stevie-Ray
- Sir Athos from StackOverFlow - http://stackoverflow.com/users/2245910/sir-athos (Travisビルドのタグ付けとコミットのヘルプ)
- StackOverflow - http://stackoverflow.com/ (何百もの質問と回答からのbashスクリプト)
- SuperUser - http://superuser.com/ (さまざまな質問と回答からのスニペット)
あなたの名前がここに載るべきだと思うなら、ご連絡ください。
************************************************
### このようなコードの作成には多くの時間がかかります!!
このプロジェクトには数千時間のプログラミングとテストが費やされています。ぜひ応援してください。
[<img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/kofi4.png" alt="Buy me Coffee" width="300"/>](https://ko-fi.com/mitchellkrog)
<img src="https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/.assets/zuko.png"/>
************************************************
# MITライセンス
## Copyright (c) 2017 Mitchell Krog - [email protected]
## https://github.com/mitchellkrogza
ここに、以下の条件に従うことを条件として、本ソフトウェアおよび関連文書ファイル(以下「ソフトウェア」)のコピーを取得するすべての人に対し、ソフトウェアを無制限に扱うことを許可します。これには、ソフトウェアの使用、複製、変更、結合、公開、頒布、サブライセンス、および/または販売する権利、およびソフトウェアを提供された人にそれらの行為を許可する権利が、制限なく含まれます。
上記の著作権表示およびこの許可表示は、ソフトウェアのすべてのコピーまたは主要な部分に含めるものとします。
本ソフトウェアは「現状のまま」で提供され、明示的または黙示的を問わず、商品性、特定目的への適合性、および非侵害の保証を含むがこれらに限定されない、いかなる保証もありません。いかなる場合も、著作者または著作権所有者は、契約、不法行為、またはその他の方法にかかわらず、本ソフトウェアまたは本ソフトウェアの使用またはその他の取引に起因または関連して生じたいかなる請求、損害、またはその他の責任についても責任を負いません。