Thứ năm, 24/05/2018 | 00:00 GMT+7

Cài đặt OpenVPN Server trên Ubuntu 18.04

Bạn muốn truy cập Internet một cách an toàn và bảo mật từ điện thoại thông minh hoặc máy tính xách tay khi kết nối với mạng không đáng tin cậy như WiFi của khách sạn hoặc quán cà phê? Mạng riêng ảo (VPN) cho phép bạn truy cập các mạng không đáng tin cậy một cách an toàn như thể bạn đang sử dụng mạng riêng (mạng tại nhà, tại không ty, những nơi tin cậy). Lưu lượng  sẽ đi qua một Server VPN và được mã hóa an toàn.

Khi được kết hợp với kết nối HTTPS , sẽ cho phép bạn bảo mật thông tin đăng nhập và giao dịch không dây . Bạn có thể vượt qua các hạn chế và kiểm duyệt về địa lý, đồng thời ẩn vị trí và bất kỳ lưu lượng HTTP không được mã hóa nào khỏi mạng không đáng tin cậy, tránh bị nghe lén.

OpenVPN là giải pháp VPN bảo mật (SSL) mã nguồn mở đầy đủ tính năng, có thể đáp ứng nhiều loại cấu hình. Trong hướng dẫn này, ta sẽ thiết lập Server OpenVPN và sau đó cấu hình quyền truy cập vào nó từ Windows, OS X, iOS và Android. Hướng dẫn này sẽ đơn giản nhất có thể cho các thiết lập.

Yêu cầu

Để hoàn thành hướng dẫn này, bạn cần truy cập vào server Ubuntu 18.04. Bạn sẽ cần cấu hình user không phải root với các đặc quyền sudo trước khi bắt đầu.
Bạn có thể làm theo hướng dẫn thiết lập server ban đầu Ubuntu 18.04 để thiết lập user có quyền thích hợp. Hướng dẫn cũng thiết lập firewall , được giả định là có trong hướng dẫn này.

Ngoài ra, ta sẽ cần một server riêng để làm Tổ chức phát hành certificate (CA) . Mặc dù về mặt kỹ thuật, bạn có thể sử dụng server OpenVPN hoặc máy cục bộ làm CA , nhưng điều này không khuyến khích vì nó mở VPN qua một số lỗ hổng bảo mật. Theo tài liệu OpenVPN chính thức , bạn nên đặt CA trên một máy độc lập chuyên dùng để nhập và ký các certificate request (yêu cầu cấp chứng chỉ). Vì lý do này, hướng dẫn này giả định CA của bạn nằm trên một server Ubuntu 18.04 riêng biệt cũng có user không phải root có đặc quyền sudo và firewall cơ bản.

Với hướng dẫn này, bạn cần cho phép chế đô xác thực mật khẩu trên các server (thay vì chỉ dùng xác thực file ssh), để các lệnh ssh kết nối hoạt động mà không bị chặn. Ngoài ra, bạn có thể tạo cặp khóa SSH cho từng server, sau đó thêm khóa SSH public của server OpenVPN vào file authorized_keys của máy CA và ngược lại. Xem Cách thiết lập khóa SSH trên Ubuntu 18.04 để biết hướng dẫn về cách thực hiện một trong các giải pháp này.

Tiếp theo, ta chuyển sang Bước 1.

Bước 1 - Cài đặt OpenVPN và EasyRSA

Để bắt đầu, hãy update server cài đặt OpenVPN. OpenVPN có sẵn trong kho lưu trữ mặc định của Ubuntu, sử dụng apt để cài đặt:

  • sudo apt update
  • sudo apt install openvpn

OpenVPN là một VPN TLS/SSL, nghĩa là nó sử dụng các certificate để mã hóa lưu lượng giữa server và client. Để cấp certificate đáng tin cậy, bạn sẽ thiết lập Tổ chức phát hành certificate đơn giản (CA) của riêng mình. Để thực hiện việc này, ta sẽ tải xuống phiên bản EasyRSA mới nhất, phiên bản mà ta sẽ sử dụng để xây dựng nền tảng khóa public CA (PKI), từ kho lưu trữ GitHub chính thức của dự án.

Như đã đề cập trong phần yêu cầu ban đầu, ta sẽ xây dựng CA trên một server độc lập. Lý do cho cách tiếp cận này là nếu kẻ tấn công có thể xâm nhập vào server của bạn, chúng sẽ có thể truy cập vào khóa private CA của bạn và sử dụng nó để ký các certificate mới, cấp cho họ quyền truy cập vào VPN của bạn. Theo đó, quản lý CA từ một máy độc lập giúp ngăn user trái phép truy cập vào VPN của bạn. Sau đó, lưu ý bạn nên tắt server CA khi không được sử dụng để ký khóa như một biện pháp phòng ngừa rủi ro khác.

Để bắt đầu xây dựng nền tảng CA và PKI, hãy sử dụng wget để tải xuống phiên bản EasyRSA mới nhất trên cả máy CA và server OpenVPN của bạn . Để tải phiên bản mới nhất, hãy truy cập trang Phát hành trên dự án EasyRSA GitHub chính thức , sao chép liên kết tải xuống cho file có đuôi .tgz , sau đó dán vào lệnh sau:

  • wget -P ~/ https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.4/EasyRSA-3.0.4.tgz

Sau đó giải nén tarball:

  • cd ~
  • tar xvf EasyRSA-3.0.4.tgz

Bạn đã cài đặt thành công tất cả phần mềm cần thiết trên server và máy CA . Tiếp tục cấu hình các biến được EasyRSA sử dụng và thiết lập thư mục CA, từ đó bạn sẽ tạo các khóa và certificate cần thiết để server và client truy cập VPN.

Bước 2 - Định cấu hình các biến EasyRSA và xây dựng CA

EasyRSA được cài đặt với một file cấu hình mà bạn có thể chỉnh sửa để xác định một số biến cho CA .

Trên máy CA của bạn, chuyển đến thư mục EasyRSA:

  • cd ~/EasyRSA-3.0.4/

Trong thư mục này có file có tên vars.example . Tạo một bản sao của tập tin này, và đặt tên cho bản sao vars không có một phần mở rộng tập tin:

  • cp vars.example vars

Mở file mới này bằng trình soạn thảo văn bản nano (hoặc trình khác bạn muốn, như VI...):

  • nano vars

Tìm cài đặt giá trị mặc định của trường cho certificate mới, trông giống như sau:

