亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么通過Kibana、Wazuh和Bro IDS提高中小企業的威脅檢測能力

發布時間:2021-12-23 10:50:10 來源:億速云 閱讀:223 作者:柒染 欄目:網絡安全

這篇文章給大家介紹怎么通過Kibana、Wazuh和Bro IDS提高中小企業的威脅檢測能力,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

近來,我們一直都在通過一些開源免費的工具,來幫助中小企業提升其網絡威脅檢測能力。我們將手把手的教大家通過Kibana,Wazuh和Bro IDS來提高自身企業的威脅檢測能力。

什么是Wazuh?

Wazuh是一款以OSSEC作為引擎的基于主機的入侵檢測系統。通過與ELK的結合,便于管理員通過日志平臺查看系統日志信息,告警信息,規則配置信息等。

安裝ELK & Wazuh

這里有份非常詳細的Wazuh官方文檔,你可以參考該文檔進行安裝。安裝成功后,你可以通過http://your_server:5601訪問Kibana和Wazuh。

怎么通過Kibana、Wazuh和Bro IDS提高中小企業的威脅檢測能力

安裝Bro

BRO是一個開源的IDS項目。它的安裝相對容易,但使用Kibana進行設置就會復雜許多。我們嘗試了好幾個網上的安裝教程,但都沒有成功。所以,我們創建了我們自己的安裝指南,你只需重復我們的安裝步驟即可(避免在此過程浪費時間)。

Ubuntu 安裝

默認情況下,Ubuntu上已安裝了Git。因此,你可以使用以下命令克隆存儲庫。這些文件將被放入名為bro的目錄中。

git clone --recursive git://git.bro.org/bro

切換到項目目錄

cd bro

運行Bro的配置(這個過程應該不到一分鐘就能完成)。

./configure
make

在運行時,你會在大多數輸出行的開頭看到完成百分比。

完成后,安裝Bro(這也應該用不到一分鐘的時間)。

sudo make install

Bro將被安裝在/usr/local/bro目錄中。

現在我們需要將/usr/local/bro目錄添加到$PATH中。要確保它在全局可用,最好的方法是在/etc/profile.d目錄下指定文件中的路徑。我們將該文件稱為3rd-party.sh。

export PATH=$PATH:/usr/local/bro/bin

現在,我們已經安裝了Bro,接下來我們還需要對它進行一些配置更改才能正常運行。

配置Bro

這里我們需要對一些Bro的配置文件進行修改。這些文件都位于/usr/local/bro/etc目錄中,主要包含以下三個文件:

node.cfg,用于配置要監視的節點。

networks.cfg,包含節點本地的CIDR表示法網絡列表。

broctl.cfg,郵件,日志記錄和其他設置的全局BroControl配置文件。

讓我們看看每個文件中需要修改的地方。

配置要監控的節點

要配置Bro的監視節點,我們需要修改node.cfg文件。

開箱即用,Bro被配置為在獨立模式下運行。因為這是獨立安裝的,所以你不需要修改此文件,但最好是檢查下其中的值是否正確。

打開文件進行編輯。

sudo nano /usr/local/bro/etc/node.cfg

在bro部分,我們找到interface參數。這里的默認值為eth0,這應該與你的Ubuntu 16.04服務器的公共接口相匹配。如果不一致的話,你就要進行修改。

/usr/local/bro/etc/node.cfg

[bro]
type=standalone
host=localhost
interface=eth0

完成后保存并關閉文件。接下來,我們將配置該節點所屬的專用網絡。

你可以在networks.cfg文件中,配置節點所屬的IP網絡(即你希望監視的服務器接口的IP網絡)。

我們打開該文件。

sudo nano /usr/local/bro/etc/networks.cfg

默認情況下,該文件附帶三個專用IP地址塊示例。

/usr/local/bro/etc/networks.cfg
# List of local networks in CIDR notation, optionally followed by a
# descriptive tag.
# For example, "10.0.0.0/8" or "fe80::/64" are valid prefixes.

10.0.0.0/8          Private IP space
172.16.0.0/12       Private IP space
192.168.0.0/16      Private IP space

刪除現有的三個條目,然后添加我們自己的條目。你可以通過ip addr show命令來檢查服務器接口的網絡地址。你的networks.cfg文件最終應該看起來像下面這樣:

示例 /usr/local/bro/etc/networks.cfg

192.168.1.0/24          Public IP space
172.16.100.0/24         Private IP space

