DevOps

Wazuh

우제혁 2023. 12. 18. 23:28

Wazuh

wazuh란

https://velog.io/@jhly/What-is-Wazuh-2ktn64p8

  • XDR 및 SIEM 기능을 통합하는 무료 오픈 소스 보안 플랫폼
  • 온프레미스, 가상화, 컨테이너화된 클라우드 기반 환경에서 시스템 보호 가능
  • Wazuh는 세 개의 중앙 플랫폼 구성 요소와 단일 범용 에이전트 구성

Wazuh는 총 3가지 서버 사이드 구성요소와 클라이언트 사이드의 에이전트로 구성되어진다.

  • Wazuh 인덱서(Indexer)확장성이 뛰어난 전체 텍스트 검색 및 분석 엔진이며, Wazuh 서버에서 생성된 알림을 색인하고 저장한다.
  • Wazuh 서버(Server)에이전트로부터 받은 데이터를 분석하여, 디코더와 규칙을 통해 데이터를 처리하여 보안 이벤트를 생성하며, 또한 에이전트를 관리, 원격 구성/업그레이드 하는데 사용한다.
  • Wazuh 대시보드(Dashboard)데이터 시각화 및 분석을 위한 웹 사용자 인터페이스이며, Wazuh 구성을 관리하고 상태를 모니터링 하는데 사용한다.(보안이벤트, 컴플라이언스, CVE, 파일 무결성 모니터링 등 기본 제공 대시보드 포함)
  • Wazuh 에이전트(Agent)엔드포인트에 설치되며, 위협 예방, 탐지 및 대응 기능을 제공한다.(Linux, Windows, macOS, Solaris, AIX, HP-UX 지원)

기본 파일 설치 및 가이드

https://documentation.wazuh.com/current/deployment-options/deploying-with-kubernetes/kubernetes-deployment.html

https://github.com/wazuh/wazuh-kubernetes/blob/master/instructions.md

