ModSecurityは、Apache、IIS、NginxなどのさまざまなWebサーバーでサポートされている無料のオープンソースWebアプリケーションファイアウォールです。 Webサーバーを保護するための外部セキュリティレイヤーとして展開されます。
ここLinuxAPTでは、Ubuntu20.04サーバーにNginxがプリインストールされたModSecurityファイアウォールをインストールする方法を検討します。
Ubuntu20にNginxを使用してModsecurityをデプロイする手順
1.システムにNginxをインストールします
サーバーにNginxがインストールされていない場合は、次のガイドに従ってModsecurityのインストール要件を満たします:https://linuxapt.com/blog/1276-install-nginx-on-ubuntu-20-04-lts-using-ソースコード
2.libmodsecurity3をインストールします
次に、マシンにgitをインストールして、ModSecuritygitリポジトリのクローンを作成できるようにします。次のコマンドを実行することでそれを行うことができます:
$ sudo apt install git -y
gitがインストールされたので、次のコマンドを実行してリポジトリのクローンを作成します。
$ git clone --depth 1 -b v3/master --single-branch https://github.com/SpiderLabs/ModSecurity /usr/local/src/ModSecurity/
3.Modsecurityディレクトリに移動します
modsecurity gitリポジトリのクローンを作成したので、以下のパスに従ってmodsecurityディレクトリに移動します。
$ cd /usr/local/src/ModSecurity/
4.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
5.Gitモジュールをインストールします
次に、次のコマンドを使用してgitサブモジュールをインストールします。
$ git submodule init
次に、サブモジュールを更新します:
$ git submodule update
6.modsecurity環境を構築します
modsecurity環境を構築する時が来ました。これを行うには、次のコマンドを実行します。
$ ./build.sh
次のコマンドを使用して構成します:
$ ./configure
この後、次のエラーが発生します:
fatal: No names found, cannot describe anything.
7.modsecurityソースコードをコンパイルします
次に、次のコマンドを使用してlibmodsecurity3の環境をコンパイルします。
$ make
コンパイル速度を上げたい場合は、-j
$ make -j 4
次に、インストールコマンドを実行します:
$ sudo make install
インストールは/usr/ local /modsecurity/で行われます。
8.modsecurity-nginxコネクタをインストールします
ここでは、Modsecurity-nginxコネクタをインストールします。これは、NginxとModSecurityの間の接続および通信ポイントです。
まず、コネクタリポジトリのクローンを作成する必要があります。次のコマンドを実行してこれを行います:
$ sudo git clone --depth 1 https://github.com/SpiderLabs/ModSecurity-nginx.git /usr/local/src/ModSecurity-nginx/
9.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/
10.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;
11.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
ファイルを保存して終了します。
12.unicode.mappingファイルをコピーします
最後に、Modsecurityのunicode.mappingファイルを次のようにコピーします。
$ sudo cp /usr/local/src/ModSecurity/unicode.mapping /etc/nginx/modsec/
13.Nginx構成を確認します
Nginxを再起動する前に、次のコマンドを実行して構成が正常かどうかを確認してください:
$ sudo nginx -t
14.Nginxをリロードします
次のコマンドでNginxを再起動します:
$ sudo systemctl restart nginx