hướng dẫn vpn client to site with openvpn on centos

18
Hướng dẫn VPN Client to Site with OpenVPN on CentOS Mô tả: User (VPN Client) từ bên ngoài hệ thống thực hiện quay VPN đến Server OpenVPN theo cơ chế chứng thực Certificate dùng Key + Password bảo vệ Key (khác với Password của Key nha). Quá trình kết nối VPN thành công: - 1 đường hầm (Tunnel ảo) có Subnet 10.8.0.0/24 được tạo ra, VPN Client sẽ kết nối đến hệ thống mạng công ty theo đường hầm này. (bảo mật) - VPN Client sẽ được Server cấp phát 1 địa chỉ IP tĩnh thuộc subnet 10.8.0.0/24 để có thể giao tiếp với các Local Computer bên trong hệ thống. Bước 0: Chuẩn bị Thiết lập, đặt IP theo mô hình.

Upload: trinh-nguyen-truong-giang

Post on 16-Apr-2015

53 views

Category:

Documents


2 download

DESCRIPTION

Hướng dẫn VPN Client to Site with OpenVPN on CentOS

TRANSCRIPT

Page 1: Hướng dẫn VPN Client to Site with OpenVPN on CentOS

Hướng dẫn VPN Client to Site with OpenVPN on CentOSMô tả:

User (VPN Client) từ bên ngoài hệ thống thực hiện quay VPN đến Server OpenVPN theo cơ chế chứng thực Certificate dùng Key + Password bảo vệ Key (khác với Password của Key nha).

Quá trình kết nối VPN thành công:

- 1 đường hầm (Tunnel ảo) có Subnet 10.8.0.0/24 được tạo ra, VPN Client sẽ kết nối đến hệ thống mạng công ty theo đường hầm này. (bảo mật)

- VPN Client sẽ được Server cấp phát 1 địa chỉ IP tĩnh thuộc subnet 10.8.0.0/24 để có thể giao tiếp với các Local Computer bên trong hệ thống.

Bước 0: Chuẩn bị

Thiết lập, đặt IP theo mô hình.

Page 2: Hướng dẫn VPN Client to Site with OpenVPN on CentOS
Page 3: Hướng dẫn VPN Client to Site with OpenVPN on CentOS
Page 4: Hướng dẫn VPN Client to Site with OpenVPN on CentOS

Đảm bảo: Local Computer kết nối được với OpenVPN Server. VPN Client kết nối của OpenVPN Server (để quay VPN)

Softs: OpenVPN GUI: cài đặt trên VPN Client dùng để quay VPN đến Server

Gói lzo: cài đặt trên Server dùng để nén dữ liệu trên đường truyền

Gói openvpn: cài đặt trên Server làm OpenVPN Server.

Các softs này có thể download trên trang chủ hoặc mình đã để sẵn ở đây http://www.mediafire.com/?ir9fdp8nybzcy8n

Bước 1: Cài đặt VPN Server

Page 5: Hướng dẫn VPN Client to Site with OpenVPN on CentOS

- Copy các gói cài đặt lzo-1.08, openvpn-2.0.9 vào thư mục cá nhân của root (/root)

- cd /root- Giải nén và cài lzo-1.08tar –xvzf lzo-1.08.tar.gzcd lzo-1.08./configure (kiểm tra các thư viện đã đủ chưa)make (thực hiện biên dịch)make install (thực hiện cài đặt)- Giải nén và cài đặt openvpn : cd ..tar -xzvf openvpn-2.0.9.tar.gzcd openvpn-2.0.9./configuremakemake install

- Tạo thư mục /etc/openvpn:mkdir /etc/openvpn

Bước 2: Tạo CA Certificate Server và Key

- Copy thư mục easy-rsa từ thư mục giải nén vào /etc/openvpn cp -r /root/openvpn-2.0.9/easy-rsa/ /etc/openvpn/

- Tạo CA Certifiacte Server:cd /etc/openvpn/easy-rsa/2.0/mv * ../ (move toàn bộ file trong thư mục 2.0/ ra thư mục easy-rsa/)

Page 6: Hướng dẫn VPN Client to Site with OpenVPN on CentOS

cd .. (chuyển đến thư mục easy-rsa/)

mkdir keys (tạo thư mục /etc/openvpn/easy-rsa/keys để chứa keys, certificate)vi vars (sửa các thông số mặc định hoặc có thể bỏ qua bước này, dùng thông số mặc định)

export KEY_COUNTRY="VN"export KEY_PROVINCE="TP HCM"export KEY_CITY="HCM"export KEY_ORG="Nhat Nghe"export [email protected]

- Cấu hình CA: . ./vars ; chú ý có 1 khoảng trắng giữa 2 dấu chấm (dùng khởi tạo các biến môi trường đã thiết lập ở bước trên)Khi chạy lệnh này, yêu cầu hệ thống là không có file nào trong thư mục keys cả, sẽ hiện ra dòng thông báo chạy lệnh ./clean-all để xóa trống thư mục /etc/openvpn/easy-rsa/keys nếu có../clean-all