~ / EasyRSA-3.0.4 / vars
. . .  #set_var EASYRSA_REQ_COUNTRY    "US" #set_var EASYRSA_REQ_PROVINCE   "California" #set_var EASYRSA_REQ_CITY       "San Francisco" #set_var EASYRSA_REQ_ORG        "Copyleft Certificate Co" #set_var EASYRSA_REQ_EMAIL      "me@example.net" #set_var EASYRSA_REQ_OU         "My Organizational Unit"  . . . 

Bỏ comment # trước những dòng này và cập nhật các giá trị được đánh dấu thành giá trị nào bạn muốn, đừng để trống:

~ / EasyRSA-3.0.4 / vars
. . .  set_var EASYRSA_REQ_COUNTRY    "US" set_var EASYRSA_REQ_PROVINCE   "NewYork" set_var EASYRSA_REQ_CITY       "New York City" set_var EASYRSA_REQ_ORG        "ABC123" set_var EASYRSA_REQ_EMAIL      "admin@example.com" set_var EASYRSA_REQ_OU         "Community"  . . . 

Khi bạn hoàn tất, lưu và đóng file.

Trong thư mục EasyRSA có một tập lệnh gọi là easyrsa được gọi để thực hiện nhiều nhiệm vụ liên quan đến việc xây dựng và quản lý CA. Chạy tập lệnh này với tùy chọn init-pki để khởi tạo nền tảng khóa public trên server CA:

  • ./easyrsa init-pki
Output
. . . init-pki complete; you may now create a CA or requests. Your newly created PKI dir is: /home/sammy/EasyRSA-3.0.4/pki 

Sau đó, gọi lại script easyrsa , với tùy chọn build-ca . Điều này sẽ xây dựng CA và tạo hai file quan trọng - ca.crtca.key - tạo nên khóa public và private của certificate SSL.

  • ca.crt là file certificate public của CA, trong ngữ cảnh của OpenVPN, server và client sử dụng để thông báo cho nhau rằng họ là một phần của cùng một trang web tin cậy và không phải ai đó thực hiện một cuộc tấn công kiểu man-in-the-middle. Vì lý do này, server của bạn và tất cả các client của bạn sẽ cần một bản sao của file ca.crt .
  • ca.key là khóa private mà máy CA sử dụng để ký các khóa và certificate cho server và client. Nếu kẻ tấn công giành được quyền truy cập vào CA của bạn dùng ca.key, sẽ có thể ký các certificate request (yêu cầu cấp chứng chỉ) và giành quyền truy cập vào VPN của bạn, mất bảo mật. Đây là lý do tại sao file ca.key của bạn chỉ nên nằm trên máy CA và lý tưởng là máy CA của bạn nên được để offline khi không cần ký certificate request (yêu cầu cấp chứng chỉ) nào.

Nếu bạn không muốn được nhắc nhập mật khẩu mỗi khi tương tác với CA , bạn có thể chạy lệnh build-ca với tùy chọn nopass , như sau:

  • ./easyrsa build-ca nopass

Trong output, bạn sẽ được yêu cầu xác nhận tên chung cho CA :

Output
. . . Common Name (eg: your user, host, or server name) [Easy-RSA CA]: 

Common Name là tên được sử dụng để chỉ máy này trong ngữ cảnh của tổ chức phát hành certificate. Bạn có thể nhập tùy ý tên chung của CA, nhưng để đơn giản, hãy nhấn ENTER để chấp nhận tên mặc định.

Sau đó, CA đã sẵn sàng để bắt đầu ký các certificate request (yêu cầu cấp chứng chỉ).

Bước 3 - Tạo certificate server, khóa và file mã hóa

Bây giờ bạn đã có CA sẵn sàng hoạt động, bạn có thể tạo khóa private và certificate request (yêu cầu cấp chứng chỉ) từ server , sau đó chuyển yêu cầu đến CA của bạn để được ký, tạo certificate. Bạn cũng có thể tự do tạo một số file bổ sung được sử dụng trong quá trình mã hóa.

Bắt đầu bằng cách chuyển đến thư mục EasyRSA trên server OpenVPN của bạn:

  • cd EasyRSA-3.0.4/

Và chạy tập lệnh easyrsa với tùy chọn init-pki. Mặc dù bạn đã chạy lệnh này trên máy CA, bạn cần chạy lệnh này ở đây vì server và CA của bạn sẽ có các thư mục PKI riêng biệt:

  • ./easyrsa init-pki

Sau đó, gọi lại tập lệnh easyrsa , lần này với tùy chọn gen-req theo sau là tên cho máy. Tên này bạn chọn tùy ý, ở đây tên chung của server OpenVPN ta đặt là “server”. Hãy chắc chắn bao gồm cả tùy chọn nopass:

Lưu ý : Nếu chọn tên không phải là "server" ở đây, bạn sẽ phải điều chỉnh một số hướng dẫn bên dưới. Ví dụ: khi sao chép các file đã tạo vào thư mục /etc/openvpn , bạn sẽ phải thay thế các tên chính xác. Bạn cũng sẽ phải sửa đổi file /etc/openvpn/server.conf sau đó để trỏ đến các file .crt.key chính xác.

  • ./easyrsa gen-req server nopass

Thao tác này sẽ tạo khóa private cho server và file certificate request (yêu cầu cấp chứng chỉ) được gọi là server.req . Sao chép khóa server vào thư mục /etc/openvpn/ :

  • sudo cp ~/EasyRSA-3.0.4/pki/private/server.key /etc/openvpn/

Sử dụng một phương pháp bảo mật (như SCP, trong ví dụ của ta bên dưới), chuyển file server.req sang máy CA của bạn:

  • scp ~/EasyRSA-3.0.4/pki/reqs/server.req sammy@your_CA_ip:/tmp

Tiếp theo, trên máy CA của bạn , chuyển đến thư mục EasyRSA:

  • cd EasyRSA-3.0.4/

Sử dụng lại tập lệnh easyrsa , nhập file server.req , theo đường dẫn file có tên thông thường:

  • ./easyrsa import-req /tmp/server.req server

Sau đó, ký yêu cầu bằng cách chạy tập lệnh easyrsa với tùy chọn sign-req , tiếp theo là loại yêu cầu và tên thông thường. Loại yêu cầu có thể là client hoặc server , vì vậy đối với certificate request (yêu cầu cấp chứng chỉ) của server OpenVPN, hãy đảm bảo sử dụng loại yêu cầu server :

  • ./easyrsa sign-req server server

