Logstash는 형식이나 복잡성과 관계 없이 데이터를 동적으로 수집, 전환, 전송한다.
grok을 이용해 비구조적 데이터에서 구조를 도출하여 IP 주소에서 위치 정보 좌표를 해독하고, 민감한 필드를 익명화하거나 제외시키며, 전반적인 처리를 손쉽게 해준다.
grok로그를 파싱하거나 가공이 필요할 때 Logstash를 설치하고, Filebeat → Logstash → Elasticsearch 구조로 구성할 수 있다.
┌──(kali㉿kali)-[~]
└─$ sudo apt update
Hit:1 https://artifacts.elastic.co/packages/8.x/apt stable InRelease
Hit:2 http://http.kali.org/kali kali-rolling InRelease
540 packages can be upgraded. Run 'apt list --upgradable' to see them.
┌──(kali㉿kali)-[~]
└─$ sudo apt install logstash -y
Installing:
logstash
┌──(kali㉿kali)-[~]
└─$ sudo vi /etc/logstash/conf.d/logstash.conf

나는 vi가 편해서 vi로 .. 위와 같이 입력해주었다.
Filebeat → Logstash → Elasticsearch 로 로그 전달하는 Logstash 설정 파일을 작성해주었다.
port => 5044 : Filebeat가 Logstash로 로그를 전달할 포트를 지정해주는 것filter : 필터 부분에는 필요할 시 파싱, 변환 등의 필터를 사용자가 추가해줄 수 있다ssl_certificate_verification 을 false로 설정한 것은 실습/테스트 환경이기 때문이다.user, password 는 elastic 계정 정보로 입력하면 된다.ssl_certificate_verification은 실습용 옵션이므로, 운영 환경에서는 인증서 설정을 권장한다고 한다.┌──(kali㉿kali)-[~]
└─$ sudo vi /etc/filebeat/filebeat.yml
Filebeat에서 Logstash로 로그 전송을 설정하는 명령어는 위와 같다.
아래와 같이 output 부분을 수정해준다.

그리고 이전 포스트를 보면 kibana와 filebeat를 설치하는 과정에서 설정해주었던 부분인 output.elasticsearch 가 있는데 이부분을 주석처리 해준다.

이제 Logstash를 시작해주고, Filebeat를 재시작해주면 된다.
┌──(kali㉿kali)-[~]
└─$ sudo systemctl start logstash
┌──(kali㉿kali)-[~]
└─$ sudo systemctl enable logstash
Created symlink '/etc/systemd/system/multi-user.target.wants/logstash.service' → '/usr/lib/systemd/system/logstash.service'.
┌──(kali㉿kali)-[~]
└─$ sudo systemctl restart filebeat