Simple is IT, 누구나 보고 누구나 깨닫는 IT

침입 차단/탐지 시스템(IPS/IDS) Snort 대시보드 구성 본문

Simple is IT/Security

침입 차단/탐지 시스템(IPS/IDS) Snort 대시보드 구성

currenjin 2020. 4. 29. 09:45

Snort

네트워크 침입 차단/탐지 시스템(NIPS, NIDS, Network Instrusion Prevention/Detection System)

-> 프로토콜을 분석하며 내용 검색 그리고 매칭을 수행한다.


Sniffer, Packet Logger, 침입 탐지주요 모드


ELK (Elasticsearch, Logstash, Kibana)

snort (Rule)

-> syslog (Log 생성)

-> elk 파일 (저장)

-> filebeat (전달)

-> logstash (변환)

-> elasticsearch

-> kibana

Dashboard를 위한 Package 설치

Hardware

: Core = 2, RAM = 3GB 필요

방화벽 끄기

# systemctl stop firewalld

# systemctl disable firewalld

# setenforce 0

ELK 설치

1) ElasticSearch

# rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

# vi /etc/yum.repos.d/elasticsearch.repo

[elasticsearch-6.x]

name=Elasticsearch repository for 6.x packages

baseurl=https://artifacts.elastic.co/packages/6.x/yum

gpgcheck=1

gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch

enabled=1

autorefresh=1

type=rpm-md

# yum install elasticsearch -y

2) Logstash

# yum install logstash -y

3) Kibana

# yum install kibana -y

4) Filebeat 설치

# yum install filebeat -y

5) JDK 설치

# yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel

환경변수 설정

# vi /etc/profile

JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk/

export JAVA_HOME

PATH=$PATH:$JAVA_HOME/bin

export PATH

# source /etc/profile

!! 설치 완료 후 VMware에서 스냅샷 생성

Dashboard(ELK) Settings

Logstash 설정

1) JAVA 메모리 설정

# vi /etc/logstash/jvm.options

수정 전

-Xms1g

-Xmx1g

수정 후

-Xms2g

-Xmx2g 퍄

2) Logstash DNS 필터 업데이트

# /usr/share/logstash/bin/logstash-plugin install logstash-filter-dns

3) 설정 파일 다운 및 적용

# mkdir /elk

# cd /elk

# wget synesis_lite_snort%2dmaster.zip (zip파일 찾아야함)

# unzip synesis_lite_snort-master.zip

# mv /elk/synesis_lite_snort-master/logstash/synlite_snort /etc/logstash/

# cat /elk/synesis_lite_snort-master/profile.d/synlite_snort.sh >> /etc/profile

# rm -rf /etc/logstash/conf.d/*

4) Logstash 설정

# vi /etc/logstash/pipelines.yml

- pipeline.id: synlite_snort

path.config: "/etc/logstash/synlite_snort/conf.d/*.conf"

# cp /etc/logstash/logstash-sample.conf /etc/logstash/logstash.conf

filebeat 설정

# vi /etc/filebeat/filebeat.yml

filebeat.inputs:

- type: log

enabled: true

paths:

- /var/log/snort/elk

fields:

event.type: snort

output.elasticsearch: 주석처리(hosts도 당연히)

output.logstash:

hosts: ["127.0.0.1:5044"]

elasticsearch 설정

# vi /etc/elasticsearch/elasticsearch.yml

network.host: 0.0.0.0

kibana 설정

# vi /etc/kibana/kibana.yml

변경 전

#server.host: "localhost"

변경 후

server.host: "0.0.0.0"

snort 설정(Log file)

# vi /etc/snort/snort.conf 파일의 다음 내용 변경 주석 제거

511 whitelist /etc/snort/rules/white_list.rules, \

512 blacklist /etc/snort/rules/black_list.rules

528 output alert_syslog: LOG_AUTH LOG_ALERT

# touch /etc/snort/rules/white_list.rules

# touch /etc/snort/rules/black_list.rules

rsyslog 설정(Log file)

# vi /etc/rsyslog.conf 다음 라인의 주석 제거

15 $ModLoad imudp

16 $UDPServerRun 514

다음 내용 추가

auth.alert /var/log/snort/elk

# systemctl restart rsyslog

!! 스노트 실행(snort -c /etc/snort/snort.conf -i ens37) 후 /var/log/snort/elk 파일 확인

각종 서비스 실행

# systemctl restart elasticsearch

# systemctl restart kibana

# systemctl restart logstash

# /usr/share/filebeat/bin/filebeat -e -c /etc/filebeat/filebeat.yml

# snort -c /etc/snort/snort.conf -i ens33

(오류 날 시 # systemctl daemon-reload, Unit을 찾지 못한다면 잘못된 설정이니 다시 설정해야함)

netstat -anlp | grep 5601

netstat -anlp | grep 9200

netstat -anlp | grep 5044

tail -f /var/log/logstash/logstash-plain.log

마무리 설정

1) 키바나 접속

[Snort_IP]:5601

왼쪽에 management 클릭

2) 대시보드 추가

[Snort_IP]:5601

왼쪽에 management 클릭

Saved Objects 오른쪽에 Import 버튼 클릭 -> 설정파일 내려받아 압축 해제 후 설정파일 import

-- 잘 되지 않을 때

rm -rf /var/lib/elasticsearch/*

systemctl restart elasticsearch


Comments