ホーム 経験・テクニック共有 標準記事

標準記事

サーバーセキュリティ:悪意のあるボットによるサーバースキャンを防ぐためのNginxルール追加

自分でサーバーを購入してサイトを構築する場合、サーバーのセキュリティ問題が発生します。あなたが知らなくても、毎日サーバーはボットにスキャンされています。この記事では、Naibaがサーバーのスキャンを防ぐためのいくつかのNginxルールを紹介します。 1. IP経由のデフォルトアクセスを禁止する 各サーバーにはIPアドレスがあり、一部のボットはIPアドレスに直接アクセスしてサイトのコンテンツを探ります。

2020年9月21日更新 約6分で読めます
服务器安全:添加Nginx规则防止服务器被恶意机器人扫描

自分でサーバーを購入してサイトを構築するサーバーのセキュリティ問題が発生します。自分では気づかないかもしれませんが、サーバーは毎日いくつかのボットによってスキャンされています。本記事では、Naibaがサーバースキャンを防ぐためのいくつかのNginxルールを紹介します。

1、デフォルトでのIPアドレスによるサーバーアクセスを禁止する

各サーバーにはIPアドレスがあり、一部のボットはIPアドレスに直接アクセスしてサイトのコンテンツを探ります。

Nginxの設定情報に以下のコードを追加することで、IPアドレス経由のアクセスを禁止できます。

#别人如果通过ip或者未知域名访问你的网站的时候,你希望禁止显示任何有效内容,可以给他返回500
server {
       listen 80 default;
       server_name _;
       return 500;

}
#开放一个或多个真实的希望被访问的域名配置,设置如下:
server {
       linten 80;
       server_name naibabiji.com;
}

2、ボットによるサイトの圧縮ファイルスキャンを禁止する

同様に、多くのボットはドメインのファイルに直接アクセスします。例えば、以下の画像はNaibaサイト構築ノートのwwwroot.zipファイルをスキャンしているものです。

 

扫描日志これらの圧縮ファイルへのリンクを、非常に大きなファイルへのダウンロードにリダイレクトすることで、ボットにゆっくりとダウンロードさせることができます。

    rewrite \.asp/?$ http://speedtest.tele2.net/50GB.zip permanent;
    rewrite \.zip/?$ http://speedtest.tele2.net/50GB.zip permanent;
    rewrite \.gz/?$ http://speedtest.tele2.net/50GB.zip permanent;
    rewrite \.7z/?$ http://speedtest.tele2.net/50GB.zip permanent;
    rewrite \.sql/?$ http://speedtest.tele2.net/50GB.zip permanent;
    rewrite \.rar/?$ http://speedtest.tele2.net/50GB.zip permanent;
    rewrite \.tar/?$ http://speedtest.tele2.net/50GB.zip permanent;

上記のコードは、サイト上の.asp/.zip/.gz/.7z/.sql/.rar/.tar形式のファイルにアクセスがあった場合、自動的に50Gサイズのzipリンクにリダイレクトします。ボットに這わせ続けさせましょう。

さらに大きなファイル、例えば1000Gを用意して、そのハードディスクを満タンにすることもできます。

http://speedtest.tele2.net/1000GB.zip
http://speedtest.tele2.net/100GB.zip
http://speedtest.tele2.net/50GB.zip

もちろん、これらのボットをブロックするためにDefender Securityこのプラグインをインストールすることもできます。リダイレクトルールの追加方法がわからない場合は、例えばRanK Mathのリダイレクト機能。

9月20日更新:

本日、新しいボットがサイトをスキャンする際に上記の301を無視している(または量が多すぎる?)のを発見し、Naibaサイト構築ノートのサーバーCPUを何度も圧迫したため、別の方法を使うしかありませんでした。

最もシンプルで乱暴な方法は、nginx設定に以下のルールを直接追加し、サーバー上のファイルダウンロードリンクへのアクセスを直接禁止することです(リソースをローカルでダウンロード提供しているサイトでは注意)。

location ~ \.(zip|rar|sql|bak|gz|7z)$ {
return 444;
}

ユーザーがサイト上のzip、rarなどのリソースにアクセスした場合、直接444エラーコードを返します。

444 No Response
Nginx上のHTTPサーバー拡張。サーバーはクライアントに一切の情報を返さず、接続を閉じます(マルウェア対策に有効)。

もう一つの方法は、Nginxにwafファイアウォールをインストールすることです。もしあなたが宝塔パネルその場合、直接バックエンドのソフトウェアストアからインストールできます。

LNMP一键パッケージを使用している場合は、以下の方法でインストールしてください。

LNMP一键インストールパッケージは1.5からluaサポートオプションが追加され、lnmp.conf内のEnable_Nginx_Luaの後のパラメータを y に変更することでluaを有効化できます。lnmpをインストールしていない場合は、lnmp.confを変更して保存後、lnmpをインストールするとlua対応になります。既にlnmpをインストール済みの場合は、同様にlnmp.confを変更し、lnmpインストールパッケージディレクトリで ./upgrade.sh nginx を実行してnginxをアップグレードし、現在のnginxバージョン番号または新しいバージョン番号を入力すると、アップグレード後にlua対応になります。

ngx_lua_wafのインストール
ngx_lua_wafをダウンロードしてインストール:

wget https://github.com/loveshell/ngx_lua_waf/archive/master.zip -O ngx_lua_waf.zip
unzip ngx_lua_waf.zip
mv ngx_lua_waf-master /usr/local/nginx/conf/waf

nginxでngx_lua_wafを設定し有効化

/usr/local/nginx/conf/nginx.conf を編集し、server_tokens off; の下に以下のコードを追加:

lua_package_path "/usr/local/nginx/conf/waf/?.lua";
lua_shared_dict limit 10m;
init_by_lua_file /usr/local/nginx/conf/waf/init.lua;

編集完了後保存

特定のバーチャルホストでngx_lua_wafを有効にしたい場合は、該当バーチャルホストのserverセクションを編集し、そのserverセクション内の root サイトディレクトリ行の下に以下のコードを追加:

access_by_lua_file /usr/local/nginx/conf/waf/waf.lua;

編集完了後保存

nginx設定ファイルをテスト:/usr/local/nginx/sbin/nginx -t
nginx設定をリロードして反映:/usr/local/nginx/sbin/nginx -s reload

テストとリロードでエラーがなければ有効になっています。

http://ドメイン/test.php?id=../etc/passwd にアクセスしてテストできます

より詳細はこの記事を参照してください

4.5/5 - (2票)
前の記事 WooCommerce注文番号が連続しない原因と解決方法 同じタイムラインの近くのコンテンツを読み続ける。 次の記事 外国貿易向けサイト構築:競合サイトのSEO情報を分析する方法? 次の関連チュートリアルや経験を表示する。

AIサイト構築アシスタント

🤖
こんにちは!私はNaibaサイト構築ノートのAIアシスタントです。何かお手伝いできることはありますか?
クイックコンサルティング: