GNU/Linux >> Linux の 問題 >  >> Ubuntu

ApacheでModSecurityを設定および構成する方法

はじめに

ModSecurityは、ファイアウォールのように機能するApache用のプラグインモジュールです。ルールセットを介して機能し、サーバーのセキュリティをカスタマイズおよび構成できます。

ModSecurityは、Webトラフィックをリアルタイムで監視し、侵入を検出して対応するのにも役立ちます。 Apache、Nginx、およびIIFで使用でき、Debian、Ubuntu、およびCentOSと互換性があります。

このチュートリアルでは、ApacheWebサーバーにModSecurityをインストールして構成する方法について説明します。

前提条件

  • インストールおよび構成されたLAMPスタック(Linux、Apache、MySQL、PHP)
  • sudoを使用したユーザーアカウントへのアクセス またはルート 特権
  • デフォルトで含まれているパッケージマネージャー(APTまたはYUM)
  • コマンドライン/ターミナルウィンドウ(Ctrl-Alt-T、Ctrl-Alt-F1)
  • nanoなどのテキストエディタ

ステップ1:ソフトウェアリポジトリを更新する

ターミナルウィンドウを開き、次のように入力します。

Debian/Ubuntuの場合

sudo apt update -y

CentOSの場合

sudo yum update -y

ステップ2:ApacheにModSecurityをインストールする

DebianにModSecurityをインストールする

1.ターミナルウィンドウで、次のように入力します。

sudo apt install libapache2-modsecurity

プロンプトが表示されたら、 yを押します Enterを押します プロセスを完了できるようにします。

2. Apacheサービスを再起動します:

sudo systemctl restart apache2

Apacheが正常に再起動された場合、出力はありません。

3.ソフトウェアのバージョンを確認します(2.8.0以降である必要があります):

apt-cache show libapache2-modsecurity

Ubuntu18.04にModSecurityをインストールする

1.ターミナルウィンドウで、次のように入力します。

sudo apt install libapache2-mod-security2

プロンプトが表示されたら、 yを押します Enterを押します プロセスを完了できるようにします。

2. Apacheサービスを再起動します:

sudo systemctl restart apache2

Apacheが正常に再起動された場合、出力はありません。

3.ソフトウェアバージョンを確認します(2.8.0以降である必要があります):

apt-cache show libapache2-mod-security2

CentOS7にModSecurityをインストールする

1.ターミナルウィンドウに次のように入力します。

sudo yum install mod_security

プロンプトが表示されたら、 yを押します Enterを押します プロセスを完了できるようにします。

2. Apacheサービスを再起動します:

sudo systemctl restart httpd.service

3.ソフトウェアバージョンを確認します(2.8.0以降である必要があります):

yum info mod_security

ステップ:3ModSecurityを構成する

インストール時に、ModSecurityはデフォルトのルールに従ってイベントをログに記録するように設定されます。トラフィックを検出してブロックするルールを調整するには、構成ファイルを編集する必要があります。

デフォルトの構成ファイルは/etc/modsecurity/modsecurity.conf-recommended.

1.ファイルをコピーして名前を変更します:

sudo cp /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf

2.次に、ModSecurity検出モードを変更します 。まず、 / etc / modsecurityに移動します フォルダ:

sudo cd /etc/modsecurity

3.テキストエディタで構成ファイルを開きます(nanoを使用します):

sudo nano modsecurity.conf

上部近くに、次のラベルの付いたエントリが表示されます:

SecRuleEngine DetectionOnly

これを次のように変更します:

SecRuleEngine On

4. CTRL + Xを使用します 終了するには、 yを押します 次に入力 変更を保存します。

5. / etc/modsecurityフォルダーから移動します。

cd

6. Apacheを再起動します:

Debian/Ubuntuについて

sudo systemctl restart apache2

CentOSの場合

sudo systemctl restart httpd.service

これにより、基本的なデフォルトルールを使用してModSecurityがオンになります。 Linuxの一部のバージョンでは、これにはOWASPコアルールセットが含まれます。ただし、これは開発者が管理している最新バージョンとは異なる場合があります。

ステップ4:最新のOWASPModSecurityルールをダウンロードする

ModSecurityの最新のコアルールセット(CRS)はGitHubで管理されています。

1. Gをインストールします それ システムにまだ含まれていない場合。

Debian / UbuntuにGitをインストールする:

sudo apt install git

CentOSにGitをインストールする:

sudo yum install git

2. CRSのコピーをダウンロードします:

git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.git

これにより、ディレクトリのコピーが現在の作業場所のサブディレクトリとして配置されます。

3.新しいディレクトリを開きます:

cd owasp-modsecurity-crs

4. crs-setupファイルを移動します:

sudo mv crs-setup.conf.example /etc/modsecurity/crs-setup.conf

