최근 수정 시각 : 2026-11-09 18:09:17

InfraGuard

🌐 소프트웨어 관련 정보
{{{#!wiki style="min-height: calc(1.5em + 5px); margin: 0 -10px -5px"
{{{#!folding [ 펼치기ㆍ접기 ]
{{{#!wiki style="margin: -5px -1px -11px"
<colbgcolor=#64C3FA><colcolor=#fff> 기능에 따른 구분 시스템 소프트웨어 · 응용 소프트웨어 · 유틸리티 · 펌웨어
권한에 따른 구분 사유 소프트웨어 · 자유 소프트웨어 · 프리웨어 · 셰어웨어 · 애드웨어 · 오픈 소스
직업 프로그래머(개발자) · 시스템 분석가 · QA · DB Admin · 디자이너
목록 소프트웨어/목록
}}}}}}}}} ||
1. 개요2. 등장 배경3. 3대 가치4. 주요 수치5. 특징
5.1. 설치형(self-hosted)과 데이터 주권5.2. Docker 한 줄 배포5.3. 에이전트리스 지향 수집 구조5.4. 역할 우선 정보 구조5.5. 실시간 갱신5.6. 테마와 다국어
6. 기능 상세
6.1. Overview (통합 관제 랜딩)6.2. Infrastructure (가용성 관제)
6.2.1. Health (인프라 헬스 보드)6.2.2. Servers (부하 시계열)6.2.3. Storage & RAID6.2.4. Connectivity & Traffic6.2.5. Alerts (경보 정책)
6.3. Service (서비스 관제)
6.3.1. 서비스 개요 (큐레이션 라이브 보드)6.3.2. Web (웹 서비스 관제)6.3.3. Database (DB 부하 분석)6.3.4. Sessions (Redis)6.3.5. 서비스 카탈로그6.3.6. 프로젝트6.3.7. 문제 해결 (인시던트 케이스)
6.4. Security (보안)
6.4.1. 보안 개요 (방어 퍼널)6.4.2. Threats (IDS 위협 트리아지)6.4.3. Detections (탐지 · AI · JA3)6.4.4. 탐지 룰셋 라이브러리6.4.5. Firewall (공격 표면 지도)6.4.6. Blocklist & Reputation (차단 관리)6.4.7. Whitelist (차단 면책)6.4.8. IP 평판 조회6.4.9. 자동 차단 파이프라인6.4.10. 보안 진단 (A–F 등급)6.4.11. 보안 문제 해결
6.5. Backup & Recovery (백업·복구)
6.5.1. 백업 스크립트 빌더6.5.2. 백업 스크립트 / 스케줄 보드6.5.3. 보관소 (Vaults)6.5.4. 복구 & 검증
6.6. Assets (자산 관리)
6.6.1. 인스턴스 (OS 인스턴스 CMDB)6.6.2. 원격 에뮬레이트 (프로브 배포)6.6.3. 하드웨어 (CMDB · 랙 배치도)6.6.4. 스토리지 & 파일6.6.5. Inventory ("주머니")
6.7. Administration (관리)
7. 보안 설계와 권한 체계
7.1. 인증7.2. 권한 등급7.3. 비밀 관리 원칙
8. 활용 시나리오9. 기술 스택10. 사용 설명서11. 도입12. 여담13. 외부 링크

1. 개요

InfraGuard(인프라가드)는 중견·중소 규모 조직의 서버 인프라를 위한 설치형(self-hosted) 통합 인프라 운영·보안·복구 플랫폼이다. 공식 슬로건은 "보여주고, 막아내고, 되돌립니다"이며, 스스로를 "융합 인프라 운영 · 방어 · 복원력 콘솔"이라고 소개한다.

서버 부하·메모리·디스크·RAID 건전성 같은 가용성 관제, Suricata IDS·머신러닝 이상탐지·JA3 지문 분석·평판 조회를 결합한 보안 탐지와 자동 차단, 백업 스크립트 생성부터 복구 무결성 검증까지 이어지는 백업·복구, 그리고 인스턴스·하드웨어·스토리지를 관리하는 자산 대장(CMDB)을 하나의 웹 콘솔에 통합한 것이 특징이다. 즉 예방(가용성) → 탐지 → 대응 → 복구라는 인프라 운영의 전 과정을 한 화면에서 관통하는 것을 목표로 한다.

사내 서버(폐쇄망 포함)에 직접 설치해 독립적으로 운영하는 방식이므로 지표와 로그가 회사 밖으로 나가지 않으며, 도입 고객은 전체 소스 코드를 받아 자사 요구에 맞게 수정할 수 있다고 홍보한다. Docker Compose 명령 한 줄로 배포할 수 있고, 콘솔과 매뉴얼은 8개 언어(한국어, 영어, 일본어, 중국어 간체, 스페인어, 프랑스어, 독일어, 러시아어)를 지원한다.

공식 사이트는 infraguard.work이며, 로그인 없이 열람 가능한 공개 사용 설명서(/manual)에 69편의 기술 문서가 정리되어 있다.

2. 등장 배경

한국어 홍보 영상 "운영 · 보안 · 복구, 아직 따로 보십니까?"는 제품의 문제의식을 "관제는 안에 있는데, 통제권은 밖에?"라는 한 문장으로 요약한다. 많은 조직이 서버 모니터링, 스토리지 점검, 백업 관리, 보안 경보 대응을 각기 다른 도구로 따로 처리하며, 클라우드형 관제 서비스를 쓰면 데이터는 외부로 나가고 비용은 호스트 수에 비례해 늘어난다는 점을 지적한다.