Bạn sẽ được xác minh yêu cầu đến từ một nguồn đáng tin cậy. Nhập yes sau đó nhấn ENTER để xác nhận:

You are about to sign the following certificate. Please check over the details shown below for accuracy. Note that this request has not been cryptographically verified. Please be sure it came from a trusted source or that you have verified the request checksum with the sender.  Request subject, to be signed as a server certificate for 3650 days:  subject=     commonName                = server   Type the word 'yes' to continue, or any other input to abort.   Confirm request details: yes 

Nếu đã mã hóa khóa CA , bạn sẽ được nhắc nhập mật khẩu tại thời điểm này.

Tiếp theo, chuyển certificate đã ký vào server VPN của bạn:

  • scp pki/issued/server.crt sammy@your_server_ip:/tmp

Trước khi đăng xuất khỏi máy CA, hãy chuyển cả file ca.crt đến server của bạn:

  • scp pki/ca.crt sammy@your_server_ip:/tmp

Tiếp theo, đăng nhập lại vào server OpenVPN và sao chép các file server.crtca.crt vào thư mục /etc/openvpn/ :

  • sudo cp /tmp/{server.crt,ca.crt} /etc/openvpn/

Sau đó chuyển đến thư mục EasyRSA:

  • cd EasyRSA-3.0.4/

Từ đó, tạo một khóa Diffie-Hellman mạnh để sử dụng trong quá trình trao đổi khóa bằng cách nhập:

  • ./easyrsa gen-dh

Quá trình này có thể mất vài phút. Sau khi có, hãy tạo chữ ký HMAC để tăng cường khả năng xác minh tính toàn vẹn TLS của server:

  • openvpn --genkey --secret ta.key

Khi lệnh kết thúc, hãy sao chép hai file mới vào thư mục /etc/openvpn/:

  • sudo cp ~/EasyRSA-3.0.4/ta.key /etc/openvpn/
  • sudo cp ~/EasyRSA-3.0.4/pki/dh.pem /etc/openvpn/

Cùng với đó, tất cả certificate và file key mà server của bạn cần đã được tạo. Sau đây ta tạo các certificate và khóa tương ứng mà client sẽ sử dụng để truy cập server OpenVPN.

Bước 4 - Tạo certificate client và cặp khóa

Mặc dù bạn có thể tạo khóa private và certificate request (yêu cầu cấp chứng chỉ) trên client và sau đó gửi đến CA để được ký, song để tiện hơn, ở đây sẽ tạo certificate request trên server. Để ta có thể tạo một tập lệnh tự động tạo các file cấu hình client chứa tất cả các khóa và certificate cần thiết.

Ta sẽ tạo một cặp certificate và key ứng dụng. Nếu bạn có nhiều client, bạn có thể lặp lại quy trình này cho từng client. Tuy nhiên, xin lưu ý rằng bạn sẽ cần chuyển một giá trị tên duy nhất cho tập lệnh cho mọi client. Trong suốt hướng dẫn này, cặp khóa / certificate đầu tiên được gọi là client1 .

Bắt đầu bằng cách tạo cấu trúc thư mục trong thư mục chính của bạn để lưu trữ certificate client và các file key:

  • mkdir -p ~/client-configs/keys

Vì bạn sẽ lưu trữ certificate / cặp khóa và file cấu hình của client trong thư mục này, bạn nên khóa các quyền của nó ngay bây giờ như một biện pháp bảo mật:

  • chmod -R 700 ~/client-configs

Tiếp theo, chuyển lại thư mục EasyRSA và chạy tập lệnh easyrsa với các tùy chọn gen-reqnopass , cùng với tên cho client:

  • cd ~/EasyRSA-3.0.4/
  • ./easyrsa gen-req client1 nopass

Nhấn ENTER để xác nhận tên, sau đó sao chép file client1.key vào thư mục /client-configs/keys/ mà bạn đã tạo trước đó:

  • cp pki/private/client1.key ~/client-configs/keys/

Tiếp theo, chuyển file client1.req sang máy CA của bạn với lệnh:

  • scp pki/reqs/client1.req sammy@your_CA_ip:/tmp

Đăng nhập vào máy CA của bạn, chuyển đến thư mục EasyRSA và nhập certificate request:

  • ssh sammy@your_CA_ip
  • cd EasyRSA-3.0.4/
  • ./easyrsa import-req /tmp/client1.req client1

Sau đó ký yêu cầu như đã làm đối với server ở bước trước. Tuy nhiên lần này, hãy nhớ chỉ định loại yêu cầu là dạng client :

  • ./easyrsa sign-req client client1

Tại lời nhắc, hãy nhập yes để xác nhận rằng bạn ký vào certificate request và nó đến từ nguồn đáng tin cậy:

Output
Type the word 'yes' to continue, or any other input to abort.   Confirm request details: yes 

Một lần nữa, nếu đã mã hóa khóa CA , bạn sẽ được nhắc nhập mật khẩu tại đây.

Thao tác này tạo file certificate client có tên client1.crt . Chuyển file này trở lại server:

  • scp pki/issued/client1.crt sammy@your_server_ip:/tmp

SSH vào server OpenVPN của bạn và sao chép certificate client vào thư mục /client-configs/keys/ :

  • cp /tmp/client1.crt ~/client-configs/keys/

Tiếp theo, sao chép các file ca.crtta.key vào thư mục /client-configs/keys/ :

  • cp ~/EasyRSA-3.0.4/ta.key ~/client-configs/keys/
  • sudo cp /etc/openvpn/ca.crt ~/client-configs/keys/

Cùng với đó, các certificate và khóa của server và client của bạn đều đã được tạo và được lưu trữ trong các thư mục thích hợp trên server. Vẫn còn một số hành động cần được thực hiện với các file này, ở các bước sau. Hiện tại, bạn có thể chuyển sang cấu hình OpenVPN trên server .

Bước 5 - Định cấu hình Dịch vụ OpenVPN

Bây giờ cả certificate và key của client và server đã được tạo, bạn có thể bắt đầu cấu hình dịch vụ OpenVPN.

Bắt đầu bằng cách sao chép file cấu hình OpenVPN mẫu vào thư mục cấu hình và giải nén để sử dụng:

  • sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/
  • sudo gzip -d /etc/openvpn/server.conf.gz

Mở file cấu hình server:

  • sudo nano /etc/openvpn/server.conf

Tìm phần HMAC bằng cách tìm dòng tls-auth . Dòng này nên được bỏ comment, xóa dấu “ ; ”Để bỏ comment:

