もっと詳しく

Ubuntu22.04にApacheを使用してModSecurityをインストールする方法に関するガイドへようこそ。 Modsecurity は、TrustwaveのSpiderLabsによって開発されたオープンソースのクロスプラットフォームWebアプリケーションファイアウォール(WAF)です。 SQLインジェクション、クロスサイトスクリプティング(XSS)、ローカルファイルインクルード、リモートファイルインクルードなどの幅広い攻撃からWebアプリケーションを保護する堅牢なイベントベースのプログラミング言語を提供します。 また、HTTPトラフィックの監視、ロギング、およびリアルタイム分析も可能です。

ModSecurityには2つのバージョンがあります。 Modsecurity 2.xおよびlibmodsecurity(Modsecurity 3.x)は、Modsecurity2を完全に書き直したものです。

Ubuntu22.04にApacheを使用してModSecurityをインストールする

まず、システムパッケージを最新バージョンに再同期します。

apt update

Ubuntu22.04にApacheWebサーバーをインストールします

ModSecurityはWebサーバー上で実行されます。 このガイドでは、Apacheを使用しています。 まだインストールされていない場合は、Apacheをインストールできます

Ubuntu22.04にLAMPスタックをインストールする

これで、Modsecurity2のインストールまたはModsecurity3のインストールを選択できます。

2つは正常に動作します。 ただし、Modsecurity 3.xで検出された攻撃のブロックを有効にすると、ログはmodsec_audit.logファイルにのみ書き込まれ、Apache error.logには書き込まれないという問題があるため、Modsecurity2.xを選択します。 ただし、どちらをインストールするかはあなた次第です。

Ubuntu22.04にModsecurity2.xをインストールします

ModSecurity 2(具体的には2.9.5)をインストールする場合は、以下のコマンドを実行できます。

apt install libapache2-mod-security2

Ubuntu22.04にModsecurity3.xをインストールします

  • 必要なビルドツールと依存関係をインストールする

LibmodsecurityまたはModsecurity3(具体的には3.0.6)をUbuntu 22.04にインストールするには、ソースからビルドします。 したがって、ビルドを成功させるには、いくつかの必要なビルドツールと依存関係をインストールする必要があります。

apt install g++ flex bison curl apache2-dev doxygen 
libyajl-dev ssdeep liblua5.2-dev libgeoip-dev libtool 
dh-autoreconf libcurl4-gnutls-dev libxml2 libpcre++-dev 
libxml2-dev git -y
  • Ubuntu22.04でModSecurityをコンパイルしてインストールします

システムがセットアップされたら、Ubuntu22.04へのModsecurityv3のインストールに進むことができます。

  • ModSecurityソースコードをダウンロードする

の最新の安定バージョンをインストールするには ModSecurity、ソースからコンパイルする必要があります。

したがって、に移動します ModSecurityリリースページ ModSecurity3のソースコードをダウンロードします。 単純にwgetを使用してプルできます。

wget https://github.com/SpiderLabs/ModSecurity/releases/download/v3.0.6/modsecurity-v3.0.6.tar.gz

ModSecurityソースコードを抽出します。

tar xzf modsecurity-v3.0.6.tar.gz
  • Ubuntu22.04でModSecurity3をコンパイルしてインストールします

ModSecurityソースディレクトリに移動し、構成、コンパイル、およびインストールします

cd modsecurity-v3.0.6

システムに適応するようにModSecurityを構成し、必要な依存関係が欠落していないかどうかを確認します。

./build.sh

あなたは安全に無視することができます fatal: not a git repository (or any of the parent directories): .git エラーと廃止された警告メッセージ。

./configure

Ubuntu 22.04でApacheを使用してModSecurityをコンパイルおよびインストールする前に、依存関係の問題がある場合は必ず修正してください。

上記のconfigureスクリプトがエラーなしで完了した場合は、Ubuntu22.04でのLibModSecurityのコンパイルとインストールに進みます。

make
make install

LibModSecurity、別名ModSecurityv3がUbuntu22.04にインストールされました

  • ModSecurity-Apacheコネクタをインストールします

ModSecurity-apacheコネクタは、ApacheとlibModsecurity間の通信チャネルを提供します。 libmodsecurityがインストールされたので、次の手順に従ってModsecurityApacheコネクタをインストールします。

ModSecurityApacheコネクタのgitリポジトリのクローンを作成します。

cd ~
git clone https://github.com/SpiderLabs/ModSecurity-apache

ModSecurity-apacheディレクトリに移動し、次のコマンドを実行してコンパイルおよびインストールします。

cd ModSecurity-apache
./autogen.sh
./configure --with-libmodsecurity=/usr/local/modsecurity/
make
make install

ModSecurityを使用してApacheを構成する

Modsecurity2.xを構成します

サンプル構成の名前を変更します。

cp /etc/modsecurity/modsecurity.conf{-recommended,}

OWASP ModSecurityコアルールセット(CRS)を/ etc / modsecurity /crs/ディレクトリにダウンロードします。

git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.git
cp -r owasp-modsecurity-crs/rules /etc/modsecurity/crs/

ModsecurityルールをロードするようにApacheを設定します。

cp /etc/apache2/mods-available/security2.conf{,.old}
cat > /etc/apache2/mods-available/security2.conf << 'EOL'
<IfModule security2_module>
        SecDataDir /var/cache/modsecurity
        Include /etc/modsecurity/modsecurity.conf
        Include /etc/modsecurity/crs/crs-setup.conf
        Include /etc/modsecurity/crs/rules/*.conf
</IfModule>
EOL

ModsecurityOWASPルールのブロックを有効にします。

vim /etc/modsecurity/crs/crs-setup.conf

行の先頭に#を追加して、以下の行にコメントを付けます。

SecDefaultAction "phase:1,log,auditlog,pass"
SecDefaultAction "phase:2,log,auditlog,pass"

彼らがのように見えるように;

#SecDefaultAction "phase:1,log,auditlog,pass"
#SecDefaultAction "phase:2,log,auditlog,pass"

次に、行の先頭にある#を削除して、以下の行のコメントを解除します。

# SecDefaultAction "phase:1,log,auditlog,deny,status:403"
# SecDefaultAction "phase:2,log,auditlog,deny,status:403"

彼らがのように見えるように;

SecDefaultAction "phase:1,log,auditlog,deny,status:403"
SecDefaultAction "phase:2,log,auditlog,deny,status:403"

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

ModsecurityEngineをオンにします。

sed -i 's/SecRuleEngine DetectionOnly/SecRuleEngine On/' /etc/modsecurity/modsecurity.conf

Modsecurity3.xを構成します

以下の行をメインのApache構成ファイルに追加して、ModsecurityApacheコネクタモジュールをロードするようにApacheを構成します。

echo "LoadModule security3_module /usr/lib/apache2/modules/mod_security3.so" | sudo tee -a /etc/apache2/apache2.conf

ModSecurity構成ディレクトリを下に作成します /etc/apache2

sudo mkdir /etc/apache2/modsecurity.d

サンプルのModSecurity構成ファイルをソースコードディレクトリから上記で作成したModSec構成ディレクトリにコピーし、名前を次のように変更します。

sudo cp ~/modsecurity-v3.0.6/modsecurity.conf-recommended /etc/apache2/modsecurity.d/modsecurity.conf

また、 unicode.mapping ModSecurityソースディレクトリからApacheModsecurity設定ディレクトリへのファイル。

sudo cp ~/modsecurity-v3.0.6/unicode.mapping /etc/apache2/modsecurity.d/

の値を変更してModSecurityをオンにします SecRuleEngineOn

sed -i 's/SecRuleEngine DetectionOnly/SecRuleEngine On/' /etc/modsecurity/modsecurity.conf

次に、ModSecurityルールを構成する必要があります。

したがって、たとえば、含めるルールを定義できるファイルを作成します。 /etc/apache2/modsecurity.d/modsec_rules.conf

cat > /etc/apache2/modsecurity.d/modsec_rules.conf << 'EOL'
Include "/etc/apache2/modsecurity.d/modsecurity.conf"
Include "/etc/apache2/modsecurity.d/owasp-crs/crs-setup.conf"
Include "/etc/apache2/modsecurity.d/owasp-crs/rules/*.conf"
EOL

ModSecurity 3ルールの一部としてOWASPルールが含まれているので、それらのインストールに進みます。

OWASP ModSecurityコアルールセット(CRS) ModSecurityで使用するための一般的な攻撃検出ルールのセットです。 これは、OWASPトップ10、最小限の誤ったアラートなど、さまざまな攻撃からWebアプリケーションを保護することを目的としています。

からCRSのクローンを作成します GitHubリポジトリ/etc/apache2/modsecurity.d/ 以下に示すように;

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

次に、名前を変更します crs-setup.conf.examplecrs-setup.conf

sudo cp /etc/apache2/modsecurity.d/owasp-crs/crs-setup.conf{.example,}

同様に、上記の/etc/apache2/modsecurity.d/owasp-crs/crs-setup.confファイルを編集して、ModsecurityOWASPルールのブロックを有効にします。

vim /etc/apache2/modsecurity.d/owasp-crs/crs-setup.conf
...
#SecDefaultAction "phase:1,log,auditlog,pass"
#SecDefaultAction "phase:2,log,auditlog,pass"

...
#
SecDefaultAction "phase:1,log,auditlog,deny,status:403"
SecDefaultAction "phase:2,log,auditlog,deny,status:403"
...

ノート この変更により、ModSecurity 3はmodsec_audit.logファイルにのみログを記録し、Apacheerror.logにはログを記録しません。

ModSecurity 2の場合、攻撃ログはApacheエラーログに書き込まれます。 これにより、これらのログを他の外部セキュリティ監視ツールで簡単に処理できます。

UbuntuでModSecurityApacheProtectionをアクティブ化する

その後、デフォルトのサイト構成ファイルまたは任意の仮想ホスト構成ファイルでModsecurityをアクティブ化します。 このガイドでは、Apacheのデフォルトのサイト構成ファイルを使用しています。

UbuntuでModsecurity2.xをアクティブ化する

Modsecurity 2.xを実行している場合、この時点で行う必要があるのは、ApacheWebサーバーを再起動することだけです。

apachectl -t
systemctl restart apache2

UbuntuでModsecurity3.xをアクティブ化する

Modsecurity 3.xを実行している場合は、次のようにアクティブ化します。

cp /etc/apache2/sites-available/000-default.conf{,.old}

コメントなしのデフォルトサイト仮想ホスト構成のサンプルを参照してください。

cat > /etc/apache2/sites-available/000-default.conf << 'EOL'
<VirtualHost *:80>
	modsecurity on
	modsecurity_rules_file /etc/apache2/modsecurity.d/modsec_rules.conf 
	ServerAdmin [email protected]
	DocumentRoot /var/www/html
	ErrorLog ${APACHE_LOG_DIR}/error.log
	CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
EOL

台詞;

	modsecurity on
	modsecurity_rules_file /etc/apache2/modsecurity.d/modsec_rules.conf 

Modsecurityをオンにし、Modsecurityルールの場所を指定します。

Apacheで構成エラーを確認し、再起動します。

apachectl -t

エラーがない場合は、出力を取得する必要があります。 構文OK

systemctl restart apache2

Modsecurityのテスト

次に、コマンドインジェクションなどのModsecurityの有効性をテストします。 以下のコマンドを実行します。

curl localhost?doc=/bin/ls
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access this resource.</p>
<hr>
<address>Apache/2.4.52 (Ubuntu) Server at localhost Port 80</address>
</body></html>

Modsecurityログを確認してください。

tail /var/log/modsec_audit.log
...

---GMiW89KJ---H--
ModSecurity: Access denied with code 403 (phase 2). Matched "Operator `PmFromFile' with parameter `unix-shell.data' against variable `ARGS:doc' (Value: `/bin/ls' ) [file "/etc/apache2/modsecurity.d/owasp-crs/rules/REQUEST-932-APPLICATION-ATTACK-RCE.conf"] [line "496"] [id "932160"] [rev ""] [msg "Remote Command Execution: Unix Shell Code Found"] [data "Matched Data: bin/ls found within ARGS:doc: /bin/ls"] [severity "2"] [ver "OWASP_CRS/3.2.0"] [maturity "0"] [accuracy "0"] [tag "application-multi"] [tag "language-shell"] [tag "platform-unix"] [tag "attack-rce"] [tag "paranoia-level/1"] [tag "OWASP_CRS"] [tag "OWASP_CRS/WEB_ATTACK/COMMAND_INJECTION"] [tag "WASCTC/WASC-31"] [tag "OWASP_TOP_10/A1"] [tag "PCI/6.5.2"] [hostname "127.0.1.1"] [uri "/"] [unique_id "1651339080"] [ref "o1,6v10,7t:urlDecodeUni,t:cmdLine,t:normalizePath,t:lowercase"]

---GMiW89KJ---I--

---GMiW89KJ---J--

---GMiW89KJ---Z--
...

同様に、UbuntuにNiktoをインストールし、それを使用してサーバーをスキャンし、modsecurityルールをテストします。

UbuntuにNiktoWebScannerをインストールして使用する

ブラウザからサイトにアクセスし、コマンドインジェクション攻撃をテストします。 http://domain.name/?exec=/bin/bash

Apacheエラーログのテーリング。

tail -f /var/log/apache2/error.log
[Sat Apr 30 23:43:10.888508 2022] [:error] [pid 4504:tid 140113703069248] [client 127.0.0.1:57030] [client 127.0.0.1] ModSecurity: Access denied with code 403 (phase 2). Matched phrase "bin/ls" at ARGS:doc. [file "/etc/modsecurity/crs/rules/REQUEST-932-APPLICATION-ATTACK-RCE.conf"] [line "518"] [id "932160"] [msg "Remote Command Execution: Unix Shell Code Found"] [data "Matched Data: bin/ls found within ARGS:doc: /bin/ls"] [severity "CRITICAL"] [ver "OWASP_CRS/3.2.0"] [tag "application-multi"] [tag "language-shell"] [tag "platform-unix"] [tag "attack-rce"] [tag "paranoia-level/1"] [tag "OWASP_CRS"] [tag "OWASP_CRS/WEB_ATTACK/COMMAND_INJECTION"] [tag "WASCTC/WASC-31"] [tag "OWASP_TOP_10/A1"] [tag "PCI/6.5.2"] [hostname "localhost"] [uri "/"] [unique_id "Ym2fXltd6Nody7X50nHgVQAAAAc"]

結果として、これはModsecurityが期待どおりに機能していることを確認します。

これは、Ubuntu22.04にApacheを使用してModSecurityをインストールする方法に関するガイドの説明です。

参照:

ModSecurity-Apache

ModSecurity

その他のチュートリアル

DockerコンテナにApacheを使用してModSecurity3をインストールする

ModSecurityとClamAVで悪意のあるファイルのアップロードを傍受する

The post Ubuntu22.04にApacheを使用してModSecurityをインストールする appeared first on Gamingsym Japan.