영상은 실제로 콘솔을 쓰는 네 부류의 사용자 관점에서 기존의 불편을 묘사한다.
  • 인프라 운영팀: 예전에는 서버, 스토리지, 백업을 따로 봤다. → 이제는 한 콘솔에서 부하와 메모리, RAID 물리 디스크 지도, 랙 배치도, 백업 일정과 실행 결과까지 확인한다.
  • 보안팀: 경보는 쌓이는데 막는 일은 사람 손이었다. → 탐지되면 평판을 조회하고 차단이 방화벽까지 자동으로 이어지며, 이미 막힌 위협은 배지로 구분된다. 서버마다 A–F 보안 등급이 매겨져 전담팀이 없어도 보안 상태가 보인다.
  • 개발팀: 장애를 고객 문의로 먼저 알았다. → 웹 가동 상태와 TLS 인증서 만료를 카드로 먼저 보고, 애플리케이션 예외는 API로 들어와 문제 해결 사례로 남는다.
  • IT 책임자: 판단의 기준이 흩어져 있었다. → 가용성과 보안 두 점수, 그리고 KPI가 한 화면에 모인다.

이러한 흐름을 "에이전트·탐지·프로브는 한 콘솔로, 위협은 차단으로, 경보는 조사로, 사례에서 복구 지점으로"라는 하나의 흐름으로 묶고, 결론을 "빌려 쓰는 관제에서 소유하는 관제로"라고 제시한다.

3. 3대 가치

InfraGuard의 모든 화면과 기능은 다음 세 가지 가치를 지향하도록 설계되었다.
가치 의미 예시
신속성 여러 도구를 오가지 않고 단일 콘솔에서 진단부터 대응까지 끝낸다 Overview 한 화면의 가용성·보안 점수
편의성 필요한 자료가 자동으로 준비되고 작업 도구가 일목요연하다 Inventory(주머니)의 스크립트·크론 카드
복원성 언제든 대비된 "소방수" 역할을 한다 백업·복구 검증·탐지 연동

공식 사이트는 이를 다시 관제(통합 텔레메트리), 방어(자동화된 보안 태세), 복원(백업 빌더와 복구)의 세 축으로 설명한다.

4. 주요 수치

항목 수치 비고
탐지 룰셋 44개 11개 카테고리 · 5개 엔진
보안 점검 항목 36개 9개 영역 · A–F 등급
알림 어댑터 16종 SMS 10종 · 메일 6종(공식 사이트 기준)
매뉴얼 문서 69편 8개 언어
지원 언어 8개 ko · en · ja · zh · es · fr · de · ru
권한 등급 3단계(+개발자) demo · staff · admin (+ super_admin)

5. 특징

5.1. 설치형(self-hosted)과 데이터 주권

InfraGuard는 SaaS가 아니라 고객의 서버에 직접 설치하는 소프트웨어다. 온프레미스, 사설망, 하이브리드 환경을 모두 지원하며 외부 SaaS로 데이터를 보내지 않는다. 지표와 로그가 전부 자체 인프라 안에 머무르므로 폐쇄망이나 규제가 엄격한 환경에서도 사용할 수 있다.

홍보 영상은 이를 "데이터도, 소스도, 결정도 사내에 남는다"고 표현하며, 호스트당 월 구독료를 내는 방식이 아니라는 점, 소스까지 받아 직접 고칠 수 있다는 점을 강조한다. 영상 후반부에는 Datadog과 견주는 다섯 가지 기준(설치, 데이터, 소스, 비용 구조, 관측부터 차단·복구까지의 범위)을 제시한다.

5.2. Docker 한 줄 배포

Docker Compose를 이용해 애플리케이션, 큐 워커, 스케줄러, 실시간(Reverb) 서버, SSH 브리지가 한 번에 기동된다. 공식 사이트에 소개된 설치 절차는 다음과 같다.
git clone <infraguard> && cd infraguard
cp .env.docker .env
docker compose up -d
  ✓ infr-redis      healthy
  ✓ infr-app        started
  ✓ infr-nginx      started
  ✓ infr-queue      started
  ✓ infr-scheduler  started
  ✓ infr-reverb     started

InfraGuard is ready → http://localhost:8788

5.3. 에이전트리스 지향 수집 구조

상당수 기능이 대상 서버에 무거운 에이전트를 설치하지 않는 방식으로 설계되었다. 예를 들어 데이터베이스 관제는 등록된 접속 정보로 원격 MySQL/MariaDB에 직접 붙어 `SHOW GLOBAL STATUS`와 `information_schema`만 조회하며 데이터 행 자체는 읽지 않는다. Redis와 nginx 트래픽은 내부망 대표 수집기가 중앙 DB에 적재하고 콘솔은 이를 읽기만 하므로, 앱 자체에는 Redis 자격증명이나 상주 데몬이 없다. 서버 부하는 Node 기반 수집기(run_report)가 약 5분 주기로 적재한다.

5.4. 역할 우선 정보 구조

상단 메뉴는 "무엇을 보는가"가 아니라 "누가(어느 역할이) 무엇을 하는가"를 기준으로 나뉜다. 메뉴는 하드코딩이 아니라 DB(sitemap 테이블)로 구동되고, 각 메뉴 노드의 최소 등급이 곧 접근 통제선이 된다. 최상위 영역은 다음과 같다.
  • Overview – 가용성과 보안을 합친 통합 헬스 랜딩
  • Infrastructure – 서버·스토리지·트래픽·경보 등 가용성 관제
  • Service – 운영 중인 서비스(웹·DB·세션 등)의 라이브 관제와 인시던트 관리
  • Security – 위협·탐지·차단으로 이어지는 방어 서사
  • Backup & Recovery – 백업 스케줄, 스크립트 빌더, 보관소, 복구
  • Assets – 인스턴스·하드웨어·스토리지·인벤토리 자산 대장
  • Administration – 사용자, 수집기, 정책, 외부 연동(관리자 전용)

5.5. 실시간 갱신

