短信发送接口被恶意访问的网络攻击事件(三)定位恶意IP的日志分析脚本

/ 默认分类 / 3 条评论 / 2323浏览

前言

承接前文《短信发送接口被恶意访问的网络攻击事件(二)肉搏战-阻止恶意请求》,文中有讲到一个定位非法IP的shell脚本,现在就来公布一下吧,并没有什么技术难度,只是当时花了些时间去写这个东西,类似于紧急修复线上bug一样的赶这个小脚本,虽然现在看来挺简单的,但是在当时紧张的情景中,赶这个小脚本儿的过程确实是很有趣的。

前一篇文章发布后,有朋友留言问了一下脚本的事,于是整理了一下。

shell1

shell2

需求分析

目标:

通过日志定位并记录攻击者的IP,然后封掉此IP的所有请求

借助工具:

具体步骤:

脚本代码

一开始的脚本,能够根据需求统计和记录出访问过多的IP地址了:

#! /bin/bash

#author:13
#date:2017-06
#desc:找出攻击者IP

cat /opt/sms-service/logs/access_log.log | awk '{print $1}'|sort|uniq -c|awk '{print $2"="$1;}' > /opt/sms-service/logs/ip.txt

DEFINE="5"

for i in `cat  /opt/sms-service/logs/ip.txt`
do
IP=`echo $i |awk -F= '{print $1}'`
NUM=`echo $i|awk -F= '{print $2}'`
if [ $NUM -gt $DEFINE ];then
grep $IP /opt/sms-service/logs/black.txt > /dev/null
      if [ $? -gt 0 ];then
        echo "iptables -I INPUT -s $IP -j DROP" >> /opt/sms-service/logs/black.txt
      fi
    fi
done

后面又对脚本做了一些小改动,改进点有:

#! /bin/bash

#author:13
#date:2017-06
#desc:找出攻击者IP

LOGFILE="/opt/sms-service/logs/access_log.log"
IPTXT="/opt/sms-service/logs/ip.txt"
BLACKTXT="/opt/sms-service/logs/black.txt"
IPTABLES="/opt/iptables/run.sh"
DEFINE="5"

cat $LOGFILE|awk '{print $1}'|sort|uniq -c|awk '{print $2"="$1;}' > $IPTXT

for i in `cat  $IPTXT`
do
IP=`echo $i |awk -F= '{print $1}'`
NUM=`echo $i|awk -F= '{print $2}'`
if [ $NUM -gt $DEFINE ];then
grep $IP $BLACKTXT > /dev/null
      if [ $? -gt 0 ];then
        grep $IP $IPTABLES > /dev/null
        if [ $? -gt 0 ];then
        echo "iptables -I INPUT -s $IP -j DROP" >> $BLACKTXT
        fi
      fi
    fi
done

总结

最近工作也比较忙,本来不打算写这篇文章的,前一篇文章发布后看到有朋友留言了,因此在下班后抽出一段时间完成了这篇文章,文中并没有特别难的知识点,希望有所收获。

  1. 哈哈 用的就是你的blog 可惜这个没有回复评论的。

  2. 测试 测试 测试 测试

  3. 哎呀,我闲来无事刷了一下网页,发现这个浏览数每10个访问之后会多加10个。