보안 강화 (Hardening)
Rate Limiting과 Fail2ban을 통해 무차별 대입 공격 및 DDoS 공격을 방어합니다.
Rate Limiting
요청 속도를 제한하여 과도한 트래픽으로부터 서버를 보호합니다.
설정 옵션
| 옵션 | 설명 | 기본값 |
|---|---|---|
| 초당 요청 수 (RPS) | 허용되는 초당 최대 요청 | 10 |
| 버스트 크기 | 순간 트래픽 허용량 | 20 |
| 제한 방식 | IP, URI, IP+URI | IP |
| 응답 코드 | 제한 초과 시 응답 | 429 |
제한 방식
| 방식 | 설명 | 사용 시기 |
|---|---|---|
| IP 기반 | 클라이언트 IP별 제한 | 일반적인 사용 |
| URI 기반 | 요청 경로별 제한 | API 엔드포인트 보호 |
| IP+URI | IP와 URI 조합 | 세밀한 제어 |
화이트리스트 IP
Rate Limiting을 우회하는 IP를 설정합니다.
- 신뢰할 수 있는 내부 IP
- 모니터링 시스템 IP
- 파트너사 IP
Fail2ban 통합
실패한 요청을 기반으로 자동으로 IP를 차단합니다.
설정 옵션
| 옵션 | 설명 | 기본값 |
|---|---|---|
| 최대 재시도 | 차단까지 허용 실패 횟수 | 5 |
| 탐지 시간 | 실패 집계 기간 | 600초 |
| 차단 시간 | IP 차단 유지 시간 | 3600초 |
| 트리거 상태 코드 | 실패로 간주할 상태 코드 | 401, 403, 404 |
동작 방식
- 클라이언트가 설정된 상태 코드의 응답을 받음
- 탐지 시간 내에 실패 횟수 집계
- 최대 재시도 초과 시 자동 차단
- 차단 시간 후 자동 해제
차단 유형
| 유형 | 설명 |
|---|---|
| 임시 차단 | 설정된 시간 후 자동 해제 |
| 영구 차단 | 수동 해제 필요 |
IP 차단 관리
차단된 IP 목록
- 현재 차단된 모든 IP 조회
- 차단 소스 (Fail2ban, WAF, 수동)
- 차단 시간 및 만료 시간
- 차단 사유
수동 IP 차단
- 개별 IP 또는 CIDR 범위 차단
- 영구 차단 옵션
- 차단 메모 기록
IP 차단 이력
모든 차단/해제 이벤트가 기록됩니다.
| 필드 | 설명 |
|---|---|
| 시간 | 이벤트 발생 시간 |
| IP | 대상 IP 주소 |
| 액션 | ban 또는 unban |
| 소스 | fail2ban, waf, 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 Injection | UNION SELECT, ' OR '1'='1 |
| XSS | <script>, javascript: |
| 경로 탐색 | ../, ..%2f |
| 명령어 인젝션 | ; cat, ` |
고급 설정 보안
위험한 지시어 차단
Nginx 고급 설정에서 보안상 위험한 지시어를 차단합니다.
load_module- 외부 모듈 로드lua_*- Lua 스크립트 실행perl_*- Perl 스크립트 실행js_*- JavaScript 실행proxy_pass내 쉘 명령어
설정 검증
- Nginx 설정 문법 검사
- 보안 취약점 패턴 탐지
- 위험한 설정 경고
보안 헤더
HSTS (HTTP Strict Transport Security)
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
콘텐츠 보안
| 헤더 | 설명 |
|---|---|
| X-Content-Type-Options | nosniff - MIME 스니핑 방지 |
| X-Frame-Options | DENY - 클릭재킹 방지 |
| X-XSS-Protection | 1; mode=block - XSS 필터 |
| Referrer-Policy | strict-origin-when-cross-origin |
Content-Security-Policy
- 스크립트 소스 제한
- 스타일 소스 제한
- 프레임 소스 제한
- 폼 액션 제한
TLS 보안
프로토콜 버전
- TLS 1.2 이상만 허용
- SSL 2.0/3.0, TLS 1.0/1.1 비활성화
암호화 스위트
- 강력한 암호화 알고리즘만 허용
- 취약한 암호화 비활성화
- Forward Secrecy 지원
OCSP Stapling
- 인증서 상태 확인 최적화
- 클라이언트 프라이버시 보호