1편을 이어서, 이번에는 Wazuh와 ElasticSearch 간의 데이터 연동을 알아보자!
앞편에서 설명했듯이, Wazuh는 기본적으로 Elasticsearch + Kibana와 연동을 기본으로 한다.
2. Wazuh Server ↔ Elastic Server(정확히는 ElasticSearch와 연동)
결론부터 말하면, Wazuh Server에 설치되어 있는 Filebeat를 통해 Elastic Server로 데이터를 전달한다.
위 그림과 같이 Wazuh Server에서 Filebeat가 실행되고 있음을 알 수 있다.
/etc/filebeat/filebeat.yml 파일을 참조하여 시행되며, 해당 파일에는 Filebeat로 전달할 데이터와 ES 정보가 담겨있다.
위 설정을 보면 알 수 있듯이, Filebeat에서는 alerts 로그만 ES로 전달하며,
해당 alerts 로그는 Wazuh Server의 /var/ossec/logs에 위치에 있다.
- 해당 위치를 보면 alerts 외 firewall, intergration, active-response 로그가 있으나 모두 공란인 상태이다.
아마 Wazch Agent의 ossec.conf에서 대부분의 기능이 Disable 되어 있기 때문에 로그가 발생안하는 것으로 보인다.
실제로 filebeat 프로세스 기준으로 lsof를 해보면 alerts.json을 참조하고 있음을 알 수 있다.
즉, Wazuh Server는 filebeat.yml을 참조하여 alerts.json을 파일을 ElasticSearch 전달한다.
- 일반적으로 filebeat는 데이터만 수집하며, 이를 logstash에 전달하여 데이터를 정제한 다음에 ES로 전달하나,
굳이 데이터 정제할 필요가 없거나 정형화 된 데이터라면 filebeat > ES로 바로 Index 생성이 가능하다.
정상적으로 ES에 데이터가 전달되면, Kibana를 통해 데이터를 시각적으로 볼 수 있다.
그리고 Kibana의 데이터는 Wazuh Server의 alerts.json과 동일함을 알 수 있다.
2. Elastic Server(정확히는 Kibana) ↔ Wazuh Server
1편에서 작성한 것처럼 ES(Kibana) + Wazuh가 기본 구성이다.
그렇기에 아래 그림과 같이 Kibana 웹페이지를 접속하면 좌측에 WAZUH 카테고리가 별도로 있다.
Kibana에서 Wazuh API를 연동하기 위해서는 기본적으로 Wazuh Server의 IP/Port + 접속 계정이 있어야 한다.
이는 ES 서버의 /usr/share/kibana/data/wazuh/config/wazuh.yml에 저장되어 있다.
그리고 Wazuh API 연동을 위한 정보는 아래와 같이 기본적으로 저장되어 있다.
여기에서 localhost는 주석처리 하면 된다.(ES 서버에 Wazuh가 설치된건 아니니깐)
- 근데 여기에서 큰 함정이 있다. Wazuh 홈페이지에 나와있는 가이드와 실제 Wazuh API 연동 계정이 다르다.
- 처음에 여기서 API 연동이 안되길래, 엄청나게 구글링을 했다.. 아래 기본계정으로 저장한 다음에 서비스 재기동하면 된다.
ES ↔ Wazuh API 연동이 잘 되면, 위에 나와있는것과 같이 TCP 55000으로 채널이 생긴다.
하지만 테스트를 해보니, 항시 열려있는것 아닌거 같고 Wazuh API 들어갈 때 딱 한번 채널이 생성된다.
연동 이후, Wazuh Server의 api.log를 보면 Kibana에서 WAZUH 카테고리를 선택할 때마다 GET 요청이 있음을 알 수 있다.
이로써 Elasticsearch + Wazuh의 구성도와 연결 방법에 대해 알아보았다. ㅎㅎ 다시 한번 정리하자면(정리병..)
1. 모니터링하고자 하는 서버에 Wazuh Agent를 설치하고 2. Wazuh Agent는 TCP 1514를 통해 Wazuh Server로 데이터를 전송한다. <<< [1/2] 게시물 참고, 이후부터는 [2/2] 게시물 참고 3. Wazuh Server는 Filebeat를 통해, Elasticsearch Server로 데이터를 전달하고 4. 이를 Kibana에서 시각화하여 사용자에게 보여준다. 5. 또한, Kibana에서 TCP 55000을 통해 Wazuh Server와 API 연동을 하여 Agent 설치 현황 등의 정보를 제공한다. |
이제 대략적으로 Wazuh Agent ↔ Wazuh Server ↔ Elasticsearch Server가 어떻게 연동함을 대략적으로 알게되었다.
다음에는 그래서 Wazuh에서 어떤 기능을 제공하는지? 어떻게 커스텀할 수 있는지 하나하나 알아볼 예정이다.
Wazuh 제공해주는 기능도 많고, 오픈소스여서 커스텀이나 사용하기도 좋은 것 같다. 굿!!
'기술 이모저모 > [Ops] Devops' 카테고리의 다른 글
[Gophish] 악성메일 모의훈련 Gophish 운영 방법[2/2] (2) | 2022.05.18 |
---|---|
[Gophish] 악성메일 모의훈련 Gophish 설치 방법[1/2] (0) | 2022.05.18 |
[Wazuh] Wazuh Agent 로그 추가 수집 및 모니터링 방법 (0) | 2022.03.22 |
[Wazuh] Wazuh 이벤트 생성 원리 (0) | 2022.03.17 |
[Wazuh] Wazuh란? 구성 및 개념도[1/2] (0) | 2022.03.12 |