Cloudflare 오리진 IP 화이트리스트 설정: 비 CF 트래픽을 완전히 차단하는 3가지 방법

오리진 IP가 노출되면 Cloudflare의 보호는 무용지물이 됩니다. 공격자가 오리진 IP를 알아내면 Cloudflare를 우회해 서버를 직접 공격할 수 있습니다. DDoS 트래픽이 오리진 서버에 바로 도달하고, 포트를 스캔하거나 취약점을 탐색할 수도 있습니다. SSL 인증서 조회 사이트, 캐시된 과거 DNS 레코드, CDN을 거치지 않는 서브도메인이나 메일 시스템 등 노출 경로도 다양합니다.
오리진 서버를 제대로 보호하려면 Cloudflare 프록시만으로는 부족합니다. 서버 측에 방화벽을 설정해 Cloudflare의 오리진 요청 IP만 허용하고 나머지 트래픽은 모두 차단해야 합니다. 이 글에서는 가장 간단한 aaPanel, 더 유연한 순수 Nginx, 가장 안전한 오리진 인증서 검증까지 세 가지 방법을 설명합니다. 전체 IP 목록, 설정 단계, 테스트 방법, 자주 발생하는 문제도 함께 다룹니다.
비 CF 트래픽을 제한해야 하는 이유: 오리진 IP 노출의 실제 위험
먼저 오리진 IP가 어떻게 노출되는지 살펴보겠습니다. 저도 예전에는 도메인을 Cloudflare로 연결하기만 하면 충분하다고 순진하게 생각했지만, 공격자가 IP를 찾는 방법은 생각보다 많았습니다.
일반적인 IP 노출 경로
가장 대표적인 사례는 SSL 인증서 조회입니다. myssl.com 같은 사이트에서 인증서를 검사하면 실제 IP가 노출될 가능성이 있습니다. 웹사이트에 Cloudflare CDN을 적용하고 SSL 인증서를 활성화한 뒤 인증서를 검사하면 오리진 IP 주소가 표시될 수 있기 때문입니다. 저도 이 사실을 처음 알았을 때 꽤 놀랐습니다. 사실상 다른 사람에게 공격 대상을 알려 주는 셈이니까요.
또 다른 경로는 과거 DNS 레코드입니다. 인터넷의 많은 DNS 조회 서비스가 분석 결과를 캐시하며, 일부 서비스 제공자는 데이터를 영구 보관한다고 밝히기도 합니다. 지금 도메인을 Cloudflare로 옮겼더라도 누군가 과거 기록을 조회하면 이전 오리진 IP를 찾아낼 수 있습니다.
서브도메인이나 메일 시스템도 큰 허점이 될 수 있습니다. 메인 사이트에는 CDN을 적용했지만 서브도메인이나 메일 시스템은 빠뜨리는 경우가 많습니다. 공격자가 mail.example.com 같은 서브도메인에 ping을 보내거나 이메일 원본 헤더를 확인하기만 해도 오리진 IP가 노출될 수 있습니다. 운영 업무를 하는 제 지인도 메인 사이트는 빈틈없이 보호했지만 메일 서버 IP가 발견되어 서버가 마비된 적이 있습니다.
노출되면 얼마나 위험한가요?
오리진 IP가 노출되면 공격자는 Cloudflare를 우회해 서버를 직접 공격할 수 있습니다. DDoS 트래픽이 오리진 서버에 바로 들어와 한정된 회선을 순식간에 포화시킬 수 있습니다. 더 큰 문제는 오리진 서버의 포트를 스캔하고 취약점을 탐색해 표적 공격을 할 수 있다는 점입니다.
이렇게 되면 Cloudflare의 보호는 사실상 무의미합니다. CF 대시보드에는 아무 일도 없는 것처럼 보이지만, 실제 오리진 서버는 이미 심각한 공격을 받고 있을 수 있습니다. V2EX 포럼에도 “서버가 공격받아 CDN을 적용했는데도 오리진 IP가 금방 알려집니다. 어느 단계에 문제가 있는 걸까요?”라는 취지의 고민이 올라온 적이 있습니다. 화이트리스트를 올바르게 설정하지 않았을 때 생기는 문제입니다.
Cloudflare 오리진 IP 목록은 어디에서 확인하나요?
화이트리스트를 설정하려면 먼저 Cloudflare 오리진 IP 목록을 알아야 합니다. CF 공식 페이지에서 쉽게 확인할 수 있습니다.
공식 IP 목록 주소
Cloudflare가 공식적으로 관리하는 주소는 세 곳입니다.
- 전체 목록: https://www.cloudflare.com/ips/
- IPv4 목록: https://www.cloudflare.com/ips-v4
- IPv6 목록: https://www.cloudflare.com/ips-v6
업데이트와 유지 관리에 계속 사용하므로 이 페이지들을 북마크해 두는 것이 좋습니다.
현재 Cloudflare IPv4 IP 대역
현재 Cloudflare의 IPv4 오리진 요청 IP는 다음 15개 CIDR 대역으로 구성됩니다. CIDR은 연속된 IP 주소 범위를 간결하게 표현하는 형식입니다.
173.245.48.0/20
103.21.244.0/22
103.22.200.0/22
103.31.4.0/22
141.101.64.0/18
108.162.192.0/18
190.93.240.0/20
188.114.96.0/20
197.234.240.0/22
198.41.128.0/17
162.158.0.0/15
104.16.0.0/13
104.24.0.0/14
172.64.0.0/13
131.0.72.0/22
이 15개 IP 대역에는 약 178만 개의 IP 주소가 포함됩니다.
IPv6 주소 대역
서버에서 IPv6를 활성화했다면 다음 IPv6 대역도 추가해야 합니다.
2400:cb00::/32
2606:4700::/32
2803:f800::/32
2405:b500::/32
2405:8100::/32
2a06:98c0::/29
2c0f:f248::/32
중요: Cloudflare의 IP 목록은 비정기적으로 업데이트됩니다. 한두 달에 한 번씩 공식 페이지를 방문해 화이트리스트가 최신 상태인지 확인하는 것이 좋습니다. 그렇지 않으면 새로 추가된 CF IP를 방화벽이 잘못 차단해 오리진 요청이 실패할 수 있습니다.
방법 1 - aaPanel에서 Cloudflare IP 화이트리스트 설정하기(가장 간단함)
aaPanel을 사용한다면 매우 간편합니다. aaPanel의 Nginx 방화벽 플러그인을 이용하면 설정 파일을 직접 작성하지 않고도 클릭 몇 번으로 화이트리스트를 구성할 수 있습니다.
1단계: 무료 Nginx 방화벽 플러그인 설치
aaPanel을 열고 왼쪽 메뉴에서 App Store를 클릭한 다음 Third-party applications 카테고리에서 Nginx Free Firewall을 찾습니다. 설치되어 있지 않다면 설치 버튼을 누르면 몇 초 안에 완료됩니다.
2단계: IP 화이트리스트 설정
설치가 끝나면 Nginx 방화벽의 설정 버튼을 클릭해 방화벽 관리 화면으로 이동합니다.
- 왼쪽에서 Global Configuration을 클릭합니다.
- IP Whitelist 영역을 찾아 Settings 버튼을 클릭합니다.
- 표시되는 IP 화이트리스트 관리 창에서 Cloudflare의 IPv4 주소 대역을 하나씩 추가합니다.
여기서 한 가지 주의할 점이 있습니다. aaPanel에서는 시작 IP와 종료 IP를 입력해야 합니다. 하지만 Cloudflare 목록은173.245.48.0/20같은 CIDR 형식입니다. 어떻게 변환해야 할까요?
온라인 도구에서 “CIDR to IP range”를 검색하면 CIDR을 시작 IP와 종료 IP로 변환할 수 있습니다. 예를 들어173.245.48.0/20의 범위는173.245.48.0부터173.245.63.255까지입니다.
솔직히 15개 IP 대역을 모두 수동으로 변환하기는 번거롭습니다. 인터넷에서 aaPanel용 화이트리스트 가져오기 목록을 찾아보는 것도 방법입니다. 일부 블로그에는 변환된 IP 범위가 정리되어 있어 복사해 붙여 넣을 수 있습니다. - 모든 IP 대역을 추가한 다음 Import 버튼을 클릭합니다.
- Nginx 서비스를 다시 시작합니다.
주의: 현재 aaPanel 인터페이스는 IPv4만 지원하므로 IPv6 화이트리스트는 화면에서 설정할 수 없습니다. 서버에서 IPv6를 사용한다면 Nginx 설정 파일을 직접 수정하거나 방법 2를 사용해야 합니다.
3단계: 설정 적용 확인
설정이 끝나면 반드시 테스트하세요.
- 휴대전화 4G 네트워크처럼 CF를 거치지 않는 네트워크에서 오리진 IP로 직접 접속하면 403 Forbidden 오류가 표시되어야 합니다.
- CF 프록시를 거치는 도메인으로 접속하면 정상적으로 표시되어야 합니다.
502 오류가 나타난다면 화이트리스트 설정에 문제가 있는 것입니다. IP 대역이 빠졌거나 방화벽 규칙이 저장되지 않았을 수 있습니다. aaPanel 방화벽이 활성화되어 있는지 확인하고, 모든 CF IP 대역을 추가했는지 다시 확인하세요.
방법 2 - 순수 Nginx에서 화이트리스트 설정하기(더 유연함)
aaPanel을 사용하지 않거나 더 유연한 구성이 필요하다면 Nginx 설정 파일을 직접 수정하는 방법도 간단합니다. 이 방법은 IPv6를 지원하므로 aaPanel보다 적용 범위가 넓습니다.
1단계: Cloudflare IP 설정 파일 만들기
SSH로 서버에 로그인한 뒤 Cloudflare 화이트리스트 전용 설정 파일을 만듭니다.
sudo nano /etc/nginx/cloudflare-whitelist.conf
파일에 다음 내용을 입력합니다.
# Cloudflare IPv4 IP 대역
allow 173.245.48.0/20;
allow 103.21.244.0/22;
allow 103.22.200.0/22;
allow 103.31.4.0/22;
allow 141.101.64.0/18;
allow 108.162.192.0/18;
allow 190.93.240.0/20;
allow 188.114.96.0/20;
allow 197.234.240.0/22;
allow 198.41.128.0/17;
allow 162.158.0.0/15;
allow 104.16.0.0/13;
allow 104.24.0.0/14;
allow 172.64.0.0/13;
allow 131.0.72.0/22;
# Cloudflare IPv6 IP 대역
allow 2400:cb00::/32;
allow 2606:4700::/32;
allow 2803:f800::/32;
allow 2405:b500::/32;
allow 2405:8100::/32;
allow 2a06:98c0::/29;
allow 2c0f:f248::/32;
# 그 밖의 모든 IP 거부
deny all;
파일을 저장합니다. Ctrl+O를 누른 다음 Ctrl+X로 종료하면 됩니다.
핵심: 마지막 deny all;은 매우 중요합니다. 위에서 allow로 지정한 IP를 제외한 모든 IP의 접속을 거부한다는 뜻이므로 이 줄을 빠뜨리면 안 됩니다.
2단계: Nginx 사이트 설정에서 화이트리스트 불러오기
사이트 설정 파일을 편집합니다. 설정 파일은 일반적으로 Debian/Ubuntu에서는 /etc/nginx/sites-available/, CentOS에서는 /etc/nginx/conf.d/ 디렉터리에 있습니다.
sudo nano /etc/nginx/sites-available/your-site.conf
server 블록 안에 다음 한 줄을 추가합니다.
server {
listen 80;
server_name example.com;
# Cloudflare 화이트리스트 불러오기
include /etc/nginx/cloudflare-whitelist.conf;
# 아래에는 나머지 설정을 입력합니다.
root /var/www/html;
index index.html;
}
사이트가 443 포트(HTTPS)도 사용한다면 443의 server 블록에도 이 줄을 추가해야 합니다.
3단계: Nginx 테스트 및 다시 로드
먼저 설정 파일 구문이 올바른지 테스트합니다.
sudo nginx -t
syntax is ok와 test is successful이 표시되면 설정에 문제가 없는 것입니다. 그런 다음 Nginx를 다시 로드합니다.
sudo systemctl reload nginx
이제 설정이 완료되었습니다.
이 방법의 장점은 설정 파일을 별도로 관리할 수 있다는 점입니다. 나중에 IP 목록을 업데이트할 때 cloudflare-whitelist.conf만 수정하면 되고, 여러 사이트에서 이 파일을 함께 사용할 수도 있습니다. aaPanel보다 유연하고 IPv6도 지원합니다.
Cloudflare 오리진 IP 화이트리스트 전체 설정 과정
IP 목록 확인부터 설정 검증까지 aaPanel, 순수 Nginx, 오리진 인증서의 세 가지 방법을 다루는 전체 과정
Estimated time: PT20M
-
1
Step 1: Cloudflare 오리진 IP 목록 확인
Cloudflare 공식 IP 목록 페이지에 접속합니다. -
2
Step 2: 방법 1: aaPanel 설정(가장 간단함)
작업 단계: -
3
Step 3: 방법 2: 순수 Nginx 설정(더 유연함)
작업 단계: -
4
Step 4: 방법 3: 오리진 서버 인증서 설정(가장 안전함)
작업 단계: -
5
Step 5: 설정 적용 확인
휴대전화 4G 네트워크처럼 CF를 거치지 않는 네트워크에서 오리진 IP에 직접 접속하면 403 Forbidden 오류가 표시되어야 합니다. CF 프록시를 거치는 도메인으로 접속하면 정상적으로 표시되어야 합니다. 502 오류가 나타나면 IP 대역이 완전한지, 설정 구문이 올바른지, 방화벽이 활성화되어 있는지 확인하세요. CF를 통한 접속도 403이라면 deny all 위치와 IP 목록의 최신 여부를 확인하세요.
방법 3 - Cloudflare 오리진 서버 인증서 설정(가장 안전함)
앞의 두 방법만으로도 충분히 안전하지만 보안 요구가 특히 높다면 오리진 서버 인증서 검증을 한 단계 더 추가할 수 있습니다. 그러면 오리진 IP가 노출되더라도 공격자가 직접 접속할 때 인증서 오류가 발생해 연결할 수 없습니다.
Cloudflare 오리진 서버 인증서란?
간단히 말해 CF 오리진 인증서는 Cloudflare가 서명한 TLS 인증서로, Cloudflare와 오리진 서버 사이의 암호화에만 사용됩니다. 브라우저는 이 인증서를 신뢰하지 않고 CF만 신뢰하므로, 공격자가 오리진 IP에 직접 접속하면 인증서 오류 경고가 나타나고 연결이 실패합니다.
IP 화이트리스트와 함께 사용하면 이중 보호가 됩니다. 화이트리스트가 비 CF 트래픽을 차단하고, 인증서 검증은 CF만 암호화 연결을 맺도록 보장합니다.
1단계: 오리진 서버 인증서 생성
Cloudflare 대시보드에 로그인하고 도메인을 선택한 뒤 SSL/TLS → Origin Server 페이지로 이동합니다.
- Create Certificate 버튼을 클릭합니다.
- 보호할 도메인을 선택합니다.
*.example.com같은 와일드카드를 사용할 수도 있습니다. - 유효 기간은 가장 긴 15년을 선택합니다. CF 자체에서 사용하는 인증서이므로 기간을 길게 설정하면 관리가 편합니다.
- Create를 클릭합니다.
CF에서 다음 두 가지를 생성합니다.
- 오리진 인증서(Origin Certificate): PEM 형식의 인증서 문자열
- 개인 키(Private Key): 인증서에 대응하는 개인 키
두 내용을 각각 서버에 저장합니다.
sudo nano /etc/nginx/certs/cloudflare.crt
# 오리진 인증서 내용 붙여 넣기
sudo nano /etc/nginx/certs/cloudflare.key
# 개인 키 내용 붙여 넣기
개인 키를 안전하게 보호하도록 권한도 설정합니다.
sudo chmod 600 /etc/nginx/certs/cloudflare.key
2단계: Nginx에 오리진 인증서 설정
사이트 설정 파일을 열고 HTTPS server 블록에 인증서를 설정합니다.
server {
listen 443 ssl http2;
server_name example.com;
# Cloudflare 오리진 인증서 사용
ssl_certificate /etc/nginx/certs/cloudflare.crt;
ssl_certificate_key /etc/nginx/certs/cloudflare.key;
# IP 화이트리스트 불러오기
include /etc/nginx/cloudflare-whitelist.conf;
# 기타 설정...
}
더 엄격하게 검증하려면 클라이언트 인증서 검증도 추가할 수 있습니다. 이 경우 CF의 클라이언트 인증서를 다운로드해야 합니다.
ssl_client_certificate /etc/nginx/certs/cloudflare-client.crt;
ssl_verify_client on;
Nginx를 테스트한 뒤 다시 로드합니다.
sudo nginx -t && sudo systemctl reload nginx
참고: 이 방법은 보안 요구 수준이 매우 높은 환경에 적합합니다. 일반 사이트 운영자라면 앞에서 설명한 IP 화이트리스트만으로 충분하므로 이렇게 복잡하게 구성할 필요는 없습니다.
설정 적용 테스트와 자주 발생하는 문제 해결
설정이 끝났다고 바로 안심하지 말고, 테스트를 통해 확인해야 합니다.
설정 테스트 방법
방법 1: CF를 거치지 않는 트래픽으로 오리진 IP에 직접 접속
휴대전화 4G 네트워크처럼 Cloudflare를 거치지 않는 네트워크에서 브라우저에 http://123.45.67.89 같은 오리진 IP 주소를 입력합니다. 설정이 올바르면 403 Forbidden 페이지가 나타나야 합니다.
방법 2: curl 명령으로 테스트
서버가 아닌 로컬 컴퓨터에서 다음 명령을 실행합니다.
curl -I http://오리진서버IP
응답은 403 Forbidden이어야 합니다.
방법 3: CF 프록시를 거치는 도메인으로 접속
브라우저에서 https://example.com 같은 도메인을 입력하면 정상적으로 접속되어야 합니다. 여기서도 403이 나타난다면 설정에 문제가 있는 것입니다.
자주 발생하는 문제와 해결 방법
문제 1: 설정 후 사이트에 502 오류가 표시됨
가능한 원인:
- 화이트리스트 IP 대역이 완전하지 않아 일부 CF IP가 빠졌습니다.
- Nginx 설정 파일 구문에 오류가 있습니다.
해결 방법:
sudo nginx -t를 실행해 구문을 확인합니다.sudo tail -f /var/log/nginx/error.log로 Nginx 오류 로그를 확인합니다.- IPv4 15개 대역과 IPv6 7개 대역을 모두 추가했는지 확인합니다.
문제 2: CF를 통한 접속도 403으로 표시됨
가능한 원인:
deny all;규칙이allow규칙보다 앞에 있습니다.- CF 오리진 요청 IP가 화이트리스트에 없습니다. CF가 IP를 업데이트했을 수 있습니다.
해결 방법:
- 설정 파일에서
allow규칙이deny all;보다 앞에 있는지 확인합니다. - https://www.cloudflare.com/ips/ 에서 IP 목록이 최신인지 확인합니다.
문제 3: aaPanel에서 IP 대역을 가져왔지만 적용되지 않음
가능한 원인:
- 방화벽 플러그인이 활성화되지 않았습니다.
- 규칙이 저장되지 않았거나 Nginx를 다시 시작하지 않았습니다.
해결 방법:
- Nginx 방화벽 플러그인이 활성화되어 있는지 확인합니다. 녹색 아이콘이 표시되어야 합니다.
- aaPanel에서 Nginx 서비스를 다시 시작합니다.
- aaPanel 방화벽 로그에 오류가 있는지 확인합니다.
문제 4: IPv6 접속으로 여전히 화이트리스트를 우회할 수 있음
가능한 원인:
- IPv4 화이트리스트만 설정하고 IPv6를 빠뜨렸습니다.
해결 방법:
- CF의 IPv6 주소 대역을 화이트리스트에 추가합니다.
- IPv6 접속이 필요 없다면 방화벽에서 IPv6를 직접 비활성화합니다.
추가 보안 권장 사항
화이트리스트 설정은 첫 단계일 뿐입니다. 다음 보안 조치도 고려할 만합니다.
- SSH 포트 변경: 기본 22번 포트는 스캔 대상이 되기 쉬우므로 다른 높은 번호의 포트로 변경합니다.
- 정기적인 시스템 업데이트: 제때 패치를 적용해 보안 취약점을 해결합니다.
- Nginx 버전 숨기기: nginx.conf에
server_tokens off;를 추가합니다. - CF의 Under Attack 모드 사용: 강도가 높은 공격을 받을 때 5초 방어 모드를 활성화합니다.
Cloudflare IP 목록 업데이트 및 유지 관리
앞서 설명했듯 Cloudflare의 IP 목록에는 새 대역이 추가되거나 기존 대역이 조정될 수 있습니다. 제때 업데이트하지 않으면 새 CF IP가 차단되어 사이트 접속에 문제가 생길 수 있습니다.
정기적으로 업데이트해야 하는 이유
Cloudflare는 전 세계에 수백 개의 데이터 센터를 운영하며, 인프라 확장에 따라 IP 대역을 조정합니다. 매일 바뀌는 것은 아니지만 몇 달 간격으로 업데이트될 수 있습니다.
화이트리스트가 오래된 IP 목록을 사용하면 CF가 새로 추가한 오리진 요청 IP를 방화벽이 차단할 수 있습니다. 그러면 일부 지역 사용자가 사이트에 접속하지 못하거나 오리진 요청이 거부될 수 있습니다.
수동 업데이트 방법
가장 간단한 방법은 2~3개월마다 https://www.cloudflare.com/ips/ 를 방문해 새로운 IP 대역이 추가되었는지 비교하는 것입니다.
업데이트가 있다면 다음 순서로 처리합니다.
- 화이트리스트 설정 파일을 편집합니다.
- 새 IP 대역을 추가합니다.
sudo nginx -t로 Nginx 설정을 테스트합니다.sudo systemctl reload nginx로 Nginx를 다시 로드합니다.
자동 업데이트 스크립트(선택 사항)
더 편리하게 관리하려면 간단한 bash 스크립트로 최신 IP 목록을 자동으로 가져와 설정을 업데이트할 수 있습니다. 다음은 예시 스크립트입니다.
#!/bin/bash
# Cloudflare IP 화이트리스트 자동 업데이트 스크립트
CF_IPV4_URL="https://www.cloudflare.com/ips-v4"
CF_IPV6_URL="https://www.cloudflare.com/ips-v6"
NGINX_CONF="/etc/nginx/cloudflare-whitelist.conf"
BACKUP_CONF="/etc/nginx/cloudflare-whitelist.conf.bak"
# 기존 설정 백업
cp $NGINX_CONF $BACKUP_CONF
# 새 설정 생성
echo "# Cloudflare IP Whitelist - Auto-generated on $(date)" > $NGINX_CONF
echo "" >> $NGINX_CONF
# IPv4 대역
echo "# IPv4 ranges" >> $NGINX_CONF
curl -s $CF_IPV4_URL | sed 's/^/allow /' | sed 's/$/;/' >> $NGINX_CONF
echo "" >> $NGINX_CONF
# IPv6 대역
echo "# IPv6 ranges" >> $NGINX_CONF
curl -s $CF_IPV6_URL | sed 's/^/allow /' | sed 's/$/;/' >> $NGINX_CONF
echo "" >> $NGINX_CONF
# 그 밖의 모든 IP 거부
echo "# Deny all other IPs" >> $NGINX_CONF
echo "deny all;" >> $NGINX_CONF
# 설정 테스트
if nginx -t; then
echo "설정 파일 구문이 올바릅니다. Nginx를 다시 로드합니다..."
systemctl reload nginx
echo "✓ Cloudflare 화이트리스트 업데이트 성공!"
else
echo "✗ 설정 파일에 오류가 있습니다. 백업을 복원합니다..."
cp $BACKUP_CONF $NGINX_CONF
echo "기존 설정을 복원했습니다. 오류를 확인하세요."
fi
스크립트를 /root/update-cf-whitelist.sh로 저장하고 실행 권한을 추가합니다.
chmod +x /root/update-cf-whitelist.sh
그런 다음 cron 예약 작업을 설정해 매월 한 번 자동으로 실행합니다.
crontab -e
다음 한 줄을 추가합니다.
0 3 1 * * /root/update-cf-whitelist.sh >> /var/log/cf-whitelist-update.log 2>&1
이렇게 하면 매월 1일 오전 3시에 IP 목록을 자동으로 업데이트하고 /var/log/cf-whitelist-update.log에 로그를 기록합니다.
참고: 처음에는 스크립트를 수동으로 실행해 문제가 없는지 확인한 뒤 예약 작업을 설정하세요. 스크립트에 버그가 있으면 예약 실행이 설정 파일을 손상시킬 수 있습니다.
결론
지금까지 설명한 내용을 한 문장으로 정리하면 오리진 서버를 제대로 보호하려면 Cloudflare 화이트리스트 설정이 필수입니다.
세 가지 방법을 다시 살펴보겠습니다.
- aaPanel 화이트리스트: 클릭만으로 설정할 수 있어 가장 간단하고 초보자에게 적합합니다. 단점은 IPv4만 지원한다는 점입니다.
- 순수 Nginx 설정: 더 유연하고 IPv6를 지원하며, 설정 파일을 관리하고 업데이트하기 편리합니다. Linux 기초 지식이 있는 사용자에게 적합합니다.
- 오리진 서버 인증서 검증: 이중 보호를 제공하는 가장 안전한 방식으로, 보안 요구 수준이 매우 높은 환경에 적합합니다.
어떤 방법을 선택하든 설정 후에는 반드시 테스트해야 합니다. 휴대전화 4G 네트워크에서 오리진 IP로 직접 접속했을 때 403이 표시되면 성공한 것입니다. 그런 다음 도메인을 통해 정상적으로 접속할 수 있는지도 확인하세요.
마지막으로 Cloudflare IP 목록은 업데이트될 수 있으므로 정기적으로 확인하거나 자동화 스크립트를 이용하세요. 한 번 설정하고 그대로 두면 몇 달 뒤 CF에 새 IP 대역이 추가되었을 때 오래된 화이트리스트 때문에 접속 문제가 생길 수 있습니다.
이 글이 도움이 되었다면 Cloudflare를 사용하는 다른 사이트 운영자에게도 공유해 주세요. 더 많은 사용자가 오리진 서버를 제대로 보호할수록 공격자가 노릴 수 있는 빈틈은 줄어듭니다.
지금 바로 오리진 IP가 노출되었는지 확인해 보는 것도 좋습니다. myssl.com 같은 SSL 검사 사이트에서 인증서를 조회해 오리진 IP가 표시되는지 살펴보세요. 이미 노출되었다면 이 글의 방법에 따라 화이트리스트를 설정하면 지금이라도 피해를 줄일 수 있습니다.
FAQ
오리진 IP는 왜 노출되며, 일반적인 경로에는 무엇이 있나요?
1) SSL 인증서 조회 사이트(myssl.com 등)에 오리진 IP가 표시될 수 있습니다.
• 웹사이트에 Cloudflare CDN을 적용한 뒤 SSL 인증서를 검사하면 오리진 IP 주소가 나타날 수 있습니다.
2) 과거 DNS 레코드가 DNS 조회 서비스에 캐시됩니다.
• 일부 서비스 제공자는 데이터를 영구 저장합니다.
• 지금 Cloudflare로 전환했더라도 과거 기록에서 이전 오리진 IP를 찾을 수 있습니다.
3) 서브도메인이나 메일 시스템이 CDN을 거치지 않습니다.
• 공격자가 서브도메인에 ping을 보내거나 메일 원본 헤더를 확인하면 오리진 IP가 노출될 수 있습니다.
IP가 노출되면 공격자가 Cloudflare를 우회해 오리진 서버를 직접 공격할 수 있습니다. DDoS 트래픽이 서버에 바로 도달하고, 포트를 스캔해 취약점을 탐색할 수도 있습니다.
Cloudflare 오리진 IP 목록은 어디에서 확인하고 어떻게 최신 상태로 유지하나요?
• 전체 목록: https://www.cloudflare.com/ips/
• IPv4 목록: https://www.cloudflare.com/ips-v4
• IPv6 목록: https://www.cloudflare.com/ips-v6
현재 IP 범위:
• IPv4는 약 178만 개의 IP를 포함하는 15개 CIDR 대역입니다.
• IPv6는 7개 대역입니다.
업데이트 권장 사항:
• IP 목록은 비정기적으로 업데이트됩니다.
• 2~3개월마다 공식 페이지를 방문해 새 IP 대역이 추가되었는지 확인하는 것이 좋습니다.
• 또는 자동화 스크립트와 cron 예약 작업으로 매월 자동 업데이트할 수 있습니다.
제때 업데이트하지 않으면 새로운 CF IP가 방화벽에 차단되어 일부 지역 사용자가 사이트에 접속하지 못할 수 있습니다.
세 가지 설정 방법은 어떻게 다르며, 어떤 방법을 선택해야 하나요?
• 가장 간단하며 마우스 클릭만으로 설정할 수 있어 초보자에게 적합합니다.
• 다만 IPv4만 지원하므로 IPv6는 수동으로 설정해야 합니다.
2) 순수 Nginx 설정:
• 더 유연하고 IPv6를 지원합니다.
• 설정 파일을 별도로 관리하므로 업데이트가 편리합니다.
• 여러 사이트에서 함께 사용할 수 있습니다.
• Linux 기초 지식이 있는 사용자에게 적합합니다.
3) 오리진 서버 인증서 검증:
• IP 화이트리스트와 인증서 검증을 함께 사용하는 이중 보호 방식으로 가장 안전합니다.
• 오리진 IP가 노출되어 공격자가 직접 접속하더라도 인증서 오류가 발생합니다.
• 보안 요구 수준이 매우 높은 환경에 적합합니다.
일반 사이트 운영자라면 IP 화이트리스트만으로 충분하고, 보안 요구가 높다면 오리진 인증서 검증을 추가할 수 있습니다.
Nginx 화이트리스트는 어떻게 설정하며 핵심 단계는 무엇인가요?
1) 설정 파일을 만듭니다.
• sudo nano /etc/nginx/cloudflare-whitelist.conf
• 모든 CF IPv4 및 IPv6 대역의 allow 규칙을 추가합니다.
• 마지막에 반드시 deny all을 추가해 다른 모든 IP를 거부합니다.
• 핵심: deny all은 반드시 allow 규칙 뒤에 있어야 합니다.
2) 사이트 설정 파일을 편집합니다.
• /etc/nginx/sites-available/your-site.conf
• server 블록에 include /etc/nginx/cloudflare-whitelist.conf를 추가합니다.
• HTTP와 HTTPS 양쪽에 모두 추가해야 합니다.
3) 테스트하고 다시 로드합니다.
• 설정 테스트: sudo nginx -t로 구문이 올바른지 확인합니다.
• 다시 로드: sudo systemctl reload nginx
설정 파일을 별도로 관리하면 나중에 IP 목록을 업데이트할 때 cloudflare-whitelist.conf만 수정하면 됩니다.
설정이 적용되었는지 어떻게 확인하고, 자주 발생하는 문제는 어떻게 해결하나요?
1) 휴대전화 4G 네트워크처럼 CF를 거치지 않는 트래픽으로 오리진 IP에 직접 접속하면 403 Forbidden 오류가 표시되어야 합니다.
2) CF 프록시를 거치는 도메인으로 접속하면 정상적으로 표시되어야 합니다.
자주 발생하는 문제:
1) 502 오류:
• IP 대역이 완전한지 확인합니다. IPv4 15개 대역과 IPv6 7개 대역이 모두 추가되어야 합니다.
• sudo nginx -t로 설정 구문이 올바른지 확인합니다.
• 방화벽이 활성화되어 있는지 확인합니다.
2) CF를 통한 접속도 403이 표시됨:
• deny all 위치가 올바른지 확인합니다. 반드시 allow 규칙 뒤에 있어야 합니다.
• https://www.cloudflare.com/ips/ 에서 IP 목록이 최신인지 확인합니다.
3) IPv6 우회:
• CF의 IPv6 주소 대역을 화이트리스트에 추가합니다.
• 또는 방화벽에서 IPv6를 직접 비활성화합니다.
Cloudflare IP 목록을 자동으로 업데이트하려면 어떻게 하나요?
스크립트 처리 과정:
1) 기존 설정을 백업합니다.
2) CF 공식 주소에서 최신 IPv4 및 IPv6 목록을 가져옵니다.
3) allow 규칙과 deny all이 포함된 새 설정 파일을 생성합니다.
4) Nginx 설정 구문을 테스트해 올바르면 Nginx를 다시 로드하고, 오류가 있으면 백업을 복원합니다.
설정 단계:
• 스크립트를 /root/update-cf-whitelist.sh로 저장합니다.
• 실행 권한을 추가합니다: chmod +x
• crontab -e에서 매월 1일 오전 3시에 자동 실행되도록 cron 예약 작업을 설정합니다.
0 3 1 * * /root/update-cf-whitelist.sh >> /var/log/cf-whitelist-update.log 2>&1
처음에는 스크립트를 수동으로 실행해 문제가 없는지 확인한 뒤 예약 작업을 설정하세요.
3분 읽기 · 게시일: 2025년 11월 21일 · 수정일: 2026년 9월 4일
Cloudflare 풀스택
검색으로 들어왔다면 같은 시리즈의 이전 글이나 다음 글로 이동하는 것이 가장 빠릅니다.
이전
Cloudflare Under Attack 모드 설정 방법: SEO와 사용자 경험을 지키는 3가지 팁
Cloudflare Under Attack 모드의 작동 원리와 SEO 영향, Page Rules 설정, Challenge Passage 최적화, 7가지 모범 사례를 설명합니다.
15편 중 7편
다음
Cloudflare를 적용했는데도 공격받는다면? 원본 IP가 유출되는 7가지 숨은 경로와 보호 가이드
Cloudflare를 적용했는데도 DDoS 공격을 받는 이유를 알아봅니다. DNS 기록, 이메일 헤더, 서브도메인 등 원본 IP가 유출되는 7가지 경로와 탐지 도구, 방화벽 설정, Cloudflare 권장 사례, 사고 후 대응 방법까지 설명합니다.
15편 중 9편



댓글
GitHub로 로그인하여 댓글을 남기세요