5.次に、rules/ディレクトリを移動します。

sudo mv rules/ /etc/modsecurity

このディレクトリを移動しようとしてエラーが発生した場合は、次のように入力します。

sudo mkdir /etc/modsecurity/rules
cd rules 
sudo cp *.* /etc/modsecurity/rules

6.次に、 security2.confを確認します ModSecurityルールをロードするように設定されていることを確認するファイル:

sudo nano /etc/apache2/mods-enabled/security2.conf

次の行が含まれ、コメントが外されていることを確認します。

IncludeOptional /etc/modsecurity/*.conf
Include /etc/modsecurity/rules/*.conf

それらがない場合は、追加します。それらを複製しないでください。複製すると、Apacheサービスが無効になるリスクがあります。

7. Apacheサービスを再起動します:

Debian/Ubuntuについて

sudo systemctl restart apache2

CentOSの場合

sudo systemctl restart httpd.service

ステップ5:Apache構成をテストする

1.デフォルトのApache構成ファイルを開きます:

sudo nano /etc/apache2/sites-available/000-default.conf

2. </VirtualHost>を見つけます 下部にタグを付け、次の行を追加します:

SecRuleEngine On
SecRule ARGS:testparam "@contains test" "id:1234,deny,status:403,msg:'phoenixNAP test rule was triggered'"

msgを変更できます 好きなように。

ファイルを保存して終了します( CTRL+X> y>入力

3. Apacheサービスを再起動します:

Debian/Ubuntuについて

sudo systemctl restart apache2

CentOSの場合

sudo systemctl restart httpd.service

4.次に、次のコマンドを入力します。

curl localhost/index.html?testparam=test

システムは、デフォルトのWebページを表示しようとして応答します。コンテンツの代わりに、タグ内にエラーコードとメッセージを生成します:

5.次のコマンドを使用してApacheエラーログでコード403を探すことにより、ModSecurityが機能したことを確認できます。

sudo tail -f /var/log/apache2/error.log

下の方のエントリの1つは、ModSecurityエラーコードである必要があります:

Bashスクリプトを使用してModSecurityとOWASPCRSをテストする

ModSecurityのテストに使用できるもう1つの方法は、 Bを使用することです。 スクリプト。

1.ターミナルで次のコマンドを入力します。

curl localhost/index.html?exec=/bin/bash

出力には、前回と同じエラーメッセージが表示されます。

2. Apache error.logファイルをもう一度表示すると、ルールが開始されていることがわかります。

sudo tail -f /var/log/apache2/error.log

出力には、OWASP関連のModSecurityエラーメッセージが表示されます。

ステップ6:ModSecurityルールを作成する

以下は、ModSecurityを使用してPHPフォーム上の特定のキーワードをブロックする方法のテスト例です。

1.次のコマンドを使用してhtmlディレクトリ内にPHPファイルを作成します:

sudo nano /var/www//html/test.php

2.ファイルに次のコードを入力します。

<html>
<body>
<?php
if(isset($_POST['data']))
echo $_POST['data'];
else
{
?>
<form method="post" action="">
Enter text here:<textarea name="data"></textarea>
<input type="submit"/>
</form>
<?php
}
?>
</body>
</html>

ファイルを保存して終了します。

3.次に、新しいModSecurityカスタムルールファイルを作成します。

sudo nano /etc/modsecurity/modsecurity_custom_rules.conf

次の行を追加します:

SecRule REQUEST_FILENAME "test.php" "id:'400001',chain,deny,log,msg:'Spam detected'"
SecRule REQUEST_METHOD "POST" chain
SecRule REQUEST_BODY "@rx (?i:(enlarge|Nigerian|gold))"

もちろん、最後の行のキーワードを好きなように変更してください。

ファイルを保存して終了します。

4. Apacheサービスをリロードします:

Debian/Ubuntuについて

sudo systemctl restart apache2

CentOSの場合

sudo systemctl restart httpd.service

5.Webブラウザでフォームを起動します

localhost/test.php

6.ルールのキーワードの1つをフォームに入力します。この例では、拡大、ナイジェリア、 またはゴールド

403Forbiddenエラーメッセージが表示されます。

/var/log/apache2/error.logを確認することもできます ModSecurityのアクションを確認するためのファイル。


Ubuntu
  1. Apacheで.htaccessファイルを有効にして設定する方法

  2. CentOS8にApacheをインストールする方法

  3. ApacheでvHostを設定する方法

  1. Ubuntu18.04にApacheをインストールする方法

  2. Ubuntu18.04でApache仮想ホストを設定する方法

  3. Ubuntu20.04にApacheをインストールする方法

  1. FedoraでApacheVirtualHostを構成する

  2. Ubuntu18.04でApacheを使用してNextcloudをインストールおよび構成する方法

  3. CentOS7にApacheをインストールする方法