/etc/openvpn/server.conf
tls-auth ta.key 0 # This file is secret 

Tiếp theo, tìm các dòng cipher . Mật mã AES-256-CBC cung cấp mức độ mã hóa tốt, dòng này nên đã được bỏ comment, bỏ dấu “ ; ”Trước nó: 

/etc/openvpn/server.conf
cipher AES-256-CBC 

Dưới đây, thêm một dòng auth để chọn thuật toán thông báo HMAC, SHA256 là một lựa chọn tốt:

/etc/openvpn/server.conf
auth SHA256 

Tiếp theo, tìm dòng dh xác định tham số Diffie-Hellman:

/etc/openvpn/server.conf
dh dh.pem 

Cuối cùng, tìm cài đặt usergroup và xóa “ ; ” Ở đầu mỗi dòng để bỏ comment những dòng này:

/etc/openvpn/server.conf
user nobody group nogroup 

Những thay đổi bạn đã thực hiện đối với file server.conf mẫu cho đến thời điểm này là cần thiết để OpenVPN hoạt động. Những thay đổi được nêu dưới đây là tùy chọn, chúng cũng cần thiết cho nhiều trường hợp sử dụng phổ biến.

(Tùy chọn) Thay đổi DNS để chuyển hướng lưu lượng truy cập thông qua VPN

Cài đặt ở trên sẽ tạo kết nối VPN giữa hai máy, nhưng sẽ không buộc bất kỳ kết nối nào sử dụng tunnel (đường hầm - là đi qua VPN ra ngoài mạng thay vì đi trực tiếp ra mạng ngoài). Nếu bạn muốn sử dụng VPN để định tuyến tất cả lưu lượng truy cập, sẽ cần push Setting DNS cho các client.

Có một số lệnh trong file server.conf cần thay đổi để kích hoạt chức năng này. Tìm phần redirect-gateway và xóa dấu chấm phẩy “ ; ”Từ đầu dòng redirect-gateway để bỏ comment:

/etc/openvpn/server.conf
push "redirect-gateway def1 bypass-dhcp" 

Ngay bên dưới phần này, hãy tìm phần dhcp-option , loại bỏ dấu “ ; ”  trước của cả hai dòng để bỏ comment:

/etc/openvpn/server.conf
push "dhcp-option DNS 208.67.222.222" push "dhcp-option DNS 208.67.220.220" 

Điều này sẽ hỗ trợ client cấu hình lại setting DNS để sử dụng tunnel (đường hầm) VPN làm mặc định truyền nhận dữ liệu.

(Tùy chọn) Điều chỉnh Cổng và Giao thức

Theo mặc định, server OpenVPN sử dụng cổng 1194 và giao thức UDP để nhận các kết nối client. Nếu bạn cần sử dụng một cổng khác, bạn có thể thay đổi tùy chọn port . Nếu chưa sử dụng cổng 443, thì 443 là một lựa chọn phổ biến vì nó thường được phép thông qua các luật firewall.

/etc/openvpn/server.conf
# Optional! port 443 

Nếu cần (bị chặn giao thức UDP chẳng hạn) thì đổi UDP sang TCP:

/etc/openvpn/server.conf
# Optional! proto tcp 

Nếu chuyển đổi giao thức TCP, bạn sẽ cần thay đổi explicit-exit-notify giá trị dòng từ 1 đến 0 , như dòng này chỉ được sử dụng bởi UDP. Không làm như vậy trong khi sử dụng TCP sẽ gây ra lỗi khi khởi động dịch vụ OpenVPN:

/etc/openvpn/server.conf
# Optional! explicit-exit-notify 0 

Nếu bạn không có nhu cầu sử dụng cổng và giao thức khác, tốt nhất nên để hai cài đặt này làm mặc định.

Bước 6 - Điều chỉnh cấu hình mạng server

Có một số khía cạnh của cấu hình mạng của server cần được tinh chỉnh để OpenVPN có thể định tuyến chính xác lưu lượng truy cập thông qua VPN. Đầu tiên trong số này là IP forwarding (chuyển tiếp). Đây là điều cần thiết đối với chức năng VPN mà server của bạn sẽ cung cấp.

Điều chỉnh cài đặt IP forwarding (chuyển tiếp) mặc định của server bằng cách sửa đổi file /etc/sysctl.conf :

  • sudo nano /etc/sysctl.conf

Bên trong, hãy tìm dòng comment đặt net.ipv4.ip_forward . Xóa ký tự “ # ” ở đầu dòng để bỏ comment:

/etc/sysctl.conf
net.ipv4.ip_forward=1 

Lưu và đóng file.

Để đọc file và điều chỉnh các giá trị cho phiên hiện tại, hãy nhập:

  • sudo sysctl -p
Output
net.ipv4.ip_forward = 1 

Nếu đã làm theo hướng dẫn thiết lập server Ubuntu 18.04 như trong phần yêu cầu ban đầu, bạn nên có firewall UFW. Một số luật firewall phải được sửa đổi để cho phép masquerading (giả địa chỉ), một khái niệm iptables cung cấp bản dịch địa chỉ mạng động (NAT) nhanh chóng để định tuyến chính xác các kết nối client.

Trước khi mở file cấu hình firewall để thêm các rule (luật) masquerading (giả địa chỉ), trước tiên bạn phải tìm interface của network công cộng của máy bạn. Để làm điều này, hãy nhập:

  • ip route | grep default

Mạng public của bạn là chuỗi được tìm thấy trong kết quả của lệnh này. Ví dụ: kết quả này hiển thị Interface có tên wlp11s0 , được đánh dấu bên dưới:

Output
default via 203.0.113.1 dev wlp11s0 proto static 

Khi bạn có Interface được liên kết với route mặc định , hãy mở file /etc/ufw/before.rules để thêm cấu hình có liên quan:

  • sudo nano /etc/ufw/before.rules

Các rule (luật) UFW thường được thêm vào bằng lệnh ufw . Tuy nhiên, các rule (luật) được liệt kê trong file before.rules được đọc và đưa vào vị trí trước khi các rule UFW mặc định. Về đầu file, thêm các dòng được đánh dấu bên dưới. Điều này sẽ đặt chính sách mặc định cho chuỗi POSTROUTING trong bảng nat và masquerading (giả địa chỉ) bất kỳ lưu lượng nào đến từ VPN. Hãy nhớ thay thế wlp11s0 trong dòng -A POSTROUTING bên dưới bằng Interface bạn tìm thấy trong lệnh trên:

