웹 애플리케이션 방화벽(WAF)
WAF는 fn-knock를 거치는 HTTP 요청을 검사하고 활성화된 규칙에 따라 의심스러운 내용을 기록하거나 차단합니다. 게이트웨이 인증과 애플리케이션 보안을 보완하는 데 적합하지만, 게이트웨이를 우회하는 포트, TCP/UDP 트래픽 또는 호스트 서비스는 보호할 수 없습니다.
fn-knock는 Coraza로 시스템 규칙과 사용자 지정 규칙을 불러옵니다. 전역 스위치, 보호 수준, 규칙 활성화 상태 및 규칙 업데이트는 모두 Go 게이트웨이에 동기화됩니다.
활성화 전 확인 사항
- 실제 클라이언트 IP가 올바른지 확인합니다. CDN이나 상위 리버스 프록시를 거칠 때 게이트웨이에 프록시 노드 주소만 계속 표시되면 WAF 로그, 차단 목록 및 출발지 판단에도 잘못된 주소가 사용됩니다.
- 대상 서비스에 fn-knock를 통해서만 접근할 수 있는지 확인합니다. WAF는 게이트웨이를 우회해 업스트림 포트에 직접 연결하는 요청을 검사하지 않습니다.
- 오탐으로 차단되었을 때 규칙을 조정할 수 있도록 서비스 진입점에 의존하지 않는 관리 수단을 유지합니다.
- 상태 확인, Webhook, 업로드 엔드포인트 및 애플리케이션 API의 정상적인 요청 특성을 기록하고 활성화 후 해당 경로를 집중적으로 관찰합니다.
전역 설정
시스템 설정 → WAF에서 다음 항목을 설정합니다.
| 설정 | 기본 상태 또는 범위 | 적용 방식 |
|---|---|---|
| WAF 활성화 | 기본값은 꺼짐 | 켜면 시스템 규칙을 먼저 확인하고 동기화한 뒤 현재 보호 수준으로 게이트웨이에 불러오며, 끄면 WAF 검사를 즉시 건너뜀 |
| 자동 규칙 업데이트 | 기본값은 켜짐 | 백엔드가 시스템 규칙을 자동으로 관리하며 업데이트 실패 시 이후 주기에 다시 시도 |
| 자주 접속한 지역 예외 | 기본값은 꺼짐 | 최근 로그인에서 자주 접속한 지역의 요청은 WAF 검사를 건너뜀 |
| 보호 수준 | 레벨 1~4, 기본값은 레벨 1 | 변경 후 게이트웨이에 즉시 다시 적용 |
보호 수준은 다음과 같이 나뉩니다.
레벨 1 · 일반 보호: 일상적인 사용에 권장되는 수준입니다.레벨 2 · 강화된 보호: 탐지 민감도가 높아지므로 서비스 API를 집중적으로 관찰합니다.레벨 3 · 엄격한 보호: 오탐으로 차단될 가능성이 더 커집니다.레벨 4 · 최고 보호: 주로 단기 문제 분석용이며 검증 없이 장기간 사용하는 것은 권장하지 않습니다.
높은 보호 수준이 취약점 수정을 대신하지는 않습니다. 더 엄격한 탐지 범위를 활성화하는 만큼 정상 요청을 비정상으로 판단할 가능성도 커집니다.
자주 접속한 지역 예외의 범위
자주 접속한 지역은 최근 로그인 위치에서 가져옵니다. 예외를 켜면 해당 지역과 일치하는 요청은 일부 규칙의 점수만 낮추는 것이 아니라 WAF를 바로 건너뜁니다. 모바일 네트워크, VPN, 회사 인터넷 출구 및 IP 주소 데이터베이스의 오차로 예외 범위가 넓어질 수 있으므로 업스트림 포트도 제한하고 인증, 차단 목록 및 요청 로그를 함께 유지합니다.
스캔 차단에도 별도의 자주 접속한 지역 예외 스위치가 있습니다. WAF 스위치를 변경해도 스캐너 설정은 함께 바뀌지 않습니다.
시스템 규칙
시스템 규칙 영역에는 원격 매니페스트 시각, 로컬 동기화 시각 및 업데이트 여부가 표시되며 다음 작업을 지원합니다.
- 규칙 수동 업데이트
- 개별 규칙 활성화, 비활성화, 보기 및 다운로드
- 선택한 규칙 일괄 활성화 또는 비활성화
- 모두 활성화 또는 모두 비활성화
- “권장 규칙만 활성화” 상태로 복원
전역 WAF를 켜면 시스템 규칙 업데이트를 먼저 시도하고 프로젝트에서 오탐이 잦다고 미리 지정한 규칙 파일은 건너뜁니다. 모든 규칙을 수동으로 활성화하면 오탐이 대량으로 다시 발생할 수 있으므로 롤백할 수 있는 환경에서 먼저 검증합니다.
“권장 규칙만 활성화”는 시스템 규칙을 현재 버전의 권장 활성화 상태로 되돌립니다. 사용자 지정 규칙은 바꾸지 않으며 전역 WAF도 자동으로 켜지 않습니다. WAF가 켜져 있으면 규칙 변경 사항을 게이트웨이에 바로 불러오고, 꺼져 있으면 설정을 보관했다가 다음에 켤 때 적용합니다.
사용자 지정 규칙
사용자 지정 규칙 영역에서는 .conf 파일을 한 번에 하나 이상 업로드할 수 있으며 각 파일을 활성화 또는 비활성화하고 미리 보거나 다운로드 및 삭제할 수 있습니다. WAF가 켜져 있을 때 업로드, 활성화 상태 변경 또는 삭제를 수행하면 게이트웨이 규칙을 즉시 다시 불러옵니다.
사용자 지정 규칙은 관리자가 직접 유지 관리합니다.
- 업로드 전에 규칙 구문, 단계, 동작 및 규칙 ID를 확인해 기존 규칙과의 충돌을 방지합니다.
- 먼저 기록 또는 탐지 방식으로 관찰한 뒤 차단 동작을 활성화합니다.
- 원본
.conf파일과 변경 기록을 보관합니다. 백업 복원은 별도의 규칙 버전 관리를 대신할 수 없습니다. - 사용자 지정 규칙을 삭제하면 게이트웨이가 해당 파일을 더 이상 불러오지 않습니다. 삭제 전에 다운로드해 보관할 수 있습니다.
Host별 WAF 건너뛰기
서비스 Host는 서브도메인 매핑의 고급 설정에서 기본적으로 WAF가 활성화됩니다. 오탐 차단이나 호환성 문제를 분리해야 할 때 특정 Host의 WAF만 끌 수 있습니다. 해당 Host는 전역 WAF를 건너뛰고 다른 Host는 계속 보호됩니다.
Host별 스위치는 독립적인 WAF 인스턴스가 아닙니다. 전역 WAF가 꺼져 있으면 Host 스위치만으로 보호되지 않습니다. 문제를 해결한 뒤에는 로그에 따라 규칙을 조정하고 Host 보호를 복원해 WAF 비활성화를 장기적인 호환성 대책으로 사용하지 않습니다.
FN Connect 트래픽을 WAF로 전달
표준 fnOS FPK에서는 시스템 설정 → fnOS → FN Connect 트래픽을 WAF로 전달을 사용해 fnOS 원격 접근 서비스 FN Connect가 로컬 fnOS HTTP 포트로 보내는 트래픽을 같은 WAF로 전달할 수 있습니다. 이 스위치는 FN Connect 서비스 프로세스가 루프백 주소로 보내는 IPv4 / IPv6 요청만 처리하며 다른 로컬 프로세스나 일반 LAN 직접 접속 트래픽은 리디렉션하지 않습니다. 요청 로그와 WAF 로그의 라우트 유형은 FN Connect로 표시됩니다.
전달을 활성화하는 것만으로 공격을 차단하지는 않습니다. 전역 WAF와 관련 규칙도 활성화해야 합니다. 상태 영역은 보호 중, 탐지만, WAF 비활성 또는 성능 저하를 구분하고 감지한 fnOS 포트, 진입 상태 및 최근 동기화 오류를 표시합니다. 시스템은 약 5초마다 규칙을 다시 확인하고 fnOS HTTP 포트 변경도 따라갑니다.
현재 버전은 fnOS HTTPS 강제가 활성화된 경우 평문 FN Connect 경로를 가로채지 않으며 이 설정을 감지하면 리디렉션을 활성화하지 않습니다. 포트에 접근할 수 없거나 규칙을 설치하지 못하거나 로컬 WAF 진입점에 오류가 생기면 Fail-open으로 리디렉션을 지우고 해당 진입점을 중지해 FN Connect 전체 중단을 우선 방지합니다. 원격 접근이 계속된다는 사실을 WAF가 작동 중이라는 뜻으로 보지 말고 표시된 오류를 해결합니다.
이 기능은 공식 웹사이트의 표준 FPK에서만 제공하며 호스트 네트워크 권한이 필요합니다. Knock Lite, Docker, OpenWrt, 일반 Linux, Synology 및 Windows에서는 표시되지 않습니다. 활성화 전에 fnOS 데스크톱 또는 LAN 관리 경로를 유지하고 FN Connect에서 식별 가능한 요청을 보낸 뒤 요청 로그와 WAF 로그에서 라우트 유형과 규칙 동작을 확인합니다.
WAF 로그 확인
WAF 로그 페이지에서는 저장된 이벤트를 날짜별로 읽습니다. 현재 WAF가 꺼져 있어도 이전 이벤트는 계속 확인할 수 있습니다. 페이지에서 지원하는 작업은 다음과 같습니다.
- 로그가 있는 날짜 선택
- Trace ID, Host, 경로 또는 IP 검색
- Trace ID를 기준으로 같은 요청 흐름 확인
- 페이지마다 20, 50, 100 또는 200개를 표시하고 커서로 페이지 이동
- 출발지 IP를 하나 이상 선택해 일반 차단 목록에 추가하거나 차단 해제
- 선택한 날짜의 모든 WAF 이벤트 삭제
특정 날짜의 로그를 삭제하면 관리 페이지에서 복원할 수 없습니다. 감사 증거를 보관해야 한다면 먼저 세부 정보를 내보내거나 복사합니다.
로그 세부 정보 필드
세부 정보에는 시각, Trace ID, 트랜잭션 ID, 동작, 모드, HTTP 상태 코드, 클라이언트 IP, 원격 주소, IP 위치, 요청 메서드, 프로토콜, Host, 경로, 쿼리, 전체 요청 주소, User-Agent, Referer, 라우트 유형, 라우트 키, 업스트림 대상, 규칙 세트, 규칙 ID, 규칙 파일과 줄 번호, 차단 정보 및 오류가 포함됩니다.
동작은 일반적으로 다음과 같이 나뉩니다.
기록됨: 규칙과 일치해 이벤트를 기록했지만 이로 인해 요청을 중단하지는 않았습니다.차단됨: 규칙이 요청을 중단했으며 규칙 ID, 동작 및 응답 상태 코드를 기록했습니다.통과: 이벤트가 WAF 처리 절차에 들어온 뒤 계속 통과했습니다.
같은 이벤트가 여러 규칙과 일치할 수 있습니다. 목록에는 주요 규칙이 표시되고 세부 정보에는 나머지 규칙도 보관됩니다. 문제를 분석할 때 첫 번째 규칙 이름만으로 판단하지 않습니다.
오탐 차단 문제 해결
- 요청 로그에서 요청이 게이트웨이에 도달했는지 확인하고 시각, Host, 경로, 클라이언트 IP 및 Trace ID를 기록합니다.
- WAF 로그에서 Trace ID를 검색합니다. 결과가 없으면 Host, 경로 또는 IP로 다시 검색합니다.
- 동작, 모드, 차단 상태 코드, 주요 규칙 및 규칙 파일 위치를 확인합니다.
- 해당 규칙 파일을 미리 보고 시스템 규칙인지 사용자 지정 규칙인지 확인합니다.
- 개별 규칙을 일시적으로 끄거나 보호 수준을 낮춘 뒤 요청을 재현하는 방법을 우선 사용합니다. 전역 WAF를 바로 끄는 것은 권장하지 않습니다.
- 정상 요청이 복구되고 비정상 샘플은 계속 기록되거나 차단되는지 검증한 뒤 조정 사항을 확정합니다.
WAF 로그에 이벤트가 없다면 게이트웨이 요청 제한, 일반 차단 목록, 접근 범위, 스캔 차단 또는 인증 절차에서 요청을 먼저 처리했는지와 대상 Host에서 WAF를 껐는지도 확인합니다.
보호하지 않는 범위
fn-knock를 거치지 않는 원본 포트
DNS, 라우터, 클라우드 보안 그룹 및 잘못된 CDN 오리진 연결
서비스의 권한 설계, 데이터 백업 및 취약점 수정
HTTP가 아닌 프로토콜 매핑 트래픽
