Trong series: Bảo mật
  1. 1 Mã độc là gì? Phân loại, đặc tính và cách phòng tránh
  2. 2 DDos là gì? Dấu hiệu, xử lý và cách phòng chống hiệu quả
  3. 3 Phishing là gì? Nhận diện và phòng chống tấn công lừa đảo trực tuyến
  4. 4 DNS Sinkhole là gì? Ứng dụng và cách dùng kỹ thuật DNS Sinkhole
  5. 5 OAuth 2.0 là gì? Ủy quyền truy cập và đăng nhập bằng Google/Facebook
  6. 6 Trojan là gì? Những thông tin cơ bản về mã độc Trojan
  7. 7 Zero Trust Là Gì? Mô Hình Bảo Mật 'Không Tin Tưởng Ai'
  8. 8 VPN là gì? Mạng riêng ảo, WireGuard và OpenVPN
  9. 9 MFA Là Gì? So Sánh MFA vs 2FA và Các Phương Thức Xác Thực
  10. 10 Tường lửa là gì? Vai trò và chức năng trong bảo mật mạng
  11. 11 SQL Injection là gì? Tấn công cơ sở dữ liệu và cách phòng chống
  12. 12 Ransomware là gì? Mã độc mã hóa tống tiền và cách phòng chống
✦ Tóm tắt nhanh
VPN (Virtual Private Network) tạo đường hầm mã hóa giữa thiết bị và VPN server, bảo vệ traffic và ẩn địa chỉ IP thực. Tìm hiểu cách WireGuard, OpenVPN hoạt động, và khi nào nên dùng VPN thay vì Proxy.
Bài này thế nào?

VPN (Virtual Private Network) là công nghệ bảo mật mạng quan trọng giúp nhân viên làm việc từ xa, bảo vệ kết nối trên WiFi công cộng, và kết nối các văn phòng chi nhánh. Bài viết giải thích cơ chế hoạt động, so sánh WireGuard với OpenVPN, và hướng dẫn cấu hình thực tế.

VPN là gì?

VPN (Virtual Private Network) tạo một đường hầm mã hóa (encrypted tunnel) giữa thiết bị của bạn và VPN server. Thay vì traffic đi thẳng ra internet và lộ IP thực, mọi dữ liệu đều được mã hóa và chỉ giải mã ở đầu VPN server.

Cơ chế hoạt động:

  1. Thiết bị tạo kết nối mã hóa đến VPN server
  2. Mọi traffic được đóng gói và mã hóa bên trong tunnel
  3. VPN server giải mã và forward request đến đích thực
  4. Response đi ngược lại theo cùng tunnel
  5. Website đích chỉ thấy IP của VPN server

Tại sao cần VPN?

  • Remote work: Nhân viên làm việc từ xa cần truy cập tài nguyên nội bộ (file server, database, internal tools)
  • Public WiFi: Quán cà phê, sân bay — WiFi không mã hóa, dễ bị nghe lén
  • Privacy: Ẩn IP thực khỏi website và ISP
  • Site-to-site: Kết nối văn phòng chi nhánh với nhau

Các giao thức VPN

WireGuard (Khuyên dùng)

Protocol hiện đại nhất, được thiết kế từ đầu cho hiệu năng và bảo mật:

  • ~4,000 dòng code (dễ audit, ít bug surface)
  • Dùng UDP — nhanh hơn TCP, kém tin cậy hơn nhưng ổn với VPN
  • Tích hợp vào Linux kernel từ phiên bản 5.6 (2020)
  • Cryptography state-of-the-art: Curve25519, ChaCha20, Poly1305
  • Reconnect cực nhanh khi đổi mạng (roaming)

OpenVPN

Giao thức lâu đời và trưởng thành nhất:

  • ~100,000 dòng code — phức tạp hơn, nhiều tính năng hơn
  • Hỗ trợ cả TCP và UDP
  • Có thể chạy trên port 443 (giống HTTPS) để bypass firewall nghiêm ngặt
  • Được hỗ trợ trên hầu hết nền tảng
  • Phổ biến trong enterprise