/etc/ufw/before.rules
# # rules.before # # Rules that should be run before the ufw command line added rules. Custom # rules should be added to one of these chains: #   ufw-before-input #   ufw-before-output #   ufw-before-forward #  # START OPENVPN RULES # NAT table rules *nat :POSTROUTING ACCEPT [0:0]  # Allow traffic from OpenVPN client to wlp11s0 (change to the interface you discovered!) -A POSTROUTING -s 10.8.0.0/8 -o wlp11s0 -j MASQUERADE COMMIT # END OPENVPN RULES  # Don't delete these required lines, otherwise there will be errors *filter . . . 

Lưu và đóng file khi bạn hoàn tất.

Tiếp theo, cần yêu cầu UFW cho phép các gói được chuyển tiếp theo mặc định. Để thực hiện việc này, hãy mở file /etc/default/ufw :

  • sudo nano /etc/default/ufw

Bên trong, tìm dòng DEFAULT_FORWARD_POLICY và thay đổi giá trị từ DROP thành ACCEPT :

/ etc / default / ufw
DEFAULT_FORWARD_POLICY="ACCEPT" 

Lưu và đóng file khi bạn hoàn tất.

Tiếp theo, điều chỉnh firewall để cho phép lưu lượng truy cập vào OpenVPN. Nếu bạn không thay đổi cổng và giao thức trong file /etc/openvpn/server.conf , bạn sẽ cần mở lưu lượng UDP đến cổng 1194 . (Nếu bạn đã sửa đổi cổng và / hoặc giao thức, hãy thay thế các giá trị bạn đã chọn ở đây)

Trong trường hợp bạn quên thêm cổng SSH khi làm theo hướng dẫn phần yêu cầu ban đầu, hãy thêm nó vào đây:

  • sudo ufw allow 1194/udp
  • sudo ufw allow OpenSSH

Sau khi thêm các rule đó, hãy restart UFW để áp dụng các rule mới:

  • sudo ufw disable 
  • sudo ufw enable

Server của bạn hiện đã được cấu hình để xử lý chính xác lưu lượng OpenVPN.

Bước 7 - Khởi động và kích hoạt dịch vụ OpenVPN

Cuối cùng, bạn đã sẵn sàng để bắt đầu dịch vụ OpenVPN trên server . Điều này được thực hiện bằng cách sử dụng systemd systemctl .

Khởi động server OpenVPN bằng cách chỉ định tên file cấu hình của bạn. File cấu hình cho server được gọi là /etc/openvpn/server.conf , vì vậy hãy thêm @server vào cuối file đơn vị khi gọi nó:

  • sudo systemctl start openvpn@server

Kiểm tra xem dịch vụ đã bắt đầu thành công hay chưa bằng cách nhập:

  • sudo systemctl status openvpn@server

Nếu mọi thứ diễn ra tốt đẹp, output của bạn sẽ giống như sau:

Output
● openvpn@server.service - OpenVPN connection to server    Loaded: loaded (/lib/systemd/system/openvpn@.service; disabled; vendor preset: enabled)    Active: active (running) since Tue 2016-05-03 15:30:05 EDT; 47s ago      Docs: man:openvpn(8)            https://community.openvpn.net/openvpn/wiki/Openvpn23ManPage            https://community.openvpn.net/openvpn/wiki/HOWTO   Process: 5852 ExecStart=/usr/sbin/openvpn --daemon ovpn-%i --status /run/openvpn/%i.status 10 --cd /etc/openvpn --script-security 2 --config /etc/openvpn/%i.conf --writepid /run/openvpn/%i.pid (code=exited, sta  Main PID: 5856 (openvpn)     Tasks: 1 (limit: 512)    CGroup: /system.slice/system-openvpn.slice/openvpn@server.service            └─5856 /usr/sbin/openvpn --daemon ovpn-server --status /run/openvpn/server.status 10 --cd /etc/openvpn --script-security 2 --config /etc/openvpn/server.conf --writepid /run/openvpn/server.pid  

Bạn cũng có thể kiểm tra xem Interface OpenVPN tun0 có khả dụng không bằng cách nhập:

  • ip addr show tun0

Sẽ xuất ra một Interface được cấu hình:

Output
4: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 100     link/none      inet 10.8.0.1 peer 10.8.0.2/32 scope global tun0        valid_lft forever preferred_lft forever 

Sau khi khởi động dịch vụ, hãy kích hoạt để tự động khởi động khi server khởi động:

  • sudo systemctl enable openvpn@server

Dịch vụ OpenVPN của bạn hiện đã hoạt động. Tuy nhiên, trước khi có thể sử dụng bạn phải tạo một file cấu hình cho client. Hướng dẫn này đã trình bày về cách tạo các cặp khóa / certificate cho client và trong bước tiếp theo, ta sẽ trình bày cách tạo nền tảng để dễ dàng tạo file cấu hình client.

Bước 8 - Tạo nền tảng cấu hình client

Việc tạo file cấu hình cho client OpenVPN, vì mỗi client phải có cấu hình riêng và mỗi máy phải phù hợp với cài đặt được nêu trong file cấu hình của server. Thay vì viết một file cấu hình duy nhất chỉ có thể được sử dụng trên một client, bước này phác thảo quy trình xây dựng nền tảng cấu hình client mà bạn có thể sử dụng để tạo file cấu hình một cách nhanh chóng. Trước tiên, bạn sẽ tạo một file cấu hình “cơ sở” sau đó xây dựng một tập lệnh cho phép bạn tạo các file, certificate và khóa cấu hình client

Bắt đầu bằng cách tạo một thư mục mới, nơi bạn sẽ lưu trữ các file cấu hình client trong thư mục cấu hình client-configs mà bạn đã tạo trước đó:

  • mkdir -p ~/client-configs/files

Tiếp theo, sao chép file cấu hình client mẫu vào thư mục cấu hình client-configs để sử dụng làm cấu hình cơ sở:

  • cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client-configs/base.conf

Mở file mới này để edit:

  • nano ~/client-configs/base.conf

Bên trong, xác định vị trí dòng remote , trỏ client đến địa chỉ IP của server OpenVPN. Nếu bạn thay đổi cổng mà server OpenVPN thì thay số 1194 dưới đây:

~ / client-configs / base.conf
. . . # The hostname/IP and port of the server. # You can have multiple remote entries # to load balance between the servers. remote your_server_ip 1194 . . . 

