선수로 산다, 때론 좋은 코치로

suricata의 로그를 kibana로 모니터링하기 본문

개발 관련/elasticsearch

suricata의 로그를 kibana로 모니터링하기

godsman 2019. 8. 21. 20:33

suricata의 로그를 kibana로 모니터링하기

kibana로 모니터링하기 위해서는 데이터를 elasticsearch에 넣어야 한다.

elasticsearch에 데이터를 넣으려면 logstash나 filebeat를 이용하면 되는데, pfSense에 포함된 suricata를 이용하면 logstash나 filebeat를 이용하기 어렵다. 어려운 이유는 pfSense에 있는 suricata의 alert log를 elastic stack으로 모니터링하기를 참고하기 바란다.

suricata는 redis에 로그를 전송할 수 있다.

따라서 suricata + redis + logstash + elasticsearch + kibana 로 연결이 가능하다.

suricata 설정(suricata.yaml)

...더보기

- eve-log:
      enabled: yes
      filetype: redis 
      filename: eve.json
redis:
  server: 127.0.0.1 # server ip
  port: 6379
  mode: list
  key: suricata

redis 설치 및 설정(docker-compose.yml)

version: '2'
services:
    redis:
      image: redis:5.0.5
      container_name: docker-redis
      ports:
        - "6379:6379"
      environment:
        - ALLOW_EMPTY_PASSWORD=yes
      volumes:
        - /home/user/docker-redis/data:/data
      restart: "always"

logstash 설정(docker-compose.yml)

version: '2'
services:
  logstash:
    image: docker.elastic.co/logstash/logstash:7.3.0
    container_name: docker-logstash
    ports:
      - "9600:9600"
    environment:
      - XPACK_MONITORING_ELASTICSEARCH_HOSTS="http://172.17.31.101:9200"
    volumes:
      - /home/user/docker-logstash/pipeline/:/usr/share/logstash/pipeline/
    restart: "always"

logstash 설정(pipeline/logstash.conf)

input {
  redis {
    host => "redis_url"
    key =>"suricata"
    data_type => list
    codec => "json"
  }
}
output {
  elasticsearch {
      hosts => ["elasticsearch_url:9200"]
      index => "suricata-%{+YYYY.MM.dd}"
  }
}

elasticsearch와 kibana를 docker로 실행하려면 여기를 참고

suricata.stats 정보를 활용하면 성능 지표를 모니터링할 수 있다. 

Comments