Debian/Ubuntu で Apache を使用して ModSecurity をセットアップする方法
Apache Web サーバーは高度にカスタマイズ可能で、ニーズに合わせて複数の方法で構成できます。 Apache を好みに合わせて構成するために使用できるサードパーティ モジュールが多数あります。
ModSecurity は、Apache Web サーバーにネイティブなオープンソースの WAF (Web アプリケーション ファイアウォール) です。当初は Apache モジュールのみでしたが、1 年かけて成長し、本格的な Web アプリ ファイアウォールになりました。現在ではNginx やIIS でもサポートされています。
ModSecurity は、Web サーバーへの受信リクエストを、事前に定義された一連のルールと照合して検査します。通常、SQL インジェクション、XSS、セッションなどの一連の Web アプリケーション攻撃から Web サイトを保護する、CRS (コア ルール セット) と呼ばれる一連のルールを提供します。他のエクスプロイトの中でも特にハイジャックが挙げられます。
[こちらもおすすめ: Linux サーバーをマルウェアとルートキットでスキャンする 5 つのツール ]
ModSecurity アプリケーション ファイアウォールは、サイトを外部攻撃から保護する上で、PCI DSS 準拠の不可欠な部分を形成します。モジュールが有効になると、「403 Forbidden Error」がトリガーされます。これは、Web サーバー上のリソースにアクセスするための権限が不十分であることを意味します。
このガイドでは、Debian および Ubuntu 上の Apache と連携するように ModSecurity をセットアップおよび構成する方法を説明します。 > リナックス。
ステップ 1: ModSecurity を Ubuntu にインストールする
最初のステップはModSecurity をインストールすることです。まず、次のようにパッケージ リストを更新します。
$ sudo apt update
次に、他の依存関係やライブラリと一緒に ModSecurity パッケージをインストールします。
$ sudo apt install libapache2-mod-security2

その後、モジュールを有効にします。
$ sudo a2enmod security2
次に、Apache Web サーバーを再起動して、変更を適用します。
$ sudo systemctl restart apache2
この時点でModSecurity は正常にインストールされています。それでは設定してみましょう。
ステップ 2: Ubuntu で ModSecurity を構成する
デフォルトでは、ModSecurity は不審なアクティビティを検出してログに記録するようにのみ設定されています。さらに一歩進んで、不審なアクティビティを検出するだけでなくブロックするように構成する必要があります。
デフォルトのModSecurity 構成ファイル – modsecurity.conf-recommended – を、以下のコマンドで指定されている新しいファイルにコピーします。
$ sudo cp /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf
好みのテキスト エディタを使用してファイルを開きます
$ sudo nano /etc/modsecurity/modsecurity.conf
次の行を見つけます。
SecRuleEngine DetectionOnly
次のように設定します。
SecRuleEngine On

変更を保存してファイルを終了します。
Apache に変更を適用するには、Web サーバーを再起動します。
$ sudo systemctl restart apache2
ステップ 3: OWASP ModSecurity コア ルールセットをダウンロードする
次のステップでは、GitHub ページから最新の OWASP ModSecurity Core Rule Set (CRS) をダウンロードします。
図に示すように、OWASP git リポジトリのクローンを作成します。
$ git clone https://github.com/coreruleset/coreruleset.git
ディレクトリに移動します。
$ cd coreruleset/
必ず crs-setup.conf.example ファイルを modsecurity ディレクトリに移動し、名前を crs-setup.conf に変更してください。
$ sudo mv crs-setup.conf.example /etc/modsecurity/crs-setup.conf
さらに、rules ディレクトリを modsecurity ディレクトリにも移動します。
$ sudo mv rules/ /etc/modsecurity/
次に、security2.conf ファイルを編集します。
$ sudo nano /etc/apache2/mods-enabled/security2.conf
次の行が含まれていることを確認してください。
IncludeOptional /etc/modsecurity/*.conf Include /etc/modsecurity/rules/*.conf

次に、変更を保持するためにApacheを再起動します。
$ sudo systemctl restart apache2
次に、ModSecurity 構成をテストしてみましょう。
ステップ 4: Ubuntu で ModSecurity 構成をテストする
最後に、ModSecurity が疑わしい HTTP トラフィックを検出してブロックできることをテストする必要があります。これを実現するには、デフォルトの仮想ホスト ファイルを編集する必要があります。
$ sudo nano /etc/apache2/sites-available/000-default.conf
次に、Web ブラウザから特定の URL にアクセスしたときに、その URL へのアクセスをブロックするブロック ルールを作成します。
これらの行を末尾の「Virtualhost」終了タグの前に追加します。
SecRuleEngine On SecRule ARGS:testparam "@contains test" "id:254,deny,status:403,msg:'Test Successful'"
「id」タグと「msg」タグを任意の値に自由に設定してください。

次に、Apache Web サーバーを再起動して、仮想ホスト構成ファイルに加えられた変更を適用します。
$ sudo systemctl restart apache2
Web ブラウザで、最後に ?testparam=test
が付いている URL にアクセスしてみてください。
http://server-ip/?testparam=test
リソースへのアクセスがブロックされていることを示す「403 Forbidden error」 が表示されます。

次のようにエラー ログを確認することで、クライアントがブロックされたことをさらに確認できます。
$ cat /var/log/apache2/error.log | grep “Test Successful”

[こちらもお勧めです: Debian/Ubuntu に Nginx 用の ModSecurity をインストールする方法 ]
これは、不要なトラフィックを検出してブロックするためのModSecurity が正常に設定されたことを確認します。このガイドでは、Debian/Ubuntu システム上で Apache を使用して ModSecurity をセットアップするプロセスを説明しました。