IT Knowledge/Network/images/09-vpn과-보안-venn.svg
VPN과 보안
VPN은 인터넷을 통해 안전하게 사설 네트워크에 연결하고, 네트워크 보안은 데이터를 보호합니다.
🎯 이 파일을 학습하면 무엇을 알게 될까요?
이 파일을 학습하면 다음을 할 수 있게 됩니다:
- VPN의 개념과 동작 원리 이해
- VPN 프로토콜의 차이 파악
- 네트워크 보안의 기본 개념 이해
- 방화벽과 IPS의 역할 파악
🧠 학습 전 생각해볼 질문
-
VPN은 왜 필요할까요?
- 공공 와이파이에서 사설 네트워크에 안전하게 접속하려면?
- 원격 근무를 안전하게 하려면?
-
VPN은 어떻게 작동할까요?
- 인터넷을 통해 사설 네트워크에 어떻게 연결할까요?
- 데이터는 어떻게 암호화될까요?
-
네트워크 보안은 어떻게 이루어질까요?
- 악성 트래픽을 어떻게 차단할까요?
- 방화벽과 IPS는 어떻게 다를까요?
📖 1. VPN이란?
1.1 VPN의 정의
**VPN(Virtual Private Network)**는 공용 네트워크(인터넷)를 통해 사설 네트워크에 안전하게 연결하는 기술입니다.
비유: 사설 터널
- 공용 도로: 인터넷 (위험)
- 사설 터널: VPN (안전)
1.2 VPN 작동 원리
사설 네트워크 (회사)
↑
VPN 터널 (암호화)
↑
인터넷 (공용 네트워크)
↑
VPN 게이트웨이
↑
원격 사용자 (집)
과정
1단계: 연결 요청
사용자: "VPN 서버에 연결하고 싶어!"
2단계: 인증
VPN 서버: "사용자가 맞나? 확인해보자"
사용자: "사용자명: user, 비밀번호: ***"
3단계: 암호화 설정
VPN 서버: "암호화 방식은 AES-256으로 하자!"
사용자: "알겠어!"
4단계: 터널 생성
VPN 터널 생성 → 데이터 암호화 전송
1.3 VPN 장점
| 장점 | 설명 |
|---|---|
| 보안 | 데이터 암호화 |
| 프라이버시 | IP 주소 숨김 |
| 원격 접속 | 어디서나 사설 네트워크 접속 |
| 비용 절감 | 전용선 없음 |
🔐 2. VPN 프로토콜
2.1 주요 VPN 프로토콜
| 프로토콜 | 계층 | 보안 | 속도 | 사용 사례 |
|---|---|---|---|---|
| OpenVPN | L7 | 높음 | 중간 | 일반 VPN |
| WireGuard | L3 | 높음 | 빠름 | 최신 VPN |
| IPsec | L3 | 높음 | 중간 | 사이트 간 VPN |
| SSL/TLS VPN | L7 | 높음 | 중간 | 웹 브라우저 VPN |
| PPTP | L2 | 낮음 | 빠름 | 구형 VPN (추천 안 함) |
| L2TP | L2 | 중간 | 느림 | 사이트 간 VPN |
2.2 OpenVPN
OpenVPN은 오픈 소스 SSL/TLS 기반 VPN입니다.
특징
| 특징 | 설명 |
|---|---|
| 프로토콜 | SSL/TLS |
| 암호화 | AES-256 |
| 포트 | 443 (HTTPS 위장 가능) |
| 유연성 | 높음 |
| 복잡도 | 중간 |
장단점
| 장점 | 단점 |
|---|---|
| 오픈 소스 | 설정 복잡함 |
| 높은 보안 | 설정 파일 관리 필요 |
| 방화벽 우회 가능 (443 포트) |
2.3 WireGuard
WireGuard는 최신의 가벼운 VPN 프로토콜입니다.
특징
| 특징 | 설명 |
|---|---|
| 프로토콜 | UDP |
| 암호화 | ChaCha20, Curve25519 |
| 포트 | 51820 |
| 코드 크기 | 4,000행 (매우 작음) |
| 복잡도 | 낮음 |
장단점
| 장점 | 단점 |
|---|---|
| 매우 빠름 | 비교적 최신 기술 |
| 설정 간단 | 일부 기능 부족 |
| 낮은 리소스 사용 |
2.4 IPsec
IPsec은 IP 계층에서 동작하는 VPN 프로토콜입니다.
모드
| 모드 | 설명 |
|---|---|
| 전송 모드 (Transport Mode) | 페이로드만 암호화 |
| 터널 모드 (Tunnel Mode) | 전체 패킷 암호화 |
SA (Security Association)
SA는 IPsec 연결의 매개변수입니다.
SA 구성:
- 암호화 알고리즘: AES-256
- 인증 알고리즘: SHA-256
- 수명: 3600초
🛡️ 3. 네트워크 보안 기초
3.1 방화벽 (Firewall)
방화벽은 네트워크 트래픽을 필터링하는 장치입니다.
비유: 경비원
- 들어오는 사람: 인증
- 나가는 사람: 확인
방화벽 유형
| 유형 | 계층 | 기준 | 예시 |
|---|---|---|---|
| 패킷 필터링 | L3/L4 | IP, 포트 | iptables |
| 상태 확인 | L4 | 연결 상태 | iptables conntrack |
| 프록시 | L7 | 콘텐츠 | Squid |
| NGFW (Next-Gen) | L7 | 애플리케이션 | Palo Alto |
방화벽 규칙
규칙 1: SSH (22) 허용
규칙 2: HTTP (80) 허용
규칙 3: HTTPS (443) 허용
규칙 4: 모든 거부
순서: 위 → 아래 (첫 번째 일치하는 규칙 적용)
3.2 IPS (Intrusion Prevention System)
IPS는 악성 트래픽을 감지하고 차단합니다.
IPS 유형
| 유형 | 배치 | 특징 |
|---|---|---|
| NIPS (Network IPS) | 네트워크 경로 | 실시간 차단 |
| HIPS (Host IPS) | 호스트 | 로컬 보호 |
| WIPS (Wireless IPS) | 무선 네트워크 | 무선 보호 |
IPS vs IDS
| 특징 | IDS | IPS |
|---|---|---|
| 역할 | 감지 | 차단 |
| 위치 | 통과 | 인라인 |
| 대응 | 알림 | 차단 |
3.3 ACL (Access Control List)
ACL은 네트워크 접근을 제어하는 규칙입니다.
ACL 유형
| 유형 | 기준 | 예시 |
|---|---|---|
| 표준 ACL | 소스 IP | permit 192.168.1.0 0.0.0.255 |
| 확장 ACL | 소스/목적지, 포트 | permit tcp 192.168.1.0 0.0.0.255 any eq 80 |
🔍 4. 네트워크 보안 위협
4.1 DDoS (Distributed Denial of Service)
DDoS는 여러 대의 컴퓨터로 서버에 과부하를 주는 공격입니다.
공격 과정:
1. 봇넷(Botnet) 조성 (감염된 컴퓨터)
2. 공격 대상 선정
3. 동시에 대량의 요청 전송
4. 서버 과부하 → 서비스 중단
DDoS 방어
| 방법 | 설명 |
|---|---|
| 로드 밸런싱 | 트래픽 분산 |
| CDN | 콘텐츠 캐싱 |
| WAF | 웹 애플리케이션 필터링 |
| Rate Limiting | 요청 속도 제한 |
4.2 MITM (Man-in-the-Middle)
MITM은 중간에서 통신을 가로채는 공격입니다.
공격 과정:
사용자 → 공격자 → 서버
↑
가로채기 및 수정
MITM 방어
| 방법 | 설명 |
|---|---|
| HTTPS | 암호화 통신 |
| VPN | 안전한 터널 |
| 인증서 확인 | SSL 인증서 검증 |
🛠️ 5. 실무에서의 설정
5.1 OpenVPN 설정
서버 설정 (server.conf)
# OpenVPN 서버 설정
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh2048.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
keepalive 10 120
cipher AES-256-CBC
comp-lzo
persist-key
persist-tun
status openvpn-status.log
verb 3클라이언트 설정 (client.ovpn)
client
dev tun
proto udp
remote vpn.example.com 1194
resolv-retry infinite
nobind
user nobody
group nogroup
persist-key
persist-tun
ca ca.crt
cert client.crt
key client.key
remote-cert-tls server
cipher AES-256-CBC
comp-lzo
verb 35.2 WireGuard 설정
서버 설정 (wg0.conf)
[Interface]
Address = 10.0.0.1/24
PrivateKey = 서버_프라이빗_키
ListenPort = 51820
[Peer]
PublicKey = 클라이언트_퍼블릭_키
AllowedIPs = 10.0.0.2/32클라이언트 설정 (wg0.conf)
[Interface]
Address = 10.0.0.2/24
PrivateKey = 클라이언트_프라이빗_키
[Peer]
PublicKey = 서버_퍼블릭_키
Endpoint = vpn.example.com:51820
AllowedIPs = 10.0.0.0/245.3 Linux 방화벽 (iptables) 설정
# 기본 정책: 모두 거부
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT
# 연결된 패킷 허용
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
# SSH 허용
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# HTTP/HTTPS 허용
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# Loopback 허용
sudo iptables -A INPUT -i lo -j ACCEPT
# ICMP 허용 (ping)
sudo iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
# 로깅
sudo iptables -A INPUT -j LOG --log-prefix "iptables: "
# 규칙 저장
sudo iptables-save > /etc/iptables/rules.v4🎓 6. 심화 주제
6.1 Zero Trust 보안
Zero Trust는 모든 트래픽을 신뢰하지 않는 보안 모델입니다.
원칙:
1. 항상 검증
2. 최소 권한
3. 가정 없음
6.2 SASE (Secure Access Service Edge)
SASE는 네트워크와 보안 서비스를 클라우드로 통합합니다.
구성:
- SD-WAN (네트워크)
- CASB (클라우드 보안)
- FWaaS (방화벽)
- ZTNA (Zero Trust)
✅ 7. 학습 체크리스트
VPN 기초
- VPN의 정의와 작동 원리 이해
- VPN의 장점 이해
- VPN 프로토콜의 특징 이해
VPN 프로토콜
- OpenVPN 특징 이해
- WireGuard 특징 이해
- IPsec 특징 이해
- 각 프로토콜의 장단점 이해
네트워크 보안
- 방화벽의 역할 이해
- IPS의 역할 이해
- ACL의 역할 이해
- DDoS 공격과 방어 이해
- MITM 공격과 방어 이해
실무 활용
- OpenVPN 설정 가능
- WireGuard 설정 가능
- iptables 방화벽 설정 가능
🧪 8. 실습 연습
연습 1: OpenVPN 구성
# 서버 설정
sudo apt-get install openvpn easy-rsa
make-cadir ~/openvpn-ca
cd ~/openvpn-ca
source vars
./clean-all
./build-ca
./build-key-server server
./build-dh
# 클라이언트 키 생성
cd ~/openvpn-ca
source vars
./build-key client1
# 서버 시작
sudo systemctl start openvpn@server연습 2: WireGuard 구성
# WireGuard 설치
sudo apt-get install wireguard
# 키 생성
wg genkey | tee privatekey | wg pubkey > publickey
# 설정 파일 생성
sudo nano /etc/wireguard/wg0.conf
# WireGuard 시작
sudo wg-quick up wg0
# 상태 확인
sudo wg show연습 3: 방화벽 설정
# 방화벽 규칙 추가
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# 규칙 확인
sudo iptables -L -n -v
# 규칙 저장
sudo iptables-save > /etc/iptables/rules.v4💡 9. 학습 후 생각해볼 질문
-
이 부분을 이해했나요?
- VPN과 다른 네트워크 보안 기술의 차이를 설명할 수 있나요?
- 각 VPN 프로토콜의 장단점을 설명할 수 있나요?
-
어떻게 확인하지?
wg show로 WireGuard 상태를 확인해보세요.iptables -L로 방화벽 규칙을 확인해보세요.
-
무엇이 가장 어려웠나요?
- 방화벽 규칙의 순서와 일치 원리를 이해하기 어렵지 않았나요?
-
어떻게 개선할까요?
- 실제로 VPN 서버를 구축해보세요.
🔗 관련 노트
마지막 업데이트: 2026-01-29 다음 단계: 네트워크 트러블슈팅 학습