ウェブサイト検索

Debian/Ubuntu で Apache を使用して ModSecurity をセットアップする方法


Apache Web サーバーは高度にカスタマイズ可能で、ニーズに合わせて複数の方法で構成できます。 Apache を好みに合わせて構成するために使用できるサードパーティ モジュールが多数あります。

ModSecurity は、Apache Web サーバーにネイティブなオープンソースの WAF (Web アプリケーション ファイアウォール) です。当初は Apache モジュールのみでしたが、1 年かけて成長し、本格的な Web アプリ ファイアウォールになりました。現在ではNginxIIS でもサポートされています。

ModSecurity は、Web サーバーへの受信リクエストを、事前に定義された一連のルールと照合して検査します。通常、SQL インジェクション、XSS、セッションなどの一連の Web アプリケーション攻撃から Web サイトを保護する、CRS (コア ルール セット) と呼ばれる一連のルールを提供します。他のエクスプロイトの中でも特にハイジャックが挙げられます。

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”

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