分布式拒絕服務(DDoS)攻擊指借助于客戶/服務器技術,將多個計算機聯(lián)合起來作為攻擊平臺,對一個或多個目標發(fā)動DDoS攻擊,從而成倍地提高拒絕服務攻擊的威力。通常,攻擊者使用一個偷竊帳號將DDoS主控程序安裝在一個計算機上,在一個設定的時間主控程序將與大量代理程序通訊,代理程序已經(jīng)被安裝在網(wǎng)絡上的許多計算機上。代理程序收到指令時就發(fā)動攻擊。利用客戶/服務器技術,主控程序能在幾秒鐘內(nèi)激活成百上千次代理程序的運行。
此文中的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協(xié)程并發(fā)版
#!/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")
餅圖效果:
在對網(wǎng)絡攻擊進行上述分析與識別的基礎上,我們應當認真制定有針對性的策略。明確安全對象,設置強有力的安全保障體系。有的放矢,在網(wǎng)絡中層層設防,發(fā)揮網(wǎng)絡的每層作用,使每一層都成為一道關卡,從而讓攻擊者無隙可鉆、無計可使。還必須做到未雨稠繆,預防為主 ,將重要的數(shù)據(jù)備份并時刻注意系統(tǒng)運行狀況。以下是針對眾多令人擔心的網(wǎng)絡安全問題,提出的幾點建議:
1、提高安全意識
(1)不要隨意打開來歷不明的電子郵件及文件,不要隨便運行不太了解的人給你的程序,比如“特洛伊”類黑客程序就需要騙你運行。
(2)盡量避免從Internet下載不知名的軟件、游戲程序。即使從知名的網(wǎng)站下載的軟件也要及時用最新的病毒和木馬查殺軟件對軟件和系統(tǒng)進行掃描。
(3)密碼設置盡可能使用字母數(shù)字混排,單純的英文或者數(shù)字很容易窮舉。將常用的密碼設置不同,防止被人查出一個,連帶到重要密碼。重要密碼最好經(jīng)常更換。
(4)及時下載安裝系統(tǒng)補丁程序。
(5)不隨便運行黑客程序,不少這類程序運行時會發(fā)出你的個人信息。
(6)在支持HTML的BBS上,如發(fā)現(xiàn)提交警告,先看源代碼,很可能是騙取密碼的陷阱。
2、使用防毒、防黑等防火墻軟件。
防火墻是一個用以阻止網(wǎng)絡中的黑客訪問某個機構網(wǎng)絡的屏障,也可稱之為控制進/出兩個方向通信的門檻。在網(wǎng)絡邊界上通過建立起來的相應網(wǎng)絡通信監(jiān)控系統(tǒng)來隔離內(nèi)部和外部網(wǎng)絡,以阻檔外部網(wǎng)絡的侵入。
3、設置代理服務器,隱藏自已的IP地址。
保護自己的IP地址是很重要的。事實上,即便你的機器上被安裝了木馬程序,若沒有你的IP地址,攻擊者也是沒有辦法的,而保護IP地址的最好方法就是設置代理服務器。代理服務器能起到外部網(wǎng)絡申請訪問內(nèi)部網(wǎng)絡的中間轉接作用,其功能類似于一個數(shù)據(jù)轉發(fā)器,它主要控制哪些用戶能訪問哪些服務類型。當外部網(wǎng)絡向內(nèi)部網(wǎng)絡申請某種網(wǎng)絡服務時,代理服務器接受申請,然后它根據(jù)其服務類型、服務內(nèi)容、被服務的對象、服務者申請的時間、申請者的域名范圍等來決定是否接受此項服務,如果接受,它就向內(nèi)部網(wǎng)絡轉發(fā)這項請求。
4、將防毒、防黑當成日常例性工作,定時更新防毒組件,將防毒軟件保持在常駐狀態(tài),以徹底防毒。
5、由于黑客經(jīng)常會針對特定的日期發(fā)動攻擊,計算機用戶在此期間應特別提高警戒。
總結
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關內(nèi)容請查看下面相關鏈接
您可能感興趣的文章:- 淺談html轉義及防止javascript注入攻擊的方法
- 什么是JavaScript注入攻擊?
- linux抵御DDOS攻擊 通過iptables限制TCP連接和頻率
- 淺談利用JavaScript進行的DDoS攻擊原理與防御
- Linux系統(tǒng)防CC攻擊自動拉黑IP增強版(Shell腳本)
- linux封鎖IP簡單防御UDP攻擊
- IP攻擊升級,程序改進以對付新的攻擊
- php下網(wǎng)站防IP攻擊代碼,超級實用
- 跨站式腳本(Cross-SiteScripting)XSS攻擊原理分析