OpenVPN - Bảo mật quản trị máy chủ của bạn với kết nối VPN đa nền tảng

theanh

Administrator
Nhân viên
OpenVPN là một VPN SSL đầy đủ tính năng, triển khai phần mở rộng mạng bảo mật lớp 2 hoặc 3 của OSI bằng cách sử dụng giao thức SSL/TLS tiêu chuẩn của ngành. Nó hỗ trợ các phương pháp xác thực máy khách linh hoạt dựa trên chứng chỉ, thẻ thông minh và/hoặc thông tin đăng nhập tên người dùng/mật khẩu và cho phép các chính sách kiểm soát truy cập dành riêng cho người dùng hoặc nhóm bằng cách sử dụng các quy tắc tường lửa được áp dụng cho giao diện ảo VPN. OpenVPN không phải là proxy ứng dụng web và không hoạt động thông qua trình duyệt web.


Chuẩn bị máy chủ​

Đối với hướng dẫn này, chúng ta sẽ sử dụng máy chủ Debian hoặc Ubuntu. Bạn có thể sử dụng bất kỳ máy chủ nào bạn đã có trong sản xuất.


Cài đặt OpenVPN​

Tất cả các bản phân phối đã biết của máy chủ Linux và UNIX đều có OpenVPN trong kho lưu trữ của chúng. Việc cài đặt đơn giản như chạy:
Mã:
apt-get install openvpn

Cấu hình tường lửa​

Cổng lắng nghe mặc định cho OpenVPN là 1194. Bạn có thể sử dụng cổng mặc định một cách an toàn. Theo mặc định, OpenVPN sử dụng giao thức UDP. Có một lý do đơn giản cho điều này:

OpenVPN sử dụng Lớp 2 và 3
  • Lớp 2 là lớp Liên kết dữ liệu cung cấp khả năng truyền khung dữ liệu không có lỗi qua lớp vật lý, nghĩa là nó sử dụng thiết bị mạng TUN/TAP của riêng nó.
  • Lớp 3 là lớp Mạng cung cấp định tuyến.
Điều này có nghĩa là Lớp 4 (Lớp vận chuyển đảm bảo phân phối gói tin) được quản lý bởi hệ điều hành và chính ứng dụng. Nói một cách đơn giản, bất kỳ quyền kiểm soát lưu lượng và kiểm soát phân phối gói tin nào đều do hệ điều hành thực hiện, do đó không cần phải thực hiện hai lần bởi chính OpenVPN. Tất nhiên, có một tùy chọn để sử dụng TCP cho OpenVPN, nghĩa là bạn sẽ lãng phí nhiều tài nguyên hơn, nhưng trong một số môi trường đặc biệt, điều này có thể hữu ích.

Tóm lại, việc mở cổng 1194 cho UDP là đủ để cho phép kết nối VPN. Không cần lọc vì OpenVPN đã triển khai xác minh và kiểm soát riêng (xem ở phần sau). Thêm câu lệnh sau vào cấu hình tường lửa của bạn.
Mã:
-A INPUT -p udp -m udp --dport 1194 -j ACCEPT


Cấu hình máy chủ

Sau khi cài đặt OpenVPN thành công, bạn có thể tìm thấy tất cả các tệp cấu hình OpenVPN trong thư mục /etc/openvpn. Hãy mở tệp server.conf trong trình soạn thảo của chúng ta và chỉnh sửa nó.
Mã:
nano /etc/openvpn/server.conf
Kiểm tra và chỉnh sửa các phần sau:
Mã:
# Chứng chỉ gốc SSL/TLS (ca), chứng chỉ
# (cert) và khóa riêng (khóa).

ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/server.crt
key /etc/openvpn/easy-rsa/keys/server.key # Tệp này phải được giữ bí mật

# Tham số Diffie hellman.
dh /etc/openvpn/easy-rsa/keys/dh2048.pem