대시보드는 새로고침 없이 스스로 갱신된다. 대부분의 화면은 30초 경량 폴링과 변경 감지 토큰(rev)을 조합해 변경이 있을 때만 데이터를 교체하고, 진행률이 실시간으로 흘러야 하는 원격 보안 점검 등에는 Laravel Reverb 기반 WebSocket 푸시를 쓴다. "라이브는 영속 데이터 위에 얹는 부가 기능"이라는 원칙에 따라 WebSocket이 끊겨도 화면이 깨지지 않고 폴링으로 자연스럽게 대체된다.

5.6. 테마와 다국어

NOC(상황실) 환경을 고려해 딥 블루블랙 바탕에 청록(teal) 신호색을 쓴 다크 테마가 기본이며, 밝은 사무실이나 문서 캡처용 라이트 테마도 제공한다. 모든 라벨과 메시지는 번역 키를 거쳐 렌더링되며, 관리자는 8개 언어 중 실제로 노출할 언어와 사이트 기본 언어를 지정할 수 있다.

6. 기능 상세

6.1. Overview (통합 관제 랜딩)

로그인 후 처음 만나는 화면으로, 가용성과 보안을 하나의 화면에서 관통해 보여준다.
  • 융합 합성 스코어 2개: 비보안 수집 정보 전체를 가중 합성한 가용성 게이지와 최근 24시간 탐지 근거를 가중 합성한 보안 게이지를 나란히 배치한다.
  • KPI 카드: 서버 수, 부하 피크, 메모리 피크, 네트워크 피크, 위협, 백업, 그리고 데이터가 있을 경우 웹 서비스와 데이터베이스까지 최대 8개.
  • 탐지 도넛(24h): IDS 경보 / AI 이상탐지 / 웹 공격 / 스캔·차단의 4분류.
  • 서비스 성능 패널: 웹·DB 중 개별 서비스 하나를 골라 게이지로 표시.
  • 풀폭 서버 스트립: Load·Memory·Network·Storage 시계열. 6시간·24시간·3일 시간창, 화면 분할, 높이 조절, 선형/로그 스케일 전환을 지원한다.

6.2. Infrastructure (가용성 관제)

6.2.1. Health (인프라 헬스 보드)

운영 중인 모든 노드의 건전성을 카드 그리드로 보여준다. 각 카드에는 CPU 링 게이지(중앙에 load average), 메모리·디스크 바, 서비스 상태 점이 배치된다. 수집기가 적재한 지표 스냅샷과, 각 노드의 경량 에이전트를 실시간 호출해 nginx·PHP·MySQL·MongoDB 데몬 기동 여부와 Docker 컨테이너를 즉석 확인하는 라이브 프로브를 하나의 카드로 합친다.

6.2.2. Servers (부하 시계열)

Health가 "지금 이 순간"을 본다면 Servers는 "최근 몇 시간~며칠 동안 부하가 어떻게 흘렀나"를 되짚는다. 노드마다 Load/CPU/MEM 3-링 게이지와 스파크라인을 보여주고, 펼치면 ECharts 결합 그래프와 현재·평균·최소·최대·피크 시각 통계표가 나온다. 카드는 드래그로 재정렬할 수 있다.

6.2.3. Storage & RAID

각 호스트의 RAID 컨트롤러 상태(Optimal/Degraded/Failed), 온도, 배터리, 논리 볼륨, 슬롯별 물리 디스크 맵(상태·모델·시리얼·용량)과 데이터 볼륨 사용률을 보여준다. 핵심 목적은 디스크 장애 조기 경보로, 어레이가 Degraded로 떨어지거나 디스크가 빠지면 즉시 색으로 경고해 두 번째 디스크가 죽어 어레이 전체가 무너지기 전에 교체·재구성을 유도한다.

6.2.4. Connectivity & Traffic

  • 포트 연결(PORT OVERVIEW): 운영 정책에 등록한 감시 포트(80, 443, 22, 3306 등)마다 카드를 띄우고, 서버별로 TCP 세션을 ESTABLISHED·LISTEN·SYN_RECV·TIME_WAIT 등 상태별 100% 스택바로 쪼개 보여준다. 고유 소스 IP 수와 상위 3개 소스 IP도 표시해 SYN 플러드나 연결 누수를 빠르게 파악할 수 있다.
  • IP 연결: 서버를 축으로 붙어 있는 원격 IP들을 연결 강도순으로 나열한다. IP를 클릭하면 접속 분포, 연결 이력, 지역/ASN/ISP 정보, 외부 평판 링크, 차단 딥링크가 담긴 조사 팝업이 열린다.
  • 트래픽: 서버별 인바운드·아웃바운드 바이트·패킷 처리량을 1h/6h/24h 시계열로 보여준다. 야간 백업 전송, 대용량 다운로드, DDoS 유입 같은 대역폭 급증을 확인하는 데 쓴다.

6.2.5. Alerts (경보 정책)

하나의 경보 정책에 시스템·웹·DB·보안 4개 영역의 조건을 켜고 임계값을 조정하면, 위반 시 그룹 담당자에게 SMS나 메일로 자동 통지한다. 팀·시간대별로 정책을 여러 개 만들 수 있으며(예: "인프라 야간 당직", "보안 관제"), 같은 위반은 하나의 경보로 묶는 중복 제거, 쿨다운 동안 재발송 억제, 한 정책의 알림을 한 통으로 묶는 배치 발송(SMS 폭주 방지), 위반 해소 시 자동 종료를 지원한다.

6.3. Service (서비스 관제)

6.3.1. 서비스 개요 (큐레이션 라이브 보드)

운영자가 관심 있는 웹·DB·세션·프록시·Docker 서비스를 직접 골라 우선순위 카드로 배치하는 보드. 맨 앞 카드는 가용성 게이지로, 선택 카드들은 하단 라이브 시계열로 그려진다. 데모용 가짜 데이터가 아닌 실데이터로만 구성된다.

