POSA_LEAKSMS/docs/SECURITY_EVIDENCE_PACKAGE.md
유창욱 90f121e14c chore: import codebase with security hardening
SHT30 온습도 모니터링 시스템 전체 소스(서버 PHP, STM32 펌웨어, SQL, 테스트).
전체 코드리뷰에서 도출된 보안 하드닝 10건 반영:
- 요청 서명 HMAC-SHA256 전환(펌웨어 sig.c/서버 config.php/호스트 패리티 동시)
- 재전송 방어 + 기본 API_KEY fail-closed + 디바이스 문자열 정제(api/sensor_data.php)
- 오프라인 SMS 중복 발송 경합 제거(cron_heartbeat.php, 원자적 선점)
- CSV 수식 주입 방지(monthly_report.php), 감사로그 회전 락(retention_cleanup.php)
- 브루트포스 카운터 원자화(login.php), 예시 TOTP 비밀키 무효화, 마이그레이션 멱등화

_backup/(하드코딩 실 비밀값 포함)·config.local.php·런타임 상태는 .gitignore 제외.
2026-06-20 09:37:40 +09:00

5.3 KiB

보안대책서 첨부자료 패키지

작성일: 2026-05-20
목적: HWP 보안대책서에 붙일 증적 자료를 빠짐없이 모으기 위한 패키지 구성안

1. 제출 패키지 구성

아래 순서로 첨부하면 심사자가 “통제 항목 → 실제 적용 증적 → 운영 절차”를 따라 확인하기 쉽습니다.

순서 자료 생성/준비 방법
1 보안통제 매트릭스 security_evidence.php?format=md 다운로드 후 HWP 표로 반영
2 서버 운영 점검 결과 setup_wizard.php, security_evidence.php 화면 캡처
3 월간 운영 보고서 monthly_report.php PDF 또는 CSV
4 단말 운영 증적 STM32 USART3(PD8/PD9, 115200) 부팅 콘솔 로그(링크업/DHCP/SNTP/TLS/서버 200) 캡처
5 네트워크 증적 방화벽 정책, 단말 인바운드 차단 확인, HTTPS 인증서 화면
6 물리 설치 증적 STM32 보드, SHT30 센서 설치 사진과 장비 ID
7 관리자 접근통제 증적 MFA 등록 화면, 로그인 화면, 감사로그 존재 확인
8 측정/임계 경보 증적 측정값 저장(sensor_metric), 종류별 경보·정상복귀 SMS(sms_log) 화면
9 운영 절차 증적 운영·보안 점검표, 보관기간 정리 dry-run, 백업 파일 목록, 수신자 현행화 확인
10 소스코드 기반 설명 SOURCE_SECURITY_EVIDENCE.md의 기술통제 설명

보안대책서용 구성도/흐름도 PNG는 scripts/generate_security_plan_images.py로 생성하며(온습도 흐름으로 갱신됨), PNG 재생성은 운영자가 python scripts/generate_security_plan_images.py로 수행합니다.

2. 프로젝트에서 자동 또는 반자동으로 만들 수 있는 자료

자료 파일/화면 비고
보안 증적 보고서 php/security_evidence.php 운영 점검 결과와 보안통제 매트릭스
Markdown 증적 php/security_evidence.php?format=md HWP 붙여넣기용
단말 증적 STM32 USART3 부팅 콘솔 로그 캡처 비밀값 원문 없이 링크업/DHCP/SNTP/TLS/서버 200 상태만 출력
월간 보고서 php/monthly_report.php 생성 시각과 보고 범위 포함
설치 점검 php/setup_wizard.php DB, 설정, 권한, SMS 테스트
MFA 등록 증빙 docs/evidence/security_plan_mfa_evidence.html 보안대책서 삽입 문구, MFA 화면 캡처, Mermaid 흐름도
기술 설명 docs/SOURCE_SECURITY_EVIDENCE.md API, HTTPS, 측정값 검증, 세션, 비밀값 분리 설명
운영 점검표 docs/OPERATIONS_SECURITY_CHECKLIST.md 월간 점검 양식
보관기간 정리 결과 php/retention_cleanup.php --dry-run SMS 로그, 센서 로그, 온습도 측정 이력, 관리자 감사로그 정리 대상 확인
백업·복구 증빙 scripts/backup_evidence.php 백업 파일 목록, 설정/감사로그 존재 여부, 복구 테스트 결과

3. 운영자가 반드시 채워야 하는 자료

코드로 대신 만들 수 없는 실제 운영 증적입니다.

항목 필요한 내용
실제 도메인 HTTPS 접속 화면, 인증서 정보, Cafe24 SSL 설정
설치 위치 STM32 보드와 SHT30 센서 설치 사진, 장비 ID, 설치 장소
네트워크 단말이 연결된 망, 방화벽 정책, 외부 인바운드 차단 여부
운영자 점검 담당, SMS 수신자, 장애 대응 담당 역할
보관기간 센서 로그, SMS 로그, 온습도 측정 이력, 감사로그 보관기간
백업 DB/설정 파일 백업 주기와 최근 백업 파일 목록
관리자 MFA 실제 운영 담당자 인증 앱 등록 확인, 담당자 변경 시 재등록 이력
감사로그 로그인 성공/실패, MFA 등록 검증 로그 파일 존재 여부

4. 권장 폴더명

보안대책서와 함께 제출할 파일을 아래처럼 묶습니다.

security-evidence-YYYYMMDD/
  01_security_control_matrix.md
  02_setup_wizard.png
  03_security_evidence.png
  04_monthly_report.pdf
  05_device-security-evidence.md
  06_https_certificate.png
  07_network_firewall_policy.pdf
  08_installation_photos/
  09_mfa_evidence.html
  10_metric_alert_sms.png
  11_retention_cleanup_dry_run.json
  12_backup_restore_evidence.md
  13_operations_security_checklist.md

5. 제출 전 점검

  • API 키, SMS secure key, DB 비밀번호, 관리자 원문 비밀번호, ADMIN_TOTP_SECRET 원문이 첨부자료에 노출되지 않는다.
  • security_evidence.php 점검 결과에 중요 실패 항목이 있으면 조치 결과 또는 예외 사유를 적는다.
  • 단말 증적에는 환경변수 존재 여부만 있고 원문 값은 없다.
  • MFA 증빙은 운영 비밀키가 아닌 증빙용 임시 키 또는 마스킹된 키를 사용한다.
  • 측정/경보 증빙은 측정값 저장(sensor_metric)과 종류별 경보·정상복귀 SMS(sms_log)를 함께 보여준다.
  • 실제 도메인은 https://로 접속되는 화면을 포함한다.
  • 네트워크 증적에는 단말로 들어오는 불필요한 포트가 없다는 근거가 포함된다.
  • 월간 보고서에는 생성 시각과 보고 범위가 보인다.
  • 보관기간 정리는 --dry-run 결과를 먼저 보관하고, 실제 삭제는 백업 완료 후 수행한다.
  • 백업 파일 목록과 담당자 역할이 최신이다.