最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

大數(shù)據(jù)網(wǎng)站攻擊實(shí)時(shí)項(xiàng)目架構(gòu)

2023-03-05 08:59 作者:誰動(dòng)了我的煙-卷你  | 我要投稿

?????????????????????????????????? 大數(shù)據(jù)網(wǎng)站攻擊實(shí)時(shí)項(xiàng)目架構(gòu)

??????? 隨著互聯(lián)網(wǎng)的流行,網(wǎng)站安全問題就日益突出,但絕大多數(shù)的網(wǎng)站開發(fā)與建設(shè)公司只考慮正常用戶的穩(wěn)定使用,而對(duì)于網(wǎng)站安全方面了解甚少,發(fā)現(xiàn)網(wǎng)站安全存在問題和漏洞,其修補(bǔ)方式只能停留在頁(yè)面代碼的刪除或者是恢復(fù)網(wǎng)站備份,很難針對(duì)網(wǎng)站具體的漏洞原理對(duì)源代碼進(jìn)行修復(fù)。但黑客對(duì)漏洞具有敏銳的洞察力,網(wǎng)站存在的這些漏洞就會(huì)被挖掘出來,成為黑客們直接或間接獲取利益的機(jī)會(huì)。

??????? 不過,每一個(gè)網(wǎng)站的攻擊都離不開網(wǎng)站文件的修改。隨時(shí)監(jiān)控網(wǎng)站文件的修改,當(dāng)網(wǎng)站文件發(fā)生修改就進(jìn)行安全問題的提醒,是這個(gè)項(xiàng)目的必要性。

??????? 首先,要解決的是如何監(jiān)控一個(gè)網(wǎng)站的修改。

??????? 一、監(jiān)控文件變化的相關(guān)信息。

??????? 一般服務(wù)器采用的都是linux系統(tǒng),在linux系統(tǒng)中需要安裝inotify-tools,這個(gè)第三方模塊可以不殺死進(jìn)程的基礎(chǔ)上進(jìn)行文件內(nèi)容方面的監(jiān)控。

inotify-tools模塊安裝過程

?????? 安裝成功后,可以使用命令inotifywait來監(jiān)控文件內(nèi)容的修改,inotifywait攜帶的參數(shù)如下。

inotify攜帶參數(shù)解釋

??????? 結(jié)合于mqr參數(shù),可以不殺死進(jìn)程,持續(xù)監(jiān)聽文件內(nèi)容是否發(fā)生變化,然后再通過timefmt進(jìn)行發(fā)生時(shí)間的格式化,format格式化命令可以指定inotifywait按照指定的格式輸出內(nèi)容。

?????? 通過命令inotifywait -mqr --timefmt “%d/%m/%y %H:%M:%S” --format “%T %w %f %e” -e modify,delete,create,attrib /home/data”。

inotifywait命令的啟動(dòng)格式

???????? 這里可以把timefmt中輸入中文“年月日”。

inotifywait指令的修改執(zhí)行

??????? 從圖中可以看出,當(dāng)有文件發(fā)生修改,就會(huì)在控制臺(tái)產(chǎn)生變化的信息,并且不殺死進(jìn)程,一直在持續(xù)監(jiān)聽文件內(nèi)容的變化?,F(xiàn)在,帶來的問題就是如何把這個(gè)持續(xù)不斷的信息使用一種方式收集到某個(gè)存儲(chǔ)區(qū)域,然后通過大數(shù)據(jù)技術(shù)手段進(jìn)行分析,為了保證信息收集的持續(xù)性和不間斷性,同時(shí)也要保證信息的不丟失。這里使用flume+kafka的大數(shù)據(jù)技術(shù)手段保證信息發(fā)送的實(shí)時(shí)性和準(zhǔn)確性。

二、flume+kafka架構(gòu)收集網(wǎng)站文件監(jiān)控的內(nèi)容變化

?????? flume 作為 cloudera 開發(fā)的實(shí)時(shí)日志收集系統(tǒng),受到了業(yè)界的認(rèn)可與廣泛應(yīng)用。flume是一個(gè)分布式、可靠、和高可用的海量日志采集、聚合和傳輸?shù)南到y(tǒng)。支持在日志系統(tǒng)中定制各類數(shù)據(jù)發(fā)送方,用于收集數(shù)據(jù);同時(shí),F(xiàn)lume提供對(duì)數(shù)據(jù)進(jìn)行簡(jiǎn)單處理。flume的核心組件包括source、channel和sink。