6.3.2. Web (웹 서비스 관제)

조직이 운영하는 웹사이트를 등록하고 트래픽·품질·가용성을 라이브로 관제한다. 두 종류의 신호를 결합한다.
  • 수동(passive) 신호: nginx-vts 모듈 카운터로 RPS, 대역폭, 에러율, 평균 응답시간, 캐시 적중률을 계산한다.
  • 능동(active) 합성 프로브: 매분 각 사이트 URL에 직접 HTTP 요청을 보내 실제 도달성을 판정한다. 트래픽이 전혀 없는 상태의 다운, 리다이렉트 뒤에 숨은 5xx 등도 잡아낸다.
서비스 상태(up/degraded/down)의 판정 권한은 능동 프로브에 있다. 봇·스캐너가 존재하지 않는 경로를 두드려 생기는 5xx 노이즈 때문에 서비스를 다운으로 오판하지 않기 위한 설계다. TLS 인증서 만료도 카드로 미리 경고한다. 또한 Google Analytics 4와 Google Search Console을 플러그인 없이 직접 연동해 방문자 분석과 검색 유입 키워드 분석 모달을 제공한다.

6.3.3. Database (DB 부하 분석)

등록된 MySQL/MariaDB를 동시 실행 부하(실행 중 스레드, 연결 포화율, 대기 쿼리)와 처리량·비효율(QPS, slow query 비율)의 두 축으로 관제한다. 스키마 용량 분석, 캐시 적중률·인덱스 사용률 효율 점수, InnoDB dirty page·체크포인트 메모리 관리 블록도 제공한다. 각 지표 위에 마우스를 올리면 "왜 이 값이 나쁜가, 어떻게 개선하나"를 설명하는 교육용 팝오버가 열려, 신입 DBA의 학습 도구로도 쓸 수 있다.

6.3.4. Sessions (Redis)

Redis 세션·캐시 저장소의 메모리 수용률, 클라이언트 연결, 블록된 클라이언트, 초당 명령 수, 적중률, 네트워크 I/O를 관제한다. 메모리 상한 근접에 따른 세션 축출(eviction) 위험, 단편화, 복제 링크 단절 등을 조기에 파악할 수 있으며 slowlog·만료 대 축출 같은 개념을 설명하는 교육용 팝오버가 함께 제공된다.

6.3.5. 서비스 카탈로그

각 서버에서 실제로 돌고 있는 nginx·MySQL·Redis·Docker 등의 데몬을 소프트웨어 버전 원장에서 자동 도출해 운영 카탈로그로 만든다. [분석 및 빌드] 버튼 한 번으로 중복 없이 생성되며, 라이브니스 테스트와 서비스 간 의존성 그래프 편집, 해당 엔진의 서버 파라미터 조회를 지원한다.

6.3.6. 프로젝트

프로젝트별 소스 저장소, CI/CD(Jenkins) 파이프라인, 사용하는 웹 서비스·DB, 백업 대상, 기밀 정보의 위치를 등록하는 레지스트리. 비밀번호·토큰의 실제 값은 저장하지 않고 키 금고 참조나 "무엇이 어디에 있는지"만 적는 마스킹 체크리스트로 기록한다. 새 팀원 온보딩이나 장애 시 영향 범위 파악에 쓰인다.

6.3.7. 문제 해결 (인시던트 케이스)

장애·오류·성능 저하를 하나의 케이스로 등록하고 등록 → 분석 → 원인판명 → 해결 → 종료의 5단계 파이프라인으로 관리한다. 각 케이스는 사후 보고서에 준하는 네 필드(직접 원인 / 배경 원인 / 해결 / 재발 방지)를 가지며 사후 회고와 재발 방지 대장 역할을 한다. 외부 Laravel 애플리케이션의 PHP 예외는 API 키로 인증된 인제스트 API(`POST /api/v1/incidents`)를 통해 자동으로 케이스에 등재된다.

6.4. Security (보안)

6.4.1. 보안 개요 (방어 퍼널)

보안 영역의 중심 화면. 수집·판정·자동조치까지 이미 백엔드에서 돌고 있던 "숨은 텔레메트리"를 위협(원시 이벤트) → 탐지(플래그) → 자동 대응 룰셋 → 대응(차단)의 4단 방어 퍼널로 시각화한다. 위협 강도 게이지, 시간당·24시간 위협과 활성 차단 수, 최근 6시간 상위 JA3 오펜더, 상위 위협 IP와 최근 자동 조치 피드, 기간별 위협 추이를 한눈에 보여준다. 화면의 핵심 메시지는 "지금 이 순간에도 AI·IDS 자동 방어가 위협 네트워크를 막고 있다"는 것이다.

6.4.2. Threats (IDS 위협 트리아지)

Suricata IDS 경보 수천 건을 개별 나열하는 대신 출발지 IP 단위로 묶어 "누가 우리를 얼마나, 어떻게 건드렸는가"를 심각도 순으로 보여준다. 각 위협 IP에는 경보 수, 최고 심각도, 고유 시그니처 수, 최종 관측 시각, 국가/ASN이 표시되고, 해당 IP 대역이 이미 자동 차단되었는지를 차단됨/탐지됨 배지로 구분한다. 자사 서버 대역은 자동으로 제외되어 잡음을 줄인다.

특히 시그니처 해설(Signature Lore) 패널은 사람이 읽기 어려운 Suricata 엔진 이벤트 문자열을 "무엇을 탐지했나 · 왜 검출됐나(양성→악성) · 조심할 상황 · 최악의 시나리오"의 4단 서사로 풀어주므로 팀원 교육 자료로도 활용된다.

6.4.3. Detections (탐지 · AI · JA3)

