Nginx Proxy GuardNginx Proxy Guard

보안 강화 (Hardening)

Rate Limiting과 Fail2ban을 통해 무차별 대입 공격 및 DDoS 공격을 방어합니다.

Rate Limiting

요청 속도를 제한하여 과도한 트래픽으로부터 서버를 보호합니다.

설정 옵션

옵션설명기본값
초당 요청 수 (RPS)허용되는 초당 최대 요청10
버스트 크기순간 트래픽 허용량20
제한 방식IP, URI, IP+URIIP
응답 코드제한 초과 시 응답429

제한 방식

방식설명사용 시기
IP 기반클라이언트 IP별 제한일반적인 사용
URI 기반요청 경로별 제한API 엔드포인트 보호
IP+URIIP와 URI 조합세밀한 제어

화이트리스트 IP

Rate Limiting을 우회하는 IP를 설정합니다.

  • 신뢰할 수 있는 내부 IP
  • 모니터링 시스템 IP
  • 파트너사 IP

Fail2ban 통합

실패한 요청을 기반으로 자동으로 IP를 차단합니다.

설정 옵션

옵션설명기본값
최대 재시도차단까지 허용 실패 횟수5
탐지 시간실패 집계 기간600초
차단 시간IP 차단 유지 시간3600초
트리거 상태 코드실패로 간주할 상태 코드401, 403

동작 방식

  1. 클라이언트가 설정된 상태 코드의 응답을 받음
  2. 탐지 시간 내에 실패 횟수 집계
  3. 최대 재시도 초과 시 자동 차단
  4. 차단 시간 후 자동 해제

차단 유형

유형설명
임시 차단설정된 시간 후 자동 해제
영구 차단수동 해제 필요

IP 차단 관리

차단된 IP 목록

  • 현재 차단된 모든 IP 조회
  • 차단 소스 (Fail2ban, WAF, 수동)
  • 차단 시간 및 만료 시간
  • 차단 사유

수동 IP 차단

  • 개별 IP 또는 CIDR 범위 차단
  • 영구 차단 옵션
  • 차단 메모 기록

IP 차단 이력

모든 차단/해제 이벤트가 기록됩니다.

필드설명
시간이벤트 발생 시간
IP대상 IP 주소
액션ban 또는 unban
소스fail2ban, waf_auto_ban, manual, api, expired
사유차단 사유

차단 통계

  • 총 차단 수
  • 소스별 차단 분포
  • 시간대별 차단 추이
  • 특정 IP의 차단 이력

URI 차단

특정 URI 패턴에 대한 접근을 차단합니다.

호스트별 URI 차단

각 프록시 호스트별로 독립적인 URI 차단 규칙을 설정합니다.

  • 정규식 패턴 지원
  • 와일드카드 지원
  • 우선순위 설정

전역 URI 차단

모든 호스트에 공통으로 적용되는 URI 차단 규칙입니다.

  • 보안 취약점 경로 차단
  • 관리자 페이지 보호
  • 민감한 파일 접근 차단

URI 차단 예시