# Cấu hình chế độ máy chủ và cung cấp mạng con VPN
máy chủ 10.9.8.0 255.255.255.0

# Đẩy các tuyến đường đến máy khách
push "route 10.9.8.0 255.255.255.0"
 
# Để tăng cường bảo mật ngoài những gì được cung cấp bởi
# SSL/TLS, hãy tạo "tường lửa HMAC"
# để giúp chặn các cuộc tấn công DoS và tràn cổng UDP.
tls-auth /etc/openvpn/easy-rsa/keys/ta.key 0 # Tệp này là bí mật
 
# Chọn một mã hóa mật mã.
cipher AES-128-CBC # AES
 
# Bật nén trên liên kết VPN.
comp-lzo
 
# Tốt nhất là giảm đặc quyền của daemon OpenVPN
# sau khi khởi tạo.
user vpn
group vpn
Vì chúng tôi đã chọn 10.9.8.0/24 subnet là một subnet nội bộ, máy khách của bạn sẽ nhận được địa chỉ IP từ subnet này sau khi kết nối. Theo mặc định, 10.9.8.1 được dành riêng cho chính máy chủ.


Tạo chứng chỉ​

Đầu tiên, chúng ta phải chỉnh sửa tệp vars. Điền vào các tham số KEY_COUNTRY, KEY_PROVINCE, KEY_CITY, KEY_ORG và KEY_EMAIL. Các giá trị này sẽ được sử dụng mỗi khi bạn tạo chứng chỉ mới.

Để tải tệp vars, hãy chạy:
Mã:
./vars
Sau khi tải chúng, chúng ta có thể tạo cơ quan cấp chứng chỉ:
Mã:
./clean-all
Mã:
./build-ca
Khi CA đã được tạo, hãy tiến hành tạo chứng chỉ máy chủ:
Mã:
./build-key-server server
Và một chứng chỉ nữa cho máy khách:
Mã:
./build-key client
Cuối cùng, chúng ta phải tạo tham số DH:
Mã:
./build-dh

Bảo mật hơn​

Để đảm bảo bảo mật máy chủ OpenVPN, chúng ta sẽ sử dụng tls-auth. Điều này đảm bảo chúng tôi sẽ không gửi chứng chỉ của mình đến các máy chủ bị xâm phạm.
Mã:
openvpn –genkey –secret ta.key
Tệp ta.key này hiện phải được bao gồm trong gói chứng chỉ của mọi máy khách.


Cấu hình máy khách​

Mã:
[B][/b]####################################################
# Tệp cấu hình OpenVPN 2.0 phía máy khách mẫu #
# để kết nối với máy chủ đa máy khách. #
# #
# Cấu hình này có thể được sử dụng bởi nhiều #
# máy khách, tuy nhiên mỗi máy khách phải có #
# tệp chứng chỉ và khóa riêng. #
# #
# Trên Windows, bạn có thể muốn đổi tên tệp #
# này thành tệp có phần mở rộng là .ovpn #
########################################################
 
# Chỉ định rằng chúng tôi là máy khách và chúng tôi
# sẽ kéo một số chỉ thị tệp cấu hình
# từ máy chủ.
máy khách
 
# Sử dụng cùng cài đặt như bạn đang sử dụng trên
# máy chủ.
# Trên hầu hết các hệ thống, VPN sẽ không hoạt động
# trừ khi bạn tắt một phần hoặc toàn bộ
# tường lửa cho giao diện TUN/TAP.
;dev tap
dev tun
 
# Windows cần tên bộ điều hợp TAP-Windows
# từ bảng Kết nối mạng
# nếu bạn có nhiều hơn một. Trên XP SP2,
# bạn có thể cần phải tắt tường lửa
# cho bộ điều hợp TAP.
;dev-node MyTap
 
# Chúng ta đang kết nối với máy chủ TCP hay
# UDP? Sử dụng cùng một thiết lập như
# trên máy chủ.
;proto tcp
proto udp
 