InfraGuard 탐지 기능의 플래그십 화면으로, 다음 탐지기들을 하나로 묶는다.
  • Kitsune – 네트워크 트래픽 기반 머신러닝 이상탐지
  • srct 휴리스틱 – 스캔·요청률 기반 휴리스틱 탐지
  • nginx 의심 요청 – 웹 요청 패턴 기반 탐지
  • JA3 – TLS 클라이언트 지문 분석
각 탐지 알고리즘의 원리를 교육용 팝오버로 설명하고, 최근 창에서 잡힌 이상 IP와 의심 웹 요청을 실데이터로 보여준다. 특히 JA3 시퀀스 룰셋은 한 출발지 IP가 시간 순으로 바꿔 쓴 JA3 지문 시퀀스를 결정적 휴리스틱으로 분석해, 지문을 회전시키며 탐지를 회피하는 봇넷 같은 "연속적 이상행동"을 전문 용어 룰셋으로 열거·저장한다. 이 분석은 외부 AI 호출 없이 휴리스틱만으로 동작한다.

6.4.4. 탐지 룰셋 라이브러리

InfraGuard가 관측·판정하는 모든 규칙을 44개 룰셋 / 11개 카테고리 / 5개 엔진으로 정규화한 정본 라이브러리. 선택한 시간창(1h/6h/24h)에 각 룰셋이 실제로 몇 번 발화했는지 실측으로 표시하고, 각 룰셋을 "무엇을 탐지 · 왜 걸리나 · 최악의 경우"의 3단으로 해설한다. 카드를 누르면 그 룰셋에 걸린 최근 이벤트가 엔진별 테이블로 펼쳐진다.
카테고리 엔진 룰셋 수
TCP 스트림 무결성 Suricata 10
패킷 디코딩 Suricata 4
프로토콜 이상 Suricata 5
HTTP 규약 Suricata 5
TLS 이상 Suricata 5
DNS 이상 Suricata 1
메일(SMTP) 이상 Suricata 3
웹 공격 패턴 nginx 8
ML 이상탐지 Kitsune 1
휴리스틱 스캔 srct 1
JA3 지문 JA3 1
웹 공격 룰셋 8종은 비밀 파일 탐색(.env, .git, wp-config 등), 경로 탐색(../, etc/passwd), SQL 인젝션, XSS 등으로 나뉘며, 하나의 요청은 우선순위상 첫 번째로 맞는 룰셋 하나에만 귀속되어 이중 집계되지 않는다.

6.4.5. Firewall (공격 표면 지도)

서버 함대가 열어 둔 포트를 한 장의 노출 지도로 그린다. 각 오픈 포트를 위험도(치명/주의/표준/미상)로 채색하고, 등록된 서비스인지(관리됨) 아니면 뜻밖에 열린 포트인지(미등록)를 구분해 "무엇이 왜 밖에서 보이는가"를 즉시 파악하게 한다.

6.4.6. Blocklist & Reputation (차단 관리)

Kitsune과 Suricata가 자동으로 차단해 온 위협 대역을 보여주고, 운영자가 직접 차단·해제·재차단할 수 있는 제어 콘솔이다. 차단 단위는 기본적으로 /24(C클래스) 대역이며, 이 화면의 결정은 각 호스트에서 동작하는 동기화 데몬을 통해 커널 ipset/iptables DROP 규칙으로 실제 집행된다. 차단 근거에는 어떤 탐지기가 잡았는지 소스 태그가 남는다.

6.4.7. Whitelist (차단 면책)

CDN, 파트너 API, 사내 회선처럼 신뢰할 수 있는 출발지가 오탐으로 차단되지 않도록 면책할 IP·대역을 관리한다. 만료일이 없으면 영구 면책, 날짜를 지정하면 임시 면책이다. 운영자가 직접 추가하는 수동 항목 외에도, 평판 조회 결과 "무죄가 확실"하다고 판정된 IP는 30일 동안 자동으로 면책 등록된다.

6.4.8. IP 평판 조회

보안 화면 어디서든 의심 IP를 클릭하면 서버가 AbuseIPDB를 대신 조회해 앱 안의 팝업으로 보여준다. 악용 신뢰도(0–100) 게이지, 신고 수, 신고자 수, 용도, ISP, 국가, Tor 여부, 최근 신고 내역을 표시한다. 여러 개의 API 키를 등록하면 라운드로빈으로 소비하며 쿼터 초과 시 자동으로 다음 키로 넘어가고, IP당 1시간 캐시로 무료 쿼터를 아낀다. 조회만 하며 IP를 외부로 신고하지는 않는다.

6.4.9. 자동 차단 파이프라인

공격 IP를 사람 개입 없이 탐지 → 심사 → 차단하는 백그라운드 흐름이다. 두 개의 독립 경로가 하나의 집행 지점(커널 ipset)으로 수렴한다.
  • ① 수집기 자동 차단: 각 호스트의 수집기가 Suricata L7 경보와 Kitsune ML 판정을 근거로 /24 대역을 차단 목록에 올린다.
  • ② 스케줄러 자동 차단: InfraGuard 앱이 주기적으로 IDS 심각도 트리거(창 내 치명 경보 건수)와 JA3 로테이션 트리거(서로 다른 JA3 지문 수)를 평가해 개별 IP 또는 대역을 차단한다. 기본값은 꺼져 있으며 관리자가 켜야 동작한다.
차단 후보는 실제 차단 전에 자기망·내부망 제외 → 화이트리스트 면책 → 평판 기반 무죄 추정 검증을 순서대로 통과해야 하므로, 확실한 침해만 남기고 오탐 후보는 걸러낸다. 차단 방식은 한 서버에서 발견된 침해를 전체 서버에 적용하는 global과 공격받은 서버에만 적용하는 per_server 중 고를 수 있고, 차단 범위도 balanced(권장)·broad(/24)·granular(/32) 중 선택할 수 있다.

