沒有錢的安全部之資產(chǎn)安全

0x01 對資產(chǎn)安全的探索

說到資產(chǎn)安全蛮拔,估計腦海中就會浮現(xiàn)巡風。使用巡風大半年痹升,感覺巡風特別好用建炫,特別適合中小型企業(yè),最關(guān)鍵的是不用錢就能把握內(nèi)網(wǎng)資產(chǎn)情況疼蛾。但是肛跌,使用巡風多少會遇到一些問題(最新版的巡風解決這些問題沒有我不清楚,我使用的是2017年1月份的版本),比如:

  • 跨網(wǎng)段衍慎,巡風部署的位置訪問不到怎么辦转唉?

  • 無法可視化巡風掃描任務(wù)狀態(tài),無法對任務(wù)進行單次掃描稳捆,立即開始掃描等赠法。

  • 巡風獨立數(shù)據(jù)庫,無法把數(shù)據(jù)做好看給老板看乔夯。

  • 單點部署的巡風期虾,往往IP會被拉入黑名單。

以上問題驯嘱,是針對本安全部使用巡風遇到的水土不服。

在這個數(shù)據(jù)的時代喳坠,動不動就是大數(shù)據(jù)鞠评,數(shù)據(jù)收集至關(guān)重要。相信大部分企業(yè)都有使用或者了解過ELK壕鹉,那么把巡風與ELK結(jié)合使用也許不錯剃幌,探索巡風與ELK結(jié)合使用的方案:

架構(gòu).png

0x02 選擇開源項目

nmap

思考:

  • 使用nmap作為主機掃描引擎,python第三方庫調(diào)用nmap方便晾浴,nmap掃描的結(jié)果滿足需求负乡。

部署:

  • 安裝nmap

  • 安裝python庫:sudo pip install python-nmap

Celery

之前看到有文章提到考慮使用celery,最后卻未選擇Celery脊凰。

Celery文檔

使用Celery思路

思考:

  • Celery是Python開發(fā)的分布式任務(wù)調(diào)度模塊抖棘,實時處理的任務(wù)隊列,同時也支持任務(wù)調(diào)度狸涌。Celery本身不含消息服務(wù)切省,它使用第三方消息服務(wù)來傳遞任務(wù),Celery支持的消息服務(wù)有RabbitMQ帕胆、Redis朝捆,當然Redis應(yīng)該是最佳選擇。

  • 解決跨網(wǎng)段問題懒豹,這里只需要把Celery節(jié)點部署到無法到達的網(wǎng)段芙盘,并協(xié)調(diào)開通Celery節(jié)點到Redis端口的網(wǎng)絡(luò)策略即可,所有的掃描任務(wù)全部通過Reids調(diào)度由Celery來執(zhí)行脸秽。

  • 解決任務(wù)狀態(tài)可視化問題儒老,這里只需要部署Celery的好伙伴Flower就可以完美解決。

小試牛刀

部署:

  • 安裝python庫:sudo pip install redis celery celery[redis]

Celery分布式架構(gòu):

celery-worker.png

創(chuàng)建tasks.py(決定worker能做什么)

import nmap
from celery import Celery
app = Celery('tasks', broker='redis://localhost:6379/0')

@app.task
def hostScan(host, ports, arguments):
        nm = nmap.PortScanner()
        nm.scan(hosts=host, ports=ports, arguments=arguments)

啟動Celery worker: celery -A tasks worker -Q master --loglevel=info

創(chuàng)建run.py(producer)

from tasks import hostScan
<br />
queue="master"
host="localhost"
ports="22,80"
arguments="-Pn -sV"
hostScan.apply_async(args=[host, ports, arguments], queue=queue)

運行run.py记餐,即可調(diào)度worker執(zhí)行任務(wù)贷盲,這里worker執(zhí)行的是主機掃描任務(wù)。

Flower

Flower是Celery的一個實時監(jiān)控和管理Web界面工具

部署:

  • 安裝python庫:sudo pip install flower

啟動Flower:

flower --broker=redis://localhost:6379/0 --address=localhost --port=5555

Flower的任務(wù)監(jiān)控界面如下:

flower.png

可以通過Flower監(jiān)控界面靈活調(diào)整任務(wù)速率,worker隊列等巩剖。

ELK

具體部署可以參考:沒錢的安全部之日志安全

0x03 解決方案

開源項目選擇完畢铝穷,開始動手實現(xiàn)。

Celery節(jié)點文件結(jié)構(gòu):

celerynode
|
|-- vuldb 漏洞掃描腳本庫
|
|-- api.py 提供server調(diào)用tasks
|
|-- tasks.py 芹菜任務(wù)列表
|
|-- common.py 公用函數(shù)庫
|
|-- Config.py 芹菜配置
  • 大量部署Celery節(jié)點佳魔,啟動worker實現(xiàn)分布式曙聂。

  • 通過Celery節(jié)點執(zhí)行主機掃描以及漏洞掃描任務(wù),考慮到安全性鞠鲜,不采納直接把數(shù)據(jù)壓到ES中宁脊,而是將所有的數(shù)據(jù)全部壓到Redis,通過logstash來寫入ES贤姆,最終便可以匯總數(shù)據(jù)榆苞。這里存在的安全問題是Celery擁有Redis的密碼,所以對Reids的加固是必然的霞捡。

