로그인 전 봇 차단
사람 확인은 로그인 절차의 맨 앞에서 자동화된 요청이 인증 API로 바로 들어오는 것을 줄여 줍니다. 로그인 자격 증명, IP 허용 목록 또는 WAF를 대신하는 기능은 아닙니다.
시스템 설정 → Challenge에서 확인 방식을 선택하고 저장합니다. 이후 새로 여는 로그인 페이지부터 변경된 설정을 사용하며 기존 세션은 만료되지 않습니다.
선택 가능한 방식
| 방식 | 특징 | 적합한 환경 |
|---|---|---|
PoW | 브라우저에서 작업 증명을 한 번 수행하며 외부 서비스에 의존하지 않음 | 외부 의존성을 줄이고 약간의 클라이언트 연산을 허용하려는 환경 |
| Cloudflare Turnstile | Cloudflare에서 사람 확인 수행 | 이미 Cloudflare를 사용하며 관리형 사람 확인을 이용하려는 환경 |
PoW는 기본으로 내장된 방식입니다. 브라우저가 SHA-256 챌린지를 받은 뒤 로컬에서 증명값을 계산합니다. 챌린지는 5분 동안 유효하고 성공할 때 한 번만 사용할 수 있습니다. 페이지에는 난이도 조절 항목이 없으며 현재 서버가 제공하는 최대 탐색 범위는 100000입니다.
Turnstile을 선택하기 전에 Cloudflare에서 위젯을 만들고 사이트 키와 비밀 키를 fn-knock에 입력합니다. 자세한 과정은 Cloudflare Turnstile을 참고합니다.
방식 전환 및 저장
시스템 설정 → Challenge에서 PoW 또는 Cloudflare Turnstile을 선택합니다. Turnstile을 선택할 때는 사이트 키와 비밀 키를 모두 입력합니다. 하나라도 빠지면 프런트엔드와 백엔드에서 저장을 거부합니다.
사이트 키는 공개 로그인 페이지로 전달되어 위젯을 렌더링하는 데 사용됩니다. 비밀 키는 서버에만 저장되고 Cloudflare에 토큰을 검증할 때 사용됩니다. PoW로 되돌려도 기존 Turnstile 값은 설정에 남아 있으므로 나중에 다시 선택하면 그대로 사용할 수 있습니다.
제공자를 변경해도 로그인된 세션은 만료되지 않고 이후 인증 절차에 들어오는 새 요청에만 적용됩니다. 이미 열려 있는 로그인 페이지에는 이전 챌린지가 남아 있을 수 있으므로 페이지를 새로 고친 뒤 테스트합니다.
확인 방식의 적용 범위
- 사람 확인은 fn-knock 로그인 페이지를 거치는 트래픽만 보호합니다.
- 사설망과 로컬 출발지는 기본적으로 로컬 예외가 적용되므로 LAN에서의 결과만으로 인터넷 환경의 작동 여부를 판단할 수 없습니다.
- Turnstile을 사용하기 전에 브라우저에서 Cloudflare 확인 리소스에 접속 가능한지 확인합니다. 제한된 네트워크나 차단 규칙 때문에 위젯이 표시되지 않거나 확인에 실패할 수 있습니다.
- 확인 방식을 바꾼 뒤에는 시크릿 창과 모바일 네트워크에서 전체 로그인 절차를 한 번 완료합니다.
문제 해결
- 설정이 저장되었는지 확인하고 로그인 페이지를 다시 엽니다.
- PoW가 만료되었거나 이미 사용되었다는 메시지가 나오면 페이지를 새로 고쳐 새 챌린지를 받습니다. 시스템 시간이 잘못되어도 유효 기간 판정에 문제가 생깁니다.
- Turnstile에서는 사이트 키, 비밀 키, 위젯의 호스트 이름이 실제 로그인 도메인과 일치하는지 확인합니다.
- 로그인 도메인의 DNS가 올바르게 설정되어 있고 HTTPS를 사용하는지 확인합니다.
- 브라우저 콘솔, 요청 로그 및 이벤트 센터에서 오류를 확인합니다.
