#!/bin/bash
# 실습 #20 ④ — Vulnerability Detector + SCA (CIS 벤치마크) 활성화
# - Vulnerability: 설치된 패키지 vs NVD CVE DB 매핑 → Critical/High/Medium
# - SCA          : Security Configuration Assessment. CIS · PCI-DSS 등 정책 점검.
# - 본 시나리오는 manager 측에서 실행 (vulnerability-detector 는 manager 모듈)
set -e

DIR="$(cd "$(dirname "$0")" && pwd)"
OSSEC=/var/ossec/etc/ossec.conf

# 1) 백업
sudo cp "$OSSEC" "$OSSEC.bak.$(date +%Y%m%d%H%M%S)"

# 2) vulnerability-detector 활성화 (Wazuh 4.7 기준 block 이름)
#    이미 존재하면 enabled 값만 yes 로
if sudo grep -q "<vulnerability-detector>" "$OSSEC"; then
    sudo sed -i 's|<vulnerability-detector>.*<enabled>no</enabled>|<vulnerability-detector><enabled>yes</enabled>|' "$OSSEC"
    # 더 안전한 방법: 직접 편집을 권고
    echo "→ vulnerability-detector 블록 이미 존재. <enabled>yes</enabled> 인지 직접 확인:"
    sudo grep -A 2 "vulnerability-detector" "$OSSEC" | head -10
else
    # </ossec_config> 직전에 추가
    sudo python3 - "$OSSEC" "$DIR/configs/04_vulnerability_detector.xml" <<'PY'
import sys, re
target, src = sys.argv[1], sys.argv[2]
extra = open(src).read()
data  = open(target).read()
patched = re.sub(r'</ossec_config>', extra + '\n</ossec_config>', data, count=1)
open(target, 'w').write(patched)
PY
    echo "→ vulnerability-detector 블록 추가."
fi

# 3) SCA — Wazuh 가 기본 정책 (cis_ubuntu*.yml) 을 /var/ossec/ruleset/sca/ 에 보관
echo
echo "=== 설치된 SCA 정책 ==="
sudo ls /var/ossec/ruleset/sca/ 2>/dev/null | head -20 || echo "(없음)"

# 4) custom 룰 한 줄 (예: SSH brute force 에 MITRE 태그)
sudo cp "$DIR/configs/04_local_rules.xml" /var/ossec/etc/rules/local_rules.xml

# 5) 매니저 재시작 (모듈 활성화 반영)
sudo systemctl restart wazuh-manager
sleep 8

# 6) 상태
echo
echo "=== wazuh-manager 상태 ==="
sudo systemctl is-active wazuh-manager

echo
echo "=== modulesd 로그 — vulnerability scan ==="
sudo tail -20 /var/ossec/logs/ossec.log | grep -iE "vulnerability|sca" || \
    sudo tail -10 /var/ossec/logs/ossec.log

cat <<'EOF'

대시보드:
  Modules → Vulnerabilities → CVE 매핑 결과
       - Critical / High / Medium / Low 분류
       - Package · CVE ID · Published · CVSS · Severity
  Modules → Security configuration assessment
       - CIS Benchmark Ubuntu 22.04 LTS Pass / Fail 점수
       - Failed 항목별 권고 조치 (Remediation)

운영 활용:
  - 패치 SLA: Critical 7일, High 30일 (조직 표준)
  - SCA 결과를 컴플라이언스 보고서로 추출 (PDF/CSV)
  - Active Response 와 묶어 자동 대응 룰 작성

주의:
  - Vulnerability scan 첫 회는 NVD DB 동기화 시간 필요 (수 분~수 시간)
  - 인터넷 차단 환경: offline feeds 설정 필요
EOF