Đảm bảo rằng giao thức giống với cấu hình server (UDP hoặc TCP):

~ / client-configs / base.conf
proto udp 

Tiếp theo, bỏ comment user và dòng group bằng cách xóa “ ; ” Ở đầu mỗi dòng:

~ / client-configs / base.conf
# Downgrade privileges after initialization (non-Windows only) user nobody group nogroup 

Tìm các lệnh đặt ca , certkey . comment các dòng này vì ta sẽ thêm certificate và khóa vào trong file:

~ /client-configs/base.conf
# SSL/TLS parms. # See the server config file for more # description.  It's best to use # a separate .crt/.key file pair # for each client.  A single ca # file can be used for all clients. #ca ca.crt #cert client.crt #key client.key 

Tương tự, hãy comment dòng ta.key tls-auth , vì ta sẽ thêm ta.key trực tiếp vào file cấu hình client:

~/client-configs/base.conf
# If a tls-auth key is used on the server # then every client must also have the key. #tls-auth ta.key 1 

Cài đặt cipherauth mà bạn đã đặt trong file /etc/openvpn/server.conf :

~/client-configs/base.conf
cipher AES-256-CBC auth SHA256 

Tiếp theo, thêm dòng key-direction trong file. Bạn phải đặt giá trị này thành “1” để VPN hoạt động chính xác trên client:

~/client-configs/base.conf
key-direction 1 

Cuối cùng, thêm một vài comment (ta sẽ bỏ comment sau) để xử lý 2 cách khác mà các client VPN dựa trên Linux sẽ sử dụng để phân giải DNS. Thêm hai đoạn comment, nhưng riêng biệt. Đoạn đầu tiên dành cho các client không sử dụng systemd-resolved để quản lý DNS. Các client này dựa vào tiện ích resolvconf để cập nhật thông tin DNS cho các client Linux.

~ / client-configs / base.conf
; script-security 2 ; up /etc/openvpn/update-resolv-conf ; down /etc/openvpn/update-resolv-conf 

Bây giờ, hãy thêm một đoạn khác cho các client sử dụng systemd-resolved để phân giải DNS:

~ / client-configs / base.conf
; script-security 2 ; up /etc/openvpn/update-systemd-resolved ; down /etc/openvpn/update-systemd-resolved ; down-pre ; dhcp-option DOMAIN-ROUTE . 

Lưu và đóng file khi bạn hoàn tất.

Sau đó trong Bước 10 - Cài đặt bước Cấu hình client , bạn sẽ xem cách xác định cách phân giải DNS hoạt động trên các client Linux và phần nào cần bỏ comment.

Tiếp theo, tạo một tập lệnh để tạo cấu hình cơ sở với certificate, key và các file mã hóa có liên quan, sau đó đặt cấu hình đã tạo vào thư mục ~/client-configs/files . Mở một file mới có tên make_config.sh trong thư mục ~/client-configs :

  • nano ~/client-configs/make_config.sh

Bên trong, thêm nội dung sau:

~ / client-configs / make_config.sh
#!/bin/bash  # First argument: Client identifier  KEY_DIR=~/client-configs/keys OUTPUT_DIR=~/client-configs/files BASE_CONFIG=~/client-configs/base.conf  cat ${BASE_CONFIG} \     <(echo -e '<ca>') \     ${KEY_DIR}/ca.crt \     <(echo -e '</ca>\n<cert>') \     ${KEY_DIR}/${1}.crt \     <(echo -e '</cert>\n<key>') \     ${KEY_DIR}/${1}.key \     <(echo -e '</key>\n<tls-auth>') \     ${KEY_DIR}/ta.key \     <(echo -e '</tls-auth>') \     > ${OUTPUT_DIR}/${1}.ovpn 

Lưu và đóng file khi bạn hoàn tất.

Trước khi tiếp tục, đổi quyền để bảo mật:

  • chmod 700 ~/client-configs/make_config.sh

Tập lệnh này sẽ tạo một bản sao của file base.conf đã tạo, thu thập tất cả certificate và file key đã tạo cho client , trích xuất nội dung của chúng, nối chúng vào bản sao của file cấu hình cơ sở và xuất tất cả vào file cấu hình client mới. Điều này có nghĩa là, thay vì phải quản lý các file cấu hình, certificate và khóa của client một cách riêng biệt, tất cả thông tin cần thiết được lưu trữ ở một nơi. Lợi ích của việc này là nếu bạn cần thêm client trong tương lai, bạn có thể chỉ cần chạy tập lệnh này để nhanh chóng tạo file cấu hình và đảm bảo rằng tất cả thông tin quan trọng được lưu trữ ở một nơi dễ truy cập.

Lưu ý khi thêm một client mới, bạn sẽ cần tạo các khóa và certificate mới cho nó trước khi ta có thể chạy tập lệnh này và tạo file cấu hình. Ta sẽ thực hành một số cách sử dụng script này trong bước tiếp theo.

Bước 9 - Tạo cấu hình client

Nếu đã làm theo hướng dẫn, bạn đã tạo certificate client và khóa có tên client1.crtclient1.key , tương ứng, ở Bước 4. Bạn có thể tạo file cấu hình cho các thông tin đăng nhập này bằng cách chuyển vào thư mục ~/client-configs và chạy tập lệnh đã thực hiện ở cuối bước trước:

  • cd ~/client-configs
  • sudo ./make_config.sh client1

Thao tác này sẽ tạo một file có tên client1.ovpn trong thư mục ~/client-configs/files :

  • ls ~/client-configs/files
Output
client1.ovpn 

Cần chuyển file này sang client (máy tính của bạn, hoặc thiết bị di động...), bạn có thể chuyển theo các cách khác nhau (như SSH, WinScp, FTP....) miễn làm sao file config này được đưa vào trong client.

Bước 10 - Cài đặt cấu hình client

Phần này trình bày cách cài đặt cấu hình VPN client trên Windows, macOS, Linux, iOS và Android, tùy thiết bị mà bạn chọn cách sử dụng.

File Kết nối OpenVPN sẽ có cùng tên với tên bạn đã gọi là file .ovpn . Kết nối được đặt tên là client1.ovpn , phù hợp với file client đầu tiên mà bạn đã tạo.

Với HĐH Windows

Cài đặt

Tải xuống client OpenVPN dành cho Windows từ trang Tải xuống của OpenVPN . Chọn phiên bản trình cài đặt thích hợp cho phiên bản Windows của bạn.

 

