一、 Splunk公司與產品
美國Splunk公司,成立於2004年,2012年納斯達克上市,第一家大數據上市公司,榮獲眾多獎項和殊榮。總部位於美國舊金山,倫敦為國際總部,香港設有亞太支持中心,上海設有海外第一個研發中心。
產品:Splunk Enterprise【企業版】、Splunk Free【免費版】、Splunk Cloud、Splunk Hunk【大數據分析平台】、Splunk Apps【基於企業版的插件】等。企業版按索引的數據量收費,免費版每天最大數據索引量500MB,可使用絕大多數企業版功能。
二、 Splunk能夠做什么
讓所有人均可訪問機器數據、讓機器數據對所有人有用並具有價值!Splunk是機器數據的引擎,使用Splunk可收集、索引和利用所有應用程序、服務器和設備生成的快速移動型計算機數據。使用Splunk處理計算機數據,可讓您在幾分鍾內解決問題和調查安全事件;使用Splunk可以監視您的端對端基礎結構,避免服務性能降低或中斷;以較低成本滿足合規性要求;關聯並分析跨越多個系統的復雜事件,獲取新層次的運營可見性以及 IT 和業務智能。
每個環境都有獨特的機器數據空間,以下是一些示例:
數據類型 |
位置 |
可以做什么 |
應用日志 |
本地日志文件、log4j、log4net、Weblogic、WebSphere、JBoss、.NET、PHP |
用戶活動、欺詐檢測、應用性能 |
業務流程日志 |
業務流程管理日志 |
跨渠道客戶活動、購買、帳戶變更以及問題報表 |
呼叫詳細信息記錄 |
呼叫詳細信息記錄 (CDR)、計費數據記錄、事件數據記錄均由電信和網絡交換機所記錄。 |
計費、收入保證、客戶保證、合作伙伴結算,營銷智能 |
點擊流數據 |
Web 服務器、路由器、代理服務器和廣告服務器 |
可用性分析、數字市場營銷和一般調查 |
配置文件 |
系統配置文件 |
如何設置基礎設施、調試故障、后門攻擊、"定時炸彈"病毒 |
數據庫審計日志 |
數據庫日志文件、審計表 |
如何根據時間修改數據庫數據以及如何確定修改人 |
文件系統審計日志 |
敏感數據存儲在共享文件系統中 |
監測並審計敏感數據讀取權限 |
管理並記錄 API |
通過 OPSEC Log Export API (OPSEC LEA) 和其他 VMware 和 Citrix 供應商特定 API 的 Checkpoint 防火牆 |
管理數據和日志事件 |
消息隊列 |
JMS、RabbitMQ 和 AquaLogic |
調試復雜應用中的問題,並作為記錄應用架構基礎 |
操作系統度量、狀態和診斷命令 |
通過命令行實用程序(例如 Unix 和 Linux 上的 ps 與 iostat 以及 Windows 上的性能監視器)顯示的 CPU、內存利用率和狀態信息 |
故障排除、分析趨勢以發現潛在問題並調查安全事件 |
數據包/流量數據 |
tcpdump 和 tcpflow 可生成 pcap 或流量數據以及其他有用的數據包級和會話級信息 |
性能降級、超時、瓶頸或可疑活動可表明網絡被入侵或者受到遠程攻擊 |
SCADA 數據 |
監視控制與數據采集 (SCADA) |
識別 SCADA 基礎結構中的趨勢、模式和異常情況,並用於實現客戶價值 |
傳感器數據 |
傳感器設備可以根據監測環境條件生成數據,例如氣溫、聲音、壓力、功率以及水位 |
水位監測、機器健康狀態監測和智能家居監測 |
Syslog |
路由器、交換機和網絡設備上的 Syslog |
故障排除、分析、安全審計 |
Web 訪問日志 |
Web 訪問日志會報告 Web 服務器處理的每個請求 |
Web 市場營銷分析報表 |
Web 代理日志 |
Web 代理記錄用戶通過代理發出的每個 Web 請求 |
監測並調查服務條款以及數據泄露事件 |
Windows 事件 |
Windows 應用、安全和系統事件日志 |
使用業務關鍵應用、安全信息和使用模式檢測問題。 |
線上數據 |
DNS 查找和記錄,協議級信息,包括標頭、內容以及流記錄 |
主動監測應用性能和可用性、最終客戶體驗、事件調查、網絡、威脅檢測、監控和合規性 |
三、 Splunk架構與組件
架構最下層:Splunk通過監控文件和目錄、監控網絡端口、運行腳本的方式獲取數據。
Data Routing Cloningand and Load Balancing:數據復制與負載均衡,
Index:顧名思義,它跟索引有關,實際上他不僅僅負責為數據建立索引,還負責響應查找索引數據的用戶請求,還有讀取數據和負責查找管理工作。雖然indexer可以在查找它本身的數據,但是,在多indexer的集群中,可以通過叫“search head”的組件來整合多個indexer,對外提供統一的查詢管理和服務。
Search:專用的搜索語言,原始事件搜索、報表生成搜索,並可在搜索中自動學習“知識”,用戶也可以自定義知識,從而使搜索越來越智能。
最上面兩層:各類報表、告警,以命令行窗口,web圖形界面接口和其他接口。
Splunk的幾個重要組件:
索引器:索引器是用於為數據創建索引的Splunk Enterprise 實例。索引器將原始數據轉換為事件並將事件存儲至索引(Index)中。索引器還搜索索引數據,以響應搜索請求。
搜索頭:在分布式搜索環境中,搜索頭是處理搜索管理功能、指引搜索請求至一組搜索節點,然后將結果合並返回至用戶的Splunk Enterprise 實例。如果該實例僅搜索不索引,通常被稱為專用搜索頭。
搜索節點:在分布式搜索環境中,搜索節點是建立索引並完成源自搜索頭搜索請求的Splunk Enterprise實例。
轉發器:轉發器是將數據轉發至另一個Splunk Enterprise 實例(索引器或另一個轉發器)或至第三方系統的Splunk Enterprise 實例。
接收器:接收器是經配置從轉發器接收數據的Splunk Enterprise 實例。接收器為索引器或另一個轉發器。
應用:應用是配置、知識對象和客戶設計的視圖和儀表板的集合,擴展Splunk Enterprise 環境以適應Unix 或Windows 系統管理員、網絡安全專家、網站經理、業務分析師等組織團隊的特定需求。單個Splunk Enterprise 安裝可以同時運行多個應用。
四、 Splunk分布式部署
如果系統平台比較大,產生的數據量比較大,那么可以不斷擴展splunk集群,splunk具備這種擴展能力。用戶可以部署任意多個forwarder,用來轉發剛剛產生的原始數據。Indexer也可以部署成為一個集群,統一下層提供接收原始數據、建立索引的服務,對上層提供搜索的服務。用戶還可以部署多台用於搜索的Search Header。所以,用戶可以根據自己平台的實際工作量來部署自己的splunck集群大小。
五、 Splunk的安裝
Splunk支持在各類操作系統上安裝,下面以Linux系統安裝為例:
1、上傳splunk安裝包splunk-6.4.2-00f5bb3fa822-Linux-x86_64.tgz至/opt目錄。
2、解壓安裝壓縮包
/tar –zxvf splunk-6.4.2-00f5bb3fa822-Linux-x86_64.tgz //解壓,解壓異常請注意文件上傳是否正確。
3、進入splunk命令文件夾(bin)
cd /opt/splunk/bin //進入splunk bin目錄
4、檢查splunk狀態
./splunk status //檢查splunk狀態是否正常,第一次會彈出license告知,按提示點擊確定
5、啟動splunk
./splunk start //啟動splunk
./splunk status //檢查啟動狀態
6、Splunk默認web登陸端口是8000,在瀏覽器中http://ip:8000,可第一次登陸,如果無法登陸請檢查本機防火牆。
默認用戶名:admin,密碼:changeme,第一次登陸成功后要求重置密碼。
7、設置splunk開機啟動
./splunk enable boot-start
8、查看splunk進程信息
ps –f | grep splunk
六、 Splunk卸載
1、進入splunk文件夾
cd /opt/splunk/bin
2、檢查splunk狀態
./splunk status
3、關閉splunk服務
/splunk stop
4、刪除splunk安裝目錄
rm –rf /opt/splunk
七、 Splunk基本配置
所有的設置基本上都可以通過Web頁面和splunk CLI命令兩種方式。
1、Web頁面:
可修改splunk主機名、管理端口、web登陸端口,修改后需重啟splunk生效。
2、CLI命令
./splunk start //啟動
./splunk stop //關閉
./splunk restart //重啟
./splunk status //查看狀態
./splunk version //查看版本
./splunk show splunkd-port //查看管理端口
./splunk show web-port //查看web登陸管理端口
./splunk set web-port 80 //修改web登陸管理端口為80
./splunk set servername //新的服務器名稱 //設置服務器名稱
./splunk set default-hostname 新的主機名稱 //設置默認主機名稱
./splunk enable web-ssl //啟用SSL
./splunk disable web-ssl //關閉SSL
./splunk edit user admin –password ‘newpassword’ –authadmin:oldpassword //修改用戶密碼
./splunk add user //新增用戶
./splunk add user 新的用戶名 -password ‘新用戶密碼’ -full-name ‘設置它的全名’ –role User(這個是角色)
./splunk list user //列出用戶
./splunk remove user //刪除用戶
八、 簡單應用實例——手工添加數據
1、點擊Splunk首頁——添加數據——上載
2、選擇要上傳的文件,按提示點擊確定
3、上傳完成后,splunk會自動生成字段,也可以按需要根據“正則表達式”或“分隔符”自己提取字段
4、可以根據需要進行各類搜索、計算,如何搜索需要學習splunk的SPL搜索語言,推薦閱讀《Splunk實踐指南_》
九、 簡單應用實例——監控splunk本地的數據
1、點擊splunk首頁——添加數據——監視——文件和目錄
2、選擇“瀏覽”,添加需要監控的本地目錄,索引、目錄都可以先選擇默認,在稍后在做具體解釋。
3、添加完成后,實時監視文件變化,也可以進行搜索了。
十、 簡單應用實例——監控遠程服務器數據
可以通過syslog或splunk通用轉發器,把遠程服務器的數據傳到splunk服務器進行監視,下面重點介紹splunk通用轉發器的使用。
(一)、splunkforwarder安裝與配置
1、在需要收集日志的服務器上安裝splunkforwarder
2、切換至splunkforwarder的可執行目錄(bin),啟用轉發器
./splunk start //根據提醒點確定
3、查看通用轉發器的端口(默認用戶名:admin、密碼:changeme)
./splunk show splunkd-port
4、修改通用轉發器的密碼
/splunk edit user admin -password ‘新密碼’ -role admin -auth admin:changeme
(二)、下面我們將遠程服務器的 /var/log/audit/發給splunk
1、先到splunk上為這個實例創建一個索引,使用默認索引也可以,但建議為主要應用創建各自的索引
通過命令創建索引(也可以通過web頁面創建)
./splunk add index linux_audit
2、在splunkforwarder服務器上添加一個監控項
./splunk add monitor /var/log/audit –index linux_audit
3.添加splunk接收服務器和接口
./splunk add forward-server 192.168.40.129:9997
4.查看轉發服務器
./splunk list forward-server
5.splunk服務器上檢查開啟監聽端口
./splunk enable listen 要啟用的端口號 // 開啟splunk接收的指定端口
./splunk disable listen 要禁用的端口號 // 關閉splunk接收的指定端口
./splunk display listen // 顯示已啟用的splunk接收的端口
(三)、登陸Web頁面,查看搜索
1、index=“linux_audit”(支持命令的自動補全)
十一、 利用Splunk搭建SOC平台
收集一切可以收集的數據(IDS、出入口流量、防病毒、端口掃描等各類信息安全軟件、工具的日志),利用Splunk進行監控、告警、根據需要快速搜索、生成報表,舉例如下:
1、通過Security Onion App for Splunk software,監控出入口網絡流(包括IDS威脅監控、外網開放端口監控、各協議的連接監控……)
2、外網IP開放端口掃描
Nmap掃描日志自動上傳至Splunk,在儀表盤中制定關注的面板(如高危端口開放展示等)。