구글 애드센스 사이트 소유권 인증이 계속 실패했다. “사이트를 확인할 수 없습니다"라는 메시지만 반복해서 뜨고, 메타태그도 붙였고 스니펫도 넣었는데 변화가 없었다.
가장 먼저 의심한 건 Cloudflare의 Bot Fight Mode였다. 자동화된 크롤러를 막는 기능이니, 구글 애드센스의 검증 크롤러도 같이 막고 있을 가능성이 실무에서 꽤 흔한 원인이기 때문이다. 그런데 이 설정을 대시보드에서 찾는 것부터 난관이었다 — 클라우드플레어 UI가 한글로 번역되어 있다 보니 메뉴 이름과 실제 기능이 매끄럽게 매칭되지 않았고, 예전에 봤던 것 같은 비슷한 화면은 정작 모드를 바꿀 수 있게 되어 있지도 않았다.
결국 API 토큰 발급해서 AI를 통해 확인하기로 했다. 여기서도 한 번에 되지 않았다 — 처음 받은 토큰은 계정 범위(/accounts/{id}/tokens/verify)에서만 유효한 R2 스토리지용 토큰이었다. “이전에 준 토큰이 줄 수 있는 모든 권한을 준 토큰"이라는 말과 달리, 특정 엔드포인트(bot_management, dns_records)는 여전히 인증 오류를 냈다 — 어떤 API 응답에 넓은 권한 목록이 보인다고 해서 그게 그 토큰의 실제 스코프라는 보장은 없다는 걸 다시 확인한 순간이었다. 그건 계정 역할의 권한 범위를 보여주는 것이지, 그 토큰에 실제로 부여된 권한이 아니다. 결국 세 번째로 받은, 더 신중하게 스코프를 지정한 토큰으로 필요한 확인이 전부 가능해졌다.
확인 결과는 예상을 완전히 벗어났다. Bot Fight Mode는 꺼져 있었고(fight_mode: false), 커스텀 WAF 규칙도 없었고(클라우드플레어 기본 관리형 룰셋만 있었다), 보안 레벨도 “중간"이라 공격적이지 않았다. 실제로 curl로 사이트를 찔러봐도 깨끗한 200 응답만 돌아왔다. 클라우드플레어 보안 설정 쪽에서는 걸릴 만한 게 아무것도 없었던 것이다.
돌파구는 전혀 다른 곳에서 나왔다. 애드센스에 등록된 도메인이 www.mhub.uk가 아니라 그냥 mhub.uk(최상위 apex 도메인)였다는 사실을 확인한 뒤였다. nslookup mhub.uk 8.8.8.8을 날려보니 “Can’t find mhub.uk: No answer” — DNS 레코드 자체가 하나도 없었다. 구글의 검증 크롤러는 존재하지도 않는 도메인에 계속 접속을 시도하고 있었던 셈이다. 보안 설정과는 완전히 무관한, 그냥 DNS가 비어 있던 문제였다.
고치는 방법은 의외로 간단했다. Cloudflare Tunnel 대시보드의 “게시된 애플리케이션 경로"에 이미 등록되어 있던 www.mhub.uk와 똑같은 패턴으로 mhub.uk 항목 하나를 추가하면 끝이었다 — 별도의 DNS API 호출도, 복잡한 레코드 설정도 필요 없었다. 그럴듯한 보안 설정 이론을 세우고 검증하는 데 훨씬 많은 시간을 썼지만, 정작 원인은 “그 도메인 자체가 어디에도 연결되어 있지 않았다"는, 보안과는 아무 상관 없는 가장 단순한 사실이었다.


💬 댓글