この記事の続きです。

シェルスクリプトによって、スペースで区切られただけのIPアドレスをリスト化することに成功したので、

192.168.1.2
192.168.1.3
172.28.1.3
172.28.1.5
...

といったIPアドレスのリストを

2, 192.168.1.0/24
2, 172.28.1.0/24

というように、/24で区切ったアドレス帯と件数を表示するスクリプトをchatGPTに作成いただきました。

スクリプト内容

  • network-address-count.sh
#!/bin/bash

# ファイルのパスを引数として受け取る
file_path=$1

# ファイルが存在するかを確認する
if [ ! -f "$file_path" ]; then
    echo "指定されたファイルが見つかりません。"
    exit 1
fi

# ネットワークアドレスごとにIP数をカウントして表示
awk -F. '{print $1"."$2"."$3".0"}' $file_path | sort | uniq -c | while read count address; do
    echo "$count, $address/24"
done

あとは実行権を付与します。

スクリプトの動き

./network-address-count.sh /path/to/log/file
# 上述のリンク先でのログファイルを指定します。

結果

2, 71.6.146.0/24
1, 71.6.158.0/24
1, 71.6.199.0/24
11, 71.6.232.0/24

のように、攻撃をしてきたIPアドレスをネットワークアドレスごとにカウントすることができました。

これは、今後の防御手段をしる手段として有効です。