# Tên máy chủ/IP và cổng của máy chủ.
# Bạn có thể có nhiều mục nhập từ xa
# để cân bằng tải giữa các máy chủ.
remote  1194
;remote my-server-2 1194
 
# Chọn một máy chủ ngẫu nhiên từ danh sách
# từ xa để cân bằng tải. Nếu không
# hãy thử các máy chủ theo thứ tự đã chỉ định.
;remote-random
 
# Tiếp tục thử vô thời hạn để giải quyết
# tên máy chủ của máy chủ OpenVPN. Rất hữu ích
# trên các máy không được kết nối cố định
# với internet như máy tính xách tay.
resolv-retry infinite
 
# Hầu hết các máy khách không cần liên kết với
# một số cổng cục bộ cụ thể.
nobind
 
# Hạ cấp đặc quyền sau khi khởi tạo (chỉ dành cho máy không phải Windows)
;user nobody
;group nobody
 
# Cố gắng duy trì một số trạng thái khi khởi động lại.
persist-key
persist-tun
 
# Nếu bạn đang kết nối thông qua
# proxy HTTP để truy cập máy chủ OpenVPN
# thực tế, hãy đặt máy chủ proxy/IP và
# số cổng tại đây. Xem trang hướng dẫn
# nếu máy chủ proxy của bạn yêu cầu
# xác thực.
;http-proxy-retry # thử lại khi kết nối không thành công
;http-proxy [máy chủ proxy] [cổng proxy #]
 
# Mạng không dây thường tạo ra nhiều
# gói tin trùng lặp. Đặt cờ này
# để tắt cảnh báo gói tin trùng lặp.
;mute-replay-warnings
 
# Tham số SSL/TLS.
# Xem tệp cấu hình máy chủ để biết thêm
# mô tả. Tốt nhất là sử dụng
# một cặp tệp .crt/.key riêng
# cho mỗi máy khách. Có thể sử dụng một tệp ca
# duy nhất cho tất cả máy khách.
ca ca.crt
cert client.crt
key client.key
 
# Xác minh chứng chỉ máy chủ bằng cách kiểm tra
# rằng chứng chỉ có trường nsCertType
# được đặt thành "máy chủ". Đây là một biện pháp phòng ngừa quan trọng để bảo vệ chống lại một cuộc tấn công tiềm ẩn được thảo luận tại đây: http://openvpn.net/howto.html#mitm Để sử dụng tính năng này, bạn sẽ cần tạo chứng chỉ máy chủ của mình với trường nsCertType được đặt thành "máy chủ". Tập lệnh build-key-server
# trong thư mục easy-rsa sẽ thực hiện việc này.
;ns-cert-type server
 
# Nếu khóa tls-auth được sử dụng trên máy chủ
# thì mọi máy khách cũng phải có khóa đó.
tls-auth ta.key 1
 
# Chọn một mã hóa mật mã.
# Nếu tùy chọn mã hóa được sử dụng trên máy chủ
# thì bạn cũng phải chỉ định ở đây.
cipher AES-128-CBC
 
# Bật nén trên liên kết VPN.
# Không bật tùy chọn này trừ khi nó cũng
# được bật trong tệp cấu hình máy chủ.
comp-lzo
 
# Đặt mức độ chi tiết của tệp nhật ký.
verb 3
 
# Tắt tiếng các tin nhắn lặp lại
tắt tiếng 20
Lưu dưới dạng tệp client.ovpn và bao gồm ta.key, ca.crt, client.crt, client.key vào một thư mục.

Sau khi cài đặt openvpn client vào máy tính của bạn và chạy tệp cấu hình client.ovpn, bạn sẽ có thể kết nối với máy chủ VPN của mình. Sau đó, bạn sẽ nhận được địa chỉ IP từ phạm vi 10.9.8.0/24 mà bạn đã đặt và hợp tác riêng tư với máy chủ của mình.
 
Back
Bên trên