Apacheの.htaccessファイルに直接記述する形式のファイアウォール nG Firewall の設定方法と使い方を解説します。
- nG Firewall の設定方法がわかります
nG Firewall で実現できること
nG Firewall はWebサーバー Apacheの.htaccessファイルに直接記述する形式のファイアウォールなので高速で動作することが特長です。
2024年10月時点の最新バージョン(世代)は8Gで、nGのnには世代数が入ります。
Apacheのルール設定の記述で作成されたファイアウォールです。
プログラム(ルール)自体がテキスト情報のみなので容量が軽く、サーバーのリソース(CPUやメモリ)を消費しないため、Webサイトのレスポンスに影響を及ぼしません。
導入は簡単で、.htaccessファイルにテキストの内容をコピペして貼り付けるだけです。
難解なApacheのルール設定を知らなくても大丈夫です。
Web技術者が開発したオープンソースソフトウェアなので無料で利用できます。
WordPress用のプラグインではないので、他のCMSでも動作します。
Nginxでも動作しますが、当記事ではApacheの.htaccessを使った設定方法のみ記載しています。
同じ開発者が提供している、WordPress専用プラグイン BBQ Firewallの記事はこちらを参考にしてください↓

nG Firewall の主な機能
nG Firewall の主な機能は次の通りです。
- すべてのHTTPリクエストをスキャン
- SQLインジェクションやXSS攻撃から保護
- 悪質なBOTやリファラーから保護
- バックグラウンドで動作し、サイトを保護
- 他のセキュリティプラグインと併用可能
同じ開発者が作成したWordPress用プラグイン BBQ Firewallと主な機能は同じですが、他のプログラムを介さずに動作するので高速に動作します。
nG Firewall の設定方法
nG Firewall を導入・設定する方法を解説します。
当記事はレンタルサーバーはエックスサーバ、Web(HTTP)サーバーはApache、CMSはWordPressを使用しています。
導入手順を要約すると下記の流れになります。
- nG Firewall 公式サイトからファイアウォールのテキストファイルをダウンロードして解凍
- .htaccessファイルの先頭に①のテキストファイルの内容をコピーして貼り付ける
基本的には上記の2ステップで完了です。※慣れた人なら5分程で終わる作業です。
以降で詳しい手順を解説します。
公式サイトからファイアウォールのファイルをダウンロード

nG Firewall公式サイトからファイアウォールのファイルをダウンロードします↓
https://perishablepress.com/8g-firewall/

↑上の画像は日本語に翻訳しています。
リンクをクリックすると自動でファイルのダウンロードが完了します。

↑ダウンロードしたzipファイルを解凍するとフォルダの中にあるFirewallと書かれたテキストファイルをテキストエディタで開きます。

↑テキストファイルの中身を全てコピーします。

↑エックスサーバのファイルマネージャで開いた.htaccessファイルが保存されているディレクトリです。
WordPressの場合、htaccessファイルが保存されているディレクトリはpublic_htmlになります。

↑.htaccessファイルの一番上に、先ほどのファイアウォールファイルのテキストをすべてコピーして貼り付けます。

↑貼り付けた後は更新ボタンを押して保存します。
※心配な場合は、変更前の.htaccessファイルを丸ごとバックアップしてください。
以上で、nG Firewallの実装は完了です。
次はファイアウォールが動作しているか確認します。
ファイアウォールの動作確認

