n8n Orchestrator + Hermes Agent 기반 5단계 안전 게이트
백업 없이 시작하지 않는다. 검증 없이 끝내지 않는다. 롤백 계획 없이 변경하지 않는다.
변경 로그
v1.6 (04-30) 아키텍처·WP 모니터링·변경로그 · v1.5 (04-30) WP 보안·DO Spaces·7일 롤링 전체 보기
| 서버 | 백업 규칙 | 적용 프레임워크 |
|---|---|---|
| 우리 서버 현재 · 연습장 |
변경 전 백업 여부를 묻고 진행 | 강제 백업 불필요. 프로덕션 아님. |
| 고객사 서버 운영 · 수술실 |
무조건 자동 백업 후 진행 | 아래 5단계 전체 적용 |
이미지 클릭 시 전체 화면으로 확대됩니다
| 대상 | 저장소 | 보관 정책 |
|---|---|---|
| 우리 서버 (작업 전) | DigitalOcean Spaces 외부 오브젝트 스토리지 · 서버 장애와 무관 |
사이트별 업로드 → 작업 완료 24시간 후 자동 삭제 |
| 고객사 서버 (정기) | DigitalOcean Spaces | 사이트별 보관 · 7일 롤링 (매일 새벽 점검) |
| 대상 | 명령 | 저장 |
|---|---|---|
| DB 덤프 | mysqldump {db} | gzip | Spaces: {bucket}/{site}/db/{date}.sql.gz |
| 파일 전체 | tar -czf - public_html/ | Spaces: {bucket}/{site}/files/{date}.tar.gz |
업로드 도구: s3cmd 또는 rclone → DigitalOcean Spaces.
무결성 검증: 업로드 후 파일 크기 비교. 실패 시 Telegram 알림.
Hermes가 변경 실행 전 자동 수행:
{bucket}/snapshots/{site}/{timestamp}/)| 위험도 | 절차 | 예시 |
|---|---|---|
| LOW | 직접 적용. Pre-change 백업은 필수 | WP 플러그인 업데이트 |
| MEDIUM | 스테이징에서 1차 검증 후 적용 subdomain: staging.{site} / DB 복제 → 변경 → 테스트 → 승인 |
테마 수정, 기능 변경 |
| HIGH | 스테이징 풀 테스트 + 김몽이 승인 유지보수 시간대 공지 + 롤백 계획 문서화 |
WP 코어 업데이트, DB 마이그레이션 |
n8n 트리거 (매주 월요일 새벽 4시) │ ├─[1] 전체 사이트 목록 조회 (HestiaCP) │ ├─[2] 사이트별 처리 │ ├─[2a] pre-change 체크 ← HTTP 200 확인, 실패=스킵 │ ├─[2b] pre-change 백업 ← Hermes webhook, 실패=중단 │ ├─[2c] 변경 실행 ← Hermes webhook │ ├─[2d] post-change 검증 ← 9항목 체크리스트 │ ├─[2e] 결과 기록 ← 성공/실패 로그 │ └─[롤백] 실패 시 ← DB+파일 복원, 재검증 │ └─[3] 전체 결과 Telegram 보고서
변경 후 자동 검증. 하나라도 실패 = 자동 롤백. 수동 판단 없음.
기본 상태
워드프레스 보안
지속 모니터링 (매일 새벽 자동 스캔)
| 점검 항목 | 기준 | 방법 |
|---|---|---|
| 파일 무결성 | WP 코어 파일 checksum (sha256) 대조 | wp core verify-checksums → 변조 감지 시 알림 |
| 플러그인/테마 변조 | 설치 시점 원본과 현재 파일 diff | wp-content 하위 php/js 파일 hash 비교 (baseline 대조) |
| 신규·의심 파일 | .php, .suspected, 비정상 확장자 | 24시간 내 생성된 파일 중 php/phtml/php7 등 검출 |
| DB 무결성 | 테이블 구조 변경, 의심 레코드 | Schema snapshot과 현재 상태 diff / wp_users 신규 관리자 계정 감지 |
| SQL Injection 흔적 | 의심 쿼리 패턴 (UNION, SLEEP, BENCHMARK 등) | MySQL slow query log + WP debug.log 패턴 스캔 |
| 악성코드 시그니처 | base64_decode, eval, gzinflate, shell_exec 등 | grep -rE 패턴 매칭 → 의심 파일 리스트 |
| 업로드 디렉토리 | 실행 가능 파일 존재 여부 | uploads 내 .php .phtml .shtml 검출 → 즉시 알림 |
| 외부 연결 | 의심스러운 아웃바운드 요청 | access log에서 비정상 User-Agent·referrer·POST 패턴 탐지 |
baseline 생성: 사이트 첫 등록 시 깨끗한 상태에서 모든 파일 hash DB 저장 (Hermes 스냅샷). 이후 매일 diff 비교.
트리거 조건 (하나라도 해당되면 즉시):
롤백 절차 (완전 자동, 3분 이내 목표):
mysql {db} < pre_change_backup.sqlcp -r pre_change_files/* public_html/1. 플러그인 업데이트 후 사이트 다운
자동 감지 (HTTP 500) → 자동 롤백 → 3분 내 복구 → Telegram: "a003 복구 완료 (플러그인 X 충돌, 롤백됨)"
2. DB 마이그레이션 실패
Pre-change 스냅샷 자동 복원 → 실패 시 일일 백업에서 수동 복원 → 최악: 전날 새벽 3시 백업 (최대 24시간 손실)
3. 서버 전체 장애
다른 서버에 백업 복원 → DNS 변경 → DR 서버 사전 확보 필요
4. 랜섬웨어 / 해킹
감염 이전 백업에서 전체 복원 → 파일 전면 교체 → 비밀번호 전면 변경 → 보안 감사 (hermes-security-audit)
| 버전 | 날짜 | 변경 사항 |
|---|---|---|
| v1.6 | 2026-04-30 | WP 지속 모니터링 섹션 (파일 무결성·SQL Injection·악성코드 시그니처 등 8항목) / 시스템 아키텍처 다이어그램 (dark SVG) / 변경 로그 상단·하단 / 번호 중복 제거 / "(중요 고객사만)" 문구 삭제 |
| v1.5 | 2026-04-30 | WP 보안 체크리스트 11항목 (wp-config 권한·xmlrpc·DISALLOW_FILE_EDIT 등) / 버전 표시·타임스탬프 / DigitalOcean Spaces 백업 저장소 / 7일 롤링 |
v1.5 이전은 초기 구축 버전입니다.