分析攻击IP来源地与防御IP攻击的应对策略

分布式拒绝服务(DDoS)攻击指借助于客户/服务器技术,将多个计算机联合起来作为攻击平台,对一个或多个目标发动DDoS攻击,从而成倍地提高拒绝服务攻击的威力。通常,攻击者使用一个偷窃帐号将DDoS主控程序安装在一个计算机上,在一个设定的时间主控程序将与大量代理程序通讯,代理程序已经被安装在网络上的许多计算机上。代理程序收到指令时就发动攻击。利用客户/服务器技术,主控程序能在几秒钟内激活成百上千次代理程序的运行。

此文中的API将台湾列为国家,非本人立场,台湾属于中国,台湾岛生活的人不一定!
上码:

#!/usr/bin/python
#coding=utf-8
'''
http://ip-api.com/json/ip
'''import plotly
import plotly.plotly
import plotly.graph_objs as abcc
import plotly.plotly 

class Piecharts:
  def __init__(self):
    print "饼图生成中" 

  def makePiecharts(self,labels,values,filename):
    trace = abcc.Pie(labels = labels,values= values)
    plotly.offline.plot([trace],filename=filename) 

import requests
import sys

try:
  iplist = sys.argv[1]
except:
  print "IP list not given or some other error!"
countrylist = {}
regionlist = {}
citylist = {}

with open(iplist) as f:
  for ip in f.readlines():
    if ip.strip() != '':
      url = 'http://ip-api.com/json/' + ip.strip()
      try:
        result = requests.get(url)
        jsontext = result.json()
      except:
        print "Error: Data not retrieved!"
        continue
      status = jsontext['status']
      if status == 'fail':
        print "%s failed!" % ip.strip()
        continue
      mline = jsontext['as']
      city = jsontext['city']
      country = jsontext['country']
      countryCode = jsontext['countryCode']
      isp = jsontext['isp']
      lat = jsontext['lat']
      lon = jsontext['lon']
      org = jsontext['org']
      query = jsontext['query']
      region = jsontext['region']
      regionName = jsontext['regionName']
      timezone = jsontext['timezone']
      zipcode = jsontext['zip']

      if not country in countrylist:
        countrylist[country] = 0
      else:
        countrylist[country] += 1

      if not regionName in regionlist:
        regionlist[regionName] = 0
      else:
        regionlist[regionName] += 1

      if not city in citylist:
        citylist[city] = 0
      else:
        citylist[city] += 1
      try:
        print ip.strip() + '--' + country + '--' + regionName
      except:
        print "Special character!"
  print countrylist

  #country
  labels = [i for i in countrylist]
  value = [countrylist[i] for i in countrylist]
  drive = Piecharts()
  drive.makePiecharts(labels,value,"country.html") 

  #region
  labels = [i for i in regionlist]
  value = [regionlist[i] for i in regionlist]
  drive = Piecharts()
  drive.makePiecharts(labels,value,"region.html") 

  #city
  labels = [i for i in citylist]
  value = [citylist[i] for i in citylist]
  drive = Piecharts()
  drive.makePiecharts(labels,value,"city.html")

gevent协程并发版

#!/usr/bin/python
# coding=utf-8
'''
http://ip-api.com/json/ip
'''
import plotly
import plotly.graph_objs as abcc
import plotly.plotly

class Piecharts:
  def __init__(self):
    print u'饼图生成中'

  def makePiecharts(self, labels, values, filename):
    trace = abcc.Pie(labels=labels, values=values)
    plotly.offline.plot([trace], filename=filename)

import requests
import sys

try:
  iplist = sys.argv[1]
except:
  print "IP list not given or some other error!"
countrylist = {}
regionlist = {}
citylist = {}

