ModSecurityは、Apache、IIS、NginxなどのさまざまなWebサーバーでサポートされている無料のオープンソースWebアプリケーションファイアウォールです。 Webサーバーを保護するための外部セキュリティレイヤーとして展開されます。
このチュートリアルでは、NginxがプリインストールされたModSecurityファイアウォールをインストールする方法を学習します。プロセスを示すためにUbuntu20.04サーバーを使用しました。
前提条件
Ubuntu20.04LTSサーバー
UbuntuサーバーにインストールされたNginx
インストールガイド
サーバーにNginxがインストールされていない場合は、次のガイドに従ってModsecurityのインストール要件を満たします。
https://linuxways.net/ubuntu/how-to-install-nginx-on-ubuntu-20-04-lts-using-source-code/
Nginxをインストールしたので、ModSecurityのインストールを始めましょう。
ステップ1:libmodsecurity3をインストールする
まず、ModSecurity gitリポジトリのクローンを作成できるように、マシンにgitをインストールします。次のコマンドを実行することでそれを行うことができます:
sudo apt install git -y
gitがインストールされたので、次のコマンドを実行してリポジトリのクローンを作成します。
git clone --depth 1 -b v3/master --single-branch https://github.com/SpiderLabs/ModSecurity /usr/local/src/ModSecurity/
ステップ2:Modsecurityディレクトリに移動します
modsecurity gitリポジトリのクローンを作成したので、以下のパスに従ってmodsecurityディレクトリに移動します。
cd /usr/local/src/ModSecurity/
ステップ3:libmodsecurity3の依存関係をインストールする
Modsecurityディレクトリ内にいるので、このステップでlibmodsecurity3の依存関係をインストールします。次のコマンドを実行します:
sudo apt install gcc make build-essential autoconf automake libtool libcurl4-openssl-dev liblua5.3-dev libfuzzy-dev ssdeep gettext pkg-config libpcre3 libpcre3-dev libxml2 libxml2-dev libcurl4 libgeoip-dev libyajl-dev doxygen -y
ステップ4:Gitモジュールをインストールする
次に、次のコマンドを使用してgitサブモジュールをインストールします。
git submodule init
次に、サブモジュールを更新します:
git submodule update
ステップ5:modsecurity環境を構築する
modsecurity環境を構築する時が来ました。これを行うには、次のコマンドを実行します。
./build.sh
次のコマンドを使用して構成します:
./configure
この後、次のエラーが発生します:
これを無視して先に進んでもかまいません。
ステップ6:modsecurityソースコードをコンパイルします
次に、次のコマンドを使用してlibmodsecurity3の環境をコンパイルします。
make
コンパイル速度を上げたい場合は、-j
make -j 4
次に、インストールコマンドを実行します:
sudo make install
インストールは/usr / local / modsecurity /で行われます。 。
Step 7: Install modsecurity-nginx connector
このステップでは、Modsecurity-nginxコネクタをインストールします。これは、NginxとModSecurityの間の接続および通信ポイントです。
まず、コネクタリポジトリのクローンを作成する必要があります。次のコマンドを実行してこれを行います:
sudo git clone --depth 1 https://github.com/SpiderLabs/ModSecurity-nginx.git
/usr/local/src/ModSecurity-nginx/
ステップ8:modsecurity-nginxの依存関係をインストールする
まず、次のようにNginxソースディレクトリに移動します:
cd /usr/local/src/nginx/nginx-1.21.1
コマンドのNginxバージョンを現在のNginxバージョンに置き換えてください。そうしないと、エラーが発生します。
必要な依存関係をインストールするには、次のコマンドを実行します:
sudo apt build-dep nginx && sudo apt install uuid-dev -y
次に、次のコマンドを実行して、–with-compatフラグを指定してModsecurity-nginxコネクタモジュールをコンパイルします。
sudo ./configure --with-compat --add-dynamic-module=/usr/local/src/ModSecurity-nginx
次に、次のコマンドを実行して動的モジュールを作成します。
sudo make modules
次に、次のコマンドを使用して、 objs/ngx_http_modsecurity_module.soで作成した動的モジュールを/usr/ share / nginx/modulesにコピーします。
sudo cp objs/ngx_http_modsecurity_module.so /usr/share/nginx/modules/
ステップ9:Nginx構成ファイルでModsecurityを有効にする
NginxでModsecurityを有効にするには、最初に構成でload-moduleとmodsecurityモジュールへのパスを指定する必要があります。
次のようにnanoエディターでNginx構成ファイルを開きます:
sudo nano /etc/nginx/nginx.conf
ファイルの上部に次の行を追加します:
load_module modules/ngx_http_modsecurity_module.so;
HTTP {}セクションの下に、次のコード行を追加します。
modsecurity on;
modsecurity_rules_file /etc/nginx/modsec/modsec-config.conf;
ステップ10:modsecurity用にディレクトリとファイルを構成する
modsecという名前のディレクトリを作成します。ディレクトリのパスは、コマンドで指定されています:
sudo mkdir /etc/nginx/modsec/
将来、構成ファイルとルールを保存するためにこのディレクトリが必要になります。
次に、次のコマンドを使用して、複製されたgitディレクトリからサンプルのModsecurity構成ファイルをコピーします。
sudo cp /usr/local/src/ModSecurity/modsecurity.conf-recommended /etc/nginx/modsec/modsecurity.conf
次に、modsecurity構成ファイルを開きます。
sudo nano /etc/nginx/modsec/modsecurity.conf
7行目のファイルでSecRuleEngineディレクティブを見つけて、次のようにDetectionOnlyに変更します。
secruleEngine DetectionOnly
Modsecurityを有効にするには、次のディレクティブを次のようにOnに変更します。
secRuleEngine on
次に、224行目で次のディレクティブを見つけます。
secAuditLogParts ABIJDEFHZ
次のように変更します:
secAuditLogParts ABCDEFHJKZ
次に、modsec-config.confファイルを作成します。ここで、modsecurity.confおよびmodsecurityの他のルールを追加します:
sudo nano /etc/nginx/modsec/modsec-config.conf
作成したファイル内に、次の行を追加します:
Include /etc/nginx/modsec/modsecurity.conf
ファイルを保存して終了します。
ステップ11:unicode.mappingファイルをコピーする
最後に、Modsecurityのunicode.mappingファイルを次のようにコピーします。
sudo cp /usr/local/src/ModSecurity/unicode.mapping /etc/nginx/modsec/
ステップ12:Nginxの構成を確認する
Nginxを再起動する前に、次のコマンドを実行して構成が正常かどうかを確認してください:
sudo nginx -t
次の出力が得られたら、準備は完了です。
ステップ13:Nginxをリロードする
次のコマンドでNginxを再起動します:
sudo systemctl restart nginx
このガイドでは、すでにNginxがプリインストールされているubuntuサーバーにModsecurityをインストールする方法を説明しました。また、いくつかのわかりやすいコマンドを使用して、ModSecurityとNginxを接続するように構成する方法も確認しました。