Cloudflare IP를 사용하여 UFW 규칙을 자동 업데이트하는 방법

Cloudflare 뒤에 앉을 때는 ~만 Cloudflare의 IP 범위에서 오는 트래픽을 포트 80 및 443에서 허용합니다. Cloudflare는 이러한 범위를 주기적으로 업데이트하므로 UFW 규칙을 자동으로 새로 고쳐야 합니다. 다음 스크립트에서 cloudflare-ufw, 폴 리드의 저서는 바로 그 역할을 해낸다.

1. 스크립트를 다운로드하고 실행 권한을 부여하세요

bashsudo wget -O /usr/local/bin/cloudflare-ufw.sh \
  https://raw.githubusercontent.com/Paul-Reed/cloudflare-ufw/refs/heads/master/cloudflare-ufw.sh
sudo chmod +x /usr/local/bin/cloudflare-ufw.sh

2. 현행 UFW 규정 검토 (개정 전)

bashsudo ufw status verbose

다음과 같은 내용이 표시될 것입니다:

text조치 대상
-- ------ ----
22/tcp 허용 모든 곳
80/tcp 허용 모든 곳
443 허용 모든 곳
...

3. 지나치게 허용적인 80/443 포트 규칙을 제거하십시오

현재 이 규칙들은 다음을 허용하고 있습니다 어떤 웹 포트에 연결되는 IP 주소입니다. 이를 Cloudflare 전용 규칙으로 대체할 예정입니다.

bashsudo ufw delete allow 80/tcp
sudo ufw delete allow 443/tcp

UFW에서 확인을 요청하면 다음을 입력하세요 y 그리고 Enter 키를 누르세요.

상태를 다시 확인해 보세요:

bashsudo ufw status verbose

더 이상 보이지 않아야 합니다 80/tcp 또는 443 와 함께 허용 ~에서 어디서나.

4. Cloudflare‑UFW 스크립트를 실행합니다

bashsudo /usr/local/bin/cloudflare-ufw.sh

이 스크립트의 기능:

  • 다음에서 최신 Cloudflare IPv4 및 IPv6 주소 범위를 가져옵니다. https://www.cloudflare.com/ips-v4 그리고 .../ips-v6.
  • 포트 80 및 443에 대해 허용하는 기존 UFW 규칙을 모두 삭제합니다. 어디서나.
  • 새로 추가 허용 규칙 ~만 포트 80(HTTP) 및 443(HTTPS)의 각 Cloudflare IP 범위별로.
  • 선택적으로 UFW를 재시작하여 새로운 규칙이 즉시 적용되도록 합니다.

작업이 완료되면 다음을 확인하십시오:

bashsudo ufw status verbose

이제 다음과 같은 여러 줄이 표시되어야 합니다:

text수신자 발신자
-- ------ ----
80/tcp 허용 173.245.48.0/20
80/tcp 허용 103.21.244.0/22
...
443 허용 173.245.48.0/20
443 허용 103.21.244.0/22
...

포트 80/443에 대해서는 그 외의 모든 IP 주소에 대해 암묵적으로 접근이 차단됩니다.

5. cron을 사용하여 매일 업데이트를 자동화하기

Cloudflare는 언제든지 IP 범위를 변경할 수 있습니다. 방화벽 설정을 최신 상태로 유지하려면 스크립트가 매일(예: 오전 3시) 실행되도록 예약하십시오.

루트 crontab을 편집합니다:

bashsudo crontab -e

메시지가 표시되면 원하는 편집기를 선택하세요 (예:, 나노).

끝부분에 다음 줄을 추가하세요:

text0 3 * * * /usr/local/bin/cloudflare-ufw.sh >> /var/log/cloudflare-ufw.log 2>&1

다음은 다음과 같이 작동합니다:

  • 서버 시간 기준으로 매일 오전 3시에 스크립트를 실행합니다.
  • 출력 및 오류를 다음 위치에 추가합니다. /var/log/cloudflare-ufw.log 감사 목적으로.

편집기를 저장하고 종료하세요.

6. 크론 작업 확인

확인하기 위해 루트 사용자의 crontab을 나열합니다:

bashsudo crontab -l

새 줄이 표시되어야 합니다.

원한다면 즉시 실행을 강제하고 로그를 확인하세요:

bashsudo /usr/local/bin/cloudflare-ufw.sh
sudo tail -n 20 /var/log/cloudflare-ufw.log

7. 지속적인 유지보수

언제든지 수동으로 규칙을 새로 고치려면:

bashsudo /usr/local/bin/cloudflare-ufw.sh

로그를 확인하려면:

bashsudo less /var/log/cloudflare-ufw.log

만약 “어디서나 허용”으로 되돌려야 할 경우(실제 운영 환경에서는 권장하지 않음):

bashsudo ufw delete allow from any to any port 80 proto tcp sudo ufw delete allow from any to any port 443 proto tcp sudo ufw allow 80/tcp sudo ufw allow 443/tcp

이 설정을 적용하면 UFW 방화벽은 항상 현재 Cloudflare IP 범위에서 오는 HTTP/HTTPS 트래픽만 허용하게 되어, 공격 표면을 대폭 줄이는 동시에 Cloudflare를 통해 사이트에 계속 접속할 수 있도록 보장합니다.

이 페이지가 도움이 되었나요?

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다