카테고리 없음

ELKF - PPT

highstar9413 2025. 4. 8. 09:17

1. ELKF 구축

ELKF의 IP 설정
ip 설정 확인

-> 모든 곳에 ping 확인 후 진행

ELKF 구축 전 update&upgrade 진행 - 시스템의 안정성과 보안, 호환성을 위해 진행
Java가 설치되어있지 않으므로 설치 진행
Java 설치 후 버전 확인
elasticsearch 인증키 설치 - OK 문구가 떠야 성공적으로 인증키 설치가 된 것
elasticsearch 저장소 등록
update 진행 - 새로 등록한 elastic 저장소에서 패키지 목록을 가져오기 위해 진행
elasticsearch 패키지 설치
elasticsearch.yml파일 수정
주석 제거, 이름 작성
주석 제거, 구문 작성
주석 제거
주석 제거
주석 제거, 위 23라인의 node이름 작성
데몬 실행, 활성화
http://<ELKF서버IP>:9200 접속하여 정상작동 확인
kibana 패키지 설치
kibana 환경설정 파일 수정
주석 제거
주석 제거, 구문 수정
주석 제거, ELKF서버IP작성
kibana 데몬 실행, 활성화
http://<ELKF서버IP>:5601 접속 확인, 아직 전부 설치하지 않았으므로 kibana 작동 안되는 것이 정상
logstash 패키지 설치
logstash.conf 파일 생성해서 로그 작성
위와 같이 logstash 파일 작성 - 로그 수집을 위해 작성
logstash데몬 실행, 활성화
filebeat 패키지 설치
filebeat 환경설정 파일 수정
구문 수정
구문 수정
구문 수정
138, 140 주석 처리
151, 153 주석 제거, <ELKF서버IP>입력
filebeat 모듈 실행
ELKF 데몬 순서대로 실행 - 무작위로 실행 시 데이터 흐름때문에 오류 발생 가능
http://<ELKF서버IP>:9200/_cat/indices?v 검색시 정상 절치와 작동 확인 가능
http://<ELKF서버IP>:5601로 kibana접속


2. UD_board, Rocky_board, DVWA - filebeat 설정

filebeat 연동 전 ELKF에 설치된 elasticsearch버전 확인

-> 각 서버에 ELKF서버의 elasticsearch버전과 맞는 filebeat 설치해줘야 함.

-> 버전이 안맞을 경우 생기는 문제

API 변경 문제
: Elasticsearch는 버전 업이 되면서 내부 API나 통신 프로토콜이 변경되는 경우가 있어요. 
Filebeat가 오래된 버전이면, 최신 Elasticsearch의 API를 인식 못 해서 에러가 납니다.

필드 매핑 오류
: Filebeat는 로그를 Elasticsearch에 보낼 때 기본적으로 사용하는 필드 매핑이 있어요. 
버전이 다르면 이 매핑이 충돌하거나 로그가 제대로 저장되지 않을 수 있어요.

Ingest Pipeline 호환성
: Filebeat는 자체적으로 Ingest Pipeline을 사용할 수 있는데, 
이건 Elasticsearch와 tightly coupled 되어 있어서 버전이 맞아야 제대로 작동해요.

Module 설정 차이
: 예를 들어 apache, mysql 같은 module들을 쓸 때도, 
Elasticsearch에 적절한 대시보드나 템플릿을 설치하는데 이게 버전에 따라 다를 수 있어요.

 

DVWA IP설정
DVWA IP 확인

https://www.elastic.co/downloads/past-releases/

 

Past Releases of Elastic Stack Software

Looking for a past release of Elasticsearch, Logstash, Kibana, es-hadoop, Shield, Marvel, or our language clients? You're in the right place....

www.elastic.co

 

위 elasticsearch 공식 홈페이지에서 맞는 버전 찾아서 다운로드 데비안계열은 deb 레드헷계열은 rpm으로 설치

-> filebeat설치 후 압축파일 성공적으로 압축해제 시 filebeat.yml파일이 생성됨.

모든 서버에서 /etc/filebeat/filebeat.yml 설정파일 열어서 아래와 같이 구문 수정. 

Rocky의 경우 34라인만 차이 발생. 나머지는 전부 동일

이후 과정 모두 동일

22, 28, 32-35 구문 수정
Rocky의 경우 apache2가 아닌 httpd이므로 수정. 또한 로그기록 수집되는 파일이 .log파일이 아니어서 *.log 설정시 board게시판에 로그인하는 접속 기록 등 뜨지 않음. 그러므로 *_log로 수정해줘야 *_log에 수집되는 로그기록 확인 가능
구문 수정
138, 140 주석처리
151, 153 주석제거,구문수정 ELKF서버IP 작성
filebeat 모듈 활성화
filebeat 데몬 실행, 활성화


3. ELKF - Snort 설치

update&upgrade 후 진행
snort 필수 패키지 설치
IP설정 후 enter눌러 설치 이어서 진행
snort 환경설정 파일 수정
구문 수정, ELKF서버IP
snort.conf 파일의 세팅 여부 확인
위와 같이 뜨면 정상 구동됨 확인 가능
snort 실행 시 돼지가 보인다면 성공적으로 실행된 것
추가 패키지 설치
추가 패키지 설치
snort 데몬 실행, 활성화
websnort 실행
http://<ELKF서버IP>:8080 접속
접속시 기록 확인 가능
snort 탐지 규칙 공통 요소 파일 수정
구문 수정
80번 포트가 제일 앞인지 확인 - 성능과 룰 작동 방식에 영향을 줄 수 있어서 80번 포트 우선 감지를 위해 확인
/etc/snort/rules/local.rules 파일 열어서 snort 탐지 룰 설정
snort 데몬 실행, 활성화


pfsense - snort

Services > Snort > INTRA Inteface Settings - General Settings - Enable 체크

→ Snort가 해당 인터페이스(INTRA)에서 트래픽 감시하도록 활성화

Send Alerts to System Log - rsyslog 통해 elkf로 보냄 & Enable Unified2 Logging - snort alert로그 확인 및 백업용 체크
Status > System Logs > Settings > Remote Logging Options > Enable Remote Logging -> System Events 체크 안해주면 Snort가 보낸 알림은 pfSense의 System Log (syslog) 로 들어가고, 거기서 외부로 전송되기 때문에 이 항목을 체크하지 않으면 로그가 외부로 전송되지 않음. 또한 Remote Syslog Contents에서 Everything에 체크를 하게되면 모든 로그가 다 뜨기 때문에 공격만 보기 쉽지 않음. 그래서 System Events만 선택해주면 공격감지만 가능하다.
Services > Snort > Interface Settings > DMZ Rules - custom.rules 작성
System > General Setup 시간 설정
/etc/rsyslog.d/50-snort.conf

→ pfsense IP = 172.2.2.254.

→ pfsense가 포트번호 514로 전송하는 pfsense 로그 받아서 /var/log/snort.log파일에 저장

위에서 설정해준 /var/log/snort.log 파일을 syslog가 읽을 수 있어야하므로 그룹권한 변경해줌
/etc/logstash/conf.d/logstash.conf (1)
/etc/logstash/conf.d/logstash.conf (2)
Brute Force - Python(1)
Brute Force - Python(2)
System Event Log 중에 [Brute Force]만 탐지