[VPN] Hướng Dẫn Xây Dựng Hệ Thống OpenVPN

557

Hướng Dẫn Xây Dựng Hệ Thống OpenVPN

Hệ Điều Hành : Centos 6.6 minimal
IP public         : 192.168.1.100

 

<1>. Kiểm tra sự hỗ trợ module TUN/TAP kernel của hệ thống máy chủ

1.1> Kiểm tra kernel OS có hỗ trợ module TUN/TAP hay không ?
Chúng ta sẽ thực thi lệnh sau để kiểm tra thông tin cần thiết :

Nếu chúng ta có output như trên thì chứng tỏ máy chủ của chúng ta có hỗ trợ TUN/TAP trong kernel hệ thống. Còn nếu output ra khác thì có khả năng TUN/TAP kernel module có vấn đề hoặc kernel không hỗ trợ module này.

 

1.2> Kiểm tra TUN/TAP module đã kích hoạt hay chưa ?
Trong trường hợp, module TUN/TAP đã được kernel hỗ trợ thì công việc kế tiếp là kiểm tra xem module này đã được kích hoạt hay chưa ? Chúng ta sẽ chạy lệnh sau để kiểm tra xem module TUN/TAP đã được kích hoạt trên kernel VPS hay chưa.

-> Nếu output ra kết quả bất kì như trên thì chứng tỏ TUN/TAP module đã được kích hoạt. Còn nếu lệnh trên không hề xuất ra thông tin output nào thì có khả năng là chưa được kích hoạt.

 

1.3> Kích hoạt module TUN/TAP

Để kích hoạt module TUN/TAP kernel ta sẽ sử dụng chương trình lệnh “modprobe” nhằm kích hoạt module :

 

1.4> Làm sao để kích hoạt tự động module kernel mỗi khi reboot máy ?
Theo như mình biết thì file “modprobe.conf” và “modules.conf” chỉ là những file cấu hình, không hề có nhiệm vụ triệu hồi chương trình lệnh”modprobe”. Tất cả những gì chúng làm là cung cấp thông tin về những đối tượng mà chương trình phải thực thi khi được triệu hồi.

Chúng ta sẽ thêm dòng script vào file “/etc/rc.local” , đây là một file được thực thi sau cùng của hệ điều hành khi mà tất cả các file “rc.d” tương ứng level khác đã được thực thi. Như vậy ta sẽ thêm một script thực thi việc kích hoạt module TUN/TAP kernel lên khi hệ thống được khởi động.

 

Chúng ta đã xong giai đoạn một : Xác định và kích hoạt module TUN/TAP kernel trên hệ thống máy chủ xây dựng OpenVPN.

 

<2>. Cài đặt phần mềm OpenVPN

Chúng ta sẽ cài đặt OpenVPN thông qua “yum” với sự hỗ trợ của repository của bên thứ 3 là EPEL.

– YUM là một công cụ quản lý và cài đặt phần mềm rất tiện dụng cho các hệ thống Red Hat Linux.

– EPEL (Extra Packages for Enterprise Linux) là một dự án repository từ Fedora team cung cấp rất nhiều gói add-on package mà chúng ta thường dùng cho các bản Linux bao gồm CentOS, RHEL (Red Hat Enterprise Linux) và Scientific Linux.

 

2.1> Cài đặt EPEL Repo trên CentOS 7/6/5

Nếu không cài được bằng lệnh “yum” thì bạn hãy search google download bản cài đặt epel tương ứng OS và 32/64 bit.

 

2.2> Cài đặt OpenVPN và các gói tin cần thiết

 

2.3> Copy config mẫu vào thư mục chính OpenVPN

Mặc định OpenVPN cung cấp file OpenVPN mẫu về cấu hình ở đường dẫn : /usr/share/doc/openvpn-*/sample-config-files/server.conf

 

Giai đoạn 2 hoàn tất việc cài đặt OpenVPN vào hệ thống.

 

<3>. Xây dựng Hạ Tầng Khoá Công Khai (PKI) cơ bản

Chúng ta sẽ đến với phần xây dựng một hệ thống khoá công khai (PKI) cơ bản. Mình sẽ liệt kê các loại certificate và key được sử dụng chủ yếu trong vận hành OpenVPN bao gồm :

  • ca.crt -> root certificate
  • ca.key -> root key
  • .crt files -> client/server certificates
  • .key files -> private keys, keep secure
  • .csr files -> certificate signing request
  • dh2048.pem -> Diffie Hellman parameters (–dh)
  • ta.key -> HMAC, mã xác thực được sử dụng thêm.

Kế đến chúng ta sẽ nói sơ qua công dụng của các loại này :
– client.crt/client.key : được dùng để xác thực người dùng user, cặp key này không được dùng để mã hoá dữ liệu data.
– server.crt/server.key : được dùng để mã hoá dữ liệu được truyền đi tới client.
– ca.crt/ca.key : là một khái niệm về hệ thống chấp nhận yêu cầu từ người dùng, xác nhận yêu cầu, cấp phát chứng chỉ điện tử, bảo trì thông tin trạng thái,…
– dh2048.pem : được sử dụng trong quá trình SSL/TLS, là một secret key. mình sẽ làm một bài nói rõ về phần này sau.
– ta.key : sẽ nói sơ ở phần cấu hình.


