banner
moeyy

moeyy

一条有远大理想的咸鱼。
github
mastodon
email

OneinStackを使用してウェブサイトのLNMP環境を構築し、WAFファイアウォールを設定してCC攻撃を防止します。

はじめに#

現在、多くのウェブマスターは、多かれ少なかれ CC 攻撃に遭遇することがあります。最も効果的な防御方法は、CDN を使用することです。たとえば、海外の CloudFlare です。ただし、CF はしばしば速度が遅く、多くの場所でブロックされているため、体験が良くありません。そのため、スクリプトを使用して防御することができます。以前に CC 攻撃を防ぐスクリプトを公開しました。Linux VPS で CC 攻撃を防ぐワンクリックスクリプト、WeChat 通知付き。ログにアクセスする必要があるため、効果があまり良くありません。大きな CC 攻撃には耐えられません。そのため、このスクリプトは一部の状況には適していません。

ここでは、CC 攻撃を防ぐために、Nginx + Lua を使用して WAF ファイアウォールを設定し、URL キーワードなどをブロックする方法について説明します。その利点は、Nginx のリソース使用量が少なく、高並行性の利点があり、Lua 言語の軽快さがあり、ユーザーがアクセスする前に攻撃を処理できるため、非常に効果的です。

WAF を設定する前に、Lua モジュールをコンパイルする必要がありますが、OneinStack の LNMP ワンクリックパッケージには OpenResty に Lua モジュールが付属しているため、このパッケージを使用してウェブサイト環境をインストールすることをお勧めします。

LNMP のインストール#

まず、OneinStack のウェブサイトからワンクリックパッケージを取得します。アクセス先:https://oneinstack.com/auto/。Nginx は OpenResty を選択します。メモリが 1G 未満の場合、MySQL は 5.5 より大きくすることはできません。その他の設定は自分で調整してください。

image

取得したワンクリックパッケージを SSH クライアントにコピーして実行し、インストールが完了するまで待ちます。

LNMP 操作コマンド:

#操作する前にoneinstackディレクトリに移動してください
cd oneinstack
#ウェブサイトを追加する
./vhost.sh
#ウェブサイトを削除する
./vhost.sh del
#その他のコンポーネントを追加する
./addons.sh
#ウェブサイトのバックアップ
./backup_setup.sh
#バージョンをアップグレードする
./upgrade.sh

その他のコマンドや画像付きの操作はこちらを参照してください:https://oneinstack.com/install/

関連ディレクトリ:

#データベースフォルダー、phpMyAdminをxxなどの推測しにくい名前に変更し、IP:xxでデータベースにアクセスできるようにします
/data/wwwroot/default
#ウェブサイトのディレクトリ
/data/wwwroot
#ウェブサイトの設定ファイル
/usr/local/openresty/nginx/conf/vhost

ウェブサイトを追加した後、FTP ツールを使用してプログラムをルートディレクトリにアップロードし、データベースを作成し、ウェブサイトの設定を行います。

WAF ファイアウォールの設定#

ここでは、GitHub で非常に人気のある ngx_lua ベースの WAF ファイアウォールスクリプトを使用して CC 攻撃や URL キーワードのブロックを行います。以下の機能があります。

  • SQL インジェクション、ローカルファイルインクルージョン、一部のオーバーフロー、fuzzing テスト、xss、55RF などの Web 攻撃を防止します。
  • svn / バックアップなどのファイルの漏洩を防止します。
  • ApacheBench などの負荷テストツールの攻撃を防止します。
  • 一般的なスキャンハッカーツール、スキャナーをブロックします。
  • 異常なネットワークリクエストをブロックします。
  • 画像添付フォルダーの php 実行権限をブロックします。
  • Web シェルのアップロードを防止します。

GitHub のリンク:https://github.com/loveshell/ngx_lua_waf

まず、ngx_lua_wafconfディレクトリにダウンロードします。

cd /usr/local/openresty/nginx/conf
wget https://www.moeyy.cn/usr/down/waf.tar.gz
tar zxf waf.tar.gz
rm -rf waf.tar.gz

次に、/usr/local/openresty/nginx/conf/nginx.confを編集し、以下のコードをhttp{}内に追加します。

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

その後、service nginx restartコマンドを実行して Nginx を再起動し、設定を有効にします。

設定ファイル:

#設定ファイルのパス
/usr/local/openresty/nginx/conf/waf/config.lua
#詳細なパラメーターは、必要に応じて設定してください
RulePath = "/usr/local/openresty/nginx/conf/waf/wafconf/"
--ルールの保存場所
attacklog = "on"
--攻撃情報の記録を有効にするかどうか、logdirを設定する必要があります
logdir = "/data/wwwlogs/"
--logの保存場所、このディレクトリはユーザーが作成し、nginxユーザーに書き込み権限を与える必要があります
UrlDeny="on"
--URLアクセスをブロックするかどうか
Redirect="on"
--ブロック後にリダイレクトするかどうか
CookieMatch = "on"
--Cookie攻撃をブロックするかどうか
postMatch = "off"
--POST攻撃をブロックするかどうか
whiteModule = "on"
--URLホワイトリストを有効にするかどうか
black_fileExt={"php","jsp"}
--アップロードを許可しないファイルの拡張子を指定します
ipWhitelist={"127.0.0.1"}
--IPホワイトリスト、複数のIPはカンマで区切って指定します
ipBlocklist={"1.0.0.1"}
--IPブラックリスト、複数のIPはカンマで区切って指定します
CCDeny="on"
--CC攻撃をブロックするかどうか
CCrate = "10/60"
--CC攻撃の頻度を設定します(秒単位)
--デフォルトでは、1分間に同じIPから同じアドレスに対して10回のリクエストしか許可されません

フィルタールール:

#フィルタールールは/usr/local/openresty/nginx/conf/waf/wafconfにあります。
#必要に応じてルールを調整してください。各ルールは改行するか、分割する必要があります
argsは、getパラメーターをフィルタリングするためのルールです
urlは、getリクエストのURLをフィルタリングするためのルールです
postは、postリクエストをフィルタリングするためのルールです
whitelistは、フィルタリングしないURLを含みます
user-agentは、user-agentをフィルタリングするためのルールです
#デフォルトでは、getとpostのフィルタリングが有効になっています。cookieのフィルタリングを有効にするには、waf.luaを編集し、一部の--コメントを解除してください。
#ログファイル名の形式は次のとおりです:仮想ホスト名_sec.log

ホワイトリストの設定:

#IPホワイトリスト
/usr/local/openresty/nginx/conf/waf/wafconf/config.luaを編集します。
複数のIPを指定することができます。複数のIPはカンマで区切って指定します。例:{"127.0.0.1","192.155.1.1"}。

#URLホワイトリスト
/usr/local/openresty/nginx/conf/waf/wafconf/whiteurlを編集します。1行に1つのURLを記入し、文字列を確認します。通常、APIリンクを許可するために使用され、パラメータを含めることはできません。
例えば、https://xxx/Rats.php?xxの場合、^/Rats.php$を入力して、/Rats.phpで始まるすべてのURIを許可します。

image

効果のテスト:
CC 攻撃をブロックし、503 エラーを返します。

image

キーワードがトリガーされると、ファイアウォールによってブロックされます。

注意:ngx_lua_waf はデフォルトで phpMyAdmin ディレクトリをブロックしますので、他の名前に変更してデータベースにアクセスしてください。

参考文献:https://www.94ish.me/1730.html

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。