歡迎來到 黑吧安全網 聚焦網絡安全前沿資訊,精華內容,交流技術心得!

收集各類安全設備、Nginx日志實現日志統一管理及告警

來源:本站整理 作者:hackerbaba 時間:2018-07-15 TAG: 我要投稿

一、日志收集及告警項目背景
近來安全測試項目較少,想著把安全設備、nginx日志收集起來并告警, 話不多說,直接說重點,搭建背景: 
1. 日志源:安全設備日志(Imperva  WAF、綠盟WAF、paloalto防火墻)、nginx日志等;
2. 日志分析開源軟件:ELK,告警插件:Sentinl 或elastalert,告警方式:釘釘和郵件;
3. 安全設備日志->logstash->es,nginx日志由于其他部門已有一份(flume->kafka)我們通過kafka->logstash->es再輸出一份,其中logstash的正則過濾規則需要配置正確,不然比較消耗性能,建議寫之前使用grokdebug先測試好再放入配置文件;
4. 搭建系統:centos 7 , JDK 1.8, Python 2.7
5. ELK統一版本為5.5.2
由于es和kibana的安裝都比較簡單,就不在下文中說明安裝及配置方法了。相關軟件的下載鏈接如下:
Es:  https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.2.tar.gz
Kibana: https://artifacts.elastic.co/downloads/kibana/kibana-5.5.2-linux-x86_64.tar.gz
Logstash: https://artifacts.elastic.co/downloads/logstash/logstash-5.5.2.tar.gz
測試鏈接Grokdebug:http://grokdebug.herokuapp.com
二、安全設備日志收集
2.1  Imperva WAF配置
策略->操作集->新增日志告警規則


我這邊沒有用設備自身的一些日志規則,而是根據手冊自定義了一些需要的日志字段,可在自定義策略的消息填入如下字段:
StartTime=$!{Alert.createTime}AlarmID=$!{Alert.dn} EventID=$!{Event.dn}
    AggregationInfo=$!{Alert.aggregationInfo.occurrences}Alert_level=$!{Alert.severity}
     RuleName=$!{Alert.alertMetadata.alertName} Category=$!{Alert.alertType}
     Alert_description=$!{Alert.description}EventType=$!{Event.eventType}
    PolicyName=$!{Rule.parent.displayName}SrcIP=$!{Event.sourceInfo.sourceIp}
    SrcPort=$!{Event.sourceInfo.sourcePort}Proto=$!{Event.sourceInfo.ipProtocol}
    DstIP=$!{Event.destInfo.serverIp}DstPort=$!{Event.destInfo.serverPort}
    WebMethod=$!{Event.struct.httpRequest.url.method}Domain=$!{Alert.serverGroupName}
    URL=$!{Event.struct.httpRequest.url.path}ResponseCode=$!{Event.struct.httpResponse.responseCode}Alert_key=$!{Event.struct.httpRequest.url.queryString}Action=$!{Alert.immediateAction}
    ResponseTime=$!{Event.struct.responseTime}ResponseSize=$!{Event.struct.responseSize}
    Headers_value=$!{Event.struct.httpRequest.headers.value}Parameters_value=$!{Event.struct.httpRequest.parameters.value}
參數說明:告警開始時間、告警ID、事件ID、事情數量、告警級別…. HTTP返回碼、觸發告警字符串、響應動作、響應時間、響應大小、http包頭的值,中間省略的部分請自行查看手冊。其實Imperva WAF的總日志字段數不少于一兩百個,單從這一點可以看出確實好于國產WAF太多。
針對Imperva WAF的logstash配置如下:
input{
       syslog{
       type => "syslog"
       port => 514
        }
    }
    filter {
    grok  {
    match =>["message","%{GREEDYDATA:StartTime} AlarmID=%{NUMBER:AlarmID}
    EventID=%{NUMBER:EventID}AggregationInfo=%{NUMBER:AggregationInfo}
    Alert_level=%{DATA:Alert_level}RuleName=%{GREEDYDATA:RuleName}
    Category=%{GREEDYDATA:Category}Alert_description=%{GREEDYDATA:Alert_description}
    EventType=%{DATA:EventType}PolicyName=%{GREEDYDATA:PolicyName} SrcIP=%{IPV4:SrcIP}
    SrcPort=%{NUMBER:SrcPort}Proto=%{DATA:Proto} DstIP=%{IPV4:DstIP}
    DstPort=%{NUMBER:DstPort}WebMethod=%{GREEDYDATA:WebMethod}
    Domain=%{DATA:Domain}URL=%{GREEDYDATA:URL}
    ResponseCode=%{GREEDYDATA:ResponseCode}Alert_key=%{GREEDYDATA:Alert_key}
    Action=%{DATA:Action}ResponseTime=%{GREEDYDATA:ResponseTime}
    ResponseSize=%{GREEDYDATA:ResponseSize}Headers_value=%{GREEDYDATA:Headers_value}Parameters_value=%{GREEDYDATA:Parameters_value}"] 
    # 實際復制粘貼可能會有點格式問題,注意參數之間空一個空格即可
      remove_field => ["message"]
    }
    geoip {
       source => "SrcIP"   #IP歸屬地解析插件
      }
    }
    output{
       elasticsearch{

[1] [2] [3] [4] [5]  下一頁

【聲明】:黑吧安全網(http://www.gkrbnd.live)登載此文出于傳遞更多信息之目的,并不代表本站贊同其觀點和對其真實性負責,僅適于網絡安全技術愛好者學習研究使用,學習中請遵循國家相關法律法規。如有問題請聯系我們,聯系郵箱[email protected],我們會在最短的時間內進行處理。
  • 最新更新
    • 相關閱讀
      • 本類熱門
        • 最近下載
        福彩原副主任