web-dev-qa-db-ja.com

再コンパイルせずにMod_SecurityforNginxをインストールします

LEMPをすべてセットアップしました。ここで、mod_securityを追加したいと思います。

調べてみましたが、nginxを再コンパイルする方法の説明しか見つかりませんでした。再コンパイルせずにmod_securityを追加する方法はありますか?

私はHTTP/2の後だったので、現在PPAがインストールされたnginx /1.9.15を実行しています。私はnginxをコンパイルした経験がなく、PPAから入手したので、再コンパイルしてもnginxが壊れてしまうかどうかわかりません。

あなたが助けることができることを願っています。

ありがとうございました。

2
julio

ModSecurityを動的モジュールとして追加することでそれを行うことができます。

要件:NGINX1.11.5以降。

ステップ1:必要なパッケージをインストールする

apt-get install -y apt-utils autoconf automake build-essential git libcurl4-openssl-dev libgeoip-dev liblmdb-dev libpcre++-dev libtool libxml2-dev libyajl-dev pkgconf wget zlib1g-dev

ステップ2:ModSecurity3ソースコードをダウンロードしてコンパイルする

git clone --depth 1 -b v3/master --single-branch https://github.com/SpiderLabs/ModSecurity
cd ModSecurity
git submodule init
git submodule update
./build.sh
./configure
make
make install

注:システムの処理能力にもよりますが、コンパイルには約15分かかります。

ステップ3:ModSecurity用のNGINXコネクタをダウンロードし、動的モジュールとしてコンパイルします

git clone --depth 1 https://github.com/SpiderLabs/ModSecurity-nginx.git
wget http://nginx.org/download/nginx-1.13.7.tar.gz 
tar zxvf nginx-1.13.7.tar.gz 
cd nginx-1.13.7
./configure --with-compat --add-dynamic-module=../ModSecurity-nginx
make modules
cp objs/ngx_http_modsecurity_module.so /etc/nginx/modules

ステップ4:NGINXModSecurityコネクタ動的モジュールをロードする

この行をに追加します /etc/nginx/nginx.conf

load_module modules/ngx_http_modsecurity_module.so;

ステップ5:構成して有効にする

適切なModSecurity構成ファイルを設定します。ここでは、ModSecurityの企業スポンサーであるTrustWaveSpiderlabsが提供する推奨ModSecurity構成を使用しています。

mkdir /etc/nginx/modsec
wget -P /etc/nginx/modsec/ https://raw.githubusercontent.com/SpiderLabs/ModSecurity/v3/master/modsecurity.conf-recommended
wget -P /etc/nginx/modsec/ https://raw.githubusercontent.com/SpiderLabs/ModSecurity/v3/master/unicode.mapping
mv /etc/nginx/modsec/modsecurity.conf-recommended /etc/nginx/modsec/modsecurity.conf

構成のSecRuleEngineディレクティブを変更して、デフォルトの「検出のみ」モードから悪意のあるトラフィックを積極的にドロップするように変更します。

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

1つ以上のルールを構成します。このブログの目的のために、testparamというURL引数の値に文字列testが含まれるリクエストを削除する単一の単純なルールを作成しています。次のテキストを /etc/nginx/modsec/main.conf

# From https://github.com/SpiderLabs/ModSecurity/blob/master/\
# modsecurity.conf-recommended
#
# Edit to set SecRuleEngine On
Include "/etc/nginx/modsec/modsecurity.conf"


# Basic test rule
SecRule ARGS:testparam "@contains test" "id:1234,deny,status:403"

Modsecurityおよびmodsecurity_rules_fileディレクティブをNGINX構成に追加して、ModSecurityを有効にします。

server {
    # ...
    modsecurity on;
    modsecurity_rules_file /etc/nginx/modsec/main.conf;
}

ソース: nginx.com

5
Vahid Nameni

リポジトリから利用可能なパッケージがあります ppa:phusion.nl/misc 。基本的な インストールする手順

Sudo add-apt-repository ppa:phusion.nl/misc
Sudo apt update
Sudo apt install libnginx-mod-http-modsecurity

その後、 その他の回答 から構成手順に従うことができます。

0
Majal