https://zhuanlan.zhihu.com/p/26826335?utm_source=tuicool&utm_medium=referral
我有一些便宜的VPS服务器,虽然sshd都只开了私钥认证,但一般也都装了sshguard,挡一挡爆破攻击。
今天在某台机器上iptables-save一看,被sshguard挡掉的IP已经有一百多个了,就想做个热力图看看玩。下面简单记录下过程。
好吧我其实是写了两行shell脚本,不算程序代码吧。
- 在shell下运行
echo '"country","city","latitude","longitude","ISP","organization","IP"' > ip_list.csv sudo iptables-save | grep sshguard | \ grep -oE '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' | \ xargs -I{} curl -s http://ip-api.com/json/{} | \ jq -r '[.country, .city, .lat, .lon, .isp, .org, .query] | @csv' >> ip_list.csv
- 把ip_list.csv上传到不存在的文档编辑网站Google Sheets。
- 点击Google Sheets窗口右下角的"Explore"按钮,然后在窗口右上角的文本框里输入"top 5 country",得到结果如下图:
可见我国是第一大攻击来源,之后是米国,巴西和欧洲。
- 然后如法炮制,查询"top 10 city":
佛山,南京,保定,辽宁阜新... - 再看看排在前面的ISP:
联通是重灾区。辽宁被黑的机器最多啊。阿里云进入前5名。 - 啊,你问热力图在哪里?在Google Sheets里,先选中国名(country)那一列——全选,然后选择菜单Insert -> Chart,选中检查框"Aggregate column A"与"Use row 1 as headers",在图表类型中选择"Map",即可得到如下图所示:
- 是不是感觉颜色怪怪的?默认配色是数字越小反而越红,在"Customization"里修改下配色,就可以得到合适的效果了:
当然,可以用来进行数据可视化的免费工具很多,本文不再一一列举。
脚本已上传到gist。