- Tạo CA server: Tạo private key lưu trong file 'ca.key' cho CA./build-ca, nhập các thông số vào, lưu ý: phần common name là xác định duy nhất do đó cần nhớ phần này.

Page 7: Hướng dẫn VPN Client to Site with OpenVPN on CentOS

ls thư mục keys sẽ thấy có các file được tạo ra

Các key này đều được mã hóa, có thể cat ra xem có gì trong đó cho zui

- Tạo certificate và private key cho server (xin CA cho server)Ở bước trên chúng ta đã tạo CA Server tương tự như server của các tổ chức bán Certificate (Verizon,…), trong bước này ta sẽ tạo Private Key cho các server có nhu cầu sử dụng việc chứng thực bằng Certificate (các ngân hàng, ..) ở đây server chúng ta là OpenVPN../build-key-server openvpnserver

Page 8: Hướng dẫn VPN Client to Site with OpenVPN on CentOS

ls keys/ ra xem có thêm vài file được tạo ra

- Tạo Diffie Hellman ( DH ): băm keys./build-dhQuá trình băm keys có thể diễn ra nhanh hay chậm.

- Tạo Client Certificate và Private key cho Client (để thực hiện chứng thực 2 chiều). Ở đây mình tạo 2 keys cho 2 user kuti và kuteo./build-key kuti (common name: kuti)

Page 9: Hướng dẫn VPN Client to Site with OpenVPN on CentOS

Tương tự tạo thêm cho kuteo./build-key kuteo (common name: kuteo)Xong bước này là chúng ta đã hoàn thành việc tạo các Certificate và Keys cần thiết cho việc chứng thựcls keys/ ra xem kết quả ở bước này

Chúng ta có khá nhiều file trong thư mục keys/ này, các keys này sẽ được phân bố đến server, clients hợp lý theo như bảng bên dưới:

Page 10: Hướng dẫn VPN Client to Site with OpenVPN on CentOS

Bước 3: Cấu hình chức năng Forwarding (dùng để thực hiện Lan Routing)

vi /etc/sysctl.conf7: net.ipv4.ip_forward = 1sysctl –p (để cho các thông số có hiệu lực)echo 1 > /proc/sys/net/ipv4/ip_forward

Bước 4: Cấu hình VPN Server

- Copy file cấu hình server.conf mẫu từ source cài đặt vào /etc/openvpn/cp /root/openvpn-2.0.9/sample-config-files/server.conf /etc/openvpn/- Chỉnh sửa file cấu hình:cd /etc/openvpn/vi server.conf

25: local 192.168.1.200 (chọn card mạng user quay VPN đến, có thể không cần option này)32: port 1723 (default là 1194, thường port này bị firewall block nên đặt 1723 cho giống port VPN Server của Windows Server)36: proto udp (protocol udp)53: dev tun (dùng tunnel, nếu dùng theo bridge chọn dev tap0 và những config khác sẽ khác với tunnel)78: ca /etc/openvpn/easy-rsa/keys/ca.crt (khai báo đuờng dẫn cho file ca.crt)79: cert /etc/openvpn/easy-rsa/keys/openvpnserver.crt80: key /etc/openvpn/easy-rsa/keys/openvpnserver.key87: dh /etc/openvpn/easy-rsa/keys/dh1024.pem96: server 10.8.0.0 255.255.255.0 (khai báo dãy IP cần cấp cho VPN Client, mặc định VPN Server sẽ lấy IP đầu tiên – 10.8.0.1)103: ;ifconfig-pool-persist ipp.txt (dùng để cho VPN Client lấy lại IP trước đó nếu bị đứt kết nối với VPN server, do chúng ta dùng IP tĩnh nên không sử dụng thông số này)124: push “route 172.16.0.0 255.255.255.0” (lệnh này sẽ đẩy route mạng 172.16.0.0 đến Client, hay còn gọi là Lan Routing trong Windows Server, giúp cho VPN Client thấy được mạng bên trong của công ty)125: ;push “route 192.168.1.200 255.255.255.0” do bài Lab của chúng ta VPN Client đã

Page 11: Hướng dẫn VPN Client to Site with OpenVPN on CentOS

connect đến được network 192.168.1.0 nên không cần add route dòng này (nếu có sẽ không chạy được),chỉ cần add route các lớp mạng bên trong công ty mà Client bên ngoài không connect được)138: client-config-dir ccd (dùng để khai báo cấp IP tĩnh cho VPN Client)196: client-to-client (cho phép các VPN client nhìn thấy nhau, mặc định client chỉ thấy server)

Cũng khá đơn giản nhỉ, ngoài ra còn cónhững thông số khác không dùng đến như:181 ;push “redirect-gateway” (mọi traffic của VPN Client – http, dns, ftp, … đều thông qua đuờng Tunnel. Khác với lệnh push route, chỉ những traffic đi vào mạng nội bộ mới thông qua Tunnel, khi dùng lệnh này yêu cầu bên trong mạng nội bộ cần có NAT Server, DNS Server)187, 188: push “dhcp-option DNS (WINS) 10.8.0.1” đẩy DNS or WINS config vào VPN Client