def locater(url):
  try:
    result = requests.get(url)
    jsontext = result.json()
  except:
    print "Error: Data not retrieved!"
    return
  status = jsontext['status']
  if status == 'fail':
    print "%s failed!" % ip.strip()
    return
  mline = jsontext['as']
  city = jsontext['city']
  country = jsontext['country']
  countryCode = jsontext['countryCode']
  isp = jsontext['isp']
  lat = jsontext['lat']
  lon = jsontext['lon']
  org = jsontext['org']
  query = jsontext['query']
  region = jsontext['region']
  regionName = jsontext['regionName']
  timezone = jsontext['timezone']
  zipcode = jsontext['zip']

  if not country in countrylist:
    countrylist[country] = 0
  else:
    countrylist[country] += 1

  if not regionName in regionlist:
    regionlist[regionName] = 0
  else:
    regionlist[regionName] += 1

  if not city in citylist:
    citylist[city] = 0
  else:
    citylist[city] += 1
  try:
    print ip.strip() + '--' + country + '--' + regionName
  except:
    print "Special character!"

from gevent import monkey
monkey.patch_socket()
from gevent import pool
import gevent

pool = pool.Pool(40)
glist = []
with open(iplist) as f:
  for ip in f.readlines():
    if ip.strip() != '':
      url = 'http://ip-api.com/json/' + ip.strip()
      glist.append(pool.spawn(locater, url))
  gevent.joinall(glist)

  # country
  labels = [i for i in countrylist]
  value = [countrylist[i] for i in countrylist]
  drive = Piecharts()
  drive.makePiecharts(labels, value, "country.html")

  # region
  labels = [i for i in regionlist]
  value = [regionlist[i] for i in regionlist]
  drive = Piecharts()
  drive.makePiecharts(labels, value, "region.html")

  # city
  labels = [i for i in citylist]
  value = [citylist[i] for i in citylist]
  drive = Piecharts()
  drive.makePiecharts(labels, value, "city.html")

饼图效果:

在对网络攻击进行上述分析与识别的基础上,我们应当认真制定有针对性的策略。明确安全对象,设置强有力的安全保障体系。有的放矢,在网络中层层设防,发挥网络的每层作用,使每一层都成为一道关卡,从而让攻击者无隙可钻、无计可使。还必须做到未雨稠缪,预防为主 ,将重要的数据备份并时刻注意系统运行状况。以下是针对众多令人担心的网络安全问题,提出的几点建议:

1、提高安全意识

  (1)不要随意打开来历不明的电子邮件及文件,不要随便运行不太了解的人给你的程序,比如“特洛伊”类黑客程序就需要骗你运行。
  (2)尽量避免从Internet下载不知名的软件、游戏程序。即使从知名的网站下载的软件也要及时用最新的病毒和木马查杀软件对软件和系统进行扫描。
  (3)密码设置尽可能使用字母数字混排,单纯的英文或者数字很容易穷举。将常用的密码设置不同,防止被人查出一个,连带到重要密码。重要密码最好经常更换。
  (4)及时下载安装系统补丁程序。
  (5)不随便运行黑客程序,不少这类程序运行时会发出你的个人信息。
  (6)在支持HTML的BBS上,如发现提交警告,先看源代码,很可能是骗取密码的陷阱。

2、使用防毒、防黑等防火墙软件。

防火墙是一个用以阻止网络中的黑客访问某个机构网络的屏障,也可称之为控制进/出两个方向通信的门槛。在网络边界上通过建立起来的相应网络通信监控系统来隔离内部和外部网络,以阻档外部网络的侵入。

3、设置代理服务器,隐藏自已的IP地址。

保护自己的IP地址是很重要的。事实上,即便你的机器上被安装了木马程序,若没有你的IP地址,攻击者也是没有办法的,而保护IP地址的最好方法就是设置代理服务器。代理服务器能起到外部网络申请访问内部网络的中间转接作用,其功能类似于一个数据转发器,它主要控制哪些用户能访问哪些服务类型。当外部网络向内部网络申请某种网络服务时,代理服务器接受申请,然后它根据其服务类型、服务内容、被服务的对象、服务者申请的时间、申请者的域名范围等来决定是否接受此项服务,如果接受,它就向内部网络转发这项请求。