↑ファイアウォールが動作している時に、ドメイン名の後ろに?eval(を入力してアクセスすると404エラーが表示されます。
万が一、エラーが表示されない場合はファイアウォールが動作していないので.htaccessファイルの内容を確認してください。
次は悪意のあるアクセスの内容をログファイルに書き出して動作確認する方法を解説します。
悪意あるアクセスをログファイルに記録する方法
nG Firewall公式サイトからファイアウォールのログを有効にするファイルをダウンロードします↓https://perishablepress.com/ng-firewall-logging/

↑上の画像は日本語に翻訳しています。
リンクをクリックすると自動でファイルのダウンロードが完了します。

↑ダウンロードしたzipファイルを解凍するとフォルダの中に3つのファイルがありますが、使用するのはnG_log.phpとnG_log.txtファイルの2つです。
nG_log.phpファイルがログを出力するスクリプト(プログラム)が書かれたファイルで、基本的には弄る必要はありません。
nG_log.txtファイルは悪意あるアクセスがあった時に実際に記録が書き込まれるファイルなので、最初は中身は空です。
次に、この2つのファイルをサーバーの.htaccessファイルと同じディレクトリの中に保存します。

↑public_htmlディレクトリに先ほどの2つのファイルをアップロード(保存)します。
エックスサーバの場合はファイルマネージャでpublic_htmlに入ってアップロードを押します。

↑エックスサーバの場合はファイルを選択またはドラッグ&ドロップしてアップロードボタンを押します。

次に.htaccessファイルを開いて、nG Firewallのルール(記述)内のコメント(#)を解除してログ出力を有効にします。

各モジュール内、 <IfModule mod_rewrite.c>~</IfModule>の間に下記の記述があります。
変更前 <IfModule mod_rewrite.c> ~省略~ RewriteRule .* - [F] # RewriteRule .* /nG_log.php?log [END,NE,E=nG_REQUEST_URI:%1___%2___%3] </IfModule>
上記を下記のように変更します。
変更後 <IfModule mod_rewrite.c> ~省略~ # RewriteRule .* - [F] RewriteRule .* /nG_log.php?log [END,NE,E=nG_REQUEST_URI:%1___%2___%3] </IfModule>
全部で8か所あるので、すべて同じようにコメント(#)を”RewriteRule .* – [F]”の先頭に移動させます。

↑最後に更新ボタンを押して変更内容を保存します。
しばらく待つとnG_log.txtファイルに悪意あるアクセスが保存されます。
ログの排出を停止する場合は、移動させたコメント(#)を元の位置に戻す作業が必要になります。

↑ある程度運用しているWebサイトの場合は、変更後すぐに悪意あるアクセスが保存されます。

↑nG_log.txtファイルのアクセス権限(パーミッション)を変更しないと、上の画像のように第三者からログが見えるので、パーミッションを変更します。

↑最初パーミッションは数値だと604になっているので、”その他”内の”読み取り”のチェックマークを外すか、数値で600を指定し、変更ボタンを押して保存します。

↑nG_log.txtファイルのアクセス権限(パーミッション)を600に変更後は、403エラーが表示され、Webブラウザからはログが確認できなくなります。
悪意のあるアクセスだけではなく、自分のIPアドレスがログに残る可能性があるので、nG_log.txtファイルのパーミッションの変更は必須です。
ちなみに、正常で健全なアクセスはnG_log.txtファイルにログとして記録されません。
各モジュールの意味や、他のカスタマイズ方法はnG Firewall 公式サイトを参考にしてください。
実際にnG Firewall を使った感想とメリットデメリット
実際にnG Firewall を使ってみた感じたメリットとデメリットです。
nG Firewall のメリット
- Webサーバーの.htaccessファイルに直接記述するので動作が高速で軽量
- 個人ブログや小規模なWebサイトで必要十分な機能
- オープンソフトウェアなので無料で利用できる
個人情報など、外部に絶対に流出させれない情報を保存しているサーバーの場合は、他のハイエンドなWAFを少なくとも併用して使うべきですが、個人用途オンリーなサイトやブログには必要十分です。
nG Firewall のデメリット
- 導入難易度がやや高く、敷居が高い
- 公式サイトが全て英語
グラフなどのGUI画面でログを確認ではできない点は動作が高速なのとトレードオフの関係なのでしかたありません。
導入は設定ファイルのテキストを変更するので、GUIに慣れている場合などは、導入する難易度が高いです。その上、公式サイトが英語なので余計に判り難くいです。
まとめ
nG Firewall は悪意あるボットやリファラーのアクセスからWebサイト(ブログ)を保護し、動作が軽量で高速に処理できることが特長です。
Apacheの.htaccessファイルのルール構文だけで記述されており、他のプログラムを一切介す必要が無いため、サーバーのCPUやメモリ等のリソースをエンドユーザーの表示処理に回すことが可能になります。
その結果、利用者の満足度が向上し、SEO上昇に繋がります。
もし、WordPressを利用している場合は、nG Firewallと同じ性能と機能を提供するBBQ Firewallプラグインを使うほうが導入する難易度が低いですが、他のプログラムを介して動作するのでサーバーのリソースを消費し、利用者へのレスポンスが遅くなります。
nG Firewallと機能が被らないセキュリティ対策プラグインが殆どなので、”Wordfence Security“や”XO Security“と併用して利用することも可能です。
どちらにせよ、ある程度Web知識がある場合は、WordPressのセキュリティ対策にはBBQ Firewallプラグインよりも、nG Firewalを使うことをおすすめします。