完成編輯后保存并關閉文件。接下來,我們將配置郵件和日志記錄設置。

使用BroControl管理Bro

BroControl用于管理Bro的安裝 - 啟動和停止服務,部署Bro以及執行其他管理任務。它既是命令行工具又是一個交互式的shell。

如果使用sudo /usr/local/bro/bin/broctl調用broctl,它將啟動一個交互式shell:

Welcome to BroControl 1.5-21

Type "help" for help.

[BroControl] >

你也可以使用exit命令退出交互式shell。

在shell中,你可以運行任何有效的Bro命令。你也可以直接從命令行運行相同的命令,而無需調用shell。在命令行運行命令的一大優勢就是,允許你將broctl命令的輸出通過管道,傳輸到標準Linux命令中。在接下來的部分,我們都將在命令行中調用broctl命令。

首先,我們使用broctl deploy啟動Bro。

sudo /usr/local/bro/bin/broctl deploy

將Bro日志轉換為JSON

默認情況下,Bro日志是TSV(制表符分隔值)文件! 但對于ElasticSearch而言,使用JSON文件可以更高效地運行。

我們只需在/usr/share/bro/share/site/bro.local文件的末尾添加以下內容即可:

@load tuning/json-logs
redef LogAscii::json_timestamps = JSON::TS_ISO8601;
redef LogAscii::use_json = T;

接著,我們重啟Bro。現在,我們所有的日志文件都應該已經轉換為了JSON格式。

sudo /usr/local/bro/bin/broctl restart

Filebeat

首先,我們將原始的wazuh filebeat配置移動到一個新創建的目錄conf.d。你只需復制以下命令即可:

cd /etc/filebeat
mkdir conf.d
mv filebeat.yml conf.d/
cat << EOF > filebeat.yml
filebeat:
  config_dir: /etc/filebeat/conf.d
output:
 logstash:
   # The Logstash hosts
   hosts: ["127.0.0.1:5000"]
EOF

然后,在/etc/filebeat/conf.d/filebeat_bro.yml中創建我們的bro filebeat配置:

filebeat:
 prospectors:
  - input_type: log
    paths:
     - "/usr/local/bro/spool/bro/conn.log"
    document_type: json
    json.message_key: log
    json.keys_under_root: true
    json.overwrite_keys: true

  - input_type: log
    paths:
     - "/usr/local/bro/spool/bro/dns.log"
    document_type: json
    json.message_key: log
    json.keys_under_root: true
    json.overwrite_keys: true

  - input_type: log
    paths:
     - "/usr/local/bro/spool/bro/http.log"
    document_type: json
    json.message_key: log
    json.keys_under_root: true
    json.overwrite_keys: true

  - input_type: log
    paths:
     - "/usr/local/bro/spool/bro/intel.log"
    document_type: json
    json.message_key: log
    json.keys_under_root: true
    json.overwrite_keys: true

# copy inputs to add additional bro logs as needed

output:
 logstash:
   # The Logstash hosts
   hosts: ["127.0.0.1:5001"]

Logstash

我們的Logstash配置/etc/logstash/conf.d/bro.conf:

input {
    beats {
        port => 5001
        codec => "json_lines"
    }
}

