0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

BunkerWebと自作DNSで学ぶWebアプリをWAFで守る環境構築手順

0
Posted at

環境イメージ

Proxmox上に構築しているホームラボにはDNS環境が整っており、名前解決をすることが可能です。
BunkerWeb導入前は、権威DNSが管理しているwww.example.comのAレコードにはWebアプリを提供しているサーバのIPアドレスが記載されていましたが、BunkerWeb導入後はBunkerWebのIPアドレスを指定します。
BunkerWebにアクセスがあった時は、Webアプリにつなぐリバースプロキシの設定を入れます。
自宅ラボ01-ページ-8.drawio.png

関連記事

BunkerWebでの設定

BunkerWebにログインします。
image.png

画面左のサービスタブを押下します。
Create new serviceを押下します。
image.png

Web service - Front serviceタブにて以下の設定を行います。
Server name:www.example.com
Security Mode:detect
Let's Encryptの設定は外しておきます。
image.png

Web service - Upstream serverタブにて以下の設定を行います。
USE_REVERSE_PROXY: yes
REVERSE_PROXY_URL: /(ルートパス)を指定
REVERSE_PROXY_HOST: Apache2コンテナのIPアドレスとポートを指定
この状態で、Saveボタンを押下します。
image.png

www.example.comというサービスが作成されていることがわかります。
image.png

BunkerWebの名前解決も自作したDNSに向くように設定します。
BunkerWebコンテナを一度削除して、DNSの設定を含んだ状態で起動させます。

root@bunker-web:~# docker stop bunkerweb-aio
root@bunker-web:~# docker rm bunkerweb-aio
root@bunker-web:~# docker run -d --name bunkerweb-aio --dns 192.168.0.53 -v bw-storage:/data -p 80:8080/tcp -p 443:8443/tcp -p 443:8443/udp --restart always bunkerity/bunkerweb-all-in-one:1.6.9
2171d2485359d5d49a8def760962d8d4df72661add97c27936949af1dca3acba

DNS設定

続いてDNSの設定をしていきます。
現在権威DNSサーバにはwww.example.comは192.168.0.54とWebサーバのIPアドレスが指定されています。
このIPアドレスをBunkerWebのIPアドレスである192.168.0.45に変更します。
変更後にbindを再起動しておきます。

root@auth-dns:~# cd /etc/bind
root@auth-dns:/etc/bind# nano db.example.com
root@auth-dns:/etc/bind# cat db.example.com | grep -i www
www        IN  A   192.168.0.45
root@auth-dns:/etc/bind# systemctl reload bind9

動作確認

BunkerWeb経由でアクセス出来ること確認

/etc/resolv.confを編集してDNSの向き先を自作したDNS環境に変えます。

root@test-Standard-PC-i440FX-PIIX-1996:/etc# cat resolv.conf 
nameserver 192.168.0.53

名前解決が想定通り、具体的にはBunkerWebのIPアドレスが返ってくることがわかります。

root@test-Standard-PC-i440FX-PIIX-1996:~# dig www.example.com

; <<>> DiG 9.18.39-0ubuntu0.24.04.3-Ubuntu <<>> www.example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 10146
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: 8a0d96f3833146340100000069e446bd3df49a56616b8549 (good)
;; QUESTION SECTION:
;www.example.com.		IN	A

;; ANSWER SECTION:
www.example.com.	86400	IN	A	192.168.0.45

;; Query time: 2 msec
;; SERVER: 192.168.0.53#53(192.168.0.53) (UDP)
;; WHEN: Sun Apr 19 12:06:37 JST 2026
;; MSG SIZE  rcvd: 88

Webブラウジングでhttp://www.example.comにアクセスしてみます。
最初に念のためキャッシュをクリアしておきます。
FirefoxのプライバシーとセキュリティからCookieとサイトデータを見つけます。
ブラウジングデータを消去を押下します。
image.png

全ての履歴で全てにチェックを入れて、消去を押下します。
image.png

キャッシュクリア後にWebサイトにログイン試行をしたところ表示されました。
www.example.comはBunkerWebのIPと紐づいている状態ですが、自動でWebアプリに通信を連携してますね。
image.png

XSSを用いたDetect確認

簡単な攻撃、XSS(クロスサイトスクリプティング)を仕掛けてみます。
以下のURLを打ち込みます。。
http://www.example.com/?q=<script>alert</script>
image.png

アクセスが出来ました。何度か打ち込んでみましょう。
image.png

BunkerWebのReportsからアクセスが確認できると思います。
image.png

View Detailsを見るとXSS攻撃の情報が出てくると思います。
image.png

Block確認

検知だけして通信をブロックしないのは、BunkerWebで設定したServiceのSecurity modeがdetectになっている為です。これをblockにします。
image.png

設定反映後少し待機し、改めてhttp://www.example.com/?q=<script>alert</script>を打ち込んでみます。403エラー(≒Webサーバーがリクエストを理解したものの、権限不足や禁止設定によりアクセスを拒否した状態)になることがわかります。
image.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?