目錄
一 :名詞解釋
二:安裝前的環(huán)境搭建
三:安裝Bro
四:安裝配置mysql
五: 運(yùn)行Bro
一.名詞解釋
什么是被動(dòng)DNS(Passive DNS)诡渴?
根據(jù)isc.org的描述赶熟,被動(dòng)DNS最初于2004年由Florian Weimer發(fā)明,旨在對抗惡意軟件压怠。根據(jù)其定義芥映,遞歸域名服務(wù)器會(huì)響應(yīng)其接收到的來自其它域名服務(wù)器的請求信息溅话,然后對響應(yīng)信息進(jìn)行記錄并將日志數(shù)據(jù)復(fù)制到中央數(shù)據(jù)庫當(dāng)中。
從實(shí)踐的角度出發(fā)盅称,收集與分析被動(dòng)DNS(Passive DNS)數(shù)據(jù)能夠幫助我們識(shí)別惡意站點(diǎn)并對抗釣魚及惡意軟件肩祥。這到底意味著什么呢?實(shí)際上缩膝,這就是一個(gè)存儲(chǔ)了大量DNS解析數(shù)據(jù)的歷史數(shù)據(jù)庫混狠。這意味著你可以查詢到某一域名曾經(jīng)解析過的IP地址。即使這一域名已經(jīng)從域名服務(wù)器中移除了疾层,你也可以查詢到相關(guān)的信息檀蹋。
當(dāng)接收到查詢請求時(shí),域名服務(wù)器會(huì)首先檢查自身緩存以及權(quán)威數(shù)據(jù)以獲取請求所需的內(nèi)容云芦。如果解析內(nèi)容尚不存在俯逾,則會(huì)進(jìn)一步查詢r(jià)oot域名服務(wù)器作為參考直到找出能夠提供相關(guān)查詢結(jié)果的驗(yàn)證域名服務(wù)器,最后查詢其中的驗(yàn)證域名服務(wù)器來進(jìn)行結(jié)果檢索舅逸。值得注意的是桌肴,大部分的被動(dòng)DNS數(shù)據(jù)會(huì)在“高于”檢索域名服務(wù)器的位置被立即捕獲。
這也就意味著琉历,被動(dòng)DNS數(shù)據(jù)大多由來自互聯(lián)網(wǎng)上驗(yàn)證域名服務(wù)器的參考與查詢結(jié)果構(gòu)成(當(dāng)然坠七,其中也包含部分錯(cuò)誤信息)。這部分?jǐn)?shù)據(jù)擁有時(shí)間戳旗笔,經(jīng)過重復(fù)數(shù)據(jù)刪除與壓縮彪置,而后被復(fù)制到中央數(shù)據(jù)庫內(nèi)以備歸檔與分析。需要注意的是蝇恶,整個(gè)流程捕捉到的是服務(wù)器到服務(wù)器之間的通信內(nèi)容拳魁,而非來自存根解析器并指向遞歸域名服務(wù)器的查詢內(nèi)容。
我們?yōu)槭裁匆褂帽粍?dòng)DNS撮弧?
當(dāng)我們需要進(jìn)行事件響應(yīng)調(diào)查時(shí)潘懊,你就會(huì)發(fā)現(xiàn)被動(dòng)DNS是非常有用的姚糊。
各類企業(yè)都會(huì)采用不同的數(shù)據(jù)庫來容納被動(dòng)DNS“傳感器”所發(fā)來的上傳數(shù)據(jù)。目前人氣最高且最為知名的當(dāng)數(shù)Farsight Security公司所打造的被動(dòng)DNS數(shù)據(jù)庫——DNSDB授舟。在這一DNSDB中包含有多年以來由全世界范圍內(nèi)所有傳感器收集而來的數(shù)據(jù)救恨。對被動(dòng)DNS數(shù)據(jù)庫進(jìn)行查詢能夠提供大量極具實(shí)用價(jià)值的信息。舉例來說释树,大家可以通過查詢被動(dòng)DNS數(shù)據(jù)庫來查找與某一網(wǎng)站相關(guān)聯(lián)的DNS查詢記錄肠槽,或者自某一時(shí)間開始該網(wǎng)站曾經(jīng)使用過哪些域名服務(wù)器,又或者另有哪些其它區(qū)域在使用同一套域名服務(wù)器奢啥。更進(jìn)一步來講秸仙,大家也可以選擇某個(gè)已知的惡意IP地址,并查詢各被動(dòng)DNS傳感器最近映射至該IP地址的全部相關(guān)域名服務(wù)器扫尺。
被動(dòng)DNS::客戶端-不同的服務(wù)器
被動(dòng)DNS::客戶端可以支持不同的被動(dòng)DNS服務(wù)器:
l?? BFK.de
l?? Mnemonic
l?? PassiveDNS.cn
l?? CIRCL
l?? VirusTotal
l?? PassiveTotal
l?? DNSDB
二.安裝前的環(huán)境搭建
依賴關(guān)系
1.在開始之前,Bro需要安裝以下庫和工具:
Libpcap (http://www.tcpdump.org)
OpenSSL libraries (http://www.openssl.org)
BIND8 library
Libz
Bash (for BroControl)
Python 2.7 or greater (for BroControl)
2.從源代碼構(gòu)建Bro炊汤,需要以下額外的依賴關(guān)系:
CMake 2.8 or greater (http://www.cmake.org)
Make
C/C++ compiler with C++11 support (GCC 4.8+ or Clang 3.3+)
SWIG (http://www.swig.org)
Bison (GNU Parser Generator)
Flex (Fast Lexical Analyzer)
Libpcap headers (http://www.tcpdump.org)
OpenSSL headers (http://www.openssl.org)
zlib headers
Python
3.要安裝所需的依賴項(xiàng)正驻,可以使用:
RPM/RedHat-based Linux: ?sudo yum install cmake make gcc gcc-c++ flex bison libpcap-devel openssl-devel python-devel swig zlib-devel ?(#管理員模式下安裝下列軟件,安裝時(shí)保證網(wǎng)絡(luò)的穩(wěn)定抢腐。)
4.可選依賴關(guān)系
如果在構(gòu)建時(shí)找到它們姑曙,Bro可以使用一些可選的庫和工具:
C ++ Actor Framework(CAF)版本0.14(http://actor-framework.org)
LibGeoIP(用于地理位置分配IP地址)
sendmail(啟用Bro和BroControl發(fā)送郵件)
curl(由實(shí)現(xiàn)活動(dòng)HTTP的Bro腳本使用)
gperftools(tcmalloc用于提高內(nèi)存和CPU使用率)
jemalloc(http://www.canonware.com/jemalloc/)
PF_RING(僅限Linux,請參閱群集配置)
ipsumdump(用于trace-summary;http://www.cs.ucla.edu/~kohler/ipsumdump)
三.安裝Bro
1.具體命令如下:
>?yum update?&&?apt-get?upgrade
>?yum install?cmake?make?gcc?g++?flex?bison?libpcap-dev/ ? ? ?(因?yàn)榍懊嬉呀?jīng)將環(huán)境搭建好了迈倍,所以這里可以自己運(yùn)行)
/libgeoip-dev?libssl-dev?python-dev?zlib1g-dev
/libmagic-dev?swig2.0
>?wget https://www.bro.org/downloads/release/bro-2.4.1.tar.gz ? ? (#從 xxx網(wǎng)站下載安裝包)
>?tar?-xvzf?bro-2.4.1.tar.gz ?(#解壓壓縮包)
>?cd?bro-2.4.1 (#進(jìn)入目錄)
> ./configure --prefix=/nsm/bro? (#configure伤靠,這一步一般用來生成 Makefile,為下一步的編譯做準(zhǔn)備啼染,你可以通過在 configure 后加上參數(shù)來對安裝進(jìn)行控制宴合,比如代碼:./configure –prefix=/nsm/bro意思是將該軟件安裝在 /nsm/bro 下面,執(zhí)行文件就會(huì)安裝在/nsm/bro/bin(而不是默認(rèn)的 /usr/local/bin),資源文件就會(huì)安裝在/nsm/bro/share(而不是默認(rèn)的/usr/local/share)迹鹅。同時(shí)一些軟件的配置文件你可以通過指定 –sys-config= 參數(shù)進(jìn)行設(shè)定卦洽。有一些軟件還可以加上 –with、–enable斜棚、–without阀蒂、–disable 等等參數(shù)對編譯加以控制,你可以通過允許 ./configure –help 察看詳細(xì)的說明幫助弟蚀。)
> make? (#make蚤霞,這一步就是編譯,大多數(shù)的源代碼包都經(jīng)過這一步進(jìn)行編譯(當(dāng)然有些perl或python編寫的軟件需要調(diào)用perl或python來進(jìn)行編譯)义钉。如果 在 make 過程中出現(xiàn) error 昧绣,你就要記下錯(cuò)誤代碼(注意不僅僅是最后一行),然后你可以向開發(fā)者提交 bugreport(一般在 INSTALL 里有提交地址)捶闸,或者你的系統(tǒng)少了一些依賴庫等滞乙,這些需要自己仔細(xì)研究錯(cuò)誤代碼奏纪。)
> make install (#make insatll,這條命令來進(jìn)行安裝(當(dāng)然有些軟件需要先運(yùn)行 make check 或 make test 來進(jìn)行一些測試)斩启,這一步一般需要你有 root 權(quán)限(因?yàn)橐蛳到y(tǒng)寫入文件)序调。)
>?export?PATH=/nsm/bro/bin:$PATH?
2.現(xiàn)在我們可以開始運(yùn)行Bro了:
>broctl
[BroControl]install
[BroControl]start
[BroControl]status
四.安裝配置mysql
1、配置YUM源
在MySQL官網(wǎng)中下載YUM源rpm安裝包:http://dev.mysql.com/downloads/repo/yum/
# 下載mysql源安裝包shell> wgethttp://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm# 安裝mysql源shell> yum localinstall mysql57-community-release-el7-8.noarch.rpm
檢查mysql源是否安裝成功
shell> yum repolist enabled| grep "mysql.*-community.*"
看到上圖所示表示安裝成功
shell>yum install mysql-community-server
shell> systemctl start mysqld
4、開機(jī)啟動(dòng)
shell> systemctl enable mysqldshell> systemctl daemon-reload
mysql安裝完成之后边酒,在/var/log/mysqld.log文件中給root生成了一個(gè)默認(rèn)密碼。通過下面的方式找到root默認(rèn)密碼狸窘,然后登錄mysql進(jìn)行修改:
shell> grep'temporary password'/var/log/mysqld.log
shell>mysql-uroot-pmysql>ALTER USER'root'@'localhost'IDENTIFIEDBY'MyNewPass4!';
或者
mysql>setpasswordfor'root'@'localhost'=password('MyNewPass4!');
注意:mysql5.7默認(rèn)安裝了密碼安全檢查插件(validate_password)墩朦,默認(rèn)密碼檢查策略要求密碼必須包含:大小寫字母、數(shù)字和特殊符號(hào)翻擒,并且長度不能少于8位氓涣。否則會(huì)提示ERROR 1819 (HY000): Your password does not satisfy the current policy requirements錯(cuò)誤,如下圖所示:
通過msyql環(huán)境變量可以查看密碼策略的相關(guān)信息:
mysql> show variableslike'%password%';
validate_password_policy:密碼策略陋气,默認(rèn)為MEDIUM策略? validate_password_dictionary_file:密碼策略文件劳吠,策略為STRONG才需要? validate_password_length:密碼最少長度? validate_password_mixed_case_count:大小寫字符長度,至少1個(gè)? validate_password_number_count :數(shù)字至少1個(gè)? validate_password_special_char_count:特殊字符至少1個(gè)上述參數(shù)是默認(rèn)策略MEDIUM的密碼檢查規(guī)則巩趁。
共有以下幾種密碼策略:
策略檢查規(guī)則
0 or LOWLength
1 or MEDIUMLength; numeric, lowercase/uppercase, and special characters
2 or STRONGLength; numeric, lowercase/uppercase, and special characters; dictionary file
MySQL官網(wǎng)密碼策略詳細(xì)說明:http://dev.mysql.com/doc/refman/5.7/en/validate-password-options-variables.html#sysvar_validate_password_policy
在/etc/my.cnf文件添加validate_password_policy配置痒玩,指定密碼策略
# 選擇0(LOW),1(MEDIUM)议慰,2(STRONG)其中一種蠢古,選擇2需要提供密碼字典文件validate_password_policy=0
如果不需要密碼策略,添加my.cnf文件中添加如下配置禁用即可:
validate_password =off
重新啟動(dòng)mysql服務(wù)使配置生效:
systemctl restart mysqld
默認(rèn)只允許root帳戶在本地登錄便瑟,如果要在其它機(jī)器上連接mysql,必須修改root允許遠(yuǎn)程連接番川,或者添加一個(gè)允許遠(yuǎn)程連接的帳戶到涂,為了安全起見,我添加一個(gè)新的帳戶:
mysql>GRANTALLPRIVILEGESON*.*TO'用戶名'@'%'IDENTIFIEDBY'密碼'WITHGRANT OPTION;
修改/etc/my.cnf配置文件践啄,在[mysqld]下添加編碼配置,如下所示:
[mysqld]character_set_server=utf8init_connect='SET NAMES utf8'
重新啟動(dòng)mysql服務(wù)沉御,查看數(shù)據(jù)庫默認(rèn)編碼如下所示:
默認(rèn)配置文件路徑:配置文件:/etc/my.cnf? 日志文件:/var/log//var/log/mysqld.log? 服務(wù)啟動(dòng)腳本:/usr/lib/systemd/system/mysqld.service? socket文件:/var/run/mysqld/mysqld.pid
8.接下來屿讽,我們創(chuàng)建一個(gè)數(shù)據(jù)庫使用:
>?mysql?-u?root?-p
mysql>?CREATE?DATABASE?pdns;
五: 運(yùn)行Bro
我們還需要安裝其他的一些第三方庫,首先我們需要安裝‘pip’
>?wget?https://bootstrap.pypa.io/get-pip.py
>?python?get-pip.py
接下來我們安裝,Bottle庫伐谈,像下面這樣:
>?pip?install?bottle
并且用apt安裝SQLAlchemy:
>?sudo?yum install?python-sqlalchemy
我們可以讓bro-pdns啟動(dòng)了…首先阻星,我們用git下載bro-pnd挠日,沒有的話可以yum安裝:
yum-getinstall?git
>git?clonehttps://github.com/JustinAzoff/bro-pdns.git
接下來唱捣,把bro-pdns文件夾移動(dòng)到’/nsm/bro/share/bro/site’路徑下赊堪,然后打開’/nsm/bro/share/bro/site’路徑下的’local.bro’文件,添加下面這句內(nèi)容:
@load./bro_pdns
redef?PDNS::uri?="mysql://root:password@localhost/pdns";
其中password要改成數(shù)據(jù)庫的密碼履澳。然后嘶窄,我們需要運(yùn)行`broctl?deploy`重啟整個(gè)系統(tǒng),并且把新的腳本導(dǎo)入到Bro ?距贷。設(shè)置下HTTP?API柄冲,這樣的話,你就可以直接調(diào)用API來獲取domain和IP
BRO_PDNS_DB=mysql://root:pass@localhost/pdns/nsm/share/bro/
site/bro-pdns/bro_pdns.py?serve
好了忠蝗,配置好后现横,我們就可以正式開始使用它了。你想查詢一個(gè)站點(diǎn)的信息阁最,你可以向api傳遞你要查詢的域名戒祠,就能查到結(jié)果了:
>?curl?http://localhost:8081/dns/www.youtube.com
很顯然,用任何你想要查詢的IP或者域名替換掉www.youtube.com闽撤,就可以了