はじめに
Oracle Cloud の無料枠が太っ腹だという話を聞いたので、アカウントを作成してノードを立ててみた。iptables と VCN の設定だけ気をつければすぐ使えた。
https://blog.potproject.net/2021/06/01/oracle-cloud-kubernetes
以前から興味があった軽量なハニーポット Wowhoneypot を立ててみたが、まだなにもおもてなししていない SSH(tcp/22)サービスに多数のログイン試行があったため、まずは awk
grep
sort
uniq
などでできる簡易なログ分析コマンドを調べてみた。
環境
Oracle Cloud の Ubuntu 20.04
$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=20.04
DISTRIB_CODENAME=focal
DISTRIB_DESCRIPTION="Ubuntu 20.04.3 LTS"
SSH ログの場所と Invalid user ログのサンプル
/var/log/auth.log
Aug 25 14:30:04 instance-20210825-2124 sshd[33577]: Invalid user admin from 160.176.23.215 port 5808
Aug 25 14:40:36 instance-20210825-2124 sshd[2119]: Invalid user default from 160.176.23.215 port 4110
Aug 25 14:43:49 instance-20210825-2124 sshd[2362]: Invalid user MikroTik from 160.176.23.215 port 1631
username 抽出とユニークカウント
$ cat /var/log/auth.log | awk '/Invalid user/ {print $8}' | uniq -c | sort -r
20 user1
20 user
20 ubnt
20 telecomadmin
20 tech
20 support
20 profile1
20 demo
20 default
20 administrator
20 admin1
20 MikroTik
19 admin
13 web
4 pi
3 pi
2 pi
1 vicidiem
1 vicidiem
1 user
1 user
1 ubnt
1 ubnt
1 ubnt
1 pi
1 osmc
1 osmc
1 from
username 抽出と送信元 IP アドレスとユニークカウント
$ cat /var/log/auth.log | awk '/Invalid user/ {print $8,$10}' | uniq -c | sort -r
20 user1 160.176.23.215
20 user 160.176.23.215
20 ubnt 160.176.23.215
20 telecomadmin 160.176.23.215
20 tech 160.176.23.215
20 support 160.176.23.215
20 profile1 160.176.23.215
20 demo 160.176.23.215
20 default 160.176.23.215
20 administrator 160.176.23.215
20 admin1 160.176.23.215
20 MikroTik 160.176.23.215
19 admin 160.176.23.215
13 web 160.176.23.215
2 pi 98.40.14.28
2 pi 70.89.91.225
2 pi 62.16.199.162
2 pi 139.47.8.98
1 vicidiem 125.227.67.152
1 vicidiem 125.227.67.152
1 user 64.225.73.18
1 user 134.122.63.251
1 ubnt 45.93.250.36
1 ubnt 181.214.158.230
1 ubnt 181.214.158.230
1 pi 153.0.148.44
1 pi 153.0.148.44
1 osmc 62.24.108.57
1 osmc 62.24.108.57
1 from port
空白ユーザ名の扱い方 暫定案
(注)もっと良い方法があると思いますので詳しい方教えて下さい...
ユーザ名なしでのログイン試行↓があったために、抽出したときに $8
と $10
が右に一行ずれている箇所があった。
Aug 26 01:13:05 instance-20210825-2124 sshd[2768]: Invalid user from 65.49.20.66 port 47954
だめな例 ↓
1 from port
本当はこうなってほしい ↓
1 65.49.20.66
条件分岐の書き方がうまくいかなかったため、デリメタを途中でスペースからコンマに変えて扱ったところスペースはスペースのまま扱うことができた。
参考
https://qiita.com/odacoh/items/55cec454fdcf0d87ca01
https://hogetaka.hatenadiary.org/entry/20130104/1357301037
$ cat /var/log/auth.log | grep 'Invalid user' | tr " " "," | awk -F, '{print $8,$10}' | uniq -c | sort -r
20 user1 160.176.23.215
20 user 160.176.23.215
20 ubnt 160.176.23.215
20 telecomadmin 160.176.23.215
20 tech 160.176.23.215
20 support 160.176.23.215
20 profile1 160.176.23.215
20 demo 160.176.23.215
20 default 160.176.23.215
20 administrator 160.176.23.215
20 admin1 160.176.23.215
20 MikroTik 160.176.23.215
19 admin 160.176.23.215
13 web 160.176.23.215
2 pi 98.40.14.28
2 pi 70.89.91.225
2 pi 62.16.199.162
2 pi 139.47.8.98
1 vicidiem 125.227.67.152
1 vicidiem 125.227.67.152
1 user 64.225.73.18
1 user 134.122.63.251
1 ubnt 45.93.250.36
1 ubnt 181.214.158.230
1 ubnt 181.214.158.230
1 pi 153.0.148.44
1 pi 153.0.148.44
1 osmc 62.24.108.57
1 osmc 62.24.108.57
1 65.49.20.66
IP アドレスだけを抽出する方法
regex で only のオプションを使う -oE
$ cat /var/log/auth.log | grep 'Invalid user' | grep -oE '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | sort | uniq
103.133.120.78
125.227.67.152
134.122.63.251
139.47.8.98
153.0.148.44
160.176.23.215
181.214.158.230
45.93.250.36
49.149.109.8
62.16.199.162
62.24.108.57
64.225.73.18
65.49.20.66
70.89.91.225
86.127.239.201
98.40.14.28
所感
一行コマンドでいろいろと情報を整理することができることがわかった。日報のような形でメールやチャットに送りつけてもよいかもしれない。
今回 Invalid user
でフィルタしたが、ログ全体でみても ubuntu ぽい username はあるものの、ubuntu
での試行がなかった。
MikroTik というネットワーク機器があることを知った。
osmc というのは Kodi のようなメディアサーバの OS らしい。
おまけ
OracleCloud に GeoIP のデータベースをインストールして、送信元 IP だけを取り出して国名の突合をしてみた。
103.133.120.78 : インド
125.227.67.152 : 台灣
134.122.63.251 : オランダ王国
139.47.8.98 : スペイン
153.0.148.44 : 中国
160.176.23.215 : モロッコ王国
181.214.158.230 : パナマ
45.93.250.36 : ドイツ連邦共和国
49.149.109.8 : フィリピン共和国
62.16.199.162 : ノルウェー王国
62.24.108.57 : ケニア共和国
64.225.73.18 : オランダ王国
65.49.20.66 : アメリカ合衆国
70.89.91.225 : アメリカ合衆国
86.127.239.201 : スペイン
98.40.14.28 : アメリカ合衆国
参考
https://mattintosh.hatenablog.com/entry/20190307/1551891443