インストール・WAFポリシーを設定する
Note
sudo apt remove nginx-plus --purge
Note
pip をインストールし、 jinja2 のパッケージをアップデートする必要があります。1. インストール、設定ファイル作成
NGINX Plus, NAP WAF/DoSインストールと同時に設定ファイルを作成することが可能です。 プロジェクトで共通の設定や初期設定がある場合にはこの方法が便利です。
ライセンス、Playbookなど正しく配置していることを想定し説明を進めます。 確認が必要な場合 1. 事前確認 を参照してください。
## cd ~/f5j-nginx-ansible-lab
cat playbook/deploy-nginx-plus-app-protect-waf-dos-proxywafconf.yaml
26-34行目で、Ansibleで実行するPlaybookから相対パスで指定する
../files/nap-waf/に配置されているSecurity Policy、Log Policyのファイルを実行先のホストへコピーします60-66行目で、
App Protect WAFの設定を記述します。この内容は、46行目のファイルに反映されますその他のパラメータの詳細は GitHub ansible-role-nginx-config app_protect_waf の項目を参照してください
NGINX Plus、NGINX App Protect WAF/DoS をインストール
## cd ~/f5j-nginx-ansible-lab
ansible-playbook -i inventories/hosts -l nginx1 playbook/deploy-nginx-plus-app-protect-waf-dos-proxywafconf.yaml --private-key="~/.ssh/id_rsa" --become
1PLAY [all] ******************************************************************************************************************************************************************************************************************************************************************
2
3TASK [Gathering Facts] ******************************************************************************************************************************************************************************************************************************************************
4ok: [10.1.1.7]
5
6TASK [Install NGINX Plus] ***************************************************************************************************************************************************************************************************************************************************
7
8** 省略 **
9
10PLAY RECAP ******************************************************************************************************************************************************************************************************************************************************************
1110.1.1.7 : ok=61 changed=10 unreachable=0 failed=0 skipped=57 rescued=0 ignored=0
実際に生成されたファイルの内容を確認します
nginx.conf の先頭行を確認し、モジュールのロードを行うコマンドについて確認します
head /etc/nginx/nginx.conf
1load_module modules/ngx_http_app_protect_dos_module.so;
2load_module modules/ngx_http_app_protect_module.so;
3
4user nginx;
5worker_processes auto;
6
7error_log /var/log/nginx/error.log notice;
8pid /var/run/nginx.pid;
1,2行目に、指定したモジュールを読み込む設定が記述されています
WAFの設定で利用するセキュリティポリシーファイルがコピーされていることを確認します
ls -1 /etc/nginx/conf.d/custom*
1/etc/nginx/conf.d/custom_log_format.json
2/etc/nginx/conf.d/custom_policy.json
生成した default.conf の内容を確認します
cat /etc/nginx/conf.d/default.conf
1#
2# Ansible managed
3#
4
5upstream server_group {
6 server security-backend1:80;
7 zone backend 64k;
8}
9
10server {
11 listen 80;
12 server_name localhost;
13
14 app_protect_enable on;
15 app_protect_policy_file /etc/nginx/conf.d/custom_policy.json;
16 app_protect_security_log_enable on;
17 app_protect_security_log /etc/nginx/conf.d/custom_log_format.json syslog:server=elasticsearch:5144;
18
19 app_protect_dos_enable on;
20
21 access_log /var/log/nginx/access.log main;
22
23 location / {
24 proxy_pass http://server_group/;
25 proxy_set_header Host $host;
26
27
28 }
29}
14-15行目で、App Protect WAFを有効にし、WAFポリシーファイルを指定します
16-17行目で、App Protect WAFのログを有効にし、ログポリシーを指定したファイルと転送先を指定します
2. 動作確認
Curlコマンドを実行し、応答結果を確認します
curl -s "localhost/?a=<script>"
以下が表示結果サンプルです。HTMLを見やすいように開業し整形しています。
1<html>
2 <head>
3 <title>Request Rejected</title>
4 </head>
5 <body>
6 The requested URL was rejected. Please consult with your administrator.<br><br>
7 Your support ID is: 3589473112366060476<br><br>
8 <a href='javascript:history.back();'>[Go Back]</a>
9 </body>
10</html>
NGINX App Protect WAFによって通信がブロックされており、 3行目に
Request Rejectedと表示されています7行目に
Support IDが表示されています。このIDを利用することにより該当するログメッセージを特定することができます
F5 UDFのラボ環境で実行する場合、同環境にELKをデプロイしています。以下の手順を参考にELKを開き、WAFのLogに support_id **画面に表示されたsupport ID** を入力し結果を確認してください
NGINX Plus Lab Security の各動作確認 の内容を確認してください
3. 環境の削除
環境を削除する場合、 3. NGINX Plus、NAP WAF/DoSのアンインストール の内容を参考にコマンドを実行してください