filter {

  #Let's get rid of those header lines; they begin with a hash
  if [message] =~ /^#/ {
    drop { }
  }

  #Now, using the csv filter, we can define the Bro log fields
  if [type] == "bro-conn_log" {
    csv {
      columns => ["ts","uid","id.orig_h","id.orig_p","id.resp_h","id.resp_p","proto","service","duration","orig_bytes","resp_bytes","conn_state","local_orig","missed_bytes","history","orig_pkts","orig_ip_bytes","resp_pkts","resp_ip_bytes","tunnel_parents"]

      #If you use a custom delimiter, change the following value in between the quotes to your delimiter. Otherwise, insert a literal <tab> in between the two quotes on your logstash system, use a text editor like nano that doesn't convert tabs to spaces.
      separator => "	"
    }

    #Let's convert our timestamp into the 'ts' field, so we can use Kibana features natively
    date {
      match => [ "ts", "UNIX" ]
    }

    # add geoip attributes
    geoip {
      source => "id.orig_h"
      target => "orig_geoip"
    }
    geoip {
      source => "id.resp_h"
      target => "resp_geoip"
    }

    #The following makes use of the translate filter (logstash contrib) to convert conn_state into human text. Saves having to look up values for packet introspection
    translate {
      field => "conn_state"

      destination => "conn_state_full"

      dictionary => [
                    "S0", "Connection attempt seen, no reply",
                    "S1", "Connection established, not terminated",
                    "S2", "Connection established and close attempt by originator seen (but no reply from responder)",
                    "S3", "Connection established and close attempt by responder seen (but no reply from originator)",
                    "SF", "Normal SYN/FIN completion",
                    "REJ", "Connection attempt rejected",
                    "RSTO", "Connection established, originator aborted (sent a RST)",
                    "RSTR", "Established, responder aborted",
                    "RSTOS0", "Originator sent a SYN followed by a RST, we never saw a SYN-ACK from the responder",
                    "RSTRH", "Responder sent a SYN ACK followed by a RST, we never saw a SYN from the (purported) originator",
                    "SH", "Originator sent a SYN followed by a FIN, we never saw a SYN ACK from the responder (hence the connection was 'half' open)",
        "SHR", "Responder sent a SYN ACK followed by a FIN, we never saw a SYN from the originator",
                    "OTH", "No SYN seen, just midstream traffic (a 'partial connection' that was not later closed)"
                    ]
    }

    mutate {
      convert => [ "id.orig_p", "integer" ]
      convert => [ "id.resp_p", "integer" ]
      convert => [ "orig_bytes", "integer" ]
      convert => [ "duration", "float" ]
      convert => [ "resp_bytes", "integer" ]
      convert => [ "missed_bytes", "integer" ]
      convert => [ "orig_pkts", "integer" ]
      convert => [ "orig_ip_bytes", "integer" ]
      convert => [ "resp_pkts", "integer" ]
      convert => [ "resp_ip_bytes", "integer" ]
      rename =>  [ "id.orig_h", "id_orig_host" ]
      rename =>  [ "id.orig_p", "id_orig_port" ]
      rename =>  [ "id.resp_h", "id_resp_host" ]
      rename =>  [ "id.resp_p", "id_resp_port" ]
    }
  }
}

output {
  #stdout { codec => rubydebug }
  elasticsearch {  
        hosts => ["localhost:9200"]
        index => "bro-conn-%{+YYYY.MM.dd}"
        document_type => "bro"
        template => "/etc/logstash/bro.json"
        template_name => "bro"
        template_overwrite => true
  }
}

我們的bro.json文件你可以在這里獲取到:https://gist.github.com/netscylla/27ac9e1472d89dffa5a8267a6af9c9be

最后,我們重啟logstash。

systemctl restart logstash

并檢查你的Kibana儀表板:

首先,我們轉到管理面板,然后單擊索引模式(index patterns),這將告訴kibana你的bro文件的位置,如下所示:

怎么通過Kibana、Wazuh和Bro IDS提高中小企業的威脅檢測能力

然后回到discover,你應該能夠看到你的bro日志!

怎么通過Kibana、Wazuh和Bro IDS提高中小企業的威脅檢測能力

提取 - Bro和威脅情報

首先,我們在這里進行注冊以獲取免費威脅情報源。

選擇你的Container,feeds 和 sensor(見以下的feeds截圖)。

怎么通過Kibana、Wazuh和Bro IDS提高中小企業的威脅檢測能力

你將看到一個api code,我們將其復制到剪貼板或記事本中。

遵循critical-stack-intel二進制文件的客戶端安裝說明進行安裝:

然后使用api code(需要聯網)將二進制文件連接到feed,此時它應該下載已訂閱的威脅情報源。

critical-stack-intel api [api_code_here]

并重啟bro

sudo /usr/local/bro/bin/broctl restart

使用以下命令列出feeds:

critical-stack-intel list

關于怎么通過Kibana、Wazuh和Bro IDS提高中小企業的威脅檢測能力就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

孝昌县| 阿巴嘎旗| 原阳县| 盱眙县| 杨浦区| 平果县| 桐柏县| 淮北市| 伊金霍洛旗| 宿迁市| 策勒县| 江安县| 巴彦淖尔市| 五台县| 平原县| 澳门| 二连浩特市| 皋兰县| 新邵县| 长子县| 普宁市| 天水市| 黄骅市| 洪泽县| 昌黎县| 肃南| 神木县| 会泽县| 香格里拉县| 砚山县| 东乡族自治县| 黎城县| 鹤庆县| 贵溪市| 涿州市| 沙田区| 海阳市| 科尔| 濮阳县| 古浪县| 安溪县|