Mọi người cứ nghĩ lệnh push sẽ áp config từ server đến VPN Client. Khi quay VPN thành công, Client sẽ được VPN Server add những thông số config này.

- Cấu hình file IP tĩnh tương ứng với từng User:Sau khi đã cấu hình server, tiếp đó ta sẽ cấu hình các file đặt trong thư mục cdd/ tương ứng với từng User VPN.

+ Tạo thư mục ccd (/etc/openvpn/ccd)mkdir /etc/openvpn/ccd+ Tạo profile cho user kuti vi /etc/openvpn/ccd/kuti1: ifconfig-push 10.8.0.2 10.8.0.1

theo file cấu hình trên user kuti sẽ nhận IP là 10.8.0.2

Cặp IP khai báo trong lệnh trên phải thuộc bảng bên dưới, ứng với mỗi user sẽ có 1 cặp ip tương ứng.

Còn lý do thuộc bảng trên, các bạn tham khảo ở đây: http://openvpn.net/index.php/open-so...to.html#policy

Page 12: Hướng dẫn VPN Client to Site with OpenVPN on CentOS

+ Tạo profile cho user kuteovi /etc/openvpn/ccd/kuteo1: ifconfig-push 10.8.0.6 10.8.0.5 theo file cấu hình trên user kuti sẽ nhận IP là 10.8.0.6

Các bạn có thể thấy hạn chế của việc đặt IP theo bảng trên là ở Subnet 10.8.0.0/24 ta chỉ có thể config IP tĩnh cho 64 user (tương ứng với 64 cặp IP ở trên). Nếu trong công ty có nhiều hơn 64 user sử dụng VPN , chúng ta sẽ tạo thêm 1 subnet nữa, chẳng hạn 10.9.0.0 và add route thêm mạng này vào file server.conf ở trên.

Bước 5: Start VPN Server và tiến hành quay VPN, test với các user kuti, kuteo.

- Start OpenVPN Servercd /etc/openvpnopenvpn server.conf

- Cài đặt, config OpenVPN GUI cho Client+ Chạy file openvpn-2.0.9-gui-1.0.3-install.exe, cài đặt mặc định.+ Chép các file key, certificate cần thiết ca.crt, kuti.crt, kuti.key vào đường dẫn C:\Program Files\OpenVPN\config+ Copy file client.ovpn từ đường dẫn C:\Program Files\OpenVPN\sample-config vào C:\Program Files\OpenVPN\config

Page 13: Hướng dẫn VPN Client to Site with OpenVPN on CentOS

+ Edit file client.ovpn:

clientdev tun (tunnel)proto udp (upd protocol)remote 192.168.1.200 1723 (khai báo IP:Port server OpenVPN)nobindpersist-keypersist-tunca ca.crt (khai báo CA server)cert kuti.crt (certificate user kuti)key kuti.key (private key kuti)comp-lzoverb 3

- Quay VPNRight Click vào biểu tượng Card mạng mới sau khi cài OpenVPN GUI, chọn Connects

Page 14: Hướng dẫn VPN Client to Site with OpenVPN on CentOS

Các bạn có thể thấy đã quay VPN thành công, nhận IP 10.8.0.2, các route cần thiết cũng được add vào.

- Set password bảo vệ Key:

Right click vào Icon OpenVPN Chọn Change Password

Sau này khi quay VPN, hệ thống sẽ yêu cầu thêm password này nữa.

Page 15: Hướng dẫn VPN Client to Site with OpenVPN on CentOS

- Test:+ Kiểm tra Route print: start --> run --> cmd --> route print

Ok, đã thấy server đã add route cho client kuti 2 mạng 172.16.0.0/24 và 192.168.1.0/24, các bạn có thể thấy 2 mạng này đều đi qua Gateway có IP: 10.8.0.1 – IP Tunnel của VPN Server - với metric 1.

+ Kiểm tra kết nối với mạng bên trong bằng lệnh ping.

Page 16: Hướng dẫn VPN Client to Site with OpenVPN on CentOS

+ Quay VPN với user kuteoLàm các bước tương tự như user kuti

User kuteo đã nhận IP: 10.8.0.6 như đã cấu hình trong file /etc/openvpn/ccd/kuteo ở trên.

+ Ping đến VPN Client 1 (kuti: 10.8.0.2) và Local Computer (172.16.0.2)

Page 17: Hướng dẫn VPN Client to Site with OpenVPN on CentOS

Như vậy chúng ta đã hoàn thành bài Lab này. Hi vọng mọi người đều làm được, nếu bị lỗi hoặc không hiểu lắm ở bước nào:- Xem hướng dẫn, giải thích full ở: http://openvpn.net/howto.html