IPsec/IKEv2

  • Chuẩn công nghiệp, tích hợp sẵn vào iOS/Android/Windows
  • IKEv2 đặc biệt tốt cho mobile: reconnect nhanh khi chuyển mạng (WiFi ↔ 4G)
  • Phổ biến trong corporate VPN (Cisco AnyConnect, Juniper)

L2TP/PPTP (Lỗi thời)

  • PPTP: Không dùng — đã bị break từ 1999, không an toàn
  • L2TP/IPsec: Vẫn dùng được nhưng WireGuard tốt hơn nhiều
PPTP hoàn toàn không an toàn

PPTP sử dụng MS-CHAPv2 đã bị crack từ năm 1999. Nếu hệ thống đang dùng PPTP, hãy migrate sang WireGuard hoặc OpenVPN ngay — traffic PPTP có thể bị giải mã offline chỉ trong vài giờ bằng công cụ như Asleap hoặc CloudCracker.

Cấu hình WireGuard thực tế

Cài đặt WireGuard trên Ubuntu:

Bash
1# Cài đặt
2apt update && apt install wireguard
3
4# Tạo cặp key (server)
5wg genkey | tee /etc/wireguard/server_private.key | wg pubkey > /etc/wireguard/server_public.key
6
7# Tạo cặp key (client)
8wg genkey | tee client_private.key | wg pubkey > client_public.key

Server config — /etc/wireguard/wg0.conf:

ini
 1[Interface]
 2Address = 10.0.0.1/24
 3PrivateKey = <server-private-key>
 4ListenPort = 51820
 5
 6# Bật NAT để client có internet access
 7PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
 8PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
 9
10[Peer]
11# Client 1
12PublicKey = <client-public-key>
13AllowedIPs = 10.0.0.2/32

Client config:

ini
 1[Interface]
 2Address = 10.0.0.2/24
 3PrivateKey = <client-private-key>
 4DNS = 1.1.1.1
 5
 6[Peer]
 7PublicKey = <server-public-key>
 8Endpoint = 203.0.113.1:51820
 9AllowedIPs = 0.0.0.0/0        # Route tất cả traffic qua VPN
10PersistentKeepalive = 25       # Giữ connection sống qua NAT
Full tunnel vs Split tunnel trong WireGuard

AllowedIPs = 0.0.0.0/0 (full tunnel) route toàn bộ traffic qua VPN — mọi request đều qua server. Nếu chỉ cần truy cập mạng nội bộ công ty, dùng split tunnel thay thế: AllowedIPs = 10.0.0.0/8, 192.168.0.0/16 — traffic đến internet đi thẳng, chỉ traffic đến private range mới qua VPN. Split tunnel giảm tải cho VPN server và cải thiện tốc độ đáng kể.

Khởi động WireGuard:

Bash
 1# Bật WireGuard interface
 2wg-quick up wg0
 3
 4# Kiểm tra trạng thái
 5wg show
 6
 7# Bật tự động khi boot
 8systemctl enable wg-quick@wg0
 9
10# Xem traffic stats
11wg show wg0 transfer

Site-to-site vs Remote Access VPN

Site-to-site VPN — kết nối hai mạng cố định:

  • Không cần cài VPN client trên từng máy nhân viên
  • Router/firewall của cả hai văn phòng tạo tunnel với nhau
  • Nhân viên văn phòng A có thể truy cập resource của văn phòng B như thể cùng mạng

Remote Access VPN — nhân viên kết nối từ xa:

  • Mỗi nhân viên cài VPN client (WireGuard, OpenVPN, Cisco AnyConnect...)
  • Kết nối đến VPN gateway của công ty
  • Sau khi kết nối, có thể truy cập tất cả resource nội bộ

Chọn loại nào?

  • Văn phòng cố định ↔ data center: Site-to-site
  • Work from home, remote team: Remote Access
  • Kết hợp cả hai: common trong enterprise lớn

VPN vs Proxy