# WordPress 관리자 보호
/wp-admin/*
/wp-login.php

# 민감한 파일 차단
/.env
/.git/*
/config/*

# API 엔드포인트 보호
/api/internal/*

Exploit 차단

일반적인 공격 패턴을 자동으로 차단합니다.

규칙은 카테고리별로 묶여 있으며, 카테고리/규칙 단위로 켜고 끌 수 있습니다.

차단 카테고리

카테고리패턴 예시
SQL InjectionUNION SELECT, ' OR '1'='1
XSS / Code Injection<script>, javascript:
Remote File Inclusion (RFI)http://, php:// 등 원격 포함
Path Traversal../, ..%2f
Scanner / Tool Detection알려진 스캐너/공격 도구 탐지
HTTP Method위험한 HTTP 메서드 차단

특정 URI에서 오탐이 발생하면, 규칙별로 URI 범위를 지정한 예외(URI-scoped exception)를 추가해 해당 경로에서만 규칙을 우회시킬 수 있습니다.

고급 설정 보안

위험한 지시어 차단

Nginx 고급 설정에서 보안상 위험한 지시어를 차단합니다.

  • load_module - 외부 모듈 로드
  • lua_* - Lua 스크립트 실행
  • perl_* - Perl 스크립트 실행
  • js_* - JavaScript 실행
  • proxy_pass 내 쉘 명령어

설정 검증

  • Nginx 설정 문법 검사
  • 보안 취약점 패턴 탐지
  • 위험한 설정 경고

설정 자동 롤백 (Config Rollback)

Nginx 설정 변경 시 안전하게 적용하기 위한 자동 롤백 메커니즘을 제공합니다.

동작 방식

  1. 백업 생성: 설정 변경 전 기존 설정 파일을 자동 백업
  2. 새 설정 생성: 변경된 설정으로 새로운 Nginx 설정 파일 생성
  3. 설정 테스트: nginx -t로 문법 및 유효성 검사
  4. 조건부 적용: 테스트 통과 시에만 nginx -s reload 실행
  5. 자동 롤백: 테스트 실패 시 백업된 설정으로 즉시 복원

롤백 대상

파일설명
도메인.conf프록시 호스트 설정 파일
host_.confWAF 설정 파일 (ModSecurity)
banned_ips.confIP 차단 목록
default.conf기본 서버 설정

안전 보장

  • Atomic Write: 임시 파일 → fsync → rename으로 중간 상태 없는 파일 쓰기
  • Global Mutex: 모든 Nginx 작업은 뮤텍스로 직렬화되어 동시 변경 방지
  • Fail-Safe: nginx -t 실패 시 Nginx reload 절대 실행하지 않음

보안 헤더

보안 헤더 프리셋 (Security Header Presets)

보안 수준에 따라 미리 정의된 보안 헤더 프리셋을 제공합니다.

프리셋보안 수준설명
Strict최고HSTS preload 포함, CSP 제한적, X-Frame-Options DENY
Moderate균형HSTS includeSubdomains, SAMEORIGIN, 적절한 CSP
Relaxed호환성기본적인 보안 헤더만, 호환성 우선

Strict 프리셋

  • HSTS: 1년, includeSubDomains, preload 활성화
  • X-Frame-Options: DENY
  • Content-Security-Policy: self 소스만 허용
  • Permissions-Policy: 카메라, 마이크 등 비활성화

Moderate 프리셋

  • HSTS: 1년, includeSubDomains, preload 비활성화
  • X-Frame-Options: SAMEORIGIN
  • Referrer-Policy: strict-origin-when-cross-origin

Relaxed 프리셋

  • HSTS: 1일, includeSubDomains 비활성화
  • X-Frame-Options: SAMEORIGIN
  • Referrer-Policy: no-referrer-when-downgrade

커스텀 헤더

프리셋 외에도 개별 헤더를 커스텀할 수 있습니다.

HSTS (HTTP Strict Transport Security)

Strict-Transport-Security: max-age=31536000; includeSubDomains; preload

콘텐츠 보안

헤더설명
X-Content-Type-Optionsnosniff - MIME 스니핑 방지
X-Frame-OptionsDENY 또는 SAMEORIGIN - 클릭재킹 방지
X-XSS-Protection1; mode=block - XSS 필터
Referrer-Policystrict-origin-when-cross-origin
Permissions-Policy브라우저 기능 접근 제어

Content-Security-Policy

  • 스크립트 소스 제한
  • 스타일 소스 제한
  • 프레임 소스 제한
  • 폼 액션 제한

TLS 보안

프로토콜 버전

  • TLS 1.2 이상만 허용
  • SSL 2.0/3.0, TLS 1.0/1.1 비활성화

암호화 스위트

  • 강력한 암호화 알고리즘만 허용
  • 취약한 암호화 비활성화
  • Forward Secrecy 지원

OCSP Stapling

  • 인증서 상태 확인 최적화
  • 클라이언트 프라이버시 보호