はじめに
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のアクションを確認するためのファイル。