Bảng 2.7: Các trƣờng trong thông điệp bản ghi SSL
Trường Mơ tả Kích thước
ContentType 1 byte Kiểu thông điệp giao thức tầng trên được chứa trong thông điệp bản ghi SSL
Version 2 bytes Phiên bản của giao thức SSL
Length 2 bytes
Độ dài thông điệp của giao thức tầng trên. Đây là một số nguyên 16 bit, giá trị của nó khơng q 214 (16384)
ProtocolMessage n bytes
Dữ liệu thực của các thơng điệp tầng trên, kích thước không quá 16KB, bao gồm cả mã xác thực thông điệp MAC
Trường Content type cho biết thơng điệp được đóng gói là của giao thức nào.
Bảng 2.8: Các kiểu nội dung tầng bản ghi
TypeValue Protocol
20 ChangeCipherSpec protocol
21 Alert protocol
22 Handshake protocol
23 Application protocol data
2.3.2.2. Bảo vệ thông điệp bản ghi SSL.
Sau khi phân đoạn tại tầng bản ghi dữ liệu được bổ sung mã xác thực MAC và mã hoá trước khi gửi lên đường truyền.
(1). Tính tốn mã xác thực thơng điệp (MAC)
SSL hỗ trợ hai thuật tốn tính tốn mã xác thực thơng điệp đó là MD5 và SHA. Giá trị băm sau khi tính tốn đều được bổ sung vào dữ liệu ban đầu, giá trị độ dài của một bản ghi SSL bao gồm cả độ dài dữ liệu lẫn độ dài MAC. Các hình 2.15, 2.16 mơ tả mã xác thực MAC với các thuật tốn MD5 và SHA-1.
Hình 2.15: Bảo vệ thơng điệp Hình 2.16: Bảo vệ thơng điệp với thuật toán MD5 với thuật toán SHA
Sơ đồ q trình tính tốn MAC được mơ tả trong hình 2.17, gồm 2 giai đoạn:
Giai đoạn 1 được bắt đầu với việc tính tốn giá trị băm từ các giá trị MAC write secret, padding (dữ liệu phụ), 64 bit sequence number (số tuần tự), 16 bit độ dài nội dung, và nội dung thông điệp. Giá trị padding là 001100110, được lặp lại 48 lần với MD5 và 40 lần với SHA.
Hình 2.17: Sơ đồ tính tốn MAC trong SSL
Giai đoạn 2 hệ thống sử dụng MAC write secret, padding, và giá trị băm của giai đoạn 1. Padding có giá trị là 01011100, được lặp lại 48 lần với MD5 và 40 lần với SHA. Kết quả băm trong giai đoạn 2 chính là giá trị MAC được bổ sung vào thông điệp.
MAC secret có thể là giá trị bên máy chủ hoặc giá trị máy khách tuỳ thuộc vào bên nào gửi tin. Sequence number là số thông điệp mà hai bên đã trao đổi, giá trị khởi đầu của nó là 0 với thơng điệp ChangeCipherSpec và được tăng thêm 1 mỗi khi thông điệp bản ghi SSL được gửi.
(2). Mã hoá dữ liệu
Cả dữ liệu và mã xác thực MAC được mã hố để đảm bảo tính bí mật khi truyền. SSL hỗ trợ hai kiểu mã hố, mã hố dịng và mã hố khối.
Với mã hố khối kích thước của dữ liệu phải là bội số của kích thức khối, chính vì vậy các dữ liệu phụ có thể được thêm vào để đảm bảo điều kiện này. Để nhận được dữ liệu, bên nhận phải biết vị trí cuối cùng của dữ liệu thật và vị trí đầu của dữ liệu thêm vào, tham số độ dài phần dữ liệu phụ được thêm vào cuối phần dữ liệu để xác định độ dài của dữ liệu phụ. Căn cứ vào tham số độ dài này, bên nhận đếm ngược trở lại đầu khối để xác định vị trí của dữ liệu thật.
Hình 2.18: Mã hóa thơng điệp Hình 2.19: Mã hóa thơng điệp với thuật tốn mã hóa dịng thuật tốn mã hóa khối
2.3.3. Giao thức cảnh báo SSL
SSL sử dụng giao thức Alert để chuyển thông báo lỗi giữa các bên tham gia giao tiếp. Thơng điệp Alert được đóng gói bởi giao thức bản ghi SSL, ngoài phần tiều đề của tầng bản ghi, thông điệp Alert gồm hai trường: trường level và trường description. Hình vẽ 2.20 mơ tả khn dạng của thơng điệp Alert
Hình 2.20: Khn dạng thơng điệp Alert
2.3.4. Giao thức ChangeCipher Spec
Giao thức ChangeCipher Spec là giao thức đơn giản nhất, giao thức này là một thông điệp chứa chỉ một byte mang giá trị 1. Chức năng duy nhất của
thơng điệp này là kích hoạt trạng thái treo đối với trạng thái hiện hành, nó cập nhật bộ mật mã cần dùng trong kết nối hiện tại.
2.4. Thiết lập đƣờng hầm trong SSL VPN
Đường hầm trong mạng SSL VPN là một kênh giao tiếp an tồn giữa hai máy tính trong một mơi trường truyền thông không in cậy. Khi đường hầm được thiết lập, hai máy tính trao đổi dữ liệu với nhau thông qua đường hầm, máy tính thứ 3 khơng thể truy cập được vào kênh giao tiếp đó. Các đường hầm thực hiện việc mã hố tất cả lưu lượng truyền thơng giữa hai máy, kẻ tấn cơng xâm nhập kênh truyền dù có lấy được dữ liệu cũng khơng thể giải mã được nội dung thực sự của dữ liệu.
Với SSL VPN, đường hầm không phải là khái niệm mới. Đường hầm có thể được tạo bởi các giao thức PPTP, L2TP và IPSec, các giao thức này hoạt động ở lớp mạng trở xuống trong mơ hình tham chiếu 7 lớp OSI. SSL VPN tạo các đường hầm bảo mật qua việc thực hiện 2 chức năng sau:
- Yêu cầu xác thực các bên tham gia giao tiếp. Bằng cách này, chỉ có các bên giao tiếp được xác thực mới có thể tiết lập được các đường hầm. Giao thức đường hầm SSL sử dụng cơ chế xác thực dựa trên chứng chỉ khố cơng khai được cung cấp bởi một CA. Xác thực máy chủ SSL VPN là yêu cầu bắt buộc, còn xác thực máy khách SSL VPN là tuỳ chọn.
- Mã hoá tất cả dữ liệu được truyền giữa hai bên tham gia giao tiếp. Cũng giống như giao thức IPSec và các giao thức khác, giao thức đường hầm SSL mã hoá tất cả dữ liệu trao đổi khi một kết nối được thiết lập, các thuật toán mã hoá được sử dụng trong SSL Version 3.0 là khá an toàn cho phiên giao tiếp. Các đường hầm hoạt động ở tầng mạng hoặc thấp hơn được thiết lập với cơ chế phức tạp, cần một phần mềm hoạt động tại các điểm cuối đường hầm. Do đó, việc quản lý cũng trở nên khó khăn hơn. Với SSL VPN, như đã giới thiệu mục
đích ban đầu của giao thức SSL là nhằm vào việc truyền thông dựa trên web, các chức năng của SSL được tích hợp sẵn trên trình duyệt web, chính vì vậy mà việc tạo ra một đường hầm SSL dựa trên web là không quá phức tạp. Các hệ điều hành hiện nay đều hỗ trợ sẵn các trình duyệt web, khi máy khách ở xa dùng trình duyệt web để truy cập vào máy chủ, các chức năng của giao thức SSL tích hợp sẵn trên trình duyệt thực hiện việc tạo đường hầm bảo mật giữa trình duyệt và máy chủ. Mạng SSL VPN kiểu này còn được gọi là các VPN dựa trên nền web.
SSL cịn có khả năng tạo ra các đường hầm cho các ứng dụng không dựa trên nền web, nó sử dụng một phần mềm chuyển tiếp cổng (port forwarding applet) vào quá trình trao đổi dữ liệu. VPN kiểu này thực hiện hai cơ chế, một là chuyển tiếp các lưu lượng gửi tới các cổng cụ thể, hai là truyền dữ liệu qua các cổng của các giao thức khác như FTP, Telnet,…
Để thiết lập kết nối, SSL VPN gửi một đoạn mã (thường là một điều khiển ActiveX hoặc Java applet) tới máy người dùng và bằng cách đó tạo một “virtual network adapter” trên máy người dùng. Tiếp theo SSL VPN gán cho người dùng một địa chỉ IP trên mạng nội bộ, và sử dụng đường hầm SSL để thiết lập một kết nối giữa mạng nội bộ và máy truy cập từ xa. Trong nhiều trường hợp phương thức giao tiếp này giống với cơng nghệ mạng IPSec VPN, virtual network adapter có thể chuyển tiếp tất cả các lưu lượng TCP, UDP, IP, ICMP,… Tồn bộ gói tin được mã hố bởi SSL và bọc thành một gói mới sau đó truyền qua mạng tới điểm cuối.
2.5. Kết luận chƣơng
Trong chương này luận văn đã trình bày cơng nghệ mạng riêng ảo dựa trên giao thức SSL. Các khái niệm an ninh được sử dụng trong giao thức SSL, các giao thức đường hầm trong SSL cũng như việc thiết lập đường hầm SSL
VPN. Để áp dụng công nghệ SSL VPN, trong chương 3 của luận văn sẽ xây dựng “Hệ thống bảo mật truy cập nội bộ từ xa qua OpenVPN dựa trên SSL”.
CHƢƠNG 3. XÂY DỰNG HỆ THỐNG BẢO MẬT TRUY CẬP NỘI BỘ TỪ XA QUA OPENVPN DỰA TRÊN SSL
3.1. Phát biểu bài toán
Hiện nay nhiều tổ chức, doanh nghiệp có hoạt động mở rộng trên phạm vi địa lý rộng lớn và gia tăng số lượng người làm việc từ xa. Các tổ chức hay doanh nghiệp này cần có giải pháp cho người dùng từ xa truy cập các dịch vụ nội bộ đảm bảo thuận tiện, dễ sử dụng và đảm bảo an tồn thơng tin. Giải pháp đưa ra cần tiết kiệm chi phí, thuận tiện trong triển khai, vận hành và nâng cấp.
Với nhu cầu đó, giải pháp xây dựng hệ thống sử dụng SSL VPN dựa trên mã nguồn mở sẽ tận dụng được các ưu điểm của công nghệ SSL VPN và tiết kiệm chi phí tối đa do sử dụng nền tảng mã nguồn mở.
Trong các giải pháp SSL VPN mã nguồn mở đang có, giải pháp OpenVPN được đánh giá cao về độ bảo mật, ổn định và khả năng phát triển.
3.2. Mơ hình hệ thống OpenVPN
3.2.1. Các thành phần hệ thống OpenVPN
- OpenVPN Access server: Máy chủ chạy nền Unix (CentOS,
Ubuntu,… ) và cài đặt OpenVPN server, cung cấp SSL VPN cho người dùng từ xa
- Connect Client: Phần mềm cài đặt trên máy người dùng
- Connect UI: Giao diện web cho người dùng kết nối VPN hoặc đăng
nhập trang quản trị profile cá nhân.
- Admin UI: giao diện để quản trị hệ thống - Các cổng dịch vụ: VPN, TCP 443, UDP 1194 - Giao diện quản trị: TCP 443, 943
3.2.2. Các mơ hình hệ thống OpenVPN
Mơ hình này áp dụng khi OpenVPN Server nằm trong mạng nội bộ công ty, cung cấp truy cập cho người dùng bên ngồi mạng cơng ty. OpenVPN Server sẽ có một card mạng để kết nối tới mạng nội bộ.
Để hoạt động trong mơ hình này, cần có thêm 1 số cấu hình trên thiết bị tường lửa và modem
Hình 3.1: Mơ hình OpenVPN một card mạng
Tại thiết bị gateway, ta cần thực hiện cấu hình chuyển tiếp dữ liệu (port forwarding) và trên tưởng lửa cần cho phép kết nối giữa OpenVPN Server và mạng riêng phía sau tường lửa.
3.2.2.2. Mơ hình 2 card mạng
Mơ hình này là phổ biến nhất khi Access Server nằm trong ma ̣ng nội bộ của cơng ty, nhưng nó cũng có địa chỉ IP cơng cộng .
OpenVPN Server giao tiếp với các máy khách bên ngoài ma ̣ng cô ng ty thông qua card mạng ngồi và dùng IP cơng cơ ̣ng của nó.
Hình 3.2: Mơ hình OpenVPN một card mạng
3.2.2.3. Mơ hình 1 card mạng dùng địa chỉ public
Mơ hình này cung cấp mạng riêng cho nhóm người dùng khi cần sử dụng các dịch vụ chia sẻ, cộng tác, hoặc sử dụng chính các dịch vụ cài trên OpenVPN Server.
Trong mơ hình này, OpenVPN server thường được đặt tại data center
Hình 3.3: Mơ hình OpenVPN một card mạng dùng địa chỉ IP public
OpenVPN Access Server có thể quản lý cơ sở dữ liệu nội bộ của riêng nó và cũng có thể làm việc với một loạt các phương pháp xác thực phổ biến . Các hệ thống hiện đang được hỗ trợ là:
- Local: Xác thực cơ sở dữ liệu nội bộ
- PAM: hệ thống để xác thực người dù ng với các tài khoản trên host
Access Server Linux
- Active Directory/Máy chủ LDAP
- RADIUS Server
Hình 3.4: Mơ hình xác thực và quản lý ngƣời dùng
3.2.4. Vùng mạng VPN
OpenVPN Server sẽ tạo ra một vùng mạng ảo độc lập mà trên đó các máy khách VPN được kết nối sẽ được gán một địa chỉ IP.
OpenVPN Server cũng sẽ thiết lập router hoặc NAT để cho phép máy từ vùng mạng VPN truy cập vào các vùng mạng nội bộ.
Hình 3.5: Mơ hình q trình hoạt động của OpenVPN
Người dùng từ internet dùng web browser truy cập vào đường dẫn https://ipopenvpn để kết nối tới OpenVPN server. Người dùng được yêu cầu cung cấp tên và mật khẩu để xác thực.
Sau khi xác thực thành công, người dùng được yêu cầu cài đặt một phần mềm trên máy (Connect Client). Phần mềm này tạo một card mạng ảo trên máy người dùng. Sau đó cấp 1 địa chỉ IP nội bộ và dùng SSL tunnel để tạo kết nối giữa mạng nội bộ của doanh nghiệp và máy tính người dùng.
Các gói tin tạo ra được mã hóa bằng SSL và đóng gói với 1 header mới và được gửi qua mạng.
Qua SSL tunnel đã được tạo, người dùng có thể dùng các dịch vụ như chia sẻ file, remote desktop, SSH, telnet để điều khiển hệ thống từ xa tùy theo chính sách của doanh nghiệp. [10]
Hình 3.7: Mơ hình truy cập các dịch vụ qua OpenVPN
3.4. Mơ hình triển khai hệ thống
Hình 3.8: Mơ hình hệ thống bảo mật truy cập nôi bộ qua OpenVPN
OpenVPN Server được đặt trong vùng public DMZ (DMZ – Demilitazized Zone) cho phép người dùng từ ngoài truy cập. Người dùng truy
cập tới OpenVPN, kênh SSL VPN được thiết lập. Tùy theo tài khoản mà người dùng được truy cập tiếp các dịch vụ bên trong
Thiết bị:
Tên Chức năng Thông số chi tiết
Máy chủ AD, DNS
Xác thực tập trung người dùng, phân giải DNS
IP=172.16.0.8/24
Máy chủ web Cung cấp dịch vụ web IP=172.16.0.5/24 Máy chủ mail Cung cấp dịch vụ mail IP=172.16.0.6/24 OpenVPN Server Cung cấp SSL VPN cho
người dùng từ xa
IP(public)
=113.160.48.153
IP(LAN)=172.16.1.4/24 Laptop Dùng để thử kết nối với
vai trò chuyenvien, lanhdao
Người dùng từ xa:
Nhóm Tài khoản Quyền
Người dùng thường chuyenvien Chỉ được vào web
Người dùng đặc biệt lanhdao Được dùng toàn bộ dịch vụ nội bộ
Nội dung triển khai:
Cài đặt hệ thống
Cài đặt OpenVPN Server Cài đặt AD Server
Cài đặt máy chủ dịch vụ web Cài đặt máy chủ dịch vụ mail Tạo và phân quyền người dùng Cài đặt router kết nối internet
Kiểm tra kết quả
Kiểm tra kết nối VPN thành công Kiểm tra phân quyền
Kiểm tra thông tin nhật ký
Kiểm tra quá trình truyền dữ liệu qua SSL VPN
3.5. Triển khai hệ thống
3.5.1. Cài đặt Ubuntu
Thực hiện cài đặt, cấu hình mạng cho máy chủ Ubuntu
sudo vi /etc/network/interfaces auto eth0
iface eth0 net static address 172.16.1.4 netmask 255.255.255.0 broadcast 172.16.1.255 gateway 172.16.1.1 sudo vi /etc/resolv.conf name server 8.8.8.8
sudo /etc/init.d/networking restart
Sau quá trình cài đặt mạng, kiểm tra kết nối từ máy chủ Ubuntu ra mạng ngoài bằng lệnh ping.
Từ đây có thể tiếp tục cài đặt qua SSH bằng các công cụ như Putty, Secure CRT,…
3.5.2. Cài đặt OpenVPN
dpkg -i openvpn-as-1.6.0-Ubuntu8.amd_64.deb
Chạy init script để đặt các tham số cơ bản
/usr/local/openvpn_as/bin/ovpn-init –force
Sau khi đặt các thông số cơ bản, ta cấu hình (thơng qua giao diện web)
Hình 3.9: Giao diện đăng nhập OpenVPN
3.5.3. Cài đặt AD Server và kết nối với OpenVPN Cài đặt windows server 2003 Cài đặt windows server 2003
Cài đặt AD: Từ dòng lệnh gõ dcpromo và điền thông tin cần thiết để cài đặt, sau quá trình này cần khởi động lại server để hoàn tất việc cài đặt AD
Kết nối AD và OpenVPN 3.5.4. Cài đặt máy chủ dịch vụ mail
Sử dụng mail server Mdaemon 3.5.5. Cài đặt máy chủ dịch vụ web
Sử dụng web Apache cho windows 3.5.6. Tạo và phân quyền người sử dụng
Tạo tài khoản chuyenvien và lanhdao trên AD: Active Directory User and Computer/User/Create new user
Hình 3.10: Phân quyền chuyenvien chỉ đƣợc kết nối tới máy chủ web
Phân quyền cho lanhdao được kết nối tới toàn bộ máy chủ dịch vụ (web nội bộ, mail, cơng văn, ..)
Hình 3.11: Phân quyền lanhdao đƣợc kết nối tới toàn bộ máy chủ dịch vụ
3.5.7. Cài đặt Router kết nối Internet để cho phép người dùng từ ngoài truy cập OpenVPN