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