6.4.10. 보안 진단 (A–F 등급)

등록된 서버에 루트킷 흔적 점검과 시스템 하드닝 점검을 실행해 0–100점 점수와 A–F 등급으로 채점한다. 대상 서버에서 로컬·읽기 전용으로 동작하는 프로브가 9개 영역 36개 항목을 점검한다.
영역 점검 수 대표 점검
루트킷·멀웨어 6 알려진 루트킷 파일, ld.so.preload 인젝션, 숨은 프로세스
패치·업데이트 3 미적용 보안 업데이트, EOL OS
SSH 설정 5 root 로그인 허용, 빈 비밀번호
계정·권한 5 UID 0 계정, 빈 비밀번호 계정
네트워크 노출 3 레거시 서비스, DB 포트 외부 노출
파일시스템 권한 5 shadow 권한, world-writable, SUID
시스템 하드닝 5 SELinux, ASLR, SYN cookies
서비스·방화벽 2 방화벽 활성, 불필요 서비스
감사·로깅 2 auditd, syslog
점수는 항목별 가중치와 심각도 배수를 반영해 계산되며 90점 이상 A, 80점 이상 B, 70점 이상 C, 60점 이상 D, 그 미만은 F다. 각 항목에는 무엇을, 왜, 어떻게 고치는지에 대한 해설이 붙는다. 불합격이면서 위급(fail + crit)인 항목은 자동으로 보안 문제 해결 케이스로 승격되며, 이후 점검에서 통과하면 케이스도 자동 해소된다.

점검 결과는 콘솔에서 여러 서버에 원격 실행하거나, 대상 서버에서 직접 실행한 JSON을 붙여넣거나, 각 서버의 크론이 API로 자동 전송하는 방식으로 접수할 수 있다. 크론 방식을 쓰면 매일의 점수 추이가 자동으로 축적되어 컴플라이언스와 감사 대비에 활용된다.

6.4.11. 보안 문제 해결

서비스 문제 해결과 같은 5단계 케이스 보드를 보안 인시던트·침해 대응용으로 분리한 화면이다. 운영자의 수동 등록(관련 기관 통보, 격리 등 포함)과 보안 진단의 자동 승격으로 케이스가 들어온다.

6.5. Backup & Recovery (백업·복구)

InfraGuard는 원격 서버에 직접 접속해 백업을 돌리거나 crontab을 쓰지 않는다. 대신 스크립트 생성 → 담당자 검토·배치 → 백업 전용 서버의 러너 실행 → 결과 콜백 보고라는 안전한 흐름을 따른다.

6.5.1. 백업 스크립트 빌더

대상만 고르면 자격증명이 노출되지 않는 백업 스크립트 골격과 crontab 라인을 만들어 준다. DB는 자격증명을 숨긴 mysqldump, 파일은 rsync 증분, 볼륨은 tar, 그 밖에는 자유 명령을 지원하며 압축·증분 체인·동기화 방식과 오프사이트 이중 보관을 고려한다. 프로젝트 레지스트리에 등록된 DB·웹·백업 대상 정보를 읽어 초안을 자동으로 채운다.

6.5.2. 백업 스크립트 / 스케줄 보드

등록된 백업 계획을 카드로 관리하며, 러너 실행 여부 토글, 일시정지, 생성 스크립트 열람(버전·체크섬 포함)을 지원한다. 스케줄 보드는 무엇을·언제·어디에 백업하는지, 다음 실행 시각, 최근 성공 이력, 지연·실패 경고를 한 화면에 보여주며 프로젝트 → 소스 호스트 → 보관소의 흐름으로 3-2-1 백업 원칙이 지켜지는지 눈으로 확인할 수 있게 한다.

6.5.3. 보관소 (Vaults)

로컬 경로, 원격 rsync/SSH, S3, NFS 같은 백업 저장 대상을 이름 붙은 보관소로 등록해 여러 백업 작업이 공유하도록 한다. 각 보관소의 연결된 계획 수, 저장량, 용량, 사용률, 오프사이트 여부가 표시되며, 비밀번호는 저장하지 않고 자격 참조만 둔다.

6.5.4. 복구 & 검증

"백업이 돌고 있다"와 "백업으로 복원된다"는 다른 문제라는 관점에서 만들어진 화면이다. 최근 90일의 성공한 백업을 복구 지점으로 나열하고, 선택한 복구 지점의 유형에 맞는 복원 명령을 조립해 보여준다. 복원 후에는 체크섬을 원본과 대조해 손상·변조 여부를 검증하고 그 결과를 이력으로 남겨 복구 가능성을 지속적으로 추적한다. 웹 유출을 막기 위해 화면에서 아티팩트를 내려받거나 원격 명령을 대신 실행하지 않는다.

6.6. Assets (자산 관리)

6.6.1. 인스턴스 (OS 인스턴스 CMDB)

물리 서버, VM(KVM·VMware·Proxmox), 클라우드 노드(AWS·GCP·Azure) 등 SSH로 접근 가능한 운영체제 인스턴스의 대장이다. 각 인스턴스 카드에서 다음 기능을 바로 쓸 수 있다.
  • [ssh] 브라우저 SSH 터미널: 별도 클라이언트 없이 콘솔에서 접속하는 진짜 PTY 터미널로, top·vi·less·sudo·htop 같은 대화형 프로그램이 그대로 동작한다. 개인키는 암호화 보관되고 접속 시에만 전달된다.
  • [ver] 버전 원장: PHP·Node·nginx·MySQL·Docker·Jenkins 등 49종의 소프트웨어 버전을 기록하고 최신/구버전/지원종료(EOL)/취약/미상 상태로 표시해 패치 우선순위를 판단한다.
  • [env] 인스턴스 변수: 인스턴스별 DB 접속 정보, 로그 경로 등을 암호화 저장하며, 스크립트의 `{{PLACEHOLDER}}` 토큰을 실제 값으로 치환하는 사전 역할을 한다.
  • [param] 서버 파라미터 스냅샷: nginx.conf, my.cnf, sysctl, php.ini, haproxy.cfg 등의 설정값을 웹·DB·커널·애플리케이션·기타 5개 영역으로 보관해 AI 튜닝 진단의 근거로 쓴다.
  • [fw] 방화벽 규칙 대장: iptables·firewalld·ufw 규칙을 정규화해 기록하며, Security ▸ Firewall의 노출 지도가 이 데이터를 사용한다.