Server端文件結(jié)構(gòu):

server
|
|-- lib 
|
|-- static 靜態(tài)文件
|
|-- templates html頁面
|
|-- vul 漏洞掃描引擎
    |
    |-- vuldb 漏洞掃描腳本庫
    |
    |-- vulScan.py 漏洞掃描腳本引擎
|
|-- monitor 周期驗證引擎
    |
    |-- index.py 周期nmap掃描
    |
    |-- verify.py 周期探測port
  • Server主要是web界面坐漏,可視化執(zhí)行任務(wù),周期掃描配置等碧信。

  • vuldb漏洞庫赊琳,依舊使用巡風漏洞庫,畢竟大牛更高產(chǎn)砰碴,更新poc速度迅猛躏筏。

遇到的問題

周期執(zhí)行問題:

開始,希望選擇使用Celery Beat方式來做周期任務(wù)呈枉,發(fā)現(xiàn)無法動態(tài)修改趁尼,必須重啟Celery Beat。最后只能選擇開啟一條新的線程來監(jiān)聽周期任務(wù)猖辫。

漏洞庫更新問題:

這里與單點部署有些不同的是采用分布式弱卡,當需要上傳新的漏洞文件時,各個節(jié)點如何獲得新的文件住册?這里使用Redis的訂閱功能解決這個問題婶博。

import time
import json
import os
from redispool import getStrictRedis

FILE_PATH = os.path.split(os.path.realpath(__file__))[0] + '/vuldb/'

if __name__ == '__main__':
    r = getStrictRedis()
    p = r.pubsub()
    p.subscribe("updateplugins")
    while True:
        try:
            message = p.get_message()
            if message:
                m = json.loads(message["data"])
                filename = m["filename"]
                content = m["content"]
                f = open(FILE_PATH + filename, "w")
                f.write(content)
                f.close()
            time.sleep(10)      
        except Exception as e:
            pass 

Server端上傳文件后,通過updateplugins頻道推給各個節(jié)點荧飞,完成更新凡人。

0x04

這里本人簡單實現(xiàn)了一下以上想法:

界面.png

將任務(wù)結(jié)果壓到ELK以后,便可以通過kibana可視化查看目前狀況叹阔,這里放一個測試數(shù)據(jù)的面板:

kibana.png

最終粗糙的輪子出來了挠轴,希望能給有需要的人提供幫助吧。

最后還是上個碼耳幢,有興趣部署探討來吧來吧:

https://github.com/superhuahua/xunfengES

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末岸晦,一起剝皮案震驚了整個濱河市欧啤,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌启上,老刑警劉巖邢隧,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異冈在,居然都是意外死亡倒慧,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進店門包券,熙熙樓的掌柜王于貴愁眉苦臉地迎上來纫谅,“玉大人,你說我怎么就攤上這事溅固「讹酰” “怎么了?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵侍郭,是天一觀的道長询吴。 經(jīng)常有香客問我,道長励幼,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任口柳,我火速辦了婚禮苹粟,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘跃闹。我一直安慰自己嵌削,他們只是感情好,可當我...
    茶點故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布望艺。 她就那樣靜靜地躺著苛秕,像睡著了一般。 火紅的嫁衣襯著肌膚如雪找默。 梳的紋絲不亂的頭發(fā)上艇劫,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天,我揣著相機與錄音惩激,去河邊找鬼店煞。 笑死,一個胖子當著我的面吹牛风钻,可吹牛的內(nèi)容都是我干的顷蟀。 我是一名探鬼主播,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼骡技,長吁一口氣:“原來是場噩夢啊……” “哼鸣个!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤囤萤,失蹤者是張志新(化名)和其女友劉穎昼窗,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體阁将,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡膏秫,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了做盅。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片缤削。...
    茶點故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖吹榴,靈堂內(nèi)的尸體忽然破棺而出亭敢,到底是詐尸還是另有隱情,我是刑警寧澤图筹,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布帅刀,位于F島的核電站,受9級特大地震影響远剩,放射性物質(zhì)發(fā)生泄漏扣溺。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一瓜晤、第九天 我趴在偏房一處隱蔽的房頂上張望锥余。 院中可真熱鬧,春花似錦痢掠、人聲如沸驱犹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽雄驹。三九已至,卻和暖如春淹辞,著一層夾襖步出監(jiān)牢的瞬間医舆,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工象缀, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留彬向,地道東北人。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓攻冷,卻偏偏與公主長得像娃胆,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子等曼,可洞房花燭夜當晚...
    茶點故事閱讀 45,044評論 2 355

推薦閱讀更多精彩內(nèi)容