3.1>  Cài đặt chương trình Easy-RSA



3.2>  Khởi tạo các biến môi trường được sử dụng bởi các chương trình Easy-RSA

Tập tin vars bao gồm nội dung các biến sẽ được load lên môi trường terminal đang sử dụng nhằm phục vụ cho việc khởi tạo key hay cert bởi các PKI script. Vậy chúng ta sẽ cấu hình thay đổi một vài giá trị như KEY_COUNTRY, KEY_PROVINCE, KEY_CITY, KEY_ORG vàKEY_EMAIL để tạo cert info (không được để trống những phần này). Thông số KEY_SIZE nên đặt giá trị cao là 4096 để sử dụng 4096 bit RSA cho việc chứng thực.

Bạn có thể thay đổi tên tập tin vars thành bất cứ tên gì bạn muốn. Các giá trị cần chú ý sẽ được mình trình bày dưới đây

Chúng ta sẽ tạo thư mục để chứa các file key và certificate được tạo ra tương ứng trong khai báo ở trên.



3.3>  Load biến môi trường trong vars

Chúng ta sẽ load biến môi trường nằm trong file “/etc/openvpn/easy-rsa/vars” bằng lệnh sau, nó sẽ export các biến lên để phục vụ cho các chương trình khác sử dụng thông số biến.

Nếu bạn nhận được dòng thông báo trên tức là nó hỏi bạn có muốn cài xoá hết tất cả mọi thứ trong directory chứa key đó nếu bạn cài mới. Còn không thì tuyệt đối không gõ lệnh này.



3.4>  Khởi tạo Root Certificate

Kế đến, bạn sẽ thấy là trong directory /etc/openvpn/keys/ không có các file quan trọng như ca.key, index và serial file. Do bạn vừa thực hiện xoá hết bằng lệnh clean-all . Lúc này ta sẽ khởi tạo một Root Certifiate bằng chương trình “pkitool” của OpenSSL .

Các bạn nên lưu ý “pkitool” chính là chương trình chính của Easy-RSA sử dụng để build các key, certificate,.. các chương trình liên quan khác trong bài đều là dùng để gọi chương trình “pkitool” này lên cùng tham số truyền vào thôi.

Khởi tạo CA Root mà không có mật khẩu :

Khởi tạo CA Root mà có mật khẩu :

Sau khi tạo xong bạn sẽ có 2 file “ca.crt” và “ca.key” nằm trong thư mục key của chúng ta.


3.5>  Khởi tạo server key/certificate

Bây giờ chúng ta sẽ tạo ra một chứng chỉ Server và key (server.crt/server.key), bạn có 2 chương trình để khởi chạy đó là “build-key-server”, là shell script gọi “pkitool” hoặc chính pkitool luôn. Mình sẽ hướng dẫn sử dụng cả hai.

Xem nội dung shell script “build-key-server”

Khởi tạo chứng chỉ server (server cert), với tham số truyền vào là tên mình định danh.

Tool “pkitool” với option –interact giúp bạn hiện các prompt xác nhận như build-key-server mặc định. Nhưng nếu bạn cảm thấy việc phải xác nhận hết tất cả gây ra phiền hà thì bạn có thể bỏ option –interact, nó sẽ tự động đồng ý “yes” với tất cả lựa chọn và cho ra một server certificate hoàn chỉnh.

hoặc



3.6>   Khởi tạo client cert/key



3.7>   Khởi tạo DH

Chỉ được build và sử dụng từ Server. Ta có thể chọn key size lớn hơn, nhưng mình chọn cao là 4096, thấp nhất là 1024.

hoặc



3.8?   Khởi tạo Shared Secret TLS-Auth

Việc khởi tạo “ta.key” giúp chúng ta thêm một mã xác thực thông điệp vào các gói tin ở tiến trình SSL/TLS handshake để đảm bảo thông tin dữ liệu. Tính năng này sẽ đòi hỏi các gói tin chiều tới phải có một mã xác thực hợp lệ được tạo bởi pre-shared key (ta.key) và có thể coi nó như một lớp bảo vệ thứ 2 vậy. Nó giúp ta chống lại các vấn đề bảo mật như :
– DoS hoặc port flooding trên UDP port OpenVPN.
– Port scanning.
– Lỗ hỗng tràn bộ đệm trong sự vận hành của SSL/TLS.
– Tránh việc khởi tạo tiến trình SSL/TLS handshake từ một máy tính không uỷ quyền.

Dùng lệnh sau :

Cấu hình quy định sử dụng ta.key sẽ được đề cập ở phần sau.


3.9> Kiểm tra lại các file đã được khởi tạo

[ngày 30/6/2015 chủ nhật mình sẽ post tiếp bản đầy đủ của bài hướng dẫn….]

Đánh giá sao từ người đọc :
[ Tổng : 2 - Trung bình: 2.5 ]