??????? Source捕獲事件后會(huì)進(jìn)行特定的格式化,然后Source會(huì)把事件推入(單個(gè)或多個(gè))Channel中。你可以把Channel看作是一個(gè)緩沖區(qū),它將保存事件直到Sink處理完該事件。

?????? flume的sink需要下沉到kafka隊(duì)列,kafka是一個(gè)分布式的基于發(fā)布訂閱模式的消息隊(duì)列,主要用于大數(shù)據(jù)實(shí)時(shí)處理靈越。

?????? kafka架構(gòu)由producer、consumer group、broker組成,producer是消息的生產(chǎn)者,consumer是消息的消費(fèi)者,broker是代理服務(wù)器,消息都存放在broker上。producer、consumer要想向kafka發(fā)送和消費(fèi)數(shù)據(jù)需要先申請(qǐng)一個(gè)主題,都是面向主題進(jìn)行操作,申請(qǐng)創(chuàng)建topic的時(shí)候需要指定分區(qū)的個(gè)數(shù),副本的個(gè)數(shù),kafka集群會(huì)采用輪詢或者range分區(qū)的方式將分區(qū)分散到不同的broker上。

?????? flume可以理解成一個(gè)點(diǎn)對(duì)點(diǎn)的模式,從消費(fèi)者主動(dòng)拉取數(shù)據(jù)。消息生產(chǎn)者將消息發(fā)送到queue中,然后消費(fèi)者從queue中取出并消費(fèi)消息,消息被消費(fèi)者消費(fèi)以后,queue中不在存儲(chǔ)消息,所以消息消費(fèi)者不可能重復(fù)消費(fèi)已經(jīng)被消費(fèi)過的消息。這個(gè)queue就相當(dāng)于flume的緩存channel。點(diǎn)對(duì)點(diǎn)模式可以理解成同步處理模式,類似于填寫注冊(cè)信息,寫入數(shù)據(jù)庫(kù),然后調(diào)用短信發(fā)送接口,進(jìn)行發(fā)送短信的實(shí)現(xiàn)。如下圖所示的同步模式。

同步模式

?????? kakfa相當(dāng)于異步處理模式,相當(dāng)于填實(shí)注冊(cè)信息,寫入數(shù)據(jù)庫(kù),把發(fā)送短信的任務(wù)寫入隊(duì)列中,在隊(duì)列中異步處理發(fā)送短信的任務(wù)。如下圖所示。

異步模式

??????? 項(xiàng)目的架構(gòu)采用flume收集網(wǎng)站攻擊的代碼修改,當(dāng)有網(wǎng)站編碼上的修改,就會(huì)把變化信息收集到flume的source中接收,然后sink到kakfa中進(jìn)行存儲(chǔ)。如下圖所示。

flume的項(xiàng)目架構(gòu)

??????? 從圖中看,flume的source接收數(shù)據(jù),然后以事件為單位進(jìn)行處理,通過處理事件,把事件傳給攔截器,如果有需要攔截的內(nèi)容,就需要實(shí)現(xiàn)攔截器,并且每個(gè)事件都會(huì)發(fā)給channel選擇器,將返回的結(jié)果寫入事件channel列表,根據(jù)channel選擇器的選擇結(jié)果,將事件寫入相應(yīng)的channel,這個(gè)channel相當(dāng)于緩存機(jī)制,接上來通過SinkProcessor下沉處理器處理結(jié)果,這里通過下沉處理器SinkPrcessor下沉到kafka中進(jìn)行存儲(chǔ)。

?????? 搭建flume+kakfa需要zookeeper包,這里使用zookeeper的版本是3.3.3,flume的版本是1.8.0,kafka的版本是2.12,這里需要注意kafka和flume的版本問題,flume的版本1.9需要jdk就會(huì)高,當(dāng)使用的jdk版本大于9時(shí),kafka可以會(huì)出現(xiàn)Unrecognized VM option 'PrintGCDateStamps'導(dǎo)致Kafka無法啟動(dòng),

?????? 這里把flume的版本調(diào)整為1.8。

?????? 啟動(dòng)虛擬機(jī)centos之后,在usr目錄下新建flume,kafka和zookeeper目錄。如下圖所示。

?flume, zookeeper和kafka啟動(dòng)

?????? 通過vftp軟件把zookeeper、 flume和kafka軟件上傳到linux服務(wù)器中,如下圖所示。

ftp上傳linux服務(wù)器

?????? 上傳軟件后,把上傳到/home/soft中的軟件解壓到usr目錄下相應(yīng)的目錄中,這里可以解壓zookeeper解壓包,命令如下 。

zookeeper的解壓

