콘텐츠로 이동

Wazuh

platform/wazuh/는 Wazuh All-in-one 서버와 인프라 IAM을 관리한다. state key는 platform/wazuh/terraform.tfstate다. platform/network의 VPC와 서브넷 출력을 읽으며 wave1에서 적용한다.

EC2 교체 계획을 확인합니다

Wazuh EC2는 중지 상태에서 공인 IP 속성이 달라져도 교체되지 않도록 설정되어 있습니다. 그래도 plan에 must be replaced 또는 삭제가 표시되면 병합하지 말고 원인을 먼저 확인합니다.

관리하는 것 다른 루트에서 관리하는 것
Wazuh EC2와 암호화된 루트 EBS 공유 VPC와 서브넷
매니저 보안 그룹과 에이전트 보안 그룹 사용자 SSM 접속 정책
EC2 IAM 역할과 인스턴스 프로파일 사용자 AWS CLI 로그인 권한
EC2가 SSM과 통신하는 서비스 정책 후속 logging 및 lab 인프라

입력

입력 기본값 또는 용도
project_name kintoun-secops-infra
instance_type m6i.large
root_volume_size 100 GiB
permissions_boundary_arn Wazuh EC2 역할에 붙이는 권한 경계
iam_role_path_prefix /project/. 실제 역할은 그 아래 wazuh/ 경로

설치와 수명 주기

platform/wazuh/files/wazuh-install.sh가 첫 부팅에 Wazuh 4.14 계열 설치를 실행한다. 이전 전 platform/scripts/wazuh-install.sh와 바이트가 동일하다. Manager, Indexer, Dashboard, Filebeat를 확인한 뒤 /var/lib/wazuh-bootstrap/complete를 기록한다. 로그는 root만 읽는 /var/log/wazuh-bootstrap.log에 남는다.

AMI와 associate_public_ip_address 차이는 기존과 같이 ignore_changes로 제외한다. 중지 상태에서 생기는 교체와 루트 EBS 보존 기준은 중지한 EC2와 plan 변경에 있다. user_data 자체는 무시하지 않는다. 설치 스크립트 변경을 서버 운영 작업과 분리해서 검토한다. user_data_replace_on_change는 기본값 false를 사용한다.

설치 스크립트는 첫 부팅에 실행됩니다

스크립트는 /var/lib/wazuh-bootstrap/complete 표식이 있으면 재설치하지 않습니다. 기존 서버의 Wazuh 업그레이드는 Terraform state 이전과 별도의 운영 작업입니다.

IMDSv2를 강제한다. gp3 루트 EBS는 암호화하며 IOPS 3000, 처리량 125 MiB/s를 사용한다. delete_on_termination = false로 EC2 종료 후에도 루트 EBS를 보존한다. 기존 루트 볼륨의 Name 태그를 root_block_device.tags로 관리하여 import 때 태그 변경을 피한다.

wazuh_sg는 inbound 규칙 없이 outbound TCP 443만 허용한다. wazuh_sg_agent는 이 루트에서 생성과 출력만 하며 인스턴스 연결은 없다. victim agent 보안 그룹에서 오는 TCP 1514, 1515 ingress 규칙은 platform/victim이 이 보안 그룹에 붙인다. 후속 agent 연동에서는 Wazuh EC2에 wazuh_sg_agent를 연결하는 작업이 남아 있다.

출력

출력 용도
wazuh_instance_id SSM 세션 대상
ssm_port_forward_command, wazuh_dashboard_url 대시보드 접속
wazuh_ec2_arn 기존 platform의 사용자 접근 정책 대상
wazuh_role_name, wazuh_role_arn 후속 logging 루트의 서비스 정책 연결
ssm_policy_arn 후속 EC2 역할의 SSM 서비스 정책 연결
wazuh_sg_id, wazuh_sg_agent_id 매니저 및 에이전트 보안 그룹 참조

후속 logging 루트는 기존 platform/terraform.tfstate 대신 이 state를 읽는다. 소비자는 매니페스트에 depends_on: ["platform/wazuh"]를 등록한다. 첫 이전 plan의 state 참조 방식은 Platform state 이전에 있다. 운영 절차는 Wazuh 접속 및 복구를 따른다.