
Nginxは悪質なボット、スパムリファラーブロッカー、脆弱性スキャナー、ユーザーエージェント、マルウェア、アドウェア、ランサムウェア、悪意のあるサイトをブロックし、抗DDOS、Wordpressテーマ検出器のブロック、および常習犯向けのFail2Ban監獄を備えています。
| REPO | スポンサーになる |
|---|---|
| スポンサーになると、あなたのロゴとドメインへのリンクがここに表示されます。このプロジェクトへのスポンサーをご希望の場合は、[email protected] までメールをお送りください。南アフリカはまだ Github スポンサープログラムでサポートされていません。 | |
| 私を支援する: https://ko-fi.com/mitchellkrog |
ブロッカーが更新されたとき、または重要または重大(潜在的に破壊的な)変更が発生する可能性があるときに通知を受けるには、Github 通知を購読してください。
これは、このリポジトリに貢献し、Alpine Linux パッケージメンテナの一人である 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 はすべて、コマンドラインからカスタムのインストール/更新場所を設定できます。(これらのスクリプトと標準外の Nginx 場所の使用方法については、手順のステップ 11 を参照してください)
オプションを表示するには、setup、install、update スクリプトのいずれかを --help または -h を付けて実行してください。
注意: Let's Encrypt SSL 証明書を使用している方には、Webroot Authenticator 方式が推奨され、100% 動作する方法です。http チャレンジ方式を使用している人にいくつか問題があるようですが、webroot は完璧に動作することを確認しています。http-01 チャレンジ方式が certbot のバグなのか nginx のバグなのかは、現時点では不明です。
Nginx からの重複ネットワークレポートはバグではなく、修正することもできません。これはブロッカーの意図した動作です。IP ブラックリストの毎日の更新により、いくつかの既知の IP とレンジがブラックリストに登録され、old value "1" となります。これらはその後、globalblocklist の最後でホワイトリストに登録されます。これは読み込みの順序であり、既知の良好な IP が新しい value "0" に設定され、それによってホワイトリストに登録されます。ブロッカーの初日からこの状態であり、今後もこのままです。これらは単純な [警告] メッセージであり、[緊急] メッセージではありません。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
Alternatively、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
これにより、行われる変更の出力が次のように表示されます
**(注:これはドライランであり、変更は一切行われていません)**```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"/>
次に、-xパラメータを付けてsetupスクリプトを実行し、nginx.confに必要な変更をすべて加え(必要な場合)、すべてのvhostファイルに必要なincludeを追加します。
この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
このツールは、--output フラグを使用して出力ディレクトリを指定することをサポートしています。指定しない場合、結果は現在の作業ディレクトリに保存されます。
python3 tool.py --output /path/to/results
出力ファイルには、検出された各脆弱性に関する詳細情報が含まれます。これには、影響を受けるエンドポイント、脆弱性の重大度、および推奨される緩和策が含まれます。
以下は、ツールを実行する方法の実用的な例です。
python3 tool.py --target https://example.com
python3 tool.py --target https://example.com --verbose
python3 tool.py --target https://example.com --vuln-type sqli
ツールは、結果を読みやすい形式で出力します。各脆弱性は、以下の情報を含むセクションとして表示されます。
出力は、--format json フラグを使用してJSON形式でエクスポートすることもできます。```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 にあるカスタマイズ可能な whitelist-ips.conf ファイルに追加できます。
このセットアップスクリプトが行ったことは、単に以下のインクルード文を .vhost ファイルに追加しただけで、さらに nginx.conf のインクルードに /etc/nginx/conf.d/* を追加します(まだ 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]`
これにより、毎晩22時にブロッカーが自動更新されます。
より頻繁に更新したい場合(私が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のデフォルトのホワイトリストを上書きします。デフォルトでホワイトリストに登録されている他のボットについても同様です。
すべてのインクルードファイルには、わかりやすいようにコメントが付けられています。
(動作確認テスト)
テスト
別の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" に設定してホワイトリストに登録します。この状態はブロッカーの初日から続いており、今後もこのままです。これらは単純な [警告] メッセージであり、[緊急] メッセージではありません。Nginx の動作には一切影響を与えません。
(4000 以上の悪質なリファラー、スパムリファラー、ユーザーエージェント、悪質なボット、悪質な IP、ポルノ、ギャンブルおよびクリックジャッキングサイト、収益性の高い SEO 企業、Wordpress テーマ検出器、そして増加中)
このプロジェクトには何千時間ものプログラミングとテストが費やされています。ぜひサポートをお願いします
ボットは、ユーザーエージェントを偽装して、他のソフトウェアやウェブサイトのように見せかけようとします。そのユーザーエージェント名は、無害で、完全に正当に見えることさえあります。
例えば、「^Java」は、Project Honeypot によると、実際には最も危険なものの1つですが、多くの正当なボットのユーザーエージェント文字列には「Java」が含まれているため、「Java」をブロックするという多くの人が取るアプローチは、無知であるだけでなく、Google や Bing の一部を含む非常に正当なクローラーもブロックしてしまいます。そして、ボットブロッキングスクリプトを書く人々が、それらをテストすることはほとんどないということが、私には非常にはっきりとわかります。
スパムリファラーとスパムドメイン名は、非常に巧妙なテクニックを使用して、あなたのサイトから離脱し、ウェブを閲覧している何も知らない人々に広告を配信したり、ブラウザにマルウェア、アドウェア、ランサムウェアを仕込んだりする、非常に収益性の高いクリックジャッキングおよびクリックリダイレクトキャンペーンを実行します。これらはその後、彼らの収益性の高いボットネットワークの一部となります。
このボットブロッカーには、ほとんどの人が Nginx ログで見ることさえできない何百ものドメイン名と IP アドレスが含まれています。これは、私のすべてのサイトが SSL で実行され、Content-Security-Policy (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ジョブの例です。監視したいサイトごとに複数設定してください。以下は、毎朝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ジェイルは、1週間分のログをスキャンし、違反者を24時間禁止します。
これは、常習的な違反者を排除し、ログファイルを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テキストファイル(google-disavow.txt)の作成を追加しました。このファイルは、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]) までご連絡ください。Webサイトのクリーンアップとセキュリティ保護をお手伝いします。
************************************************
### その他の素晴らしい無料プロジェクト
- 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 (ACTIVE、INACTIVE、EXPIREDドメイン名をチェックするための優れたスクリプト)
- 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 Buildのタグ付けとコミットのヘルプ)
- 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
以下に定める条件に従い、本ソフトウェアおよび関連文書ファイル(以下「ソフトウェア」)の複製を取得するすべての人に対し、ソフトウェアを無償で提供することを許可します。これには、使用、複製、変更、統合、公開、配布、サブライセンス、および/またはソフトウェアの複製の販売の権利、およびソフトウェアが提供される者にこれらのことを許可する権利が、以下の条件に従うことを条件として含まれます。
上記の著作権表示およびこの許可表示は、ソフトウェアのすべての複製または重要な部分に含まれるものとします。
ソフトウェアは「現状のまま」提供され、明示的か黙示的かを問わず、商品性、特定目的への適合性、および非侵害性の保証を含む、いかなる種類の保証もありません。いかなる場合も、著作者または著作権所有者は、契約行為、不法行為、またはその他の方法にかかわらず、ソフトウェアまたはソフトウェアの使用またはその他の取引に起因または関連して生じるいかなる請求、損害、またはその他の責任についても責任を負いません。