?????? 繼續(xù)解壓flume壓縮包,解壓命令如下。

flume的解壓

?????? 最后將kafka壓縮包解壓,解壓命令如下。

kafka的解壓

??????? 這里首先進(jìn)入zookeeper的config目錄下,設(shè)置config的文件zoo.cfg,但是在config目錄下,沒有zoo.cfg文件,原來只有zoosample.cfg,需要把zoosample.cfg復(fù)制成zoo.cfg,拷貝命令如下。

zoo.cfg的拷貝

??????? 文件拷貝成功后,通過vi指令進(jìn)行編輯zoo.cfg的配置文件。

zoo.cfg的vi編輯

??????? 在zoo.cfg的文件末尾加上一句服務(wù)器的指示語句,這里只有一個(gè)zookeeper服務(wù)器,所以只配置一臺(tái)服務(wù)器的配置Ip即可,配置代碼如下。

zoo.cfg編輯內(nèi)容

??????? 這里配置的ip是192.168,214.128,配置的端口號(hào)是3666。完成配置后,可以在zookeeper的bin目錄下,執(zhí)行zkServer.sh文件,后面帶上一個(gè)參數(shù)start來啟動(dòng)zookeeper服務(wù)器,如下圖所示。

zookeeper的啟動(dòng)

??????? zookeeper啟動(dòng)后,配置kafka,首先進(jìn)入到usr目錄下的kafka目錄,然后在kafka的目標(biāo)目錄下的config目錄中有配置文件server.properties。這里需要通過vi編輯server.properties文件,如下圖所示。

server.properties的vi編輯

??????? 在文件的末尾處找到zookeeper的連接配置,后面配置上zookeeper的連接ip地址和默認(rèn)端口號(hào)2181。配置如下。

zookeeper的配置


?????? 這里配置的zookeeper地址是192.168.214,128,具體內(nèi)容根據(jù)虛擬機(jī)的具體IP決定,2181是zookeeper的默認(rèn)地址。

?????? 配置結(jié)束后,需要啟動(dòng)kafka服務(wù),通過kafka目錄中bin目錄下的kafka-server-start.sh文件,后面需要跟上server.properties的路徑文件。

kafka-server的啟動(dòng)

??????? 啟動(dòng)后,當(dāng)看到“kafka started”信息后,表示kafka服務(wù)已成功啟動(dòng)。 如下圖。

kafka-sever啟動(dòng)后的信息

??????? kafka服務(wù)啟動(dòng)后,不會(huì)退出進(jìn)程,這里需要在虛擬機(jī)中再啟動(dòng)一個(gè)終端,繼續(xù)啟動(dòng)kafka消費(fèi)者,當(dāng)flume的source源接收到網(wǎng)站被改變的數(shù)據(jù)后,就會(huì)在消費(fèi)者終端中輸出,啟動(dòng)消費(fèi)者終端需要用到kafka的bin目錄中的kafka-console-consumer.sh文件。啟動(dòng)指令時(shí)文件后面需要指定zookeeper的地址以及當(dāng)前需要消費(fèi)的topic,為了保證這個(gè)topic的存在,需要kafka先創(chuàng)建一個(gè)topic主題,然后再啟動(dòng)kakfa消費(fèi)者。創(chuàng)建kafka的topic指令如下。

./kafka-topics.sh --create --zookeeper 192.168.110.140:2181 --topic myhello --partitions 1 --replication-factor 1

???????? 這里使用kafka目錄中bin目錄中的kafka-topic.sh文件,后面跟上zookeeper的地址,并且指明--topic主題名,當(dāng)前指明的是myhello主題,還需要指明partitions的分區(qū)及replication-factor的復(fù)制份數(shù)。這里由于是1臺(tái)服務(wù)器,分區(qū)數(shù)和備份數(shù)都為1。

??????? 把kafka的topic創(chuàng)建結(jié)束后,需要啟動(dòng)kafka消費(fèi)者。命令如下圖。

kafka-consumer的啟動(dòng)

?????? 這里消費(fèi)的主題--topic指明的是前面建立的主題myhello。啟動(dòng)后,消費(fèi)者不會(huì)退出進(jìn)程,需要再次另外啟動(dòng)一個(gè)終端。

??????? kafka中消費(fèi)者由于是flume下沉過來的,因此這里需要設(shè)置flume,進(jìn)入到flume的配置目錄,設(shè)置flume的配置文件,這個(gè)文件名需要自己去命名,如下圖所示。

flume配置文件的vi編輯

