2026년 5월 29일 Cloudflare가 Security Insights 스캔을 모든 계정에 자동·정기적으로 실행하도록 정책을 바꿨습니다. Free는 7일마다, Pro/Business는 3일마다, Enterprise는 매일. 별도 요청 없이 계정이 있으면 스캔이 돌아갑니다.
핵심은 스캔 주기 자체가 아니라 “정기 스캔이 기본 위생이 됐다”는 프레이밍입니다. 웹사이트를 운영하는 사람이라면 CDN이 있든 없든 자기 서버·자기 코드에 대한 정기 스캔을 자동화해두는 게 표준이 되어가고 있습니다.
TCP-80.NET의 일본 VPS·전용서버로 자체 서버를 운영 중이라면 지금이 스캔 자동화를 세팅할 좋은 시점입니다. 이 글에서는 실무 툴셋과 자동화 방법을 정리합니다.
자체 서버에서 뭘 스캔해야 하는가
크게 네 층으로 나눕니다.
- OS·패키지 취약점 — 커널·systemd·openssl·nginx 등의 CVE.
- 컨테이너 이미지 취약점 — Docker를 쓴다면 이미지 안의 라이브러리·바이너리.
- 애플리케이션 의존성 — npm·pip·bundler에 설치된 패키지의 CVE.
- 설정·보안 위생 — SSH 키 강도, 파일 권한, sudo 정책, rootkit·백도어 감지.
각 층마다 다른 도구가 필요합니다.
1) OS·패키지 취약점 — Trivy
Aqua Security의 오픈소스 스캐너. 원래 컨테이너용이지만 호스트 OS도 스캔합니다.
# 설치 (Ubuntu)
apt install -y trivy
# 호스트 OS 스캔
trivy rootfs /
# CVE 데이터베이스 자동 업데이트 후 스캔
trivy rootfs --db-repository ghcr.io/aquasecurity/trivy-db /
주 1회 cron으로.
# /etc/cron.weekly/trivy-scan
#!/bin/bash
REPORT=/var/log/trivy/$(date +%F).json
trivy rootfs --format json -o "$REPORT" /
# 심각한 CVE 있으면 알림
if jq -e '.Results[]?.Vulnerabilities[]? | select(.Severity=="CRITICAL")' "$REPORT" > /dev/null; then
curl -s -X POST "https://api.telegram.org/bot$TG_TOKEN/sendMessage" \
--data-urlencode "chat_id=$TG_CHAT" \
--data-urlencode "text=Trivy: critical CVE detected on $(hostname)"
fi
Cloudflare가 하는 일을 우리 서버에서 하는 셈. 텔레그램 알림은 우리가 이미 @tcp80net 응답 채널로 쓰는 것과 같은 도구.
2) 컨테이너 이미지 — Trivy + Grype
Docker/OCI 이미지 스캔에는 Trivy와 Grype 조합이 실용적입니다.
# Trivy로 이미지 스캔
trivy image nginx:1.25
# Grype로 SBOM 기반 스캔
grype nginx:1.25
CI에 넣으면 배포 전 취약 이미지 차단.
# .gitlab-ci.yml 예시
scan:image:
script:
- trivy image --exit-code 1 --severity HIGH,CRITICAL myapp:$CI_COMMIT_SHA
--exit-code 1이 있으면 CRITICAL 발견 시 파이프라인 실패.
3) 애플리케이션 의존성
각 언어·에코시스템별.
- npm:
npm audit(내장) 또는snyk test. - Python:
pip-audit또는safety check. - Ruby:
bundle audit. - Go:
govulncheck. - Java: OWASP Dependency-Check.
CI에 전부 넣기.
# GitHub Actions 예시
- name: npm audit
run: npm audit --production --audit-level=high
- name: Python dependencies
run: pip-audit -r requirements.txt
정기 실행도 병행. dependabot이나 renovate로 취약 의존성 발견 시 자동 PR.
4) 설정·보안 위생 — Lynis
CIS Benchmarks 스타일의 자동 감사 도구. 오픈소스.
# 설치
apt install -y lynis
# 감사 실행
lynis audit system
# 결과 요약 위치
cat /var/log/lynis-report.dat
Lynis는 SSH·sudo·파일 권한·firewall·로깅 등 100+ 항목을 자동 점검하고 점수와 개선 제안을 줍니다. 처음 돌리면 대개 점수가 낮고 개선 항목이 40~60개 나오는데, 이걸 한 달에 걸쳐 하나씩 잡아가면 서버 위생이 크게 좋아집니다.
5) rootkit·백도어 — chkrootkit + rkhunter
침해가 발생한 뒤 감지에 유용.
apt install -y rkhunter chkrootkit
# 시스템 파일 지문 초기화 (한 번만)
rkhunter --propupd
# 정기 검사
rkhunter --check --skip-keypress
chkrootkit
주 1회 cron. 침해 여부는 이 도구들이 완전 감지하진 못하지만, 알려진 rootkit 패턴은 잘 잡습니다.
6) 웹 애플리케이션 취약점 — OWASP ZAP
애플리케이션 자체(HTML·JS·API)의 취약점.
# Docker로 실행
docker run -t owasp/zap2docker-stable zap-baseline.py \
-t https://example.com
# 결과: 알려진 웹 취약점(XSS·SQL 주입·CSRF 등) 스캔
주기적 baseline 스캔은 개발 브랜치에서, full active scan은 스테이징 환경에서.
7) TLS·SSL 검사 — testssl.sh
인증서·TLS 설정 감사.
git clone https://github.com/drwetter/testssl.sh
./testssl.sh https://example.com
Cloudflare가 SSL 스캔을 자동화한 것처럼 우리도 자동화 가능. Cron으로 매주.
자동화 파이프라인 예시
한 서버에 도구 전부 세팅한 뒤 하나의 스크립트로 묶기.
#!/bin/bash
# /usr/local/bin/weekly-security-scan.sh
DATE=$(date +%F)
LOG=/var/log/security-scan/$DATE
mkdir -p "$LOG"
trivy rootfs --format json -o "$LOG/trivy.json" /
lynis audit system --report-file "$LOG/lynis.dat" --quiet
rkhunter --check --skip-keypress --report-warnings-only > "$LOG/rkhunter.txt"
testssl.sh --quiet https://example.com > "$LOG/testssl.txt"
# 요약 텔레그램 발송
SUMMARY="Weekly scan $(hostname) $DATE\n"
SUMMARY+="Trivy CRITICAL: $(jq '[.Results[]?.Vulnerabilities[]?|select(.Severity=="CRITICAL")]|length' "$LOG/trivy.json")\n"
SUMMARY+="Lynis warnings: $(grep -c warning "$LOG/lynis.dat")\n"
SUMMARY+="rkhunter warnings: $(grep -c Warning "$LOG/rkhunter.txt")\n"
curl -s -X POST "https://api.telegram.org/bot$TG_TOKEN/sendMessage" \
--data-urlencode "chat_id=$TG_CHAT" --data-urlencode "text=$SUMMARY"
일요일 새벽 cron으로.
0 3 * * 0 /usr/local/bin/weekly-security-scan.sh
스캔 주기 — 얼마나 자주가 맞나
Cloudflare의 주기(Free 7일·Pro 3일·Enterprise 매일)를 우리 상황에 대입하면.
- 개인 프로젝트·저트래픽 사이트: 주 1회. 인프라 변화가 적으니 충분.
- 매출 있는 서비스: 주 2~3회. 부하가 크지 않음.
- 금융·의료·개인정보 다루는 서비스: 매일. 새 CVE 발표 즉시 감지가 이득.
너무 자주 돌려도 CVE 데이터베이스 자체는 하루 단위로 갱신되니 매일 이상은 무의미. 그러나 새 배포·설정 변경 직후엔 즉시 돌리는 게 좋습니다.
스캔 결과 관리
스캔이 돌아가면 결과가 쌓입니다. 관리 안 하면 로그만 늘어남.
- 취약점 백로그를 Notion·Linear·GitHub Issues에 티켓으로 등록.
- 심각도별 SLA를 정함(CRITICAL 48시간, HIGH 7일, MEDIUM 30일).
- 매 스캔 후 신규 항목만 골라 티켓 생성 자동화.
이 워크플로가 없으면 스캔은 “무서운 로그를 매주 만드는 도구”에 그칩니다.
마무리
Cloudflare의 이번 정책 변경은 “보안 스캔이 프리미엄 기능에서 기본 위생으로 이동”했다는 신호입니다. 자체 서버 운영자도 같은 방향으로 가야 합니다. 다행히 오픈소스 도구가 충분하고 세팅은 하루면 됩니다.
TCP-80.NET의 VPS·전용서버 고객 중 위 스캔 파이프라인 세팅을 도와드릴 필요가 있으신 분은 @tcp80net 텔레그램으로 요청 주시면 됩니다.
출처 (Source)
이 글은 아래 Cloudflare 공식 changelog를 참고해 tcp-80.net 청중 관점에서 재구성·번역·확장했습니다. 자체 서버 스캔 도구·자동화 파이프라인(Trivy·Lynis·rkhunter·OWASP ZAP·testssl.sh·주기·백로그 관리)은 원문에 없는 자체 추가 내용입니다.
- 원문 제목: Security Insights default scans
- 원문 발행일: 2026-05-29
- 원문 URL: https://developers.cloudflare.com/changelog/post/2026-05-29-security-insights-default-scans/
- 원문 저작자: Cloudflare, Inc.
- 본문 재구성·번역: TCP-80.NET (2026-05-29)
Cloudflare 제품 옵션명·UI·스캔 정책은 시점에 따라 다를 수 있으니 최신 정보는 원문 및 Cloudflare 대시보드에서 확인하시기 바랍니다.