3.3.1.1 Mụ hỡnh
90
Phõn chia cỏc mụ hỡnh vật lý
Center Network Remote Office Network
Site Wan IP Ethernet IP Site Wan IP Ethernet IP
VPN server (B) eth0: 202.6.2.106 255.255.255.0 Tunnel: tun0 172.16.100.0 255.255.255.0 Tun1: 172.16.50.0 255.255.255.0 eth1: 10.0.0.1 255.255.255.0 Remote site (A) eth0: Tunnel:tun0 172.16.100.0 255.255.255.0 Tun1: 172.16.50.0 255.255.255.0 eth1: 10.0.1.0 255.255.255.0 Web server 172.20.1.11 PC X 10.0.1.10 APP server 192.168.2.105
Chớnh sỏch truy cập: Thiết lập lớp chớnh sỏch truy cập cho cỏc lớp khỏc nhau của người sử dụng.
Nhõn viờn: được quyền truy cập cỏc dịch vụ như email, website nội bộ… Quản trị: Truy cập toàn quyền vào hệ thống.
Lớp Dải IP ảo Chớnh sỏch Đặt tờn
Nhõn viờn 172.16.100.0/24 Truy cập email, website Tờn người dựng Quản trị 172.16.50.0/24 Toàn quyền truy cập sysadmin1
Cỏch tiếp cận cơ bản, tỏch cỏc lớp người sử dụng theo dải IP ảo. Kiểm soỏt truy cập bằng cỏch thiết lập chớnh sỏch trờn firewall ỏp dụng cho từng dải IP ảo.
Phõn hoạch IP: Hệ thống server VPN sẽ được cấu hỡnh IP public (để đảm bảo cỏc VPN client cú thể nhận diện và kết nối thành cụng trờn mụi trường internet). Hệ thống IP VPN được sử dụng lớp IP private, đề xuất sử dụng 172.16.100.0/24; 172.16.50.0/24. Giải
91
phỏp sử dụng dạng kết nối point to point mỗi kết nối sẽ được khởi tạo một lớp subnet /30 như ở dạng phớa dưới.
[ 1, 2] [ 5, 6] [ 9, 10] [ 13, 14] [ 17, 18] [ 21, 22] [ 25, 26] [ 29, 30] [ 33, 34] [ 37, 38] [ 41, 42] [ 45, 46] [ 49, 50] [ 53, 54] [ 57, 58] [ 61, 62] [ 65, 66] [ 69, 70] [ 73, 74] [ 77, 78] [ 81, 82] [ 85, 86] [ 89, 90] [ 93, 94] [ 97, 98] [101,102] [105,106] [109,110] [113,114] [117,118] [121,122] [125,126] [129,130] [133,134] [137,138] [141,142] [145,146] [149,150] [153,154] [157,158] [161,162] [165,166] [169,170] [173,174] [177,178] [181,182] [185,186] [189,190] [193,194] [197,198] [201,202] [205,206] [209,210] [213,214] [217,218] [221,222] [225,226] [229,230] [233,234] [237,238] [241,242] [245,246] [249,250] [253,254]
3.3.1.2 Cài đặt và cấu hỡnh openvpn Bước 1: tải gúi ứng dụng
wget http://www.openvpn.net/release/openvpn-2.1.4.tar.gz
wget http:/www.oberhumer.com/opensource/lzo/download/lzo-1.08.tar.gz
Bước 2: Trước tiờn cài đặt gúi lzo :
tar –xvzf lzo-1.08.tar.gz cd lzo-1.08 ./configure make make check make test make install
Bước 3 : tiến hành cài đặt openvpn :
tar –xvzf openvpn-2.1.4.tar.gz cd openvpn-2.1.4
92
make make install
Sinh khúa: Thiết lập CA và tạo ra cỏc chứng chỉ số và khúa cho một mỏy chủ Openvpn và nhiều mỏy khỏch.
Bước đầu tiờn thiết lập một PKI (cơ sở hạ tầng khúa cụng khai). PKI bao gồm: + Khúa cụng khai và khúa riờng của mỏy chủ và mỗi mỏy khỏch.
+ Giấy chứng nhận CA, chứng chỉ và khúa được sử dụng để đăng ký mỗi chứng chỉ số của mỏy chủ và cỏc mỏy khỏch.
Việc tạo và quản lý PKI (small PKI) được thực hiện dưới dạng script được cài đặt tại /etc/openvpn/easy-rsa:
+ Chỉnh sửa cỏc thụng số KEY_COUNTRY, KEY_PROVINCE, KEY_CITY, KEY_ORG, and KEY_EMAIL trong tệp cấu hỡnh vars.
+ Cài đặt PKI
. ./vars ./clean-all ./build-ca
ai:easy-rsa # ./build-ca
Generating a 1024 bit RSA private key ...++++++
...++++++
writing new private key to 'ca.key' ---
You are about to be asked to enter information that will be incorporated into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank
For some fields there will be a default value, If you enter '.', the field will be left blank. ---
Country Name (2 letter code) [KG]: State or Province Name (full name) [NA]: Locality Name (eg, city) [BISHKEK]:
93
Organization Name (eg, company) [OpenVPN-TEST]: Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:OpenVPN-CA Email Address [me@myhost.mydomain]:
+ Tạo chứng chỉ số và khúa cho server
./build-key-server server
+ Tạo chứng chỉ và khúa cho mỏy khỏch ./ build-key client
+ Tạo tham số DH
./build-dh
ai:easy-rsa # ./build-dh
Generating DH parameters, 1024 bit long safe prime, generator 2 This is going to take a long time
...+... ...+...+...+... ...
Tệp khúa:sau khi thực hiện sinh khúa, hệ thống cỏc khúa tạo ra bao gồm
Tờn tệp Sử dụng trờn Mục đớch Bảo mật
ca.crt server + all clients Root CA certificate NO ca.key key signing machine only Root CA key YES dh{n}.pem Chỉ Server Diffie Hellman parameters NO
server.crt Server Server Certificate NO
server.key Server Server Key YES
client1.crt Client Client1 Certificate NO
94 Cấu hỡnh hệ thống Openvpn: VPN server VPN client port 1554 proto udp dev tun server 172.16.100.0 255.255.255.0 ca /etc/openvpn/scfg/ca.crt cert /etc/openvpn/scfg/server.crt key /etc/openvpn/scfg/server.key dh /etc/openvpn/scfg/dh1024.pem client-to-client client-config-dir /etc/openvpn/ccfg management 127.0.0.1 6300 push "route 192.168.10.0 255.255.255.0" push "dhcp-option DNS 8.8.8.8"
push "dhcp-option WINS 10.8.0.1" tun-mtu 1300 tun-mtu-extra 32 mssfix 1300 keepalive 10 60 tls-auth ta.key cipher BF-CBC max-clients 100 persist-tun persist-key verb 5 status /var/log/openvpn-status-new.log log /var/log/openvpn-new.log remote 192.168.98.44 port 1554 client dev tun proto udp ca ca.crt pkcs11-providers /home/anhdoan/epass3003/redist/libshutt le_p11v220.so.1.0.0 pkcs11-id 'Feitian\x20Technologies\x20Co\x2E\x2 C\x20Ltd\x2E/ePass3003Auto/01215116 09040510/ePass/66393932353833302D3 76166312D313165312D383534642D303 030633239353937336161' resolv-retry infinite tun-mtu-extra 32 mssfix 1300 nobind ping 15 verb 3 #tun-mtu 1300 #tls-remote "anhdoan" 3.3.1.3 Tớch hợp xỏc thực 2 thành tố
Giải phỏp sử dụng xỏc thực 2 thành tố sử dụng thiết bị epass3003 auto sử dụng trong mụi trường linux. Cỏc bước thực hiện:
Bước 1: Cài đặt thiết bị phần cứng token
Cài đặt trỡnh điều khiển để hệ điều hành cú thể nhận dạng được thiết bị phần cứng. Thiết bị hỗ trợ sử dụng trong mụi trường windows và Linux.
Để sử sụng thiết bị thực hiện định dạng thiết bị, cấu hỡnh cỏc thụng số mó PIN, tờn thiết bị.
95
Hỡnh 3. 13: Định dạng thiết bị epass3003
Bước 2: Lấy ID thiết bị etoken.
Openvpn sẽ được cấu hỡnh tỡm đến đỳng ID của thiết bị token lưu khúa. Để lấy được thụng số ID cần thực hiện trỏ tới thư viện hỗ trợ thiết bị.
openvpn --show-pkcs11-ids /home/anhdoan/epass3003/redist/libshuttle_p11v220.so.1.0.0
Certificate DN: /C=US/ST=CA/L=SanFrancisco/O=Fort- Funston/CN=etoken/emailAddress=me@myhost.mydomain Serial: 03 Serialized id: Feitian\x20Technologies\x20Co\x2E\x2C\x20Ltd\x2E/ePass3003Auto/01215116090405 10/ePass/66393932353833302D376166312D313165312D383534642D30303063323935 3937336161
Bước 3: Tạo khúa dạng pksc12 và lưu khúa vào thiết bị etoken Tạo khúa
96 ./build-key-pkcs12 epass3003
Generating a 1024 bit RSA private key ...++++++
....++++++
writing new private key to 'epass3003.key' ---
You are about to be asked to enter information that will be incorporated into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank
For some fields there will be a default value, If you enter '.', the field will be left blank. ---
Country Name (2 letter code) [US]: State or Province Name (full name) [CA]: Locality Name (eg, city) [SanFrancisco]:
Organization Name (eg, company) [Fort-Funston]: Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) [epass3003]: Name []:
Email Address [me@myhost.mydomain]: Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:
An optional company name []:
Using configuration from /etc/openvpn/easy-rsa/2.0/openssl.cnf Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows countryName :PRINTABLE:'US' stateOrProvinceName :PRINTABLE:'CA' localityName :PRINTABLE:'SanFrancisco' organizationName :PRINTABLE:'Fort-Funston' commonName :PRINTABLE:'epass3003' emailAddress :IA5STRING:'me@myhost.mydomain'
Certificate is to be certified until Apr 25 02:55:17 2022 GMT (3650 days) Sign the certificate? [y/n]:y
97
1 out of 1 certificate requests certified, commit? [y/n]y Write out database with 1 new entries
Data Base Updated
Bước tiếp theo lưu khúa dạng pkcs12 vào thiết bị epass3003.
Hỡnh 3. 14: Lưu khúa vào thiết bị epass3003
Bước 4: Sử dụng thiết bị phần cứng token. openvpn --config epass3003.conf
98
Hỡnh 3. 15: Sử dụng thiết bị epass3003 3.3.1.4 Tớch hợp tớnh năng tường lửa
Cài đặt phần mềm tường lửa shorewall trờn VPN server và cỏc site. rpm –ivh shorewall-4.4.9-0base.noarch .rpm
Định ngĩa cỏc phõn vựng mạng.
#ZONE TYPE OPTIONS IN OUT # OPTIONS OPTIONS fw firewall
loc ipv4 net ipv4 vpn ipv4
Xỏc định cỏc vựng tương ứng với cỏc interface trong /etc/shorewall/interfaces trờn hệ thống A:
#ZONE INTERFACE BROADCAST OPTIONS loc eth1
99 vpn tun+
Cấu hỡnh cho phộp truyền thụng giữa vựng vpn và vựng loc. /etc/shorewall/policy trờn hệ thống A và B
#SOURCE DEST POLICY LOG LEVEL loc vpn ACCEPT
vpn loc ACCEPT
3.3.2 Triển khai mụ hỡnh remote access
100
a. Cài đặt ứng dụng VPN:
Chọn Next
101
b. Cài đặt và định dạng thiết bị etoken
Cài đặt driver
102 Finish
Đăng nhập vào thiết bị etoken.
Sau khi đăng nhập
103
Bước tiếp theo là lưu khúa dạng pkcs12 vào thiết bị eToken
d. Cấu hỡnh ID etoken
Đõy là bước rất quan trọng để phần mềm Openvpn nhận diện được thiết bị. Để lấy được ID của eToken bước đầu phải xỏc định thư viện PKCS11 hỗ trợ thiết bị của nhà sản xuất.
Cú thể sử dụng thư viện mó nguồn mở của Opensc. Tuy nhiờn việc sử dụng thư viện mó nguồn mở cú thể dẫn đến việc hoạt động khụng chớnh xỏc với một số thiết bị của nhà sản xuất (hoặc khụng hỗ trợ thiết bị).
Để thiết bị hoạt động chớnh xỏc nờn sử dụng thư viện được cung cấp bởi nhà sản xuất thiết bị. Ở đõy ta dựng thiết bị của Feitial thư viện được chỉ đến C:\Windows\System32\ngp11v211.dll
104 e. Cấu hỡnh VPN client remote 202.6.2.106 port 1194 client dev tun proto udp auth SHA512 cipher AES-256-CBC tls-cipher DHE-RSA-AES256-SHA tls-auth static-key.key tls-client ca ca.crt pkcs11-providers "C:\\Windows\\system32\\ngp11v211.dll" pkcs11-id Feitian\x20Technologies\x20Co\x2E\x2C\x20Ltd\x2E/ePass2000_FT11/695022421 6110510/MOFA\x20USER\x202/35463932453536462D354631432D343543312D38 3934392D453232444346323542334533' resolv-retry infinite tun-mtu-extra 32 mssfix 1300 nobind ping 15 f. Sử dụng thiết bị eToken
105 Nhập password bảo vệ etoken
Kết nối thành cụng.
Đỏnh giỏ:
+ Thực hiện triển khai thành cụng giải phỏp theo hai mụ hỡnh site to site và remote access. Trong đú, cỏc VPN client sử dụng khúa lưu trờn thiết bị phần cứng etoken phục vụ cho yờu cầu xỏc thực, khởi tạo kết nối.
+ Từ cỏc VPN client khởi tạo kết nối thành cụng với VPN server cú thể truy cập cỏc ứng dụng nội bộ của Bộ Ngoại giao.
+ Tường lửa tớch hợp kiểm soỏt từng kết nối về VPN server theo IP, cỏc IP được phõn hoạch cú quyền truy cập phụ thuộc vào chớnh sỏch quản trị viờn đặt ra.
106
+ Giải phỏp thực hiện thành cụng trờn mụi trường windows và linux.
3.3.3 Triển khai phần mềm quản trị
Trờn cơ sở yờu cầu đặt ra, thiết kế giao diện quản trị VPN server theo dạng web font end. Sử dụng PHP kết nối tới giao diện quản trị Openvpn, thực hiện hiển thị trạng thỏi kết nối, quản trị cỏc kết nối. Sử dụng cơ chế shell cho việc thiết lập khúa, cấu hỡnh khúa.
Sử dụng mysql cho việc lưu trữ account đăng nhập vào hệ thống quản trị.
Hỡnh 3. 17: Mụ hỡnh phần mềm quản trị
Hàm kết nối với giao diện Openvpn manament interface
function openvpn_manager_connect () { global $config; global $openvpn; if ($openvpn['Server']['Management']['Address'] != "") $config['openvpn']['manager']['address'] = $openvpn['Server']['Management']['Address']; if ($openvpn['Server']['Management']['Port'] != "") $config['openvpn']['manager']['port'] = $openvpn['Server']['Management']['Port'];
107 if(!isset($config['openvpn']['manager']['address']) || !isset($config['openvpn']['manager']['port'])) return false; ini_set("default_socket_timeout",5); //$uri='tcp://'.$config['openvpn']['manager']['address'].':'.(int)$config['openvpn'][ 'manager']['port']; $uri='tcp://'.$config['openvpn']['manager']['address']; $fp=@fsockopen($uri, $config['openvpn']['manager']['port']); if (!$fp) return false;
// OpenVPN status line $status=fgets($fp, 512); if(!preg_match('/OpenVPN/',$status)) { if($fp) fclose($fp); return false; } return $fp; }
Giao diện chớnh của chương trỡnh
108
Đỏnh giỏ:
Với việc xõy dựng giao điện quản trị giỳp cho người quản trị dễ dàng theo dừi, vận hành hệ thống kết nối VPN, cụ thể:
+ Giỏm sỏt kết nối từ cỏc điểm về trung tõm, trong đú cú thống kờ lưu lượng được sử dụng trờn kờnh truyền. Cú thể thực hiện ngắt cỏc kết nối đang sử dụng khi cần thiết.
+ Thay đổi cấu hỡnh tại VPN server, trong đú cú thể thay đổi cỏc tựy chọn như chế độ mó húa, port sử dụng, cấu hỡnh đẩy DNS….
+ Cú thể tạo nhiều VPN server trờn cựng một hệ thống. + Tạo khúa cho cỏc VPN client.
3.4 Tổng kết
Chương này tập trung vào nghiờn cứu một số giải phỏp VPN mó nguồn mở. Thực hiện phõn tớch cỏc ưu nhược điểm của mỗi giải phỏp. Với yờu cầu tớnh bảo mật và dễ dàng triển khai, giải phỏp Openvpn là lựa chọn tối ưu nhất. Đỏnh giỏ mụ hỡnh kiến trỳc của Openvpn khắc phục được một số vấn đề bảo mật được nờu ở chương 2 như: chống tấn cụng Ddos, chống tấn cụng phỏt lại, tấn cụng trung gian….
Trờn cơ sở cỏc yờu cầu triển khai một giải phỏp VPN ứng dụng thực tế vào mụ hỡnh kết nối của Bộ Ngoại giao. Thực hiện xõy dựng giải phỏp tương đối hoàn thiện trờn nền tảng của phần mềm Openvpn mó nguồn mở. Trong đú ỏp dụng hai mụ hỡnh site to site và remote access. Tớch hợp cỏc giải phỏp bảo mật nõng cao như xỏc thực dựa trờn PKI; tớch hợp lưu khúa trờn thiết bị phần cứng; tớch hợp đầy đủ giải phỏp firewall mó nguồn mở.
Với một mụ hỡnh VPN lớn yờu cầu khụng thể thiếu là phần mềm quản trị. Phần này thực hiện yờu cầu thiết kế, xõy dựng giao diện quản trị trờn nền web. Cụng cụ quản trị cho phộp giỏm sỏt kết nối, lựa chọn thuật toỏn mó húa cho kết nối VPN….
109
CHƯƠNG 4. KẾT LUẬN
Bảo mật là một trong những khớa cạnh quan trọng nhất của cỏc cụng nghệ triển khai trờn nền IP, đặc biệt là đối với cụng nghệ VPN. Việc lựa chọn giải phỏp bảo mật là một trong những yếu tố quan trọng giỳp cho cụng việc quản lý mạng được an toàn trước những nguy cơ tấn cụng ngày càng nguy hiểm và đa dạng của kẻ phỏ hoại. Luận văn tập trung nghiờn cứu đỏnh giỏ một số giải phỏp cụng nghệ VPN, trờn cơ sở đú xõy dựng giải phỏp VPN mó nguồn mở tương đối hoàn thiện cú tớnh ứng dụng thực tiễn cao.
Trong quỏ trỡnh thực hiện đề tài tụi đó đạt được một số kết quả sau: + Nghiờn cứu tổng quan về an ninh bảo mật, cụng nghệ VPN.
+ Nghiờn cứu, khảo sỏt, đỏnh giỏ cỏc điểm yếu an toàn thụng tin của cỏc cụng nghệ VPN hiện nay.
+ Nghiờn cứu cỏc cụng nghệ bảo mật mạng riờng ảo VPN
+ Nghiờn cứu giải phỏp VPN mó nguồn mở, phõn tớch đỏnh giỏ triển khai giải phỏp Openvpn
+ Triển khai hệ thống mạng riờng ảo VPN trờn nền tảng Openvpn ỏp dụng thực tế yờu cầu trong mụ hỡnh kết nối của Bộ Ngoại giao
o Xõy dựng mụ hỡnh triển khai
o Nghiờn cứu tớch hợp hạ tầng PKI, tớch hợp giải phỏp phần cứng etoken cho việc lưu trữ khúa.
o Xõy dựng phần mềm quản trị o Tớch hợp giải phỏp tường lửa. Hướng phỏt triển:
+ Xõy dựng giải phỏp hoàn thiện hơn
+ Xõy dựng giao diện VPN client hỗ trợ xỏc thực bằng thiết bị etoken
+ Tớch hợp hạ tầng PKI một cỏch đầy đủ, cú thể sử dụng giải phỏp Openca để cấp phỏt, thu hồi khúa.
110
TÀI LIỆU THAM KHẢO
1. Carla Schroder (2008),Linux Networking Cookbook, O’Reilly Media, Inc., pp.265-286
2. Dave Kosiur (1998), Building and Managing virtual private networks, Wiley computer publishing, John Wiley & Sons, inc.
3. Markus Feilner (2006),Building and Integrating Virtual Private Networks, Packt Publishing Ltd, pp. 20-25, 109-125, 155-186
4. Meeta Gupta (2003), Building a Virtual Private Network, Premier Press â 2003. 5. Jon C. Snader (2005), VPNs Illustrated: Tunnels VPNs and Ipsec, Addison
Wesley Professional.
6. Jan Just Keijser (2011), OpenVPN 2 Cookbook, Packt Publishing Ltd, pp.127-148 7. William Stallings (1999), Cryptography and Network Security Principles and