$ git clone [https://github.com/wazuh/wazuh-kubernetes.git](https://github.com/wazuh/wazuh-kubernetes.git)
$ cd wazuh-kubernetes

SSL certificates 설정

다음 경로에 있는 .sh를 실행해 pem 파일들을 생성시킨다.

wazuh/certs/indexer_cluster/generate_certs.sh
wazuh/certs/dashboard_http/generate_certs.sh

코드수정 & 환경 설정

해당 git clone 한 코드에는 몇가지 수정사항이 필요하다

코드 수정

wazuh image tag 변경

github에 나와있는 코드에는 image tag가 잘못되어있어 dockerhub에 존제하는 tag로 변경해준다.

image: ‘wazuh/wazuh-manager’ → image: 'wazuh/wazuh-manager:4.6.0’

image: 'wazuh/wazuh-dashboard → image: 'wazuh/wazuh-dashboard:4.6.0'

버전으로 오류나는 모습

 

internal 오류

해당 라인값에는 true 아님 false가 와야하며 지워도 무방하다

internet-facing 수정

https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/network-load-balancing.html

로드밸런스의 체계가 Internal 여서 내부 ip 로 찍히고 있는 문제가 발생할 수 있으므로 코드 내부에서 svc yaml 파일들(wazuh manager 등 모든 svc)에 다음과 같이 'internet-facing' 옵션을 추가한다.

annotations:
    service.beta.kubernetes.io/aws-load-balancer-scheme: 'internet-facing'

다음과 같이 로드 밸런스에 체계가 internet-facing이 되어있으면 성공이다.

환경 설정

ebs csi driver를 설치

https://documentation.wazuh.com/current/deployment-options/deploying-with-kubernetes/kubernetes-deployment.html

 

 

ebs 관련 역할을 생성

https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/csi-iam-role.html

eksctl create iamserviceaccount \
    --name ebs-csi-controller-sa \
    --namespace kube-system \
    --cluster eks-JaeHyuk \
    --role-name AmazonEKS_EBS_CSI_DriverRole \
    --role-only \
    --attach-policy-arn arn:aws:iam::aws:policy/service-role/AmazonEBSCSIDriverPolicy \
    --approve
eksctl create iamserviceaccount  --name ebs-csi-controller-sa   --namespace kube-system   --cluster eks-JaeHyuk    --role-name AmazonEKS_EBS_CSI_DriverRole    --role-only   --attach-policy-arn arn:aws:iam::aws:policy/service-role/AmazonEBSCSIDriverPolicy     --approve

드라이버를 설치

https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/managing-ebs-csi.html

aws eks describe-addon-versions --addon-name aws-ebs-csi-driver

eksctl create addon --name aws-ebs-csi-driver --cluster eks-JaeHyuk --service-account-role-arn arn:aws:iam::871065065486:role/AmazonEKS_EBS_CSI_DriverRole --force

서브넷 tag 수정(로드 밸런스 미 생성 오류)

https://repost.aws/ko/knowledge-center/eks-load-balancer-controller-subnets

서브넷 오류 모습

 

vpc → 서브넷으로간뒤 각 서브넷 태그를 다음과 같이 추가해줬다.

kubernetes.io/role/internal-elb   1

다음과 같이 해결되는것을 확인 할 수 있다.

서브넷 태그 설정 전
서브넷 태그 설정 후

 

 

wazuh 서버에 접속하는 방법

kubectl exec -it wazuh-manager-master-0 -n wazuh --/bin/bash

 

최종 wazuh-kubernetes.zip 수정 파일

wazuh-kubernetes.zip
0.88MB

eks에 배포

kubectl apply -k envs/eks/

💡 Trouble Shooting - 잘못된 리다이렉트 이슈

로그인을 진행하면 /app/wz-home으로 이동되며 application을 찾을 수 없다는 오류가 나오지만

 

 

/app/wazuh로 이동해보면 문제없이 화면이 보이는것을 확인 할 수 있다.\

wazuh agent 설치

wazuh 서버를 설치했다면 모니터링하고 싶은 서버에 agent를 설치해줘야한다.

agent 설치 방법

주의 처음 ip등록할떄는 1515 도메인으로 연결해준다음에 vi /var/ossec/etc/ossec.conf 명령어로 1514의 도메인으로 수정해주고 sudo systemctl restart wazuh-agent 이걸로 에이전트를 다시 실행해줘야한다.

dashboard       LoadBalancer   172.20.121.201   k8s-wazuh-dashboar-5cd5eb3ced-47cf773c8bb6c733.elb.us-east-2.amazonaws.com   443:31899/TCP                    6d22h
indexer         LoadBalancer   172.20.39.187    k8s-wazuh-indexer-05e7c1c667-6c134e11715d97fb.elb.us-east-2.amazonaws.com    9200:31168/TCP                   6d22h
wazuh           LoadBalancer   172.20.37.46     k8s-wazuh-wazuh-3e0721f42c-bef9798678a81a35.elb.us-east-2.amazonaws.com      1515:30362/TCP,55000:31300/TCP   6d22h
wazuh-cluster   ClusterIP      None             <none>                                                                       1516/TCP                         6d22h
wazuh-indexer   ClusterIP      None             <none>                                                                       9300/TCP                         6d22h
wazuh-workers   LoadBalancer   172.20.93.8      k8s-wazuh-wazuhwor-eb59a6b113-6e4884d26af16cba.elb.us-east-2.amazonaws.com   1514:31816/TCP                   6d22h
  1. 설치 명령어 실행

curl -o wazuh-agent-4.6.0-1.x86_64.rpm https://packages.wazuh.com/4.x/yum/wazuh-agent-4.6.0-1.x86_64.rpm && sudo WAZUH_MANAGER='k8s-wazuh-wazuh-3e0721f42c-bef9798678a81a35.elb.us-east-2.amazonaws.com' WAZUH_REGISTRATION_PASSWORD='password' WAZUH_AGENT_GROUP='default' WAZUH_AGENT_NAME='trivy-agent' rpm -ihv wazuh-agent-4.6.0-1.x86_64.rpm

curl -o wazuh-agent-4.6.0-1.x86_64.rpm https://packages.wazuh.com/4.x/yum/wazuh-agent-4.6.0-1.x86_64.rpm && sudo WAZUH_MANAGER='k8s-wazuh-wazuh-3e0721f42c-bef9798678a81a35.elb.us-east-2.amazonaws.com' WAZUH_REGISTRATION_PASSWORD='password' WAZUH_AGENT_GROUP='default' WAZUH_AGENT_NAME='trivy-agent' rpm -ihv wazuh-agent-4.6.0-1.x86_64.rpm
  • [k8s-wazuh-wazuh-3e0721f42c-bef9798678a81a35.elb.us-east-2.amazonaws.com](http://k8s-wazuh-wazuh-3e0721f42c-bef9798678a81a35.elb.us-east-2.amazonaws.com) : 1515 서비스의 도메인
  • password : \wazuh\secrets\wazuh-authd-pass-secret.yaml 에 password로 password가 지정되어있음
  • default : agent group을 설정
  • trivy-agent : agent이름을 설정
  1. wazuh-agent 실행
sudo systemctl daemon-reload
sudo systemctl enable wazuh-agent
sudo systemctl start wazuh-agent
  1. 접속 도메인 변경
  • agent 설정파일 수정
vi /var/ossec/etc/ossec.conf
  • 1514포트인 도메인으로 변경
dashboard       LoadBalancer   172.20.121.201   k8s-wazuh-dashboar-5cd5eb3ced-47cf773c8bb6c733.elb.us-east-2.amazonaws.com   443:31899/TCP                    6d22h
indexer         LoadBalancer   172.20.39.187    k8s-wazuh-indexer-05e7c1c667-6c134e11715d97fb.elb.us-east-2.amazonaws.com    9200:31168/TCP                   6d22h
wazuh           LoadBalancer   172.20.37.46     k8s-wazuh-wazuh-3e0721f42c-bef9798678a81a35.elb.us-east-2.amazonaws.com      1515:30362/TCP,55000:31300/TCP   6d22h
wazuh-cluster   ClusterIP      None             <none>                                                                       1516/TCP                         6d22h
wazuh-indexer   ClusterIP      None             <none>                                                                       9300/TCP                         6d22h
wazuh-workers   LoadBalancer   172.20.93.8      k8s-wazuh-wazuhwor-eb59a6b113-6e4884d26af16cba.elb.us-east-2.amazonaws.com   1514:31816/TCP                   6d22h
<client>
  <server>
    <address>k8s-wazuh-wazuhwor-eb59a6b113-6e4884d26af16cba.elb.us-east-2.amazonaws.com</address>
  </server>
</client>
  1. agent 재시작
sudo systemctl restart wazuh-agent
  1. agent 연결 확인

wazuh의 기능

특정 관제 파일 추가

https://documentation.wazuh.com/current/user-manual/capabilities/log-data-collection/monitoring-log-files.html

vi /var/ossec/etc/ossec.conf

  <localfile>
    <log_format>json</log_format>
    <location>/var/log/trivy/*</location>
  </localfile>

/home/ec2-user/test

https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/how-to-configure-fim.html

이때 관제 대상 파일의 권한을 수정해줘야 할 수 도 있다.

파일 검색

agent가 설치되면 다음과 같이 파일을 검색할 수 도 있으며 파일의 내용은 확인 못하지만 메타 데이터를 확인 할 수 있다.

Wazuh 보안 정보 및 이벤트 관리(SIEM)

https://wazuh.com/platform/siem/