??????? flume的配置文件有3個(gè)說明,說明source、 channel和sink,這里的source需要監(jiān)控網(wǎng)站文件被攻擊的記錄,這個(gè)記錄一般放在文件中,linux顯示問題文件的記錄可以使用tail來顯示出來。channel默認(rèn)可以使用Momery內(nèi)存做為緩存方式,最后sink需要一個(gè)固定的kafka配置,配置kafka的類文件,然后指明kafka的消費(fèi)主題及相關(guān)配置。

?flume配置文件的編輯

??????? 從圖中可以看出,當(dāng)前flume設(shè)置的source名稱為r1,channel名稱為c1,sinks的名稱為k1。 r1的類型是exec類型,這個(gè)類型可以執(zhí)行tail指令來查看網(wǎng)站攻擊的日志文件web.log。接下來設(shè)置c1的type類型為momery,其大小設(shè)置為1000。再設(shè)置了k1的下沉類型,指出其type類型為KafkaSink,bootstrap的地址指定為192.168.214.128,bootstrap服務(wù)器的端口號(hào)默認(rèn)為9092,topic指示主題為myhello。最后指示r1的channels為c1,這里可以有多個(gè)緩沖channel,所以是復(fù)數(shù),指示下沉k1的channel為c1,注意這里的 channel為單數(shù)形式。

?????? 編輯完這個(gè)配置文件后,通過flume目錄下bin目錄中的flume-ng去啟動(dòng)一個(gè)agent。指令如下。

flume-ng-agent啟動(dòng)配置agent

??????? 注意,指令中指定的--name是a1,這個(gè)a1與配置文件中指定的flume的agent名稱一致。后面的-f參數(shù),指定conf文件的位置和名稱,-D參數(shù)指定輸出信息的等級(jí)和輸出位置在控制臺(tái)上。

?????? 啟動(dòng)成功后,這個(gè)進(jìn)程也不會(huì)被殺死,如下圖所示。

flume-ng-agent啟動(dòng)后的信息

??????? 在啟動(dòng)信息中,可以看到k1 started,表示從r1到k1都已經(jīng)啟動(dòng)了。

??????? 這里的進(jìn)程不會(huì)被殺死,需要另起一個(gè)終端,繼續(xù)執(zhí)行網(wǎng)站的監(jiān)控并輸出到文件中。

inotifywait -mqr --timefmt “%d/%m/%y %H:%M:%S” ?--format “%T %w %f %e” -e modify,delete,create,attrib /home/data”-o /home/mykafka/web.log ?/home/web

??????? 注意,命令中的輸出日志必須與flume中tail后指示的日志名稱是一致的。

??????? 命令中監(jiān)控的網(wǎng)站是home目錄下的web目錄。

??????? web目錄可以有若干web文件,也可以進(jìn)行嵌套,這里的web目錄下有3個(gè)web文件,a.html,b.html與c.html,其具體內(nèi)容如下。

web文件內(nèi)容顯示

??????? 現(xiàn)在,另外開啟一個(gè)終端,對(duì)/home中的web目錄進(jìn)行修改,修改內(nèi)容如下。

web中某html文件的編輯

??????? 這時(shí),相當(dāng)于網(wǎng)站內(nèi)容受到攻擊,inofitywait會(huì)接收到修改的內(nèi)容并通過flume下沉到kafka的消費(fèi)者中,最終, kakfa消費(fèi)者的輸出結(jié)果如下。

kafka中consumer的信息流顯示

?????? 這樣,網(wǎng)站攻擊的數(shù)據(jù)就會(huì)實(shí)時(shí)地存儲(chǔ)到了kafka中,隨時(shí)關(guān)注博客,后期更新會(huì)說明后續(xù)如何分析kakfa中的消費(fèi)信息。

? 嗶哩嗶哩官網(wǎng)視頻地址: ? ?https://www.bilibili.com/video/BV1sd4y1t7iG/


大數(shù)據(jù)網(wǎng)站攻擊實(shí)時(shí)項(xiàng)目架構(gòu)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
若羌县| 三都| 绥江县| 泰安市| 瑞安市| 莫力| 济宁市| 鸡西市| 宁城县| 临沂市| 抚州市| 务川| 长武县| 满城县| 江安县| 榆社县| 顺平县| 万年县| 云南省| 资兴市| 大英县| 儋州市| 桐庐县| 福清市| 滨海县| 新民市| 蓬莱市| 镇雄县| 和硕县| 濮阳市| 上饶市| 鄂托克旗| 遂溪县| 德化县| 石楼县| 克东县| 新晃| 巫溪县| 蒙城县| 巴东县| 长寿区|