InfraGuard — 융합 인프라 운영·방어·복원력 플랫폼
예방(가용성) → 탐지 → 대응 → 복구를 하나의 콘솔로 관통하는 self-hosted 인프라 관제 플랫폼. 서버 부하·트래픽·IDS·AI 이상탐지·평판 기반 자동 차단·백업 검증을 8개 국어로 통합했습니다.
해결 과제
기존 관제 시스템은 수집기 함대가 수년간 실데이터를 쌓아 왔지만 화면은 방화벽·차단 목록 표 두 개가 전부였습니다. 수집만 되고 한 번도 시각화되지 않은 텔레메트리 — JA3 핑거프린트, AI 이상탐지, 평판 기반 자동 차단 — 가 DB 에 잠들어 있었고, 하드코딩 자격증명·문자열 보간 SQL·평문 인증 쿠키 같은 보안 부채도 함께 남아 있었습니다.
가장 어려운 제약은 "수집기를 멈추지 말라"였습니다. 무접두 레거시 테이블에 Node 수집기 함대가 지금도 쓰고 있어, 스키마를 건드리는 순간 실운영 데이터가 끊깁니다. 앱은 전부 다시 쓰되 DB 만은 그대로여야 했습니다.
솔루션
메뉴를 지표가 아니라 역할(Overview · Infrastructure · Service · Security · Backup & Recovery · Assets · Administration)로 나눠 직무분리와 RBAC 경계를 일치시켰습니다. Security 개요는 위협 → 탐지 → 자동대응 룰셋 → 차단의 4단 방어 퍼널로 서사화하고, 보안 점수는 "관측된 위협의 양"이 아니라 "막았어야 하는데 못 막은 잔여"로 계산합니다 — 자동 방어가 성공할수록 점수가 떨어지던 역설을 걷어냈습니다.
경보는 시스템·웹·DB·보안 4개 영역 조건을 화면에서 조립하는 정책 모델로 만들고, 기본 OR 에 AND 게이트를 얹어 "로드는 높지만 디스크는 여유" 같은 오탐을 죽였습니다. 백업은 스크립트 빌더가 크론 배치용 스크립트를 생성하고 HMAC 서명 콜백으로 실행 결과를 되받습니다. 공개 랜딩은 콘솔과 번들을 분리하고, 노출하는 신뢰 지표는 하드코딩 대신 코드에서 매 렌더마다 세어 표기합니다.
성과
JA3 광역 집계를 롤업 테이블로 자동 라우팅 — 7일 창 3,728ms → 20ms (186배)
공개 랜딩 번들을 콘솔과 분리 — 방문자 페이로드 1,283KB → 24KB (98% 감소)
자동 대응 룰셋 44종 + 보안 점검 36항목 카탈로그화, 노출 수치는 코드에서 계산
경보 정책 AND 게이트 — 4개 영역 10개 조건이 서로 anchor·guard 로 결합
콘솔·랜딩 8개 국어 완역 + 관리자 설명서 69편, 전 카피가 번역 키 경유
게스트 쓰기 경로(데모 요청)에 허니팟·스로틀·CSRF·서버검증 4겹 방어
레거시 수집기 무중단 — 무접두 테이블 0건 변경, 신규 테이블은 전부 infr_ 접두
개발 마일스톤
모니터링 아키텍처 설계
수집 에이전트 방식과 풀(Pull) 방식을 비교 분석해 풀 방식으로 확정. 수집 메트릭 목록 및 알람 조건 정의.
에이전트 & 수집 파이프라인 구현
경량 수집 에이전트 개발 + 익스포터 구현. 8대 서버에 Docker 로 자동 배포.
대시보드 & 알람 구성
서버별·서비스별 대시보드 10개 구성. Slack·카카오톡 동시 알림 설정과 담당자별 라우팅 규칙 적용.
HTTP 엔드포인트 감시 & 이력 분석
외부 API 15개 엔드포인트의 응답시간·상태코드 감시 추가. 90일 이력 기반 이상 패턴 감지 로직 구현.
v1 운영 배포 & 검증
전체 시스템 운영 서버 배포. 장애 시뮬레이션 테스트로 알람 정확도 검증, 감지 시간 45초 달성 확인.
트래픽 관제 3분리 + IP 심층 조사
연결 관제를 Port · IP · Traffic 세 화면으로 분리하고, 소스 서클에서 IP 심층 조사 팝업(geo/ASN · 기간 이력 · 평판 조회 · 즉시 차단)으로 이어지도록 배선. 2억 행대 롤업 테이블은 좁은 시간 창 + LIMIT 규율로만 접근한다.
역할 우선 IA 로 콘솔 7개 영역 통합
Service Catalog · Projects · Instances(브라우저 SSH 터미널) · 자동대응 룰셋 44종 · 백업 스크립트 빌더 · 자산 인벤토리를 역할 우선 정보구조로 통합. 메뉴는 하드코딩 대신 sitemap 테이블 + user_level 로 구동한다.
공개 랜딩 · 데모 요청 · 방문자 분석
콘솔을 /console 로 옮기고 루트를 공개 마케팅 표면으로 개방. 랜딩 번들을 콘솔과 완전히 분리하고(1,283KB → 24KB) 신뢰 지표는 코드에서 매 렌더마다 계산해 표기. 데모 요청 폼은 허니팟·스로틀·CSRF·서버검증 4겹 방어. 분석 태그는 공개 표면 전용 옵트인.
경보 정책 AND 게이트 + 8개 국어 완역
조건 기본 OR 에 [+ AND 조건] 게이트를 추가해 4개 영역 10개 조건이 서로 anchor·guard 가 되도록 했다. 같은 엔티티 공간은 동일 엔티티 동시 위반으로만 매칭. 콘솔 8개 언어 완역과 관리자 설명서 69편도 같은 구간에 마감.
보안 태세 점수 전면 개정 (잔여 기준)
구 공식은 관측된 위협의 양을 감점해 자동 방어가 성공할수록 점수가 떨어졌다. 이제 각 지표는 미차단 잔여만 본다 — 전부 막았으면 무조건 100점. Overview 와 Security 두 화면이 같은 서비스 한 곳을 호출해 동일한 숫자를 본다.