Tiêu chí VPN Proxy
Mã hóa Luôn luôn Tùy loại (HTTP proxy = không)
Scope Toàn bộ OS Một ứng dụng
DNS Qua VPN (chống leak) App quyết định
Tốc độ Chậm hơn một chút Nhanh hơn
Setup OS-level Per-app config
Use case Remote work, full privacy Web dev, bypass, debug

Proxy là gì? Forward Proxy, Reverse Proxy và SOCKS5

VPN không bảo vệ bạn khỏi DNS leak và WebRTC leak

Dùng VPN không đồng nghĩa với ẩn danh hoàn toàn. Hai rủi ro phổ biến: (1) DNS leak — nếu DNS query không đi qua VPN tunnel, ISP vẫn thấy bạn truy cập domain nào; kiểm tra tại dnsleaktest.com. (2) WebRTC leak — trình duyệt có thể lộ IP thực qua WebRTC ngay cả khi VPN đang bật; tắt WebRTC trong browser hoặc dùng extension như uBlock Origin. Luôn bật kill switch để ngắt internet nếu VPN mất kết nối đột ngột.

Zero Trust là gì? Kiến trúc bảo mật "Không tin tưởng ai"

Subnet và CIDR là gì? Chia mạng IP và định tuyến hiện đại

Câu hỏi thường gặpQ&A
VPN là gì ngắn gọn?
VPN (Virtual Private Network) tạo một đường hầm mã hóa (encrypted tunnel) giữa thiết bị của bạn và VPN server. Mọi traffic của bạn đi qua tunnel này, ẩn IP thực và mã hóa dữ liệu. Website và server đích chỉ thấy IP của VPN server, không thấy IP thực của bạn.
WireGuard khác OpenVPN thế nào?
WireGuard chỉ có ~4,000 dòng code, dùng UDP, được tích hợp trực tiếp vào Linux kernel từ phiên bản 5.6. Cực nhanh, dễ audit, setup đơn giản. OpenVPN có lịch sử lâu đời hơn (2001), ~100,000 dòng code, hỗ trợ nhiều options hơn (TCP/UDP, port 443 để bypass firewall), nhưng phức tạp và chậm hơn. WireGuard là lựa chọn mặc định cho triển khai mới.
VPN có che giấu hoàn toàn danh tính không?
Không hoàn toàn. VPN provider vẫn thấy toàn bộ traffic của bạn — chọn provider uy tín. Ngoài ra: (1) DNS leak — nếu DNS query không đi qua VPN, ISP vẫn thấy bạn truy cập gì; (2) WebRTC leak — browser có thể lộ IP thực qua WebRTC ngay cả khi dùng VPN; (3) Device fingerprinting — website nhận dạng bạn qua browser fingerprint, không cần IP. Dùng kill switch và DNS-over-VPN để giảm risk.
Split tunneling là gì?
Split tunneling là tính năng chỉ route một phần traffic qua VPN, phần còn lại đi thẳng ra internet. Ví dụ: traffic đến server nội bộ công ty đi qua VPN (để truy cập resource nội bộ), còn Netflix/YouTube đi thẳng ra internet (để tránh VPN overhead và bypass proxy). Hầu hết VPN client enterprise đều hỗ trợ split tunneling.
Site-to-site VPN khác Remote Access VPN thế nào?
Site-to-site VPN kết nối hai mạng cố định với nhau — ví dụ văn phòng Hà Nội ↔ văn phòng TP.HCM: cả hai mạng LAN kết nối như thể chúng là một mạng duy nhất, mà không cần cấu hình trên từng máy nhân viên. Remote Access VPN cho phép từng nhân viên kết nối từ xa vào mạng công ty từ bất kỳ đâu — cần VPN client trên thiết bị cá nhân.
VPN làm chậm internet không?
Có, vì phải mã hóa/giải mã mọi packet và route qua server trung gian. Mức độ: WireGuard nhanh hơn OpenVPN khoảng 40% trong benchmark thực tế. Tốc độ còn phụ thuộc vào khoảng cách đến VPN server (server Việt Nam nhanh hơn server Mỹ), băng thông của provider, và tải hiện tại của server. Trong điều kiện bình thường với server gần, chênh lệch thường < 20%.