LoginSignup
1
0

More than 1 year has passed since last update.

Docker版ZabbixでSYNフラッディングを監視する

Last updated at Posted at 2023-05-17

この記事は

↓の記事へのリスペクト記事です

DDoS攻撃を受けてWebサービスがダウンしていく様子を『Zabbix』で監視してみました

Dockerネットワーク内でWEBサーバーへ負荷をかけて
その様子をZabbixで監視します

前の記事でzabbixエージェントをつくったので
その延長でさらにエージェントを追加し、そいつにはWEBサーバーを役を担わせます

注意

一般のサイトに攻撃すると法に抵触するおそれがあります

WEBサーバーをDockerにたてる

60080ポートでHTTPアクセスを受け付けるようにしたこと以外は前の記事とほぼ同じ

もちろんWEBサーバーになってもらうためのパッケージが必要なので
apache2をインストールしてサービスを起動する

docker run --name zabbix-agent-web --hostname ZabbixAgentWeb -e ZBX_HOSTNAME="agent-web" -e ZBX_SERVER_HOST="172.20.240.0" --privileged --network=zabbix-net -p 60010:10050 -p 60080:80 -d zabbix/zabbix-agent:ubuntu-6.0.11

# コンテナに入る
docker container exec -u root -it zabbix-agent-web /bin/bash

# 必要なパッケージをインストールする
apt update
apt install -y vim iproute2 iputils-ping curl net-tools
apt install -y apache2

# WEBサービスを起動する
service apache2 status
service apache2 start

サーバーが動いていることを確認する

curl --head localhost200 OKなら成功

curl --head localhost
HTTP/1.1 200 OK

ホストからlocalhost:60080へブラウザからアクセスしたときのようす
image.png

ほかサーバーと区別するために、vim /var/www/html/index.htmlでタイトルを少し編集しておいた

Zabbixサーバーへホストを登録する

前の記事の手順にしたがって、Zabbixエージェントをサーバーへ登録する
60010ポートからコンテナ内のWEBサーバー役エージェントを監視する

image.png

WEBサーバーを弱体化させる

甘んじて攻撃を受けてもらうために、サーバーの許容値を大きくして
さらにtcp_syncookies=0(無効化)する

本番環境のLinuxマシンでは絶対にやらないこと

vim /etc/sysctl.conf の冒頭に追記
net.ipv4.tcp_syncookies=0
net.core.somaxconn = 65535
net.core.netdev_max_backlog = 16384
net.ipv4.ip_local_port_range = 1024 65535
kernel.threads-max = 1060863
fs.file-max = 5242880
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.tcp_fin_timeout=600

sysctl -pで設定を有効化

参考: CentOS7 カーネルパラメータ チューニング

攻撃者をzabbix-netに参加させる

docker hubの公式イメージを使ってKali LinuxをDockerに建てる

参考: Kali linuxについて調査してみました。

docker run -it --name zabbix-kali --hostname KaliPC --privileged --network=zabbix-net -d kalilinux/kali-rolling
docker container exec -u root -it zabbix-kali /bin/bash

# パッケージのインストールに15分以上かかった...
apt update && apt -y install kali-linux-headless

SYNフラッディング攻撃

Kali Linuxならではのコマンドで簡単に攻撃できる

hping3 -V -i u1 -S -p 80 ZabbixAgentWeb --rand-source

  • 短周期で80番ポートに対してSYNパケットを送り付ける
  • 送り元のIPアドレスはランダムになる

サーバーはクライアントからのACK待ちになりリソースが消費される

サーバー側のようす

SYN_RECVがたくさん溜まっている

netstat -tan
tcp        0      0 172.20.240.8:10050      172.20.240.0:51802      TIME_WAIT
tcp        0      0 172.20.240.8:80         100.124.160.72:62780    SYN_RECV
tcp        0      0 172.20.240.8:80         13.236.147.53:62762     SYN_RECV
tcp        0      0 172.20.240.8:80         160.52.0.11:1108        SYN_RECV
tcp        0      0 172.20.240.8:80         18.185.137.249:62667    SYN_RECV
tcp        0      0 172.20.240.8:80         1.56.119.200:62765      SYN_RECV
tcp        0      0 172.20.240.8:80         158.151.112.217:10141   SYN_RECV
tcp        0      0 172.20.240.8:80         157.132.214.46:62772    SYN_RECV
tcp        0      0 172.20.240.8:10050      172.20.240.0:51498      TIME_WAIT
tcp        0      0 172.20.240.8:80         124.35.27.1:10653       SYN_RECV
tcp        0      0 172.20.240.8:80         151.36.176.69:10671     SYN_RECV
tcp        0      0 172.20.240.8:80         222.41.88.224:10709     SYN_RECV
tcp        0      0 172.20.240.8:80         164.47.40.249:10094     SYN_RECV
tcp        0      0 172.20.240.8:80         2.88.100.152:10607      SYN_RECV
tcp        0      0 172.20.240.8:80         190.207.35.221:10689    SYN_RECV
tcp        0      0 172.20.240.8:80         208.119.220.198:62709   SYN_RECV
tcp        0      0 172.20.240.8:10050      172.20.240.0:50820      TIME_WAIT
tcp        0      0 172.20.240.8:80         197.48.23.70:1123       SYN_RECV

正規の通信もふくめて、534の通信がある

netstat -tan | wc -l
534

Zabbixからみたサーバーのようす

WEBシナリオを作成する

設定→ホスト→Web→右上の「Webシナリオの作成」

image.png

ダイアログに宛先URL192.168.10.101:60080や期待値200などを入力する

通常時

image.png

攻撃されているとき

赤文字でタイムアウトが表示されている

image.png

リスペクト先のサイトのように、ステータス500にすることはできなかった

まとめ

DockerネットワークにApacheウェブサイトをつくり
Kali LinuxからSYNパケットを大量に送り付けた
そのときのようすをZabbixで監視した

Zabbixでは確かにステータスが異常になったが
Apacheが動作しなくなるほどの負荷をかけることはできなかった

参考

糸冬了!!

1
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
1
0