comment
OpenVPN cần có đặc quyền quản trị để cài đặt.

Sau khi cài đặt OpenVPN, hãy sao chép file .ovpn vào:

C:\Program Files\OpenVPN\config 

Khi chạy OpenVPN, nó sẽ tự động xem profile và sẵn sàng chạy khi được click chạy.

Bạn phải chạy OpenVPN với quyền adminị. Để thực hiện việc này mà không cần nhấp chuột phải và chọn Chạy với quyền admin mỗi khi bạn sử dụng VPN, bạn phải đặt trước điều này từ tài khoản quản trị, như hình sau, tìm đến biểu thượng OpenVpn trên màn hình, click vào Properties:



Kết nối

Mỗi lần bạn khởi chạy OpenVPN GUI, nó sẽ đặt Icon vào system tray (gần đồng hồ), mà chưa có kết nối vpn. Sau đó bạn có thể click chuột để kết nối và ngắt kết nối VPN khi cần.


Sau khi OpenVPN được khởi động Icon tray, bắt đầu kết nối bằng cách vào system tray (gần đồng hồ) và nhấp chuột phải vào biểu tượng Icon OpenVPN. Thao tác này sẽ mở menu. Chọn Connect, hoặc nếu có nhiều profile thì chọn client1 mà ta đã tạo ở menu (đó là profile client1.ovpn ) và chọn Connect .

Một cửa sổ trạng thái sẽ mở ra hiển thị output nhật ký trong khi kết nối được thiết lập và một thông báo sẽ hiển thị khi client được kết nối.



Ngắt kết nối khỏi VPN theo cách tương tự: Vào system tray (gần đồng hồ), nhấp chuột phải vào biểu tượng Icon OpenVPN, chọn cấu hình client và nhấp vào Disconnect.


HĐH MAC - OS X

Cài đặt

Tunnelblick là ứng dụng client OpenVPN mã nguồn mở miễn phí dành cho Mac OS X. Bạn có thể tải từ trang Tải xuống Tunnelblick . Nhấp đúp vào file .dmg tải xuống và cài đặt.

Cuối quá trình cài đặt, Tunnelblick sẽ hỏi bạn có file cấu hình nào không. Có thể trả lời Không để Tunnelblick kết thúc. Mở cửa sổ Finder và nhấp đúp vào client1.ovpn . Tunnelblick sẽ cài đặt profile client. Quyền quản trị là bắt buộc.

Kết nối

Khởi chạy Tunnelblick bằng cách nhấp đúp vào Tunnelblick trong thư mục Ứng dụng . Khi Tunnelblick đã được khởi chạy, sẽ có biểu tượng Tunnelblick trong thanh menu ở trên cùng bên phải của màn hình để kiểm soát các kết nối. Nhấp vào biểu tượng, sau đó nhấp vào mục menu Connect để bắt đầu kết nối VPN. Chọn kết nối client1 .

Linux

Cài đặt

Nếu đang sử dụng Linux, có rất nhiều công cụ mà bạn có thể sử dụng tùy thuộc vào bản setup.

Tuy nhiên, cách kết nối phổ biến nhất là chỉ sử dụng phần mềm OpenVPN.

Trên Ubuntu hoặc Debian, bạn có thể cài đặt nó giống như bạn đã làm trên Server bằng lệnh:

  • sudo apt-get update
  • sudo apt-get install openvpn

Trên CentOS, bạn có thể kích hoạt kho EPEL và sau đó cài đặt nó bằng lệnh:

  • sudo yum install epel-release
  • sudo yum install openvpn

Cấu hình

Kiểm tra xem bản setup của bạn có bao gồm tập lệnh /etc/openvpn/update-resolv-conf :

  • ls /etc/openvpn
Output
update-resolve-conf 

Tiếp theo, chỉnh sửa file cấu hình client OpenVPN mà bạn đã có:

  • nano client1.ovpn

Bỏ ghi chú ba dòng ta đã đặt để điều chỉnh cài đặt DNS nếu bạn có thấy file update-resolv-conf :

client1.ovpn
script-security 2 up /etc/openvpn/update-resolv-conf down /etc/openvpn/update-resolv-conf 

Nếu bạn đang sử dụng CentOS, hãy thay đổi group từ không nogroup thành nobody để phù hợp với các nhóm có sẵn:

client1.ovpn
group nobody 

Lưu và đóng tập tin.

Giờ đây, bạn có thể kết nối với VPN với lệnh:

  • sudo openvpn --config client1.ovpn

Sẽ kết nối bạn với Server của bạn.

iOS / IPhone

Cài đặt

Từ iTunes App Store, tìm và cài OpenVPN Connect , ứng dụng client OpenVPN của iOS. Kết nối IOS với máy tính PC để đưa file client.opvn đã tạo vào Iphone IOS.

Bằng cách Mở iTunes trên máy tính và nhấp vào iPhone > ứng dụng . Cuộn xuống cuối phần Chia sẻ file và nhấp vào ứng dụng OpenVPN. Cửa sổ trống ở bên phải, OpenVPN Documents , là để chia sẻ file. Kéo file .ovpn vào cho OpenVPN.

iTunes hiển thị cấu hình VPN đã sẵn sàng để tải trên iPhone

Rồi  ta khởi chạy ứng dụng OpenVPN trên iPhone. Sẽ có một thông báo một profile mới đã sẵn sàngp. Nhấn vào dấu cộng màu xanh lục để vào nó.

Ứng dụng OpenVPN iOS hiển thị cấu hình mới đã sẵn sàng để nhập

Kết nối

OpenVPN hiện đã sẵn sàng để sử dụng với cấu hình mới. Bắt đầu kết nối bằng cách trượt nút Kết nối sang vị trí Bật (On) . Ngắt kết nối bằng cách trượt nút tương tự sang Tắt (Off).

 

Ghi chú

Không thể sử dụng nút bật tắt VPN trong Cài đặt để kết nối với VPN. khi đó ta sẽ nhận được thông báo chỉ kết nối bằng ứng dụng OpenVPN.

 

Ứng dụng OpenVPN iOS được kết nối với VPN

Android

Cài đặt

Mở Cửa hàng Google Play. Tìm kiếm và cài đặt Android OpenVPN Connect , ứng dụng client Android OpenVPN chính thức.

Cấu .ovpn có thể được chuyển vào thiết bị bằng cách kết nối thiết bị Android với máy tính của bạn bằng USB và sao chép file vào, hoặc copy qua thẻ nhớ SD.

