不用写一行代码,可视化ssh登录攻击来源

本文介绍了一种利用shell脚本收集被SSHGuard阻挡的恶意IP地址,并通过这些IP地址查询地理位置信息的方法。作者最终将数据整理成CSV格式并上传至Google Sheets,实现了对攻击源的地理分布可视化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

https://zhuanlan.zhihu.com/p/26826335?utm_source=tuicool&utm_medium=referral

我有一些便宜的VPS服务器,虽然sshd都只开了私钥认证,但一般也都装了sshguard,挡一挡爆破攻击。

今天在某台机器上iptables-save一看,被sshguard挡掉的IP已经有一百多个了,就想做个热力图看看玩。下面简单记录下过程。

好吧我其实是写了两行shell脚本,不算程序代码吧。

  1. 在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
    
    需要先安装 jq 命令。这里是用ip-api.com提供的API查询IP所在地,然后用jq命令从json数据生成csv文件。
  2. 把ip_list.csv上传到不存在的文档编辑网站Google Sheets。
  3. 点击Google Sheets窗口右下角的"Explore"按钮,然后在窗口右上角的文本框里输入"top 5 country",得到结果如下图:

    可见我国是第一大攻击来源,之后是米国,巴西和欧洲。
  4. 然后如法炮制,查询"top 10 city":
    佛山,南京,保定,辽宁阜新...
  5. 再看看排在前面的ISP:

    联通是重灾区。辽宁被黑的机器最多啊。阿里云进入前5名。
  6. 啊,你问热力图在哪里?在Google Sheets里,先选中国名(country)那一列——全选,然后选择菜单Insert -> Chart,选中检查框"Aggregate column A"与"Use row 1 as headers",在图表类型中选择"Map",即可得到如下图所示:
  7. 是不是感觉颜色怪怪的?默认配色是数字越小反而越红,在"Customization"里修改下配色,就可以得到合适的效果了:

当然,可以用来进行数据可视化的免费工具很多,本文不再一一列举。

脚本已上传到gist


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值