4、将防毒、防黑当成日常例性工作,定时更新防毒组件,将防毒软件保持在常驻状态,以彻底防毒。

5、由于黑客经常会针对特定的日期发动攻击,计算机用户在此期间应特别提高警戒。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。如果你想了解更多相关内容请查看下面相关链接

(0)

相关推荐

  • 浅谈利用JavaScript进行的DDoS攻击原理与防御

    分布式拒绝服务攻击(DDoS)攻击是一种针对网站发起的最古老最普遍的攻击.Nick Sullivan是网站加速和安全服务提供商CloudFlare的一名系统工程师.近日,他撰文介绍了攻击者如何利用恶意网站.服务器劫持和中间人攻击发起DDoS攻击,并说明了如何使用HTTPS以及即将到来的名为"子资源一致性(Subresource Integrity,简称SRI)"的Web新技术保护网站免受攻击. 现代网站的大部分交互都来自于JavaScript.网站通过直接向HTML中添加JavaScr

  • php下网站防IP攻击代码,超级实用

    今天我开发了下面的代码,算是大功初成,一天拦截了15个IP,服务器负载正常. 复制代码 代码如下: <?php //查询禁止IP $ip =$_SERVER['REMOTE_ADDR']; $fileht=".htaccess2"; if(!file_exists($fileht))file_put_contents($fileht,""); $filehtarr=@file($fileht); if(in_array($ip."\r\n"

  • 跨站式脚本(Cross-SiteScripting)XSS攻击原理分析第1/4页

    使用过ASP的同学一定见过这样的代码:  Hello, 复制代码 代码如下: <% Response.Write(Request.Querystring("name")) %> 假如我传入的name的值为:  x=document.cookie;alert(x); [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] 这样就可以直接盗取用户的cookie.所以我就可以发送一条链接地址让别人去点: 复制代码 代码如下: http://www.xxx.com/reg.as

  • IP攻击升级,程序改进以对付新的攻击

    不过最近几天突然糟糕了起来,有90%的攻击已经没法拦截,请看下图一天的统计: IP攻击及开始时间 攻击次数 地点 备注 125.165.1.42--2010-11-19 02:02:19--/ 10 印度尼西亚 125.165.26.186--2010-11-19 16:56:45--/ 1846 印度尼西亚 151.51.238.254--2010-11-19 09:32:40--/ 4581 意大利 151.76.40.182--2010-11-19 11:58:37--/ 4763 意大利

  • 浅谈html转义及防止javascript注入攻击的方法

    有的时候页面中会有一个输入框,用户输入内容后会显示在页面中,类似于网页聊天应用.如果用户输入了一段js脚本,比例:<script>alert('test');</script>,页面会弹出一个对话框,或者输入的脚本中有改变页面js变量的代码则会时程序异常或者达到跳过某种验证的目的.那如何防止这种恶意的js脚本攻击呢?通过html转义能解决这个问题. 一:什么是html转义? html转义是将特殊字符或html标签转换为与之对应的字符.如:< 会转义为 <> 或转义

  • 什么是JavaScript注入攻击?

    Javascript可以作为黑客攻击网站的一种工具,其中注入js(javascript)恶意脚本就是其中一种手段之一,那么下面,大家来学习一下如何预防js的注入攻击呢?以下有一个不错的陈述,跟大家分享: 什么是 JavaScript 注入攻击? 每当接受用户输入的内容并重新显示这些内容时,网站就很容易遭受 JavaScript 注入攻击.让我们研究一个容易遭受 JavaScript 注入攻击的具体应用程序.假设已经创建了一个客户反馈网站.客户可以访问网站并输入对产品的反馈信息.当客户提交反馈时,

  • Linux系统防CC攻击自动拉黑IP增强版(Shell脚本)

    前天没事写了一个防CC攻击的Shell脚本,没想到这么快就要用上了,原因是因为360网站卫士的缓存黑名单突然无法过滤后台,导致WordPress无法登录!虽然,可以通过修改本地hosts文件来解决这个问题,但是还是想暂时取消CDN加速和防护来测试下服务器的性能优化及安全防护. 前天写的Shell脚本是加入到crontab计划任务执行的,每5分钟执行一次,今天实际测试了下,可还是可以用的,但是感觉5分钟时间有点过长,无法做到严密防护.于是稍微改进了下代码,现在简单的分享下! 一.Shell代码 #

  • linux抵御DDOS攻击 通过iptables限制TCP连接和频率

    cc攻击一到就有点兵临城下的感觉,正确的设置防护规则可以做到临危不乱,这里给出一个iptables对ip进行连接频率和并发限制,限制单ip连接和频率的设置规则的介绍 #单个IP在60秒内只允许新建20个连接,这里假设web端口就是80, 复制代码 代码如下: iptables -I  INPUT -i eth1 -p tcp -m tcp –dport 80 -m state –state NEW -m recent –update –seconds 60 –hitcount 20 –name

  • linux封锁IP简单防御UDP攻击

    研究起因由于近些日子我的VPS遭受攻击,不管是win的还是linux的都遭受了UDP攻击,流量剧增不一会DOWN机了,这让我很恼火,非常想知道是谁干的 现在说下我的本地测试VPS配置 centos6.0 1.我们要查看这些流量的攻击来源,所以我们需要下载iftop 地址wget http://www.ex-parrot.com/pdw/iftop/download/iftop-0.17.tar.gz 安装的时候发现make出错 最后发先这个需要以下包 CentOS上安装所需依赖包: yum in

  • 分析攻击IP来源地与防御IP攻击的应对策略

    分布式拒绝服务(DDoS)攻击指借助于客户/服务器技术,将多个计算机联合起来作为攻击平台,对一个或多个目标发动DDoS攻击,从而成倍地提高拒绝服务攻击的威力.通常,攻击者使用一个偷窃帐号将DDoS主控程序安装在一个计算机上,在一个设定的时间主控程序将与大量代理程序通讯,代理程序已经被安装在网络上的许多计算机上.代理程序收到指令时就发动攻击.利用客户/服务器技术,主控程序能在几秒钟内激活成百上千次代理程序的运行. 此文中的API将台湾列为国家,非本人立场,台湾属于中国,台湾岛生活的人不一定! 上码

  • Nginx防御DDOS攻击的配置方法教程

    前言 Nginx是一款轻量级的Web服务器,由俄罗斯的程序设计师Igor Sysoev所开发,最初供俄国大型的入口网站及搜寻引Rambler使用. 其特点是占有内存少,并发能力强,事实上Nginx的并发能力确实在同类型的网站服务器中表现较好. 防御DDOS是一个系统工程,攻击花样多,防御的成本高瓶颈多,防御起来即被动又无奈.DDOS的 特点是分布式,针对带宽和服务攻击,也就是四层流量攻击和七层应用攻击,相应的防御瓶颈四层在带宽,七层的多在架构的吞吐量.对于七层的应用攻击,我们还 是可以做一些配置

  • Python检测和防御DOS攻击的最简单方法

    目录 一.在CentOS上安装Python3 1.下载Python3.10源代码文件 2.运行以下命令行完成安装 3.确认是否安装成功 4.设置环境变量 5.配置pip国内镜像源 二.理解各个命令的含义 1.uptime 2.netstat 3.ss 4.firewall-cmd 5.sysctl 三.利用Python实现DDOS入侵检测 1.采集TCP连接数据 一.在CentOS上安装Python3 1.下载Python3.10源代码文件 下载地址:https://www.python.org

  • IP Spoof技术介绍(IP 欺骗)

    第一部分  1.什么是IP spoof?  IP spoof即IP 电子欺骗,我们可以说是一台主机设备冒充另外一台主机的IP地址,与其它设备通信,从而达到某种目的技术.  2.IP spoof可以实现吗?  可以实现,早在1985年,贝尔实验室的一名工程师Robbert Morris在他的一篇文章A weakness in the 4.2bsd unix TCP/IP software中提出了IP spoof的概念,有兴趣的读者可参见原文: http://www.coast.net/~emv/t

  • Ghost安装Win7/XP后自动恢复IP的批处理代码(ip备份恢复)

    今天维护人员找的我说,最近要推Win7了,暂时桌面云没推广,还是使用手动安装Win7的方式.所以,需要我帮忙写一个脚本,大概功能就是在Ghost Win7之前先导出XP的IP信息,在Ghost完成之后,自动读取这个IP信息用于恢复IP设置. Ghost安装Win7/XP后自动恢复IP的批处理 之前其实写过一个XP的,这次是Win7的,其实大同小异了,花了近半小时测试成功了,现在来记录一下. 懒得去折腾兼容方法,就写了2个导出IP的脚本和一个IP恢复脚本,用于Ghost远程安装Win7后自动恢复I

  • JS绕过代理、VPN获取真实IP及内网IP,逆向追踪的实现方法

    Firefox 跟 Chrome支持WebRTC可以向STUN服务器请求,返回内外网IP,不同于XMLHttpRequest请求,STUN请求开发者工具当中看不到网络请求的. //get the IP addresses associated with an account function getIPs(callback) { var ip_dups = {}; //compatibility for firefox and chrome var RTCPeerConnection = win

  • 纯真IP数据库的应用 IP地址转化成十进制

    原来是需要把IP转成十进制 复制代码 代码如下: $ip = $_SERVER['REMOTE_ADDR']; echo '你的IP:'.$ip.'<br />'; $ip_arr = explode(".",$ip); $ip = 0; foreach($ip_arr as $i=>$s){ $ip += $s*pow(256,3-$i); } echo '转十进制值:'.$ip.'<br />'; //结果你的IP:127.0.0.1 转十进制值:21

  • Shell脚本实现判断IP地址是否在一个ip段内代码分享

    cat ipcalc.sh #!/bin/bash IP=$1 if [ -z $IP ] then echo -e "\e[31;42m sh ipcalc.sh IP \e[0m" exit fi while read MASK do min=`/usr/bin/ipcalc $MASK|awk '/HostMin:/{print $2}'` max=`/usr/bin/ipcalc $MASK|awk '/HostMax:/{print $2}'` MIN=`echo $min|

  • 批处理bat设置固定IP地址和自动IP地址

    在我个人的使用经验中,我有不同的工作环境,比如公司和家里,公司要求固定IP,而家里则使用自动获取IP的方式,所以我就在网上找了这段代码,并且经过自己的修改,可以直接双击运行就可以,方便IP地址的切换. 这里主要使用netsh命令,不太明白的可以自己去百度查,这里就不列举它的用法了,具体代码如下: 固定IP和DNS.bat 复制代码 代码如下: @echo off cls color 0A Echo *************************************************

  • win2003 ip安全策略 限制某个IP或IP段访问服务器指定端口图文说明

    第一种方法:通过iis中的ip地址和域名限制在需要设置的网站上 > 右键属性 > 目录安全性 ip地址和域名限制 授权访问与拒绝访问说明如果是授权访问,下面填写的就是拒绝访问的ip 如果是拒绝访问 下面填写的就是可以访问的ip 第二种方法:通过ip安全策略第一步:打开开始,程序,管理工具,本地安全策略 第二步:点"IP安全策略,在本地计算机",然后在右栏空白处点右键,在弹出的菜单中点"创建IP安全策略(C)" 第三步:在"IP安全策略向导&qu

随机推荐