Khởi động ứng dụng OpenVPN và click vào menu để nhập profile.

Lựa chọn menu nhập cấu hình ứng dụng OpenVPN Android

Sau đó, điều hướng đến vị trí của profile đã lưu (ảnh chụp màn hình sử dụng /sdcard/Download/ ) và chọn file. Ứng dụng sẽ ghi chú rằng profile đã được nhập.

Ứng dụng OpenVPN Android chọn cấu hình VPN để nhập

Kết nối

Để kết nối, chỉ cần nhấn vào nút Kết nối . Bạn sẽ được hỏi có tin tưởng ứng dụng OpenVPN hay không. Chọn OK để bắt đầu kết nối. Để ngắt kết nối khỏi VPN, hãy quay lại ứng dụng OpenVPN và chọn Disconnect .

Ứng dụng OpenVPN Android đã sẵn sàng kết nối với VPN

Bước 11 - Kiểm tra kết nối VPN của bạn (Tùy chọn)

Lưu ý: Cách này để kiểm tra kết nối VPN sẽ chỉ hoạt động nếu bạn đã chọn định tuyến tất cả lưu lượng truy cập qua VPN ở Bước 5.

Khi mọi thứ đã được cài đặt, một kiểm tra đơn giản xác nhận mọi thứ đang hoạt động bình thường. Nếu không bật kết nối VPN, hãy mở trình duyệt và truy cập DNSLeakTest .

Trang web sẽ trả về địa chỉ IP được chỉ định bởi nhà cung cấp dịch vụ internet của bạn. Để kiểm tra cài đặt DNS của bạn thông qua web đó, hãy nhấp vào Kiểm tra mở rộng và nó sẽ cho bạn biết bạn đang sử dụng Server DNS nào.

Bây giờ, hãy kết nối ứng dụng OpenVPN với VPN refresh trình duyệt. Địa chỉ IP mới sẽ là IP Server VPN sẽ hiện ra, vậy bạn đã được đổi IP Public. Một lần nữa, Kiểm tra mở rộng của DNSLeakTest sẽ kiểm tra cài đặt DNS của bạn và xác nhận rằng bạn hiện đang sử dụng trình phân giải DNS do VPN của bạn có.

Bước 12 - Thu hồi certificate client

Đôi khi, ta có thể cần thu hồi certificate client để ngăn truy cập vào server OpenVPN.

Để làm như vậy, chuyển đến thư mục EasyRSA trên máy CA:

  • cd EasyRSA-3.0.4/

Tiếp theo, chạy easyrsa với tùy chọn revoke , theo sau là tên client mà bạn muốn thu hồi:

  • ./easyrsa revoke client2

Thao tác này sẽ yêu cầu bạn xác nhận việc thu hồi bằng cách nhập yes :

Output
Please confirm you wish to revoke the certificate with the following subject:  subject=     commonName                = client2   Type the word 'yes' to continue, or any other input to abort.   Continue with revocation: yes 

Sau khi xác nhận, CA sẽ thu hồi certificate của client. Tuy nhiên, server OpenVPN của bạn hiện không có cách nào để kiểm tra xem có certificate nào của client đã bị thu hồi hay không và client sẽ vẫn có quyền truy cập vào VPN. Để sửa lỗi này, hãy tạo danh sách thu hồi certificate (CRL - Certificate revocation list) trên máy CA của bạn:

  • ./easyrsa gen-crl

Điều này sẽ tạo ra một file có tên là crl.pem . Chuyển file này sang server OpenVPN của bạn theo cách an toàn:

  • scp ~/EasyRSA-3.0.4/pki/crl.pem sammy@your_server_ip:/tmp

Trên server OpenVPN, sao chép file này vào thư mục /etc/openvpn/ :

  • sudo cp /tmp/crl.pem /etc/openvpn

Tiếp theo, mở file cấu hình server OpenVPN:

  • sudo nano /etc/openvpn/server.conf

Ở cuối file, hãy thêm tùy chọn crl-verify , tùy chọn này sẽ hướng dẫn server OpenVPN kiểm tra danh sách thu hồi certificate mà ta đã tạo mỗi khi kết nối:

/etc/openvpn/server.conf
crl-verify crl.pem 

Lưu và đóng tập tin.

Cuối cùng, khởi động lại OpenVPN để thực hiện việc thu hồi certificate:

  • sudo systemctl restart openvpn@server

Client sẽ không thể kết nối thành công với server bằng thông tin đăng nhập cũ, vì nó đã bị thu hồi chứng chỉ.

Để thu hồi client bổ sung, hãy làm theo quy trình sau:

  1. Thu hồi certificate bằng lệnh ./easyrsa revoke client_name
  2. Tạo CRL (Certificate revocation list) mới 
  3. Chuyển file crl.pem mới sang server OpenVPN của bạn và sao chép nó vào thư mục /etc/openvpn để ghi đè lên danh sách cũ.
  4. Khởi động lại dịch vụ OpenVPN.

Bạn có thể sử dụng quy trình này để thu hồi bất kỳ certificate nào đã cấp trước đó cho server .

Kết luận

Chúc mừng bạn, bạn đang dùng internet một cách an toàn với VPN, bảo vệ danh tính, vị trí và lưu lượng truy cập của bạn khỏi những kẻ rình mò hay kiểm duyệt.

Để cấu hình thêm các client, bạn chỉ cần làm theo các bước 49-11 cho từng thiết bị bổ sung. Để thu hồi quyền truy cập vào client, chỉ cần làm theo bước 12.


Tags: Ubuntu

Các tin trước

Cài đặt LEMP - Linux Nginx MySQL PHP trên Ubuntu 18 04 2018-05-23

Cài đặt và sử dụng PostgreSQL trên Ubuntu 18.04 2018-05-04

Cài đặt Linux Apache MySQL PHP (LAMP) trên Ubuntu 18 04 2018-04-27

Bảo mật cơ bản Ubuntu 18.04 2018-04-27

Cài đặt Apache Web Server trên Ubuntu 18.04 2018-04-27

Cài đặt xác thực đăng nhập SSH Keys, không cần password trên Ubuntu 18.04 2018-04-27

Cài đặt SSH Keys trên Ubuntu 16.04 2018-04-12

Cài đặt Node.js trên Ubuntu 16.04 2018-03-07

Cài đặt Anaconda Python trên Ubuntu 16 04 2017-12-27

Cài đặt MySQL trên CentOS 7 2016-12-01