6.6.2. 원격 에뮬레이트 (프로브 배포)

SSH 로그인 없이 각 노드의 경량 에이전트에 서명된 HTTP 요청으로 버전·파라미터·방화벽·보안 진단 프로브를 배포하고 실행한다. 임의 명령이 아니라 화이트리스트에 등록된 프로브만 실행되며, 몇 번의 클릭으로 여러 서버의 정보를 수집해 대장에 반영할 수 있다.

6.6.3. 하드웨어 (CMDB · 랙 배치도)

서버(CPU·메모리·메인보드·RAID·PSU·NIC·디스크 부품 상세), 스위치·라우터·웹방화벽·AP·로드밸런서 같은 네트워크 장비(포트 매핑·토폴로지), 데스크톱·노트북·프린터 등 사무 기기를 모두 관리한다. [랙 뷰]로 전환하면 U 단위 랙 배치도에서 장비를 드래그로 옮기고 크기를 조정할 수 있어, 장비 위치를 바로 찾을 수 있다. 물리 서버는 OS 인스턴스와 1:1로 연결된다.

6.6.4. 스토리지 & 파일

스토리지 자산의 메타데이터(컨트롤러, RAID 레벨, 파일시스템, 마운트 경로, 용량)와, 보관 자료를 파일명이 아닌 의미 영역 트리로 정리한 파일 영역 대장을 관리한다. "무엇이 어디에 얼마나 있는지"를 미니 용량바와 함께 보여준다.

6.6.5. Inventory ("주머니")

장애나 침해 상황에서 지체 없이 대응할 수 있도록 필요한 자료를 미리 담아두는 도구 상자다.
탭 내용
Tools 수집·설치·진단 스크립트(코드 에디터 편집)
Snippets 자주 쓰는 journalctl·ss·iptables 같은 한 줄 명령
Docs 비상 대응 플레이북, 컴플라이언스 기준, 네트워크 맵 등 마크다운 문서
Keys 팀 공유 비밀번호·API 키·전역 변수(암호화 금고)
스크립트 매시업 기능은 스크립트 본문의 `{{TOKEN}}` 자리를 실제 인스턴스 값·수집기 설정·전역 키로 채워 바로 실행 가능한 코드로 복사해 준다. 덕분에 코드에 비밀을 직접 박지 않아도 된다. 키 금고의 비밀은 암호화 저장되며 열람(reveal)할 때마다 감사 로그가 남는다.

6.7. Administration (관리)

  • 수집기(Collectors): 기존 수집기의 하드코딩된 자격증명과 호스트 맵을 DB로 외부화한 레지스트리. web(원격 에이전트), database(DB 직접 연결), agent(내부망 대표 수집기) 방식으로 추상화된다.
  • 운영 정책: DB 자동 수집 모드(콘솔 사용자가 있을 때만 수집하는 economy 또는 상시), DB 상태 임계값, 화폐 단위, 트래픽 감시 포트, 내부망 화이트리스트, 자동 차단 스위치 등 전역 설정.
  • API 발급: 외부 앱·호스트가 InfraGuard로 데이터를 보내기 위한 키를 발급한다. 평문 키는 발급 시 한 번만 노출되고 DB에는 해시만 저장된다. 인시던트 리포터(Laravel)와 보안 진단 스캔 리포터(호스트 크론)의 연동 코드를 함께 제공한다.
  • 규칙 임계: Suricata·Kitsune 탐지 수집기의 윈도우, 휴리스틱 임계, 학습, 차단 확정 조건 등을 화면에서 조정한다.
  • 평판 API: AbuseIPDB 키를 여러 개 등록해 우선순위대로 라운드로빈 소비한다.
  • AI 어댑터: Anthropic, OpenAI, Google, Moonshot, DeepSeek, 로컬 모델 등 LLM 공급자를 등록하고 우선순위를 정한다. 공급자를 등록하지 않아도 휴리스틱 기반으로 튜닝 조언이 동작한다.
  • 메일 어댑터: Mailgun, SendGrid, Postmark, Resend, SMTP 등.
  • SMS 어댑터: Solapi, 알리고, NHN, LINE, Aliyun, Twilio, Vonage, Infobip, Sinch 등 국가별 게이트웨이를 지원하며, 관리자 언어에 따라 국내 게이트웨이가 우선 표시된다.
  • 다국어: 노출할 언어와 순서를 지정한다. 맨 위 언어가 사이트 기본 언어가 된다.
  • 사용자 · 팀: 사용자와 팀 관리. 본인 강등·삭제 불가, 마지막 관리자 보호 같은 안전장치가 있다.
  • 감사 로그: 차단·복원·규칙 변경, 자산 변경, 사용자·키 관리 등 파괴적·보안 작업을 변경 전후 값과 함께 append-only로 기록한다.
  • 개발 · 관측: 최고 관리자 전용. Laravel Pulse 기반의 슬로우 쿼리·예외·캐시·서버 지표 관측과 DB 연결 누수 점검 도구를 제공한다.

7. 보안 설계와 권한 체계

7.1. 인증

