Mô hình thử nghiệm VPNaaS trong Openstack
Tiến hành ping thử nghiệm từ máy AT7-001 sang máy AT7-002 thì kết quả cho thấy không thể kết nối.
Sau đây sẽ là phần thiết lập kết nối VPN để kết nối an toàn giữa 2 site. Trong phần thiết lập kết nối này, chúng ta cần chú ý đến các thông số thiết lập sau:
- Hàm băm: SHA1 (mặc định)
- Thuật toán mã hóa: 3Des, AES 129, AES 192, AES 256 - Phiên bản IKE : Version 1, Version 2
- Thời gian tồn tại của khóa được tính bằng giây (seconds): Thông số này có thể khác nhau ở 2 bên, nhưng 2 bên sẽ thống nhất sử dụng thông số nhỏ nhất.
- Thuật toán trao đổi khóa Diffie-Hellman: Group 2 (1024bit), Group 5 (1536bit), Group 14 (2048bit)
- Giao thức vận chuyển: ESP, AH, AH-ESP - Chế độ đàm phán IKE phase 1: main (mặc định) - Chế độ đóng gói: Tunnel, Transport.
Để tạo kết nối VPN giữa 2 site, ta cần phải tạo các chính sách như: IKE Policies, IPSec Policies. Ngoài ra còn cần phải kích hoạt VPN services và IPSec Side Connections. Dưới đây là các bước cho quá trình thiết lập kết nối VPN trên đám mây OpenStack.
• Trong mục IKE Policies của VPN, tạo ike-pool-1 với các cấu hình mặc định
• Trong mục IPSec Policies, tạo ipsec-pool-1
• Trong mục VPN Service, ta tạo vpn-service1 và vpn-service2
• Trong mục IPSec Site Connections, tạo site1- site2 và site 1 – site 2
Kết quả cho thấy Site 1 kết nối được với Site 2 và máy AT7-001 kết nối được tới máy AT7-002
Vậy quá trình thiết lập kết nối VPN giữa 2 subnet đã thành công.
Trong đám mây OpenStack, thì ngoài việc thiết lập kết nối VPN giữa các subnet trong cùng một đám mây, OpenStack còn hỗ trợ kết nối giữa các subnet trong các đám mây khác nhau. Hay còn gọi là thiết lập VPN giữa “Cloud to Cloud”. Việc thiết lập kết nối VPN Cloud to Cloud cũng tương tự như việc thiết lập VPN trong một đám mây.
Kết thúc chương 3 của đồ án các vấn đề liên quan đến công nghệ VPN trong điện toán đám mây đã giải quyết được ở một số khía cạnh. Việc xây dựng thử nghiệm dịch vụ VPNaaS trên đám mây OpenStack tuy còn đơn giản nhưng đã phần nào gợi mở ra các hướng nghiên cứu mới cho việc áp dụng công nghệ IPSec VPN vào Cloud Computing.
KẾT LUẬN
Như vậy, thông qua ba chương của đề tài “Nghiên cứu triển khai VPN
trong điện toán đám mây sử dụng OpenStack” về cơ bản đạt được một số mục
tiêu sau:
Hiểu được những kiến thức cơ bản và tổng quan về điện toán đám mây. Các nguy cơ mất an toàn trong hệ thống điện toán đám mây. Đồng thời cũng nêu ra được một số hướng nghiên cứu bảo mật cho điện toán đám mây.
Tiến hành khảo sát thực nghiệm được một số dịch vụ của các nhà cung cấp dịch vụ điện toán đám mây lớn như Google, Dropbox, Microsoft…
Xây dựng được một đám mây dựa trên mã nguồn mở OpenStack trên môi trường ảo hóa VMWare.
Đề xuất một số mô hình VPN áp dụng trong bảo mật điện toán đám mây. Đồng thời, xây dựng và triển khai được dịch vụ VPNaaS trên đám mây OpenStack.
Tuy nhiên, do một số hạn chế về tài liệu, kiến thức và điều kiện thực tế, nên đồ án còn một số vấn đề chưa thể khắc phục được:
Chưa nghiên cứu tìm hiểu sâu hơn được về các lỗ hổng bảo mật trong điện toán đám mây
Áp dụng chưa linh hoạt các mô hình bảo mật dựa trên VPN Ứng dụng thử nghiệm dịch vụ VPNaaS còn hạn chế
Máy ảo tạo được trên đám mây còn ở dạng đơn giản.
Do đó, trong tương lai, em sẽ tiếp tục nghiên cứu, phát triển đề tài này một cách hoàn thiện hơn, có thể áp dụng vào các cơ quan tổ chức, doanh nghiệp…Một số hướng nghiên cứu trong tương lai:
Triển khai thực tế đám mây OpenStack trên các thiết bị vật lý
Xây dựng và thiết lập đa dạng các loại máy ảo khác nhau hơn như Windows 8, Windows Server 2012, CentOS 7.0, Ubuntu 14.04…
Xây dựng và sử dụng linh hoạt các dịch vụ bổ sung của đám mây OpenStack như: VPNaaS, FWaaS, LBaaS…
Áp dụng các mô hình VPN đã đề xuất vào thực tế.
Dịch vụ VPNaaS cài đặt trên đám mây OpenStack có sử dụng bộ phần mềm OpenS/Wan. Đây là bộ phần mềm mã nguồn mở nên hoàn toàn có khả năng can thiệp vào mã nguồn. Đây là một hướng nghiên cứu mới trong thời gian tới em sẽ tập trung tìm hiểu.
Lời cuối, em xin gửi lời biết ơn chân thành tới Thầy giáo, ThS. Nguyễn Như Tuấn, phó chủ nhiệm khoa Kỹ Thuật Mật Mã, Học Viện Kỹ Thuật Mật Mã đã giúp đỡ em trong suốt thời gian qua. Qua đây em cũng mong nhận được sự đóng góp ý kiến của thầy cô, cũng như các bạn có cùng mối quan tâm để đề tài được hoàn thiện hơn.
TÀI LIỆU THAM KHẢO
[1] ThS. Nguyễn Như Tuấn, KS. Phạm Quốc Hoàng. Một số vấn đề an toàn cho điện toán đám mây. Tạp chí An toàn thông tin, Học viện KTMM, Ban Cơ yếu Chính phủ, 2013
[2] Wen-Hwa Liao, Shuo-Chun Su, Tatung University, Taipei, Taiwan; “A Dynamic VPN Architecture for private Cloud Computing”; Fourth IEEE international Conference; 2011
[3] Kazunori Ishimura, Toshihiko Tamura, Shiro Mizuno, Haruki Sato and
Tomoharu Motono; Dynamic IP VPN architecture with secure IPSec tunnels; NTT Corporation; Japan
[4] Network Service Systems Laboratories, NTT Corporation, Japan; “Dynamic IP-VPN architecture with secure IPSec tunnels”; 2007
[5] Tài liệu cài đặt triển khai đám mây OpenStack
https://github.com/ChaimaGhribi/OpenStackIcehouseInstallation/blob/master/Ope nStack-Icehouse-Installation.rst
[6] Lịch sử ra đời “điện toán đám mây”
http://vi.wikipedia.org/wiki/%C4%90i%E1%BB%87n_to%C3%A1n_ %C4%91%C3%A1m_m%C3%A2y
PHỤ LỤC A
• Cấu hình Controller node
Các giao diện mạng của Controller Node: Có 2 card mạng:
- eth1: Giao diện mạng kết nối ra bên ngoài - eth0: Giao diện kết nối với mạng bên trong. Thay đổi chế độ người dùng:
sudo su Đặt tên máy chủ:
vi /etc/hostname controller
Chỉnh sửa file /etc/hosts: vi /etc/hosts #controller 10. 0. 0. 11 controller #network 10. 0. 0. 21 network # compute1 10. 0. 0. 31 compute1
Chỉnh sửa cấu hình giao diện mạng eth0 và eth1: vi /etc/network/interfaces
# The management network interface auto eth0
iface eth0 inet static address 10. 0. 0. 11 netmask 255. 255. 255. 0 # The public network interface auto eth1
address 192. 168. 3. 175 netmask 255. 255. 255. 0 gateway 192. 168. 3. 1 dns-nameservers 8. 8. 8. 8 Khởi động lại các giao mạng:
ifdown eth0 && ifup eth0 ifdown eth1 && ifup eth1
• Cấu hình Network node
Network node có 3 card mạng: - eth0: kết nối mạng nội bộ - eth1: kết nối ra Internet
- eth2: kết nối với VM traffic network. Thay đổi chế độ người dùng:
sudo su Đặt tên máy chủ:
vi /etc/hostname network
Chỉnh sửa file /etc/hosts: vi /etc/hosts #network 10. 0. 0. 21 network #controller 10. 0. 0. 11 controller # compute1 10. 0. 0. 31 compute1
Chỉnh sửa cấu hình các giao diện mạng eth0, eth1 and eth2: vi /etc/network/interfaces
# The management network interface auto eth0
address 10. 0. 0. 21 netmask 255. 255. 255. 0 # VM traffic interface auto eth1
iface eth1 inet static address 10. 0. 1. 21 netmask 255. 255. 255. 0 # The public network interface auto eth2
iface eth2 inet static address 192. 168. 3. 176 netmask 255. 255. 255. 0 gateway 192. 168. 3. 1 dns-nameservers 8. 8. 8. 8 Khởi động lại các giao diện mạng:
ifdown eth0 && ifup eth0 ifdown eth1 && ifup eth1 ifdown eth2 && ifup eth2
• Cấu hình Compute node
Compute node có 2 card mạng:
- eth0: Kết nối với mạng bên trong - eth1: Kết nối với VM traffic network.
Chú ý: Trong quá trình cài đặt, cần cài đặt thêm 1 card mạng ra Internet để cập nhật các gói cài đặt trên mạng.
Thay đổi chế độ người dùng: sudo su
Đặt tên máy chủ: vi /etc/hostname compute1
vi /etc/hosts # compute1 10. 0. 0. 31 compute1 #controller 10. 0. 0. 11 controller #network 10. 0. 0. 21 network
Chỉnh sửa và cấu hình giao diện mạng eth0 and eth1: vi /etc/network/interfaces
# The management network interface auto eth0
iface eth0 inet static address 10. 0. 0. 31 netmask 255. 255. 255. 0 # VM traffic interface auto eth1
iface eth1 inet static address 10. 0. 1. 31 netmask 255. 255. 255. 0 Khởi động lại các giao diện mạng:
ifdown eth0 && ifup eth0 ifdown eth1 && ifup eth1
• Kiểm tra kết nối.
Tiến hành kiểm tra các kết nối từ các nút. Từ controller node:
# ping a site on the internet: ping OpenStack. org
# ping the management interface on the network node: ping network
# ping the management interface on the compute node: ping compute1
Từ network node:
# ping a site on the internet: ping OpenStack. org
# ping the management interface on the controller node: ping controller
# ping the VM traffic interface on the compute node: ping 10. 0. 1. 31
Từ compute node:
# ping a site on the internet: ping OpenStack. org
# ping the management interface on the controller node: ping controller
# ping the VM traffic interface on the network node: ping 10. 0. 1. 21
Cài đặt, cấu hình hệ thống • Controller Node
Tiến hành cài đặt các dịch vụ cơ bản (keystone, glance, nova, neutronvà horizon) và các dịch vụ hỗ trợ như MySql database, message broker (RabbitMQ), và NTP.
Cài đặt các dịch vụ hỗ trợ (MySQL và RabbitMQ)
Cập nhật và nâng cấp hệ thống:
apt-get update -y && apt-get upgrade -y && apt-get dist-upgrade Cài đặt dịch vụ NTP (Network Time Protocol):
apt-get install -y ntp Cài đặt MySQL:
apt-get install -y mysql-server python-mysqldb
vi /etc/mysql/my. cnf bind-address = 10. 0. 0. 11
Chỉnh sửa file /etc/mysql/my. cnf : Thiết lập các phím để kích hoạt InnoDB, thiết lập kí tự UTF-8, và UTF-8 đối chiếu bởi mặc định.
vi /etc/mysql/my. cnf [mysqld]
default-storage-engine = innodb innodb_file_per_table
collation-server = utf8_general_ci init-connect = 'SET NAMES utf8' character-set-server = utf8
Khởi động lại dịch vụ MySQL: service mysql restart
Xóa người dùng ẩn danh được tạo ra khi cơ sở dữ liệu đầu tiên bắt đầu: mysql_install_db
mysql_secure_installation Cài đặt RabbitMQ (Message Queue):
apt-get install -y rabbitmq-server
Cài đặt dịch vụ Identity (Keystone)
Cài đặt gói Keystone:
apt-get install -y keystone
Tạo cơ sở dữ liệu MySQL cho keystone: mysql -u root -p
CREATE DATABASE keystone;
GRANT ALL PRIVILEGES ON keystone. * TO
'keystone'@'localhost' IDENTIFIED BY 'KEYSTONE_DBPASS'; GRANT ALL PRIVILEGES ON keystone. * TO 'keystone'@'%' IDENTIFIED BY 'KEYSTONE_DBPASS';
exit;
rm /var/lib/keystone/keystone. db Chỉnh sửa file /etc/keystone/keystone. conf:
vi /etc/keystone/keystone. conf [database]
replace connection = sqlite:////var/lib/keystone/keystone. db by connection =
mysql://keystone:KEYSTONE_DBPASS@controller/keystone [DEFAULT]
admin_token=ADMIN log_dir=/var/log/keystone
Khởi động lại dịch vụ xác thực, sau đó đồng bộ hóa lại cơ sở dữ liệu: service keystone restart
keystone-manage db_sync Kiểm tra đồng bộ:
mysql -u root -p keystone show TABLES;
Xác định users, tenants, và roles:
export OS_SERVICE_TOKEN=ADMIN
export OS_SERVICE_ENDPOINT=http://controller:35357/v2. 0 #Create an administrative user
keystone user-create --name=admin --pass=admin_pass --email=admin@domain. com
keystone role-create --name=admin
keystone tenant-create --name=admin --description="Admin Tenant" keystone user-role-add --user=admin --tenant=admin --role=admin keystone user-role-add --user=admin --role=_member_
--tenant=admin
#Create a normal user
keystone user-create --name=demo --pass=demo_pass --email=demo@domain. com
keystone tenant-create --name=demo --description="Demo Tenant" keystone user-role-add --user=demo --role=_member_ --tenant=demo #Create a service tenant
keystone tenant-create --name=service --description="Service Tenant" Xác định các dịch vụ và API endpoint :
keystone service-create --name=keystone --type=identity --description="OpenStack Identity"
keystone endpoint-create \
--service-id=$(keystone service-list | awk '/ identity / {print $2}') \ --publicurl=http://192. 168. 3. 175:5000/v2. 0 \
--internalurl=http://controller:5000/v2. 0 \ --adminurl=http://controller:35357/v2. 0 Tạo một file chứng chỉ đơn giản:
vi creds
#Paste the following:
export OS_TENANT_NAME=admin export OS_USERNAME=admin export OS_PASSWORD=admin_pass
export OS_AUTH_URL="http://192. 168. 3. 175:5000/v2. 0/" vi admin_creds
#Paste the following:
export OS_USERNAME=admin export OS_PASSWORD=admin_pass export OS_TENANT_NAME=admin
export OS_AUTH_URL=http://controller:35357/v2. 0 Kiểm tra Keystone:
#clear the values in the OS_SERVICE_TOKEN and OS_SERVICE_ENDPOINT environment variables
unset OS_SERVICE_TOKEN OS_SERVICE_ENDPOINT #Request a authentication token
keystone --os-username=admin --os-password=admin_pass --os-auth- url=http://controller:35357/v2. 0 token-get
# Load credential admin file source admin_creds
keystone token-get # Load credential file: source creds
keystone user-list
keystone user-role-list --user admin --tenant admin
Cài đặt các dịch vụ Image (Glance)
Cài đặt gói Glance:
apt-get install -y glance python-glanceclient Tạo một cơ sở dữ liệu MySQL cho Glance:
mysql -u root -p
CREATE DATABASE glance;
GRANT ALL PRIVILEGES ON glance. * TO 'glance'@'localhost' IDENTIFIED BY 'GLANCE_DBPASS';
GRANT ALL PRIVILEGES ON glance. * TO 'glance'@'%' IDENTIFIED BY 'GLANCE_DBPASS';
exit;
Cấu hình dịch vụ user và role:
keystone user-create --name=glance --pass=service_pass --email=glance@domain. com
keystone user-role-add --user=glance --tenant=service --role=admin Register the service and create the endpoint:
Đăng kí dịch vụ và tạo ra các endpoint.
keystone service-create --name=glance --type=image --description="OpenStack Image Service"
keystone endpoint-create \
--publicurl=http://192. 168. 3. 175:9292 \ --internalurl=http://controller:9292 \ --adminurl=http://controller:9292 Cập nhật file /etc/glance/glance-api. conf:
vi /etc/glance/glance-api. conf [database]
replace sqlite_db = /var/lib/glance/glance. sqlite with
connection = mysql://glance:GLANCE_DBPASS@controller/glance [DEFAULT] rpc_backend = rabbit rabbit_host = controller [keystone_authtoken] auth_uri = http://controller:5000 auth_host = controller auth_port = 35357 auth_protocol = http admin_tenant_name = service admin_user = glance admin_password = service_pass [paste_deploy] flavor = keystone
Cập nhật file /etc/glance/glance-registry. conf: vi /etc/glance/glance-registry. conf
[database]
replace sqlite_db = /var/lib/glance/glance. sqlite with:
connection = mysql://glance:GLANCE_DBPASS@controller/glance [keystone_authtoken]
auth_uri = http://controller:5000 auth_host = controller
auth_protocol = http admin_tenant_name = service admin_user = glance admin_password = service_pass [paste_deploy] flavor = keystone
Khởi động lại dịch vụ glance-api và glance-registry :
service glance-api restart; service glance-registry restart Đồng bộ cơ sở dữ liệu trong glance:
glance-manage db_sync
Kiểm tra Glance, tải lên file ảnh ‘cirros cloud’ : source creds
glance image-create --name "cirros-0. 3. 2-x86_64" --is-public true \ --container-format bare --disk-format qcow2 \
--location http://cdn. download. cirros-cloud. net/0. 3. 2/cirros-0. 3. 2- x86_64-disk. img
Danh sách các Images: glance image-list
Cài đặt dịch vụ Compute (Nova)
Cài đặt gói Nova:
apt-get install -y nova-api nova-cert nova-conductor nova-consoleauth \
nova-novncproxy nova-scheduler python-novaclient Tạo cơ sở dữ liệu Mysql cho Nova:
mysql -u root -p
CREATE DATABASE nova;
GRANT ALL PRIVILEGES ON nova. * TO 'nova'@'localhost' IDENTIFIED BY 'NOVA_DBPASS';
GRANT ALL PRIVILEGES ON nova. * TO 'nova'@'%' IDENTIFIED BY 'NOVA_DBPASS';
exit;
Cấu hình dịch vụ user and role:
keystone user-create --name=nova --pass=service_pass --email=nova@domain. com
keystone user-role-add --user=nova --tenant=service --role=admin Đăng kí dịch vụ và tạo các endpoint:
keystone service-create --name=nova --type=compute --description="OpenStack Compute"
keystone endpoint-create \
--service-id=$(keystone service-list | awk '/ compute / {print $2}') \ --publicurl=http://192. 168. 3. 175:8774/v2/%\(tenant_id\)s \
--internalurl=http://controller:8774/v2/%\(tenant_id\)s \ --adminurl=http://controller:8774/v2/%\(tenant_id\)s Chỉnh sửa file /etc/nova/nova. conf:
vi /etc/nova/nova. conf [database] connection = mysql://nova:NOVA_DBPASS@controller/nova [DEFAULT] rpc_backend = rabbit rabbit_host = controller my_ip = 10. 0. 0. 11 vncserver_listen = 10. 0. 0. 11 vncserver_proxyclient_address = 10. 0. 0. 11 auth_strategy = keystone [keystone_authtoken] auth_uri = http://controller:5000 auth_host = controller auth_port = 35357
auth_protocol = http
admin_tenant_name = service admin_user = nova
admin_password = service_pass Xóa cơ sở dữ liệu Nova SQLite: