#!/bin/bash
# 실습 #20 ① — Wazuh Manager all-in-one 설치 (Manager + Indexer + Dashboard)
# - 단일 머신에 SIEM 전체 컴포넌트 한 번에. 실습용으로 4 GB RAM 이상 권장.
# - 설치 후 wazuh-install-files.tar 에 admin 비밀번호 기록됨.
# - 약 5~10분 소요 (네트워크·디스크 속도에 따라).
set -e

echo "=== 사전 체크 ==="
TOTAL_MB=$(free -m | awk '/^Mem:/{print $2}')
if [ "$TOTAL_MB" -lt 3500 ]; then
    echo "→ 경고: RAM ${TOTAL_MB} MB. 권장 4 GB+. JVM 메모리 부족으로 indexer 가 죽을 수 있음."
fi

# 1) 기존 wazuh 컴포넌트 정리 (재실행 안전)
sudo systemctl stop wazuh-manager wazuh-indexer wazuh-dashboard 2>/dev/null || true

# 2) 설치 스크립트 다운로드
cd /tmp
if [ ! -s wazuh-install.sh ]; then
    sudo curl -fsSL -o wazuh-install.sh https://packages.wazuh.com/4.7/wazuh-install.sh
fi
sudo chmod +x wazuh-install.sh

# 3) all-in-one 설치
echo
echo "=== Wazuh all-in-one 설치 (5~10분) ==="
sudo bash wazuh-install.sh -a -i || {
    echo "→ 설치 실패. 로그: /var/log/wazuh-install.log"
    sudo tail -50 /var/log/wazuh-install.log
    exit 1
}

# 4) 비밀번호 추출
echo
echo "=== 관리자 비밀번호 ==="
if [ -s /tmp/wazuh-install-files.tar ]; then
    sudo tar -axf /tmp/wazuh-install-files.tar wazuh-install-files/wazuh-passwords.txt -O | grep -E "username|password" | head -20
elif [ -s wazuh-install-files.tar ]; then
    sudo tar -axf wazuh-install-files.tar wazuh-install-files/wazuh-passwords.txt -O | grep -E "username|password" | head -20
fi

# 5) 서비스 상태
echo
echo "=== 서비스 상태 ==="
for s in wazuh-indexer wazuh-manager wazuh-dashboard; do
    printf '  %-22s : %s\n' "$s" "$(sudo systemctl is-active "$s" 2>/dev/null || echo n/a)"
done

# 6) 대시보드 검증
echo
echo "=== 대시보드 헬스 ==="
sleep 3
curl -sk https://localhost/ -o /dev/null -w "  HTTP %{http_code}\n" || true

cat <<EOF

웹 UI:
  https://<MANAGER-IP>/
  계정    : admin / (위에서 추출한 비밀번호)

다음:
  setup_02_agent_enroll.sh    — agent VM 등록 (manager IP 인자)
  setup_03_fim_log_analysis.sh — FIM 변조 감지 + auth.log 분석
  setup_04_vuln_compliance.sh  — Vulnerability + SCA (CIS) 활성화

문제 발생 시:
  sudo tail -f /var/ossec/logs/ossec.log
  sudo tail -f /var/log/wazuh-indexer/wazuh-indexer.log
EOF