웹 콘솔은 세션 로그인을, 외부 데이터 인제스트는 무상태 API 키(Bearer 토큰)를 사용하는 두 개의 인증 평면을 가진다. 관리자가 사용자의 등급·이름·언어를 바꾸면 재로그인 없이 다음 요청부터 즉시 반영된다.

7.2. 권한 등급

접근 제어는 오직 등급 하나의 축으로 결정된다. 역할(DBA, DevOps, 보안담당자, 관리자, 일반직원, 개발자)과 팀은 조직 관리용 라벨일 뿐 권한을 열지 않는다.
등급 값 접근 범위
demo 1 읽기 전용 – Overview·Infrastructure·Service·Assets 조회
staff 5 운영 – 위 범위 + Security·Backup 조치, 대부분의 쓰기 작업
admin 10 전체 – 위 범위 + Administration
super_admin 9 개발(Development) 섹션 전용
권한은 메뉴 숨김만으로 통제하지 않고 서버 측 미들웨어로 URL 직접 접근까지 차단하는 이중 방어 구조다. 차단·복원·설정 변경 같은 파괴적 작업은 등급 재확인, 화면상의 확인 절차, 감사 로그 기록으로 한 번 더 보호된다.

7.3. 비밀 관리 원칙

  • 비밀번호, API 키, 개인키 등은 모두 암호화 저장되며, 상당수는 쓰기 전용(write-only)이라 브라우저로 원문이 반환되지 않는다.
  • 프로젝트·보관소 등에는 비밀 값을 직접 저장하지 않고 금고 참조만 둔다.
  • 비밀 열람은 반드시 감사 로그에 남는다.
  • 백업 아티팩트는 웹으로 내려받을 수 없게 해 유출 경로를 차단한다.

8. 활용 시나리오

  • 아침 점검: Overview에서 가용성·보안 점수를 확인하고, Health에서 전 노드 온라인 여부를, 백업 보드에서 어젯밤 백업 성공 여부를, Threats에서 지난 24시간 가장 많이 건드린 IP를 훑는다.
  • 디스크 장애 대응: Storage & RAID에서 Degraded 상태의 어레이와 빠진 물리 디스크 슬롯을 확인하고, 하드웨어 랙 배치도에서 장비 위치를 찾아 교체한다.
  • DB 지연 장애: Database 화면에서 연결 포화·동시 실행 폭증·slow query 증가 여부를 판별하고, 교육 팝오버와 서버 파라미터 스냅샷을 근거로 조치한 뒤, 문제 해결 케이스에 원인과 재발 방지책을 기록한다.
  • 침입 시도 대응: 탐지된 IP를 평판 조회로 판정하고 차단하면 방화벽(ipset)까지 반영된다. 오탐이면 화이트리스트로 면책한다.
  • 신규 서버 편입: 인스턴스로 등록 → 원격 프로브로 버전·파라미터·방화벽 수집 → 보안 진단으로 베이스라인 하드닝 등급 확인 → 백업 빌더로 백업 계획 수립.
  • 랜섬웨어·재해 대비: 정기적으로 격리 환경에 복구 리허설을 하고 체크섬 검증 결과를 남겨 "실제로 복원되는 백업"을 확보한다.

9. 기술 스택

공개 매뉴얼에 언급된 내용 기준으로 정리하면 다음과 같다.
  • 백엔드: PHP Laravel, Laravel Reverb(WebSocket), Laravel Pulse·Horizon, MySQL/MariaDB, Redis
  • 프런트엔드: Vue, ECharts, CodeMirror, Konva(네트워크 토폴로지·랙 뷰), xterm.js(브라우저 SSH)
  • 수집기·러너: Node.js 기반 수집기와 pm2 러너, ssh2 기반 SSH 브리지
  • 보안 엔진: Suricata IDS, Kitsune ML 이상탐지, JA3 TLS 지문, nginx-vts, AbuseIPDB 평판, 커널 ipset/iptables
  • 배포: Docker Compose

10. 사용 설명서

공식 사이트의 사용 설명서(/manual)는 로그인 없이 누구나 열람할 수 있으며 '시작하기', 'DBA', 'DevOps', '보안' 섹터로 구성된다. 각 문서는 "개요 – 언제 쓰나 – 화면 구성 – 사용법 – 데이터 소스 – 권한 – 관련 항목"의 일관된 형식을 따르고, 상단의 [실제 화면 열기] 버튼으로 해당 콘솔 화면에 바로 이동할 수 있다. ⌘K / Ctrl-K 또는 / 키로 여는 커맨드 팔레트 검색을 지원하며, 제목·태그·소제목·본문을 가중치 기반으로 검색한다. 같은 매뉴얼이 콘솔 안에도 내장되어 있다.

11. 도입

공식 사이트에서 데모를 요청하면 실제 데이터가 흐르는 콘솔을 시연받을 수 있으며, 조직 규모에 맞는 범위부터 도입 상담을 진행한다고 안내한다. 홍보 영상은 "전담팀 없이도 사내에서 한 콘솔로 쓸 수 있게 설계되었다"고 강조한다.

12. 여담

  • 공식 한국어 홍보 영상의 제목은 "운영 · 보안 · 복구, 아직 따로 보십니까? — 인프라가드(InfraGuard) 설치형 통합 관제"로, 약 2분 분량에 인프라 운영팀·보안팀·개발팀·IT 책임자 관점의 사용 장면을 담았다.
  • 매뉴얼은 메뉴에서 "도메인"이라는 단어를 오직 웹 도메인(예: aaa.bbb.com)을 가리킬 때만 쓰고, 업무 구분은 "역할/영역"이라고 부르는 등 용어 정의가 엄격한 편이다.
  • 공개 랜딩 페이지는 콘솔과 별도 번들로 빌드되어, 콘솔 번들(약 1,283KB)에 비해 약 24KB로 가볍게 유지된다.

13. 외부 링크