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をオンにします SecRuleEngine
に On
。
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.example
に crs-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をインストールする方法に関するガイドの説明です。
参照:
その他のチュートリアル
DockerコンテナにApacheを使用してModSecurity3をインストールする
ModSecurityとClamAVで悪意のあるファイルのアップロードを傍受する
The post Ubuntu22.04にApacheを使用してModSecurityをインストールする appeared first on Gamingsym Japan.