"인덱싱되는 순간, 등록되는 순간 — 공격은 이미 시작되었습니다. 실무자가 알아야 할 2026년 웹 보안의 전부."
0.1 당신이 아직 털리지 않은 이유
솔직하게 시작하겠습니다. 당신의 서버가 아직 멀쩡한 것은 안전해서가 아닙니다. 단지 들어가서 가져갈 만한 데이터가 없거나, 공격자가 아직 시간을 들일 가치를 느끼지 못했을 뿐입니다.
도메인을 등록하고 DNS가 전파되는 순간, 인증서 투명성 로그(CT Log)에 호스트명이 기록되는 순간, 검색 엔진과 AI 크롤러가 사이트를 인덱싱하는 순간 — 그 모든 시점이 공격자에게는 신호탄입니다. 자동화된 스캐너는 사람이 잠든 사이에도 초당 수천 개의 IP와 호스트를 훑습니다. 새 호스트가 CT 로그에 올라오면 평균 수십 초에서 수 분 안에 첫 스캔이 도착합니다. 며칠이면 수십, 수백 건의 자동 공격이 쌓입니다. 이것은 과장이 아니라, 아무 신규 서버에나 접근 로그와 fail2ban을 걸어두면 누구나 직접 확인할 수 있는 사실입니다.
그런데도 한국 웹의 현실은 참담합니다. 10년 전 기술 스택 위에서 돌아가는 사이트가 차고 넘칩니다. TLS 1.0이 아직도 열려 있고, 지원이 끊긴 PHP 버전이 살아 있고, 관리자 페이지가 예측 가능한 경로에 그대로 노출되어 있으며, 보안 헤더는 단 하나도 설정되지 않은 사이트가 정부, 금융, 대기업 협력사 도메인에서도 나옵니다. 패치되지 않은 CVSS 9점, 10점짜리 취약점은 매주 새로 발표되는데, 운영자 대부분은 자신의 서버에 그것이 깔려 있다는 사실조차 모릅니다.
이 가이드는 바로 그 간극을 메우기 위해 씁니다.
스크립트 키디가 던지는 자동화 공격부터, 충분한 시간과 자금을 가진 APT(지능형 지속 위협) 그룹이 은행과 정부를 노리는 방식까지. 2026년 현재 실제 침투 테스트(펜테스트) 현장에서 마주치는 것들, 사람들이 잘 모르는 공격면(attack surface), 그리고 무엇보다 최소한의 방어선을 어떻게 긋는가를 다룹니다.
이 책이 약속하는 두 가지
첫째, 현실을 미화하지 않습니다. "방화벽을 켜면 안전합니다" 같은 말은 하지 않습니다. 완벽한 보안은 없으며, 보안은 제품이 아니라 과정이고, 공격면을 줄이고 침해를 가정하는 사고방식만이 살아남습니다.
둘째, 따라 할 수 있게 씁니다. 모든 챕터는 "그래서 지금 무엇을 하면 되는가"로 끝납니다. Cloudflare Zero Trust로 SSH 22번 포트를 인터넷에서 완전히 숨기는 법, SSH 비밀번호 로그인을 끄고 공개키로만 접속하며 그 키를 안전하게 관리하는 법, TLS를 1.2 이상으로 강제하고 SSL Labs에서 A+를 받는 법, 보안 헤더를 한 줄씩 설정하는 법, 자신의 사이트를 직접 스캔해 취약점을 찾는 법 — 전부 복사해서 바로 적용할 수 있는 형태로 제공합니다.
당신이 1인 개발자든, 스타트업의 유일한 DevOps든, 수백 대의 서버를 책임지는 보안 담당자든 상관없습니다. 공격자는 당신의 직함을 보지 않습니다. 열려 있는 포트와 패치되지 않은 버전 번호를 볼 뿐입니다.
0.2 이 책을 읽는 법
세 가지 경로를 권합니다.
처음부터 끝까지 — 보안을 체계적으로 이해하고 싶다면 1부부터 순서대로 읽으시면 됩니다. 위협 지형 → 공격면 → 방어 아키텍처 → 검증 → 운영의 흐름으로 설계되어 있습니다.
문제 해결 중심 — 당장 풀어야 할 문제가 있다면 해당 챕터로 바로 가셔도 됩니다. 각 챕터는 독립적으로 읽히도록 썼고, 필요한 전제 지식은 챕터 안에서 다시 짚습니다. "SSL Labs에서 B가 나왔는데 A+를 받고 싶다"면 8장으로, "SSH를 안전하게 닫고 싶다"면 6장으로 가시면 됩니다.
체크리스트만 — 시간이 없다면 부록 A의 통합 체크리스트만 보셔도 됩니다. 각 항목이 어느 챕터에서 설명되는지 연결해두어, 막히는 부분만 본문으로 돌아오시면 됩니다.
코드 블록과 설정 예시는 전부 실제로 동작하는 것으로 실었습니다. 다만 운영 환경에 적용하기 전에는 반드시 테스트 환경에서 먼저 검증하시기 바랍니다. 특히 방화벽과 SSH 설정은 잘못하면 자기 자신을 서버에서 잠가버릴 수 있습니다 — 이 위험과 안전한 적용 순서는 6장에서 구체적으로 다룹니다.
0.3 이 책이 서 있는 여섯 가지 원칙
이 가이드 전체를 관통하는 사고의 틀입니다. 개별 기술을 잊더라도 이 여섯 가지만 남으면 됩니다.
1. 공격면을 줄여라 — Reduce the Attack Surface
존재하지 않는 것은 공격당하지 않습니다. 가장 강력한 방어는 기능을 끄고, 포트를 닫고, 노출을 제거하는 것입니다. 인터넷에 열린 22번 포트를 0개로 만들 수 있다면, 그 경로로 들어오는 모든 무차별 대입 공격은 처음부터 성립하지 않습니다. 화려한 탐지 시스템보다 닫힌 문 하나가 낫습니다. — 5·6·7장의 핵심.
2. 침해를 가정하라 — Assume Breach
"뚫리지 않게 한다"가 아니라 "뚫렸을 때 피해를 최소화한다"로 사고를 전환합니다. 경계가 무너질 것을 전제로 내부를 분할하고, 권한을 최소화하고, 모든 것을 기록합니다. Zero Trust의 본질이 여기에 있습니다. 네트워크 안쪽이라고 해서 신뢰하지 않습니다. — 6·13장의 핵심.
3. 깊이로 방어하라 — Defense in Depth
단일 방어선은 단일 실패점입니다. TLS, 방화벽, 접근 제어, 모니터링, 백업 — 한 겹이 뚫려도 다음 겹이 막도록 층을 쌓습니다. 어느 한 통제가 완벽하리라 기대하지 않습니다. — 책 전체의 구조.
4. 검증 없는 보안은 희망일 뿐이다 — Trust, but Verify
설정했다고 해서 안전한 것이 아닙니다. SSL Labs로 TLS를 확인하고, 스캐너로 헤더를 검사하고, nuclei로 알려진 취약점을 훑고, 자신의 사이트를 공격자의 시선으로 직접 들여다봐야 합니다. 측정되지 않는 것은 관리되지 않습니다. — 8·9·10·11장의 핵심.
5. 보안은 과정이지 상태가 아니다 — Security is a Process
오늘 안전한 서버가 다음 주에 새 CVE로 취약해집니다. 한 번 설정하고 잊는 보안은 없습니다. 패치하고, 모니터링하고, 갱신하고, 다시 검증하는 루틴만이 시간을 견딥니다. 이것이 1인 운영자에게도, 정부 기관에도 똑같이 적용되는 유일한 진실입니다. — 13·14·15장의 핵심.
6. 공격이 자동화되면, 방어도 자동화되어야 한다 — Automate the Defense
공격자는 이미 AI를 무기로 씁니다. 취약점을 자동으로 찾고, 익스플로잇을 자동으로 생성하며, 그 비용은 0에 수렴하고 있습니다. 방어자가 사람의 손과 기억에만 의존한다면, 이 비대칭 싸움에서 구조적으로 불리합니다. 그러므로 방어자 또한 AI를 도구로 삼아야 합니다. 서버 설정과 프로젝트 코드의 보안 상태를 AI 모델이 새 버전으로 발전할 때마다 다시 자동으로 검토하고, 새로 알려진 위협에 비추어 재평가하며, 발견된 격차를 업그레이드하는 루틴을 갖춰야 합니다. — 3·15장과 부록 E의 핵심.
자, 시작해 보겠습니다. 그 공격자의 시선으로 당신의 인프라를 함께 들여다보겠습니다.