목차11개 항목
출처와 참고
ByteByteGo의 System Design 101 가이드 「Firewall Explained to Kids and Adults」, 「Top 6 Firewall Use Cases」, 「How Does a VPN Work?」, 「Types of VPNs」, 「Top Network Security Cheatsheet」를 바탕으로, 사내 VPN 설계는 「WATCHA 사내 VPN 개발하기」로 보강해 재구성한 노트다. 침입 탐지·방지 시스템과 보안 장비 배치, IP 스푸핑 필터링, 스니핑은 고려사이버대학교 「정보통신개론」(2023 겨울계절학기) 강의 내용으로 보강했다. 위협의 네 갈래, 대칭키·공개키·메시지 다이제스트, RSA 키 생성 절차는 GitHub 자료 모음 「Subjective-studies_OS-CN-DBMS」의 네트워크 면접 정리를 바탕으로 보강했다.
위협의 네 갈래와 암호
공용망을 지나는 데이터를 노리는 위협은 무엇을 깨뜨리느냐로 넷이다. 모두 의도적인 공격이고, 어떤 기법도 100% 막지는 못하므로 위협마다 맞는 수단을 겹쳐 쓴다.
| 위협 | 깨지는 것 | 예 | 막는 수단 |
|---|---|---|---|
| 가로막기(interruption) | 가용성: 자원을 쓸 수 없게 한다 | DDoS, 서버 탈취, 회선 절단 | 이중화, DDoS 방어, 레이트 리밋 |
| 가로채기(interception) | 기밀성: 허가받지 않은 사람이 엿본다 | 도청, 스니핑 | 암호화(대칭·공개키) |
| 변조(modification) | 무결성: 중간에서 내용을 바꿔 원래 보낸 사람인 척 넘긴다 | 중간자 공격 | 해시·MAC·디지털 서명 |
| 위조(fabrication) | 인증: 정상 사용자를 사칭해 자원에 접근하거나 대화한다 | IP·ARP 스푸핑, 피싱 | 인증서, 상호 인증, 서명 |
이 중 기밀성·무결성·인증을 기술로 지키는 중심이 암호다.
대칭키·공개키·해시
| 방식 | 원리 | 속도와 쓰임 | 예 | 약점 |
|---|---|---|---|---|
| 대칭키(비밀키) | 보내는 쪽과 받는 쪽이 같은 키 하나로 암호화·복호화한다 | 빠르다. 대용량 데이터에 맞아 TLS 본문 암호화, 저장 데이터(대량 개인정보) 암호화에 쓴다 | AES, ChaCha20. 과거의 DES는 56비트 키라 깨졌다 | 키를 상대에게 안전하게 건넬 방법이 없고, 상대마다 키가 따로 필요하다(n명이면 n(n-1)/2개). 키를 아는 쪽이 늘수록 유출 위험도 는다 |
| 공개키(비대칭) | 각자 공개키와 개인키 한 쌍을 갖는다. 공개키로 잠근 것은 개인키로만 연다 | 연산이 무겁다. 키 교환, 디지털 서명처럼 작은 데이터에만 쓴다 | RSA, 타원 곡선(ECDH·ECDSA) | 느리다. 받은 공개키가 정말 상대 것인지 확인할 수단(인증서)이 따로 필요하다 |
| 메시지 다이제스트(해시) | 데이터 대신 고정 길이 해시를 보내고, 받는 쪽이 다시 계산해 비교한다 | 빠르다. 무결성 확인, 비밀번호 비교에 쓴다 | SHA-256. MD5·SHA-1은 충돌이 발견돼 무결성 용도로 쓰지 않는다 | 키가 없으면 공격자가 내용과 해시를 함께 바꿀 수 있어 HMAC이나 서명과 묶는다 |
실무는 둘을 섞은 하이브리드 암호다. 공개키로 대칭키를 합의하고 데이터는 그 대칭키로 암호화한다. TLS가 그렇다(HTTPS와 TLS). 인코딩·해시·토큰화와의 구별, 용도별 알고리즘 선택과 조합의 함정은 인코딩·암호화·해시·토큰화와 디지털 서명에 있다.
RSA는 큰 수를 소인수분해하기 어렵다는 점에 안전성을 건 공개키 암호다. 키 만들기와 암호화·복호화는 다음 순서다(수학적 근거인 오일러 정리는 정수론 기초: 소수·최대공약수·합동식).
1. 큰 소수 p, q를 고르고 n = p × q, φ(n) = (p-1)(q-1)을 구한다
2. φ(n)과 서로소인 e를 고른다 (보통 65537)
3. e × d ≡ 1 (mod φ(n))인 d를 구한다 (확장 유클리드 호제법)
4. 공개키 (n, e), 개인키 (n, d). p, q, φ(n)은 버린다
암호화 c = m^e mod n, 복호화 m = c^d mod n
작은 예: p=3, q=11 → n=33, φ=20, e=3, d=7 (3×7=21≡1)
m=4 → c = 4³ mod 33 = 31 → 31⁷ mod 33 = 4실제 키는 n이 2048비트 이상이다. RSA는 지금 주로 서명(인증서)에 쓰이고, TLS 1.3은 RSA로 세션 키를 보내는 키 교환을 없앴다(웹 PKI의 변천).
방화벽
방화벽(firewall) 은 네트워크 경계에서 들어오고 나가는 트래픽을 규칙에 따라 허용하거나 막는 장치·소프트웨어다. 사설망과 인터넷 사이의 문지기 역할을 한다.
| 형태 | 위치 | 예 |
|---|---|---|
| 호스트 기반(소프트웨어) | 기기 한 대 | 리눅스 nftables·ufw, OS 기본 방화벽 |
| 네트워크 기반(하드웨어·가상 장비) | 네트워크 경계 | 사내 경계 방화벽, 클라우드 보안 그룹·네트워크 ACL |
종류: 무엇을 보고 판단하나
아래로 갈수록 더 많은 맥락을 보고, 그만큼 비용이 든다.
| 종류 | 보는 것 | 특징 |
|---|---|---|
| 패킷 필터 | 패킷 하나의 출발지·목적지 IP, 포트, 프로토콜 | 빠르다. 연결의 맥락은 모른다(무상태) |
| 서킷 레벨 게이트웨이 | TCP 핸드셰이크가 정상인지 | 세션이 맞는지만 확인하고 내용은 보지 않는다 |
| 상태 추적(stateful inspection) | 연결 테이블: 이 패킷이 이미 맺어진 연결에 속하나 | 안에서 나간 요청의 응답만 들여보내는 것이 기본 동작이 된다. 지금 방화벽의 기본 |
| 애플리케이션 게이트웨이(프록시 방화벽) | HTTP 같은 응용 계층 내용 | 클라이언트 대신 연결을 맺어 내용까지 검사한다. 웹 방화벽(WAF)이 이 계열 |
| 차세대 방화벽(NGFW) | 위 전부 + 애플리케이션 식별, 침입 방지(IPS), 심층 패킷 검사 | "포트 443"이 아니라 "어떤 앱의 트래픽인가"로 규칙을 건다 |
규칙을 거는 기준
| 기준 | 예 |
|---|---|
| 포트 | 웹 서버는 80·443만 연다 |
| IP 주소 | 관리 포트는 사무실 IP에서만, 알려진 악성 IP는 차단 |
| 프로토콜 | TCP 22(SSH)만 허용, ICMP는 제한 |
| 시간 | 업무 시간 외에는 특정 시스템 접근 차단 |
| 연결 상태 | 이미 맺어진 연결(ESTABLISHED)의 응답만 들인다 |
| 애플리케이션 | 파일 공유·특정 메신저 트래픽 차단 |
규칙의 출발점은 기본 거부(default deny) 다. 모두 막아 두고 필요한 것만 연다. 클라우드에서 DB의 보안 그룹을 앱 서버의 보안 그룹에서 오는 트래픽만 받도록 여는 것이 같은 원칙이다 → AWS 클라우드 기초.
침입 탐지·방지 시스템(IDS·IPS)
방화벽이 출입구에서 규칙에 맞지 않는 트래픽을 미리 막는 문지기라면, 규칙을 통과해 들어왔거나 내부에서 시작된 공격은 따로 찾아야 한다.
| 장비 | 하는 일 | 놓이는 방식 |
|---|---|---|
| IDS (Intrusion Detection System) | 트래픽·활동을 지켜보다 공격으로 보이면 알린다. 막지는 않는다 | 트래픽 사본을 받아 옆에서 본다(미러 포트). 지켜보는 대상에 따라 호스트 기반(H-IDS, 서버 한 대의 로그·프로세스)과 네트워크 기반(N-IDS, 망을 지나는 패킷)으로 나뉜다 |
| IPS (Intrusion Prevention System) | 공격으로 판단한 트래픽을 그 자리에서 차단한다 | 트래픽이 지나가는 길 한가운데(인라인). 오탐이 정상 트래픽을 끊을 수 있어 규칙 조정이 중요하다 |
탐지 방식은 알려진 공격 패턴과 맞춰 보는 시그니처 기반과, 평소 트래픽 모양을 학습해 두고 벗어나면 잡는 이상 탐지(anomaly) 기반이다. 시그니처는 오탐이 적지만 새 공격을 못 잡고, 이상 탐지는 알려지지 않은 공격도 잡지만 오탐이 많다. 지금은 NGFW가 IPS를 품는 경우가 많다.
전형적인 배치는 바깥에서 안쪽으로 겹을 쌓는 모양이다.
flowchart LR inet["인터넷"] --- fw["방화벽"] --- ips1["IPS"] --- core["라우터·백본 스위치"] --- lan["내부망"] ips1 --- ips2["IPS"] --- dmz["DMZ 서버팜(웹·메일)"] ap["무선 AP"] --- ips3["IPS<br>(무선 사용자가 시작하는 공격도 거른다)"] --- sw["스위치"]
VPN
VPN(Virtual Private Network) 은 인터넷 같은 공용망 위에 암호화된 터널을 만들어, 떨어진 기기나 네트워크를 같은 사설망에 있는 것처럼 잇는다. 본사와 지사를 잇던 전용 회선은 거리와 지점 수에 따라 비용이 늘고 지점을 옮길 때마다 다시 깔아야 했다. VPN은 이미 있는 공용망을 빌려 쓰고 사설망에 필요한 것(주소 비공개, 암호화, 사용자 인증·접근 제한)만 위에 얹는다. 망은 통신사 것이지만 쓰는 사람에게는 사설망처럼 보여서 「가상」 사설망이다.
VPN 없이:
flowchart LR
d1["기기"] -->|"공용 Wi-Fi, ISP가 목적지를 봄"| w1["웹사이트<br/>(내 IP가 보임)"]VPN 사용:
flowchart LR
d2["기기"] ==>|"암호화 터널"| v["VPN 서버"] --> w2["웹사이트<br/>(VPN 서버 IP가 보임)"]- 기기와 VPN 서버가 서로 인증하고 터널을 맺는다
- 기기의 트래픽을 터널 안에서 암호화한다
- VPN 서버가 풀어서 목적지로 보낸다. 목적지는 VPN 서버 IP를 본다
| 장점 | 단점 |
|---|---|
| 공용 Wi-Fi·ISP로부터 트래픽 내용과 목적지를 숨긴다 | 경유하는 만큼 느려질 수 있다 |
| 원래 IP를 가린다 | 일부 서비스·국가가 VPN 트래픽을 차단한다 |
| 사설망 자원(사내 시스템, VPC)에 원격 접속 | VPN 제공자는 모든 트래픽을 볼 수 있다. 신뢰를 ISP에서 VPN 업체로 옮길 뿐이다 |
포워드 프록시와 무엇이 다른지는 프록시: 포워드 프록시와 리버스 프록시에 있다.
VPN의 종류
| 기준 | 종류 | 설명 |
|---|---|---|
| 연결 구조 | 원격 접속(remote access) | 사용자 기기 한 대가 회사망·VPC에 붙는다 |
| 사이트 간(site-to-site) | 지점 네트워크와 본사·클라우드 네트워크를 라우터끼리 상시 연결한다 | |
| 프로토콜 | IPsec | 네트워크 계층에서 동작하는 오래된 표준. 사이트 간 연결에 흔하다 |
| SSL/TLS VPN(OpenVPN 등) | TLS 위에서 동작해 방화벽을 잘 통과한다 | |
| WireGuard | 코드가 작고 현대 암호만 쓰는 경량 프로토콜 |
사내 VPN을 계정 체계에 붙이기
VPN 전용 계정 DB(LDAP 등)를 따로 운영하거나 설정 파일·키를 나눠 주는 방식은 관리 부담과 유출 위험이 크다. 이미 쓰는 신원 공급자(Google Workspace·Okta 같은 SSO, 클라우드 IAM)로 인증하게 만들면 입·퇴사가 계정 하나로 정리된다.
flowchart TB
subgraph auth["1. 인증"]
a1["사용자"] --> a2["SSO(OAuth/OIDC) 또는 클라우드 IAM 확인"] --> a3["서명된 단기 토큰(JWT) 발급"]
end
subgraph conn["2. 연결"]
c1["클라이언트가 토큰을 VPN 서버에 제시"] --> c2["서버가 서명·만료 확인"] --> c3["VPN IP·게이트웨이 설정을 내려 준다"]
end
subgraph tun["3. 터널"]
t1["클라이언트가 TUN 가상 장치를 만들고,<br/>IP 패킷을 TLS 채널(예: gRPC 스트림) 안에 실어 보낸다"]
end
subgraph keep["4. 유지"]
k1["끊기면 지수 백오프로 재연결,<br/>토큰이 만료되면 연결을 끊는다"]
end
a3 --> c1
c3 --> t1
t1 --> k1- 인증과 터널을 토큰으로 분리하면 인증 수단을 늘려도 터널 쪽은 그대로다.
- 직군·역할마다 다른 VPN 그룹(클라우드 보안 그룹)으로 접근 범위를 나눈다.
- TUN은 3계층(IP 패킷) 장치라서 연결·트래픽을 사용자 단위로 기록해 이상 징후를 볼 수 있다.
전통적인 VPN은 터널 안에 들어오면 망 전체를 믿는 구조다. 그래서 사용자·기기·요청마다 다시 확인하는 제로 트러스트 접근(ZTNA) 이 사내 VPN을 대체하는 흐름이 있다.
OSI 계층별 공격
공격은 계층마다 노리는 것이 다르다. 한 계층의 방어만으로는 부족하므로 계층마다 겹겹이 막는다(OSI 7계층).
| 계층 | 대표 공격 | 대표 방어 |
|---|---|---|
| 7 응용 | 피싱, 악성 코드 주입(SQL 인젝션·XSS), 응용 계층 DDoS(HTTP 폭주) | 입력 검증, WAF, 레이트 리밋 → 웹 보안: CSRF와 XSS |
| 6 표현 | 인코딩·디코딩 취약점, 포맷 스트링 공격, 직렬화 데이터 악용 | 검증된 파서, 정규화 후 검증 |
| 5 세션 | 세션 하이재킹, 세션 고정, 무차별 대입 로그인 | 로그인 후 세션 ID 재발급, 시도 횟수 제한 → 세션 기반 인증과 토큰 기반 인증 |
| 4 전송 | 중간자 공격, SYN 플러드 | TLS, SYN 쿠키 |
| 3 네트워크 | IP 스푸핑, 라우팅 테이블 조작, 볼류메트릭 DDoS | 출발지 검증 필터: 바깥에서 들어오는데 출발지가 내부 대역인 패킷을 버리고(인그레스 필터링), 나가는데 출발지가 내부 대역이 아닌 패킷을 막는다(이그레스 필터링, BCP 38). 라우팅 보안, DDoS 방어 서비스 |
| 2 데이터 링크 | MAC 스푸핑, ARP 스푸핑, VLAN 호핑, 스니핑(NIC를 무차별 모드로 두어 자기 것이 아닌 프레임까지 엿보기) | 포트 보안, 동적 ARP 검사, VLAN 설정 점검. 허브와 달리 스위치는 프레임을 해당 포트로만 보내 스니핑을 어렵게 하지만, ARP 스푸핑과 함께 쓰면 뚫린다. 최종 방어는 전송 암호화(TLS) |
| 1 물리 | 도청(선로 탭), 물리적 변조, 전자기 간섭 | 출입 통제, 케이블 보호, 전송 암호화 |
정리
- 방화벽은 기본 거부에서 시작해 포트·IP·프로토콜·상태·애플리케이션 기준으로 필요한 것만 연다. 지금의 기본은 상태 추적 방화벽이고, 응용 계층은 WAF·NGFW가 본다.
- VPN은 공용망 위의 암호화 터널이다. 원격 접속과 사이트 간 연결로 나뉘고, 신뢰를 VPN 제공자에게 옮긴다는 점을 기억한다.
- 위협은 가용성·기밀성·무결성·인증 중 무엇을 깨느냐로 나누고, 암호는 대칭키로 데이터를, 공개키로 키 합의와 서명을, 해시로 무결성을 맡는다.
- 공격은 계층마다 다르므로 방어도 계층마다 쌓는다.
관련 노트: 프록시: 포워드 프록시와 리버스 프록시, OSI 7계층, SSH의 동작: 전송·인증·연결 계층, 정보 시스템 보안, 보안 시스템 설계: 원칙과 민감 데이터 관리, 가입자망과 광역망(MPLS VPN)
원본 기록7
- 원문 (새 창) bytebytego.com/guides/firewall-explained-to-kids-and-adults
- 원문 (새 창) bytebytego.com/guides/top-6-firewall-use-cases
- 원문 (새 창) bytebytego.com/guides/how-does-a-vpn-work
- 원문 (새 창) bytebytego.com/guides/types-of-vpns
- 원문 (새 창) bytebytego.com/guides/top-network-security-cheatsheet
- 원문 (새 창) medium.com/watcha/watcha-사내-vpn-개발하기-e04f946d3ccb
- GitHub 원문 (새 창) github.com/avgspacelover/Subjective-studies_OS-CN-DBMS