CHƯƠNG 4 - TÌM HIỂU VỀ OPENVPN
Với sự ra đời của OpenVPN, mộtthế hệ mớicủaVPN.Trong khi các giải pháp VPN khác thường sử dụng cơ chế độc quyền hoặc không đạt chuẩn, OpenVPN có một khái niệm mô đun,cho bảo mật và mạng. OpenVPN sử dụng các cơ chế an toàn, ổn định, và SSL /TLS và kết hợp lại để tạo độ tin cậy cho chính lớp của nó. Chúng ta sẽ tìm hiểu kỹ hơn OpenVPN ở đây.
4.1. LỊCH SỬ PHÁT TRIỂN CỦA OPENVPN
Năm 2003, James Yonan đã kể lại trong thời gian ông ta đi du lịch ở Central Asia trước ngày 11/09/2001 và có việc phải kết nối với văn phòng qua nhà cung cấp dịch vụ Internet của châu Á hoặc Nga. Ông nhận thấy thực tế rằng những kết nối này đi qua những nước không đảm bảo được sự an toàn.Theo những nghiên cứu của James Yonan thì có hai mục tiêu chính của một hệ thống VPN đó là an toàn và tính khả dụng. Không có một giải pháp nào vào thời điểm đó có thể đáp ứng được cả hai mục tiêu đó. Ipsec có thể chấp nhận được về mặt an toàn, nhưng hệ thống xử lý của nó khó thiết lập, và cấu trúc phức tạp của nó làm nó dễ bị tổn thương bởi các cuộc tấn công. Bởi vậy Jame Yonan đã tiếp cận giải pháp dùng thiết bị card mạng ảo TUN/TAP có trong nhân hệ điều hành Linux.
Việc chọn thiết bị TUN/TAP cho mô hình nối mạng ngay lập tức đưa ra được tính linh hoạt mà các giải pháp VPN khác lúc đó không thể có được. Trong khi các giải pháp VPN nền tảng SSL/TLS khác cần một bộ trình duyệt (browser) để thiết lập kết nối, thì OpenVPN chuẩn bị gần như những thiết bị mạng thật trên gần như tất cả các hoạt động mạng. Rồi Yonan chọn tên OpenVPN với sự tôn trọng dành cho những thư viện và những chương trìnhcủa dự án OpenSSl, và muốn đưa ra thông điệp: Đây là mã nguồn mở và phần mềm miễn phí.OpenVPN sử dụng thiết bị Tun/Tap (hầu như có sẵn trên các bản Linux) và openssl để xác nhận (authenticate), mã hóa (khi gởi) và giải mã (khi nhận) đường truyền giữa hai bên thành chung một network.
4.2. ƯU ĐIỂM CỦA OPENVPN
- Hỗ trợ VPN lớp 2 và lớp 3 : Vì vậy, các đường hầm Open VPN trên lớp 2cũng có thể chuyển khung Ethernet, các gói dữ liệu IPX, và Windows Network Browsing packets (NETBIOS), tất cả đều là những vấn đề gặp phải trong hầu hết các giải phápVPN khác.
- Bảo vệ người làm việc bên ngoài bằng bức tường lửa nội bộ.
- Các kết nối OpenVPN có thể đi qua được hầu hết mọi tường lửa và proxy : Khi truy cập các trang web HTTPS, thì đường hầm OpenVPN làm việc.Việc thiết lập đường hầm OpenVPN bị cấm là rất hiếm. OpenVPN có hỗ trợ ủy quyền đầy đủ bao gồm xác thực.
- Hỗ trợ UDP và TCP: OpenVPN có thể được cấu hình để chạy dịch vụ TCP hoặc UDP trên máy chủ hoặc khách hàng. Là một máy chủ, OpenVPN chỉ đơn giản là chờ đợi cho đến khi một khách hàng yêu cầu một kết nối,kết nối này được thiệt lập theo cấu hình của khách hàng.
- Chỉ cần một cổng trong tường lửa được mở là cho phép nhiều kết nối vào: Kể từ phần mềm OpenVPN 2.0, máy chủ đặc biệt này cho phép nhiều kết nốivào trên cùng một cổng TCP hoặc UDP, đồng thời vẫn sử dụng các cấu hình khác nhau cho mỗi một kết nối
- Không có vấn đề gì với NAT: Cả máy chủ và máy khách OpenVPN có thể nằm trong cùng một mạng và sử dụng các địa chỉ IP riêng . Mỗi tường lửa có thể được dùng để gửi lưu lượng tới điểm cuối đường hầm.
- Giao diện ảo chấp nhận các quy tắc về tường lửa: Tất cả các qui tắc, các cơ chế chuyển tiếp, và NAT có thể dùng chung đường hầm OpenVPN. Nhưng giao thức IP cũng có thể , bạn có thể tạo đường hầm VPN khác như IPsec bên trong đường hầm OpenVPN .
- Độ linh hoạt cao với khả năng mở rộng kịch bản: OpenVPN cung cấp nhiều điểm trong quá trình thiết lập kết nối để bắt đầu các kịch bản riêng. những kịch bản có thể được sử dụng cho một loạt các mục đích từ xác thực chuyển đổi dự phòng và nhiều hơn nữa.
- Hỗ trợ khả năng hoạt động cao, trong suốt cho IP động: Hai đầu đường hầm có thể sử dụng IP động và ít bị thay đổi. Nếu bị đổi IP, các phiên làm việc của Windows Terminal Server và Secure Shell (SSH) có thể chỉ bị ngưng trong vài giây và sẽ tiếp tục hoạt động bình thường.
- Cài đặt đơn giản trên bất kỳ hệ thống nào: Đơn giản hơn nhiều so với IPsec.
- Thiết kế kiểu Môđun.
- Hỗ trợ cho điện thoại di độngvà nhúng: Ngày càng có nhiềuthiết bị di động được hỗ trợ.
4.3. CÁC PHIÊN BẢN CỦA OPENVPN
4.3.1. OpenVPN phiên bản 1
OpenVPN xuất hiện trong giải pháp VPN vào ngày 13/5/2001. Ấn bản đầu tiên này chỉ có thể tạo đường hầm cho các gói IP qua giao thức UDP và chỉ mã hóa bằng mật mã Blowfish (thuật toán mã hóa đối xứng) và các chữ ký SHA HMAC. Phiên bản này đƣợc đánh số 0.90. Bảng sau đây giới thiệu tổng quát về các những lần xuất bản của OpenVPN phiên bản 1:
Song song với việc cải tiến và triển khai phiên bản 1, việc thử nghiệm đối với phiên bản 2 được tiến hành vào tháng 11/2003. Vào tháng 2/2004, phiên bản 2.0-test3 hướng đến mục tiêu là một máy chủ OpenVPN có nhiều máy khách. Máy chủ có nhiều máy khách này là một trong những đặc tính nổi bật nhất của OpenVPN hiện nay, vài máy khách có thể liên kết với máy chủ VPN trên cùng mộtcổng. Vào 22/2/2004, hai nhánh phát triển là 1.6-beta7 và 2.0-test3 được kết hợp lại và phát triển sâu thêm để tạo ra phiên bản 2
Qua 29 bản thử nghiệm, 20 bản beta, va 20 bản “ứng cử viên” thì đến 17 tháng 7 năm 2005 thì OpenVPN phiên bản 2.0 chính thức được phát hành. Danh sách sau đây là danh sách tổng quan ngắn gọn của những đặc tính được thêm vào ở OpenVPN phiên bản 2:
- Hỗ trợ multi-client: OpenVPN đưa ra một chế độ kết nối đặc biệt, ở đó những đã được xác thực bằng TLS sẽ được cung cấp dữ liệu về IP và hoạt động mạng kiểu DHCP. Với cách này, một số đường hầm ( tối đa là 128) có thể liên lạc qua cùng một cổng TCP hoặc UDP.
- Tùy chọn Push/pull: Việc cài đặt mạng của clients có thể được điều khiển bởi sever. Sau khi hoàn thành cài đặt mạng của một đường hầm, sever có thể cho phép client ( cả Windows và Linux) sử dụng những sự cài đặt mạng khác nhau ngay lập tức.
- Bổ sung một Management interface- giao diện quản lý (Telnet).
- Phần mềm và driver trên Window được phát triển rộng rãi
4.3.3. OpenVPN phiên bản 2.1
Vào giữa năm 2005, các nhà phát triển OpenVPN tiếp tục cho ra phiên bản mới là 2.1. Bên cạnh phiên bản này, một phiên bản thương mại 3.0 cũng đang được phát triển. Đầu tháng 10/2008, bản quyền OpenVPN được chuyển cho công ty OpenVPN Technologies, Inc; một công ty do James Jonan sáng lập. Công ty này làpháttriểnmột số sản phẩmdựa trênOpenVPNcho các thiết lập kinh doanh. Cảhaiphiên bảnvới sự hỗ trợthươngmạivà thiết bịphần cứng,dịch vụ và hỗ trợ,và một giao diệnquản lýdựa trên websẽcó sẵn.Từ năm 2008, thiết kế lạitrang web củaOpenVPNđãphảnánhmột cách tiếp cậnchuyên nghiệpđối vớikhách hàng doanh nghiệp
4.4. OPENVPN
4.4.1. CÀI ĐẶT OPENVPN
OpenVPN được xây dựng với tính di động và hiện đang chạy trên hầu hết các hệ điều hành bao gồm cả Windows 2000/XP, Linux, Solaris, BSD, và Mac OS X. Kể từ khi nó chạy trong User – Space thay vì như một mô-đun nhân (Kernel), cài đặt là rất đơn giản. Có nhiều tài liệu cài đặt rất chi tiết có trên trang web của OpenVPN. Trên Windows, OpenVPN cài đặt giống như bất kỳ chương trình khác. Nó đi kèm như là thực thi và tất cả những gì bạn cần để làm là nhấp đúp chuột vào trình cài đặt. Nó rất đơn giản. Tuy nhiên vẫn cần phải tìm hiểu cho các phần cấu hình tiếp theo, việc hoàn thành xong việc cài đặt đó chỉ là 1 bước mà thôi. Để tự động khởi động và dừng của OpenVPN ,lúc khởi động lại sẽ cần phải chạy OpenVPN như là một dịch vụ Windows điều này cũng rất đơn giản. Khách hàng chỉ mất tối đa 10 phút cho việc cấu hình. Đối với bất cứ ai đã cố gắng cấu hình và xây dựng trong các Client IPSec của Windows đều sẽ thấy ấn tượng vì con số gây shock này.
Trên Linux cái đặt cũng rất đơn giản,hầu hết các bản phân phối đều có OpenVPn như một phần trong các gói hệ thống. Gentoo có một OpenVPN xây dựng lại và Redhat đã có sẵn RPM. OpenVPN sử dụng các trình điều khiển TAP và TUN ảo. Nếu sử dụng nhân của hệ điều hành linux 2.4.x hoặc cao hơn thì OpenVPN đều được tích hợp sẵn các trình điều khiển. Nếu sử dụng thấp hơn, thì có thể tải về và cài đặt TAP / TUN trình điều khiển khá dễ dàng. OpenVPN có một danh sách khá dài các tùy chọn cài đặt, nhưng chỉ có một thực sự cần thiết đó là tùy chọn pthreads. Tùy chọn này là rất quan trọng vì nó cho phép xử lý đa luồng để tạo ra một kênh điều khiển khác nhau mà trao đổi khóa được thực hiện. Thời gian rekeying mặc định là một giờ, do đó pthreads cho phép bạn loại bỏ độ trễ giờ rekeying qua một kênh riêng biệt và chuyển đổi sang các vật liệu keying mới một cách liền mạch.
Những người quan tâm đến băng thông cũng có thể muốn nhìn vào thư viện nén LZO mà nén dữ liệu trước khi nó được mã hóa. Nén hoạt động bằng cách xác định kiến trúc cơ bản trong cấu trúc gói dữ liệu và sau đó thay thế chung bằng một chủ sở hữu mới có kích thước nhỏ hơn. Một trong những đặc điểm của một thuật toán mã hóa chất lượng là một biểu đồ bằng phẳng, có nghĩa là văn bản được mã hóa không có bất kỳ mô hình chung và do đó không thể được nén.
4.4.2. CẤU HÌNH OPENVPN
OpenVPN được cấu hình tương tự như hầu hết các dịch vụ sử dụng UNIX đó là sử dụng file cấu hình. Một trong những điểm mạnh của OpenVPN đó là định dạng các file cấu hình hầu hết là giống nhau cho tất cả các Platform. Có một vài khác biệt nhỏ, nhưng trong hầu hết các thành phần, file cấu hình là rất tiện lợi. Đây là một ưu điểm rất quan trọng khi tiến hành so sánh với chức năng tương tự được tìm thấy giữa Windown và nhiều loại *NIX.
OpenVPN sử dụng UDP port 5000 để tunnel các luồng dữ liệu. Với phiên bản 2.0, nhiều kết nối có thể sử dụng cùng một Port UDP trên Server, tuy nhiên từ bản 1.6 trở về trước thì mỗi kết nối sẽ sử dụng một Port UDP riêng biệt. Có nhiều ý kiến thắc mắc tại sao sử dụng UDP mà ko phải là TCP, đó chính là vì sẽ phát sinh rất nhiều vần đề khi sử dụng Port TCP. TCP sẽ theo dõi số thứ tự gói, mất gói và yêu câu gửi lại khi có hiện tượng mất gói xảy ra, điều này có thể là rất tốt khi bạn chỉ có một tầng TCP. Tuy nhiên nó còn có cả thời gian đáp ứng đó là khoảng thời gian trong bao lâu trước khi nó tiến hành yêu cầu gửi lại. Cái thời gian này là có thể thay đổi và cơ bản là nó sẽ tăng theo cấp số nhân theo số lượng gói tin sẽ tiếp tục được nhận thêm vào. Nếu như triển khai TCP trên nền TCp, khi đó sẽ có 2 tầng Flow Control tính toán thời gian cho mỗi lần yêu cầu gửi lại. Nếu như hàng đợi xử lý kém, khi đó tầng TCP thấp hơn sẽ có thời gian đợi dài hơn tầng TCP nằm trên và khi đó sẽ xảy ra một khung hoảng thực sự mỗi khi về thời gian yêu cầu gửi lại mỗi khi nhận được yêu cầu trong hệ thống giám sát luồng dữ liệu.
Hình 4.1: Các giao diện chuẩn của OpenVPN
OpenVPN làm việc ở 2 chế độ. Sử dụng TUN Driver để gửi luồng dữ liệu IP và dùng TAP Driver để gửi luồng dữ liệu Ethernet. Có thể dễ dàng để sử dụng TUN Driver và thiết lập một WINS server trên các thiết bị đầu cuối để sử lý Broadcast Layer 2, chính vì thể sẽ đi vào giải thích rõ về vần đề này. Việc cấu hình TUN là rất dễ dàng và chỉ đòi hỏi một vài lệnh và nhập một vài dòng vào Modules.conf có thể đã có.
Một khi các giao diện TUN được thiết lập, nó sẽ được thực hiện rất trơn tru. OpenVPN sử dụng file cấu hình do đó việc này là rất dễ dàng. Do đó bạn có thể thay đổi bất cứ điều gì để có thể cải thiện hiệu quả về bảo mật và hiệu suất làm việc OpenVPN
User nobody
Bản chất của việc quản trị bảo mật đó chính là ý thức của người sử dụng các ứng dụng chạy dưới OpenVPN. Các tập tin cấu hình đã thiết lập các tùy chọn này:
# Downgrade UID and GID to
# "nobody" after initialization
# for extra security.
;user nobody
;group nobody
Điều bắt buộc là bạn phải ghi chú thêm vào 2 dòng dưới. Điều này cho phép OpenVPN khởi tạo ra một các User và các nhóm Nobody. Đối với những người không quen với UNIX, “ nobody” là một người sử dụng không có đặc quyền với sự cho phép chỉ đủ để thực hiện các hành động cơ bản giúp cho OpenVPN hoạt động nhưng không đủ để truy cập vào những phần khác. Nếu như một kẻ tấn công bằng cách nào đó có thể tìm ra được lỗ hổng của OpenVPN, thì họ sẽ có được toàn bộ quyền giống như là quyền của User đang có. Nếu User là quyền “ nobody”, kẻ tấn công sẽ bị hạn chế tức thì để tránh thiệt hại cho thiết bị. Không ít thì nhiều, điều này sẽ làm chậm đi các hành động của kẻ xâm nhập và từ đó giúp cho bạn có thời gian để phát hiện ra sự xâm nhập này.
Chroot the Server
Nếu như đã sử dụng nhiều loại UNIX, ngay sau dòng User “ Nobody ” nên thêm vào một lựa chọn như sau:
chroot /usr/local/openvpn
Tùy chọn này sẽ khóa các quá trình OpenVPN vào thư mục OpenVPN (hoặc bất cứ điều gì bạn chỉ định) và không cho phép nó để truy cập vào phần còn lại của hệ thống. Điều này cung cấp một lớp bảo vệ chống lại bất kỳ tổn thương trong tương lai, cho phép sự thỏa hiệp của daemon OpenVPN. Sử dụng chroot kết hợp với người sử dụng "Nobody" và bạn cung cấp một mức độ bảo vệ chủ động chống lại các cuộc tấn công không biết rằng có thể xuất hiện trong tương lai.
TLS – auth
Và nếu các tùy chọn ở trên là không đủ để làm cho bạn cảm thấy an toàn, OpenVPN bao gồm các tùy chọn tls-auth. Với kích hoạt tùy chọn tls-auth, OpenVPN sẽ sử dụng một mức độ xác thực thứ hai bằng cách tạo ra một chìa khóa HMAC để sử dụng trong quá trình bắt tay TLS. Tính năng này kết hợp một số quyền administative như tất cả các máy kết nối phải có Pre – Share bí mật trước khi chia sẻ thêm, nhưng nó cung cấp một mức độ cao của bảo vệ chống lại các cuộc tấn công như lỗi tràn bộ đệm trong OpenSSL. Với tls-auth được kích hoạt, một kẻ tấn công quét Internet cho các thiết bị SSL được kích hoạt thậm chí sẽ không khởi động bắt tay với một TLS mà không có chữ ký HMAC thích hợp.
Adjust the MTU
Kích thước dự kiến của đường hầm và kích thước đường hầm thực tế trên hai đầu của kết nối có thể khác nhau. Điều này sẽ cung cấp một thông báo lỗi trong các tập tin đăng nhập nói rằng các tùy chọn từ xa thực tế không phù hợp với các tùy chọn từ xa dự kiến. Khi đọc thông báo này chặt chẽ sẽ thấy rằng liên kết MTU hoặc tun-MTU không phù hợp với cả hai bên. Điều này được gây ra bởi các tiêu đề tăng kích thước gói lớn hơn dự kiến và có thể gây ra phân mảnh và sự xuống cấp hiệu năng. Có thể được khó khăn để tìm thấy OpenVPN vẫn sẽ chạy một cách chính xác và không để cho biết có một vấn đề, đầu mối duy nhất là giảm hiệu suất mà chỉ có thể khám phá ra dưới tải cực. Phải nhìn vào các bản ghi để tìm thấy điều này. Việc sửa chữa được đề xuất là sử dụng các tùy chọn tun-MTU và các tùy chọn MSS-sửa chữa trong file cấu hình.
Tun – mtu 1500
Mss – fix 1400
Những giá trị này sẽ loại bỏ các lỗi không phù hợp và phân mảnh. Có thể cần phải chỉnh sửa với các giá trị một chút để có được nó làm việc hoàn hảo trên thực hiện của từng trường hợp.
Route
Có thể giải thích rất nhanh về lệnh route. Vì đang kết nối đến một mạng từ xa, có thể sẽ cần phải sử dụng lệnh route để có được lưu lượng truy cập qua đường hầm VPN. Sẽ rất có thể có một cái gì đó giống như 192.168.1.x trên một mặt của đường hầm và 192.168.2.x ở phía bên kia.Điều này có nghĩa là cần phải nói với bảng định tuyến để sử dụng TUN VPN / thiết bị TAP để truy cập mạng riêng. Windows và tuyến đường sử dụng UNIX chỉ là một chút khác nhau vì vậy khi làm cho các tập tin cấu hình, sẽ cần phải chắc chắn rằng sử dụng định dạng chính xác. Đây là một trong những thay đổi nền tảng cụ thể cần phải thực hiện các tập tin cấu hình. Như một ví dụ nhanh chóng:
Route add – net 10.1.0.0/24 qw 10.2.0.1 định dạng cho UNIX.
Router 10.1.0.0 255.255.255.0 10.2.0.1 định dạng cho windows
4.4.3. TÍNH NĂNG CỦA OPENVPN
Thông lượng / hiệu suất
Các giải pháp VPN khác đòi hỏi phải mã hoá và giải mã trên luồng thông tin làm hao tốn CPU. Một trong các biện pháp quan trọng của một VPN là thông lượng của nó hoặc số lượng dữ liệu là có thể vượt qua trước khi nó là không thể để theo kịp với các hoạt động giải mã/mã hóa.Với phần cứng những VPN này thì có thể dễ dàng tìm ra thông số nhưng phần mền như OpenVPN thì lưu lượng phụ thuộc nhiều vào phần cứng.OpenVPN được thử trên 1 máy với bộ vi xử lý Pentium III 1Ghz với Ram 512K chạy trên Gentoo Linux .Ở cuối đường hầm thì dùng máy với bộ vi xử lý Pentium IV 2.7 GHx chạy trên win XP. Đường nối giữa 2 máy lưu lượng là 3Mbps và OpenVPN có thể làm việc được với cấu hình này mà không bị giảm thiểu về thông lượng. Đối với các hệ thống có cấu hình yếu mà không có nhu cầu mở rộng ra các site ngang hàng thì nên sử dụng OpenVpn cho các ứng dụng vừa và nhỏ. Còn nếu mà có tính dự phòng hoặc chia tải thì có thể triển khai nó với các dịch vụ lớn hơn. Thêm vào đó, OpenVPNdựa trên phần cứng mà có thể triển khai SSL, có khi sử dụng chuẩn SSL /TS.OpenVPN không có hạn chế số đường hầm.
NAT
Một trong những hạn chế nghiêm trọng của IPSec VPN là NAT. Authentication Header(AH) của IPSec băm địa chỉ nguồn như là một phần của quá trình xác thực của nó.Nếu NAT thay đổi địa chỉ nguồn, VPN ở đầu bên kia của đường hầm sẽ nhận được một hash khác nhau khi kiểm tra tính toàn vẹn gói tin và nó sẽ nghĩ gói tin đã bị giả mạo. Các giải pháp cho vấn đề này trong IPSec là để chạy trong đường hầm bằng cách sử dụng chỉ Encapsulating Security Payload(ESP). Điều này sẽ giúp các địa chỉ nguồn từ được băm trong kiểm tra tính toàn vẹn gói. OpenVPN, hay chính xác hơn SSL/TLS, không chạy chứng thực trên địa chỉ nguồn để nó thành công có thể đi qua một thiết bị NAT.
Xác thực X509
OpenVPN cho phép bạn sử dụng Pre – Share key, hoặc giấy chứng nhận X509 để xác thực, tất cả các sản phẩm chất lượng khác VPN. Các giải pháp an toàn và mạnh mẽ hơn là sử dụng giấy chứng nhận.
Dễ dàng cấu hình
IPSecVPN có 1 vấn đề là cấu hình phức tạp. Chính sự phức tạp luôn đi ngược với sự đám bảo an ninh, tạo nhiều lỗ hổng. Trong khi đó OpenVPN cung cấp mạnh mẽ mặc định cấu hình đơn giản phù hợp với nhu cầu thực hiện nhất. OpenVPN có thể được cấu hình và cài đặt bởi một người có kiến thức bảo mật cơ bản trong khi vẫn duy trì một mức độ bảo mật cao.
Cân bằng tải
Cân bằng tải cho phép liên kết công suất cao để xử lý một lượng lớn lưu lượng truy cập bằng cách chia tải giữa các máy chủ giống hệt nhau. Đây là hoạt động trong suốt đối với các ứng dụng và người sử dụng. OpenVPN không được xây dựng các tính năng để xử lý cân bằng tải, nhưng nó hoàn toàn giải quyết dc dễ dàng bằng cách sử dụng iptables.
Trước đây, package tường lửa/NAT phổ biến nhất chạy trên Linux là ipchains. Tuy nhiên, theo thời gian, ipchains có một số nhược điểm nên đã được Netfilter thay bằng iptables, với các improvement sau đây:
- Tích hợp tốt hơn với nhân của hệ điều hành Linux.
- Cho phép load tốt hơn các modules đặc biệt của iptables giúp cho việc cái thiện độ tin cậy và tốc độ xử lý.
- Là một statefull firewall.
- Filter packet dựa trên địa chỉ MAC và các cờ của TCP header.
- NAT tốt hơn.
- Hỗ trợ việc tích hợp một cách trong suốt với các chương trình như Web proxy: Squid.
- Một số thông số limit có thể được sử dụng trong iptables giúp cho việc ngăn chặn được các cuộc tấn công DOS.
Vậy có thể tóm tắt lại: iptables là một package firewall/NAT được sử dụng rộng rãi nhất hiện nay và được tích hợp sẵn hay cài đặt sử dụng trên các hệ điều hành của Redhat.
Chuyển đổi dự phòng
Một tính năng quan trọng cho các doanh nghiệp lớn là chuyển đổi dự phòng. Khi trụ VPN chết vì một lý do nào đó , thì phái có đường dự phòng. Một lần nữa, OpenVPN không có xây dựng tính năng để xử lý vấn đề này nhưng với việc bổ sung thêm 1cáp nhỏ và định tuyến tĩnh, thì có thể tạo ra đường dự phòngtới 1 trụ OpenVPN khác và tạo ra hệ thống chuyển đổi dự phòng đơn giản không quá nhiều rắc rối.
Trung tâm quản lý
Khi chúng ta bắt đầu nói về việc triển khai thực sự lớn, quản lý tập trung sẽ trở thành một tính năng nhiều quản trị viên yêu cầu. Một giao diện điều khiển cho phép giám sát và cấu hình các thiết bị của nhiều VPN từ một vị trí trung tâm là một tính năng được tìm thấy trong một số các sản phẩm thương mại lớn như các sản phẩm cao cấp từ Cisco, Checkpoint, hoặc NetScreen. OpenVPN không cung cấp bất kỳ khả năng như vậy, nhưng hi vọng trong tương lại một số lập trình viên đóng góp cho một dự án mã nguồn mở bằng cách thiết kế tính năng này.
4.4.4. Bảo mật OpenVPN
OpenVPN được xây dựng trên một nền tảng an ninh vững chắc. SSL / TLS, là hệ thống được sử dụng rộng rãi nhất trong ngành công nghiệp. Nó đã tồn tại rất lâu mà không hiển thị bất kỳ điểm yếu nào. Thực hiện đúng, SSL /TLS bảo mật tốt nhất hiện có. Người sáng tạo ra OpenVPN, James Yonan, đã thực hiện một công việc tuyệt vời SSL /TLS. Nhưng ông đã không dừng lại ở đó. OpenVPN cũng có thêm tính năng làm tăng khả năng của mình để đối phó với lỗ hổng chưa biết có thể xuất hiện OpenVPN hoặc lõi SSL /TLS.
Sinh khoá
Chỉ cần một lưu ý về cách sử dụng khóa. Khi SSL / TLS bắt tay chứng thực cả hai đầu, nó sẽ tạo ra bốn khoá khác nhau, một khoá HMAC gửi , một khóa HMAC nhận, khoá mã hóa / giải mã gửi, và một khóa mã hóa / giải mã nhận. Không bao giờ nên sử dụng cùng 1 khoá cho nhiều hơn một dịch vụ bảo mật cơ bản (không đối xứng, đối xứng, băm, hoặc chữ ký kỹ thuật số) và OpenVPN đúng với trường hợp này.
Khoá dẫn xuất/trao đổi
Để bảo vệ dữ liệu, ta cần phải mã hóa nó với mã hóa đối xứng. Để làm được điều này, cần phải có khóa đối xứng trên mỗi đầu của kết nối. Điều này đòi hỏi một giao thức dẫn xuất/trao đổi khóa. IPSec sử dụng mộ thệ thống gọi là Internet KeyExchange (IKE) trao đổi các khoá. Hệ thống này bao gồm sáu meseage qua lại mà cuối cùng dẫn đếnviệc chứng thực của mỗi hệ thống và trao đổi khoá đối xứng. OpenVPN sử dụng chuẩn bắt tay RSA/DHE, có chứng thực của khách hàng để thực hiện cùng một mục tiêu. Dưới đâylà các bước bắt tay.
Hình4.2: Quá trình bắt tay
Thuật toán mã hóa đối xứng
Đến thời điểm này, ta nhận thấy ren việc bảo vệ của IPSec và SSL/TLS là khá giống nhau. Nó phụ thuộc vào các thuật toán mật mã mã hóa.Trong việc lựa chọn và hầu hết các triển khai IPSec cho phép lựa chọn một loạt các thuật toán. OpenVPN chắc chắn cho chúng ta một danh sách tốt để lựa chọn, nhưng nó mặc địnhcung cấp một lựa rất tốt bằng cách sử dụng bf-cbc và sha1.
Khi lựa chọn một thuật toán mã hóa đối xứng, OpenVPN tránh sử dụng bất kỳ chương trình bao gồm DES. DES chỉ sử dụng một khóa56-bit không còn được coi là an toàn. Và tránh sử dụng cả các thuật toán 3DES, với chiều dài khóa hiệu quả của 112bit, vẫn được coi là an toàn,nhưng nó đòi hỏi xử lý lâu vì nó chỉ chạy các thuật toán DES ba lần. Có nhiều thuật toán có được mạnh mẽ hơn và nhanh hơn và bạn không cần phải dựa vào 3DES nữa.
Chúng ta có thể sử dụng một chế độ mã hóa liên tục nhằm thay đổi thông tin mật(cipher text) của chúng ta một cách ngẫu nhiên. Nếu một kẻ tấn công có thể lấy được đủ thông tin mật được mã hóa với một khóa thông thường, họ có thể có thể làm suy yếu cái khóa để gây ra tổn hại. Điều này là rất khó làm và thường đòi hỏi một số lượng lớn thông tin mât, tuy nhiên nếu sử dụng một đường hầm giữa 2 mạng trong một thời gian dài, bạn có thể tạo ra rất nhiều thông tin được mã hóa trong khoảng thời gian đó. Khi không sử dụng Pre – Share key, OpenVPN sẽ mặc định thay đổi các Key của nó theo từng giờ để tăng thêm một chút mức độ bảo vệ, chúng ta có thể sử dụng chế độ Cơ yếu Chaining Block (CBC). Cơ chế này, ngõ ra thuật toán mã hoá của khối thứ nhật được cộng( XOR) với khối thông tin gốc thứ hai tước khi mã hoá và liên tiếp như vậy cho đến khối cuối cùng. Đối với khối đầu tiên, do không có khối nào mã hoá trước nó , người ta phải tạo một khối thông tin đặc biệt, thương là ngẫu nhiên , có kích thước đúng bằng kích thước khối của thuật toán mã. Khối thông tin này được gọi là vector khỏi tạo, viết tắt là IV(Initial Vector).
OpenVPN mặc định sử dụng bf-cbc cho mã hoá đối xứng của nó. Điều nàyđề cập đến Blowfish trong chế độ Cipher Block Chaining bằng cách sử dụng một khóa128-bit. Blowfish là một thuật toán rất mạnh không có điểm yếu tính tới bây giờ .Với khoá 128-bit cung cấp một không gian rộng lớn để ngăn chặn các cuộc tấn công bằng cách dò khoá vì không có đủ thời gian để thực hiện. Blowfish không chỉ rất an toàn, mà thuật toán của nó cũng nhanh hơn.
Trên Linux,Ta có thể chạy OpenSSL kiểm tra tốc độ và để xem tốc độ tương đối của các thuật toán trên phần cứngcủa máy:
Spiritwrackroot#opensslspeed
Hình 4.3: Tốc độ tương đối của các thuật toánNhững con số trên sẽ giúp chúng ta hiểu được các thuật toán được lựa chọn tốt. Chỉ cần nhìn vào số 64-byte để có một tham chiếu chung. OpenVPN không sử dụng DES, hãy so sánh tốc độ của nó; DES có thể mã hóa / giải mã khoảng 22M mỗi giây. DES-EDE3 được sử dụng để đại diện cho 3DES và không ngạc nhiên gi khi thấy nó trong khoảng 7,6M mỗi giây. Đây là khoảng 1 / 3 DES, có ý nghĩa như 3DES là thực sự chỉ DES chạy ba lần. Bây giờ nhìn vào Blowfish, gần 35M mỗi giây, trên 50% nhanh hơn DES và gần 500% nhanh hơn3DES. Advanced Encryption Standard (AES) trong chế độ 128-bit cũng là một lựa chọn tuyệt vời cho những thuật toán mật mã khối chạy khoảng 21M mỗi giây. Nhưng tương tự DES , AES cung cấp không gian 192-bit và 256 - bit quan trọng với thông lượng 17M / s và 15M / s tương ứng.
HMAC/Hashing
Khi đã có khoá để tao đổi và đang sử dụng một thuật toán đối xứng để bảo đảm đường hầm, thì 2 sites có thể bắt đầu trao đổi dữ liệu. Có hai điều cần khi truyền dữ liệu. Trước tiên, đảm bảo rằng những gì bên gửi gửi là giống những gì nhận được ở đầu bên kia. Những kẻ tấn công không thể đọc được message khi họ vượt qua các mạng công cộng, nhưng vẫn có thể đi vào và ngẫu nhiên thay đổi dữ liệu. Những kẻ tấn công sẽ không biết những gì họ đã thay đổi, nhưng nó có thể có tác động tiêu cực khi dữ liệu đến phía bên kia. Bảo vệ và chống lại dữ liệu bị sai lệch hoặc giả mạo được gọi là toàn vẹn dữ liệu (data integrity). Thứ hai, đảm bảo chống các hành vi từ chối dịch vụ của 1 hoặc nhiều phía tham gia trao đổi thông tin (non-repudiation ) .
Để đảm bảo tính toàn vẹn dữ liệu, thì OpenVPN sử dụng thuật toán hash.Thay vì mã hoá toàn bộ thông tin và gửi đi thì ta xây dựng 1 bản tóm tắt , rùi hash 1 chiều bằng cách biến bản tóm tắt thành một chuỗi dài cố định(128bitMD5và160bit choSHA1) , sau đó mã hoá bản tóm tắt thông tin và đính kèm ở cuối thông tin rùi gửi đi .Khi đầu nhận nhận được thông tin và so sánh kết quả .Nếu chuỗi nhận được và chuỗi bên nhận sau khi hash không thay đổi thì dữ liệu được đảm bảo toàn vẹn.
Nhưng kẻ tấn công chỉ làm 1 việc đơn giản là loại bỏ các chuỗi băm, thay đổi các thông tin , và thực hiện một chuỗi băm mới. Để tránh trường hợp này thì Open sửa dụng thuật toán HMAC.Trước khi hash thông tin 1 chiều, thì sẽ đính kèm một khóa bí mật vào phía trước của nó. Khoá này sẽ nhận được hash cùng với thông tin. Khi thông tin đã nhận được ở đầu kia của đường hầm, người nhận sẽ mở message và chắc chắn rằng có khoá được kèm theo phía trước.Khoá HMAC này, là một trong những khóa để trao đổi ở trên trong bước dẫn xuất/ Exchange. Nếu kẻ tấn công thay đổi các thông điệp và gắn một băm mới, họ sẽ không thể tạo được khoá và do đó người nhận sẽ biết được thông báo không đến từ bên gửi. Một tác dụng nữa của việc sử dụng một HMAC là chúng ta có một cách để ngăn chặn cuộc tấn công man-in-the-middle.
OpenVPN lựa chọn theo mặc định duy nhất thuật toán băm mà chúng ta nên sử dụng, SHA-1. MD5 được sử dụng rộng rãi, nhưng đã bắt đầu crack. Chiều dài của thuật toán hash bằng nữa kích thước không gian khoá . vì vậy khoá MD5128-bit thực sự chỉ có 2^64 lần thử nên có thể tấn công bằng phương pháp thử tuần tự . Nên MD5 hiện nay được xem như là 1 hàm băm không an toàn .Vì thế OpenVPN sử dụngthuật toánbămSHA-1. SHA-1 sử dụng một khóa160-bit thì cần có khoảng 2^80 khôi thông tin được xử lý ,khoảng65.000 lần thử nên khó khăn hơn hơn MD5. SHA-1 đã không bi suy yếu bởi các cuộc tấn công toán học. Biểu đồ tốc độ ở trên cho thấy 23M /s cho MD5 và 20M/s với SHA-1. OpenVPN triển khai hầu hết với tốc dộ 20M/s
4.4.5. Nhược điểm của OPenVPN
- Không tương thích với IPSec.
- OpenVPN không được định nghĩa bởi bất kỳ RFC nào.
- Còn ít người biết cách sử dụng OpenVPN.
- Không có giao diện đồ họa làm việc nào dành cho việc quản trị.
4.5. SO SÁNH OPENVPN VỚI IPSEC VPN
Sau đây là bảng so sánh. Dấu „+‟ chỉ điểm mạnh, dấu „-„ chỉ điểm yếu.
Với sự ra đời của OpenVPN, mộtthế hệ mớicủaVPN.Trong khi các giải pháp VPN khác thường sử dụng cơ chế độc quyền hoặc không đạt chuẩn, OpenVPN có một khái niệm mô đun,cho bảo mật và mạng. OpenVPN sử dụng các cơ chế an toàn, ổn định, và SSL /TLS và kết hợp lại để tạo độ tin cậy cho chính lớp của nó. Chúng ta sẽ tìm hiểu kỹ hơn OpenVPN ở đây.
4.1. LỊCH SỬ PHÁT TRIỂN CỦA OPENVPN
Năm 2003, James Yonan đã kể lại trong thời gian ông ta đi du lịch ở Central Asia trước ngày 11/09/2001 và có việc phải kết nối với văn phòng qua nhà cung cấp dịch vụ Internet của châu Á hoặc Nga. Ông nhận thấy thực tế rằng những kết nối này đi qua những nước không đảm bảo được sự an toàn.Theo những nghiên cứu của James Yonan thì có hai mục tiêu chính của một hệ thống VPN đó là an toàn và tính khả dụng. Không có một giải pháp nào vào thời điểm đó có thể đáp ứng được cả hai mục tiêu đó. Ipsec có thể chấp nhận được về mặt an toàn, nhưng hệ thống xử lý của nó khó thiết lập, và cấu trúc phức tạp của nó làm nó dễ bị tổn thương bởi các cuộc tấn công. Bởi vậy Jame Yonan đã tiếp cận giải pháp dùng thiết bị card mạng ảo TUN/TAP có trong nhân hệ điều hành Linux.
Việc chọn thiết bị TUN/TAP cho mô hình nối mạng ngay lập tức đưa ra được tính linh hoạt mà các giải pháp VPN khác lúc đó không thể có được. Trong khi các giải pháp VPN nền tảng SSL/TLS khác cần một bộ trình duyệt (browser) để thiết lập kết nối, thì OpenVPN chuẩn bị gần như những thiết bị mạng thật trên gần như tất cả các hoạt động mạng. Rồi Yonan chọn tên OpenVPN với sự tôn trọng dành cho những thư viện và những chương trìnhcủa dự án OpenSSl, và muốn đưa ra thông điệp: Đây là mã nguồn mở và phần mềm miễn phí.OpenVPN sử dụng thiết bị Tun/Tap (hầu như có sẵn trên các bản Linux) và openssl để xác nhận (authenticate), mã hóa (khi gởi) và giải mã (khi nhận) đường truyền giữa hai bên thành chung một network.
4.2. ƯU ĐIỂM CỦA OPENVPN
- Hỗ trợ VPN lớp 2 và lớp 3 : Vì vậy, các đường hầm Open VPN trên lớp 2cũng có thể chuyển khung Ethernet, các gói dữ liệu IPX, và Windows Network Browsing packets (NETBIOS), tất cả đều là những vấn đề gặp phải trong hầu hết các giải phápVPN khác.
- Bảo vệ người làm việc bên ngoài bằng bức tường lửa nội bộ.
- Các kết nối OpenVPN có thể đi qua được hầu hết mọi tường lửa và proxy : Khi truy cập các trang web HTTPS, thì đường hầm OpenVPN làm việc.Việc thiết lập đường hầm OpenVPN bị cấm là rất hiếm. OpenVPN có hỗ trợ ủy quyền đầy đủ bao gồm xác thực.
- Hỗ trợ UDP và TCP: OpenVPN có thể được cấu hình để chạy dịch vụ TCP hoặc UDP trên máy chủ hoặc khách hàng. Là một máy chủ, OpenVPN chỉ đơn giản là chờ đợi cho đến khi một khách hàng yêu cầu một kết nối,kết nối này được thiệt lập theo cấu hình của khách hàng.
- Chỉ cần một cổng trong tường lửa được mở là cho phép nhiều kết nối vào: Kể từ phần mềm OpenVPN 2.0, máy chủ đặc biệt này cho phép nhiều kết nốivào trên cùng một cổng TCP hoặc UDP, đồng thời vẫn sử dụng các cấu hình khác nhau cho mỗi một kết nối
- Không có vấn đề gì với NAT: Cả máy chủ và máy khách OpenVPN có thể nằm trong cùng một mạng và sử dụng các địa chỉ IP riêng . Mỗi tường lửa có thể được dùng để gửi lưu lượng tới điểm cuối đường hầm.
- Giao diện ảo chấp nhận các quy tắc về tường lửa: Tất cả các qui tắc, các cơ chế chuyển tiếp, và NAT có thể dùng chung đường hầm OpenVPN. Nhưng giao thức IP cũng có thể , bạn có thể tạo đường hầm VPN khác như IPsec bên trong đường hầm OpenVPN .
- Độ linh hoạt cao với khả năng mở rộng kịch bản: OpenVPN cung cấp nhiều điểm trong quá trình thiết lập kết nối để bắt đầu các kịch bản riêng. những kịch bản có thể được sử dụng cho một loạt các mục đích từ xác thực chuyển đổi dự phòng và nhiều hơn nữa.
- Hỗ trợ khả năng hoạt động cao, trong suốt cho IP động: Hai đầu đường hầm có thể sử dụng IP động và ít bị thay đổi. Nếu bị đổi IP, các phiên làm việc của Windows Terminal Server và Secure Shell (SSH) có thể chỉ bị ngưng trong vài giây và sẽ tiếp tục hoạt động bình thường.
- Cài đặt đơn giản trên bất kỳ hệ thống nào: Đơn giản hơn nhiều so với IPsec.
- Thiết kế kiểu Môđun.
- Hỗ trợ cho điện thoại di độngvà nhúng: Ngày càng có nhiềuthiết bị di động được hỗ trợ.
4.3. CÁC PHIÊN BẢN CỦA OPENVPN
4.3.1. OpenVPN phiên bản 1
OpenVPN xuất hiện trong giải pháp VPN vào ngày 13/5/2001. Ấn bản đầu tiên này chỉ có thể tạo đường hầm cho các gói IP qua giao thức UDP và chỉ mã hóa bằng mật mã Blowfish (thuật toán mã hóa đối xứng) và các chữ ký SHA HMAC. Phiên bản này đƣợc đánh số 0.90. Bảng sau đây giới thiệu tổng quát về các những lần xuất bản của OpenVPN phiên bản 1:
Ngày-tháng- năm | Phiên bản | Những đặc tính / thay đổi quan trọng |
13-5-2001 | 0.90 | Phiên bản đầu tiên , chỉ có vài chức năng như Ip chạy trên dịch vụ UDP, và chỉ có 1 cơ chế mã hoá. |
26-12-2001 | 0.91 | Nhiều cơ chế mã hoá đã được thêm |
23-3-2002 | 1.0 | TLS dựa vào việc xác thực và trao đổi khoá đã được thêm vào. |
28-3-2002 | 1.0.2 | Chức năng sửa lỗi và cải tiến , đặc biệt đối với hệ thống RPM như Redha |
9-4-2002 | 1.1.0 | Hỗ trợ mở rộng đói với TLS/SSL Thêm vào phân luồng dữ liệu Cổng OpenBSD đầu tiên Mở rộng việc bảo vệ giúp cho OpenVPN bảo mật hơn Cải tiến tư liệu sâu hơn. |
22-4-2002 | 1.1.1 | Các lựa chọn cấu hình tự động cho một mạng OpenVPN. |
22-5-2002 | 1.2.0 | Hỗ trợ thêm tập tin cấu hình SSl/TLS là quá trình nền tảng , các khoá cũng dài hơn Các cổng khác nhau được bổ sung/ cải thiện (Solaris, OpenBSD, Mac OSX, X64 ) Trang web được cải tiến , bao gồm “ sách hướng dẫn “ Có thể cài đặt không cần tự động |
12-6-2002 | 1.2.1 | Cung cấp các tập tin RPM nhị phân dùng để lắp đặt hệ thống nền Redhat Cải tiến chiều sâu về xử lý tìn hiệu và quản lý phím khi khởi động Hỗ trợ các thay đổi năng động trong các gói đến (như IP động ) Thêm hỗ trợ cho nhận dạng sau khi cài OpenVPN có thể chạy như người dùng thông thường. |
10-7-2002 | 1.3.0 1.3.1 |
Phiên bản sửa đổi có nhiều tính năng. Hoạt động với OpenSSL 0.9.7 Beta 2. |
23-10-2002 | 1.3.2 | Cổng NetBSD được bổ sung Hỗ trợ cho việc tạo inetd/xinetd dưới Linux Giấy chứng nhận SSL/TLS đơn giản đã được bổ sung (rsa) IPv6 trên TUN đã được thêm vào |
7-5-2003 | 1.4.0 | Cải thiện an ninh Sữa lôi , cải tiến và bổ sung |
15-5-2003 | 1.4.1 | Cải thiện , hỗ trợ cho Kernel 2.4 |
15-7-2003 | 1.4.2 | Cổng Windows đầu tiên xuất hiện |
4-8-2003 | 1.4.3 | Phiên bản sửa lỗi ( bug fix) |
Bảng4.1: Các lần xuất bản của phiên bản 1
4.3.2. OpenVPN phiên bản 2Song song với việc cải tiến và triển khai phiên bản 1, việc thử nghiệm đối với phiên bản 2 được tiến hành vào tháng 11/2003. Vào tháng 2/2004, phiên bản 2.0-test3 hướng đến mục tiêu là một máy chủ OpenVPN có nhiều máy khách. Máy chủ có nhiều máy khách này là một trong những đặc tính nổi bật nhất của OpenVPN hiện nay, vài máy khách có thể liên kết với máy chủ VPN trên cùng mộtcổng. Vào 22/2/2004, hai nhánh phát triển là 1.6-beta7 và 2.0-test3 được kết hợp lại và phát triển sâu thêm để tạo ra phiên bản 2
Qua 29 bản thử nghiệm, 20 bản beta, va 20 bản “ứng cử viên” thì đến 17 tháng 7 năm 2005 thì OpenVPN phiên bản 2.0 chính thức được phát hành. Danh sách sau đây là danh sách tổng quan ngắn gọn của những đặc tính được thêm vào ở OpenVPN phiên bản 2:
- Hỗ trợ multi-client: OpenVPN đưa ra một chế độ kết nối đặc biệt, ở đó những đã được xác thực bằng TLS sẽ được cung cấp dữ liệu về IP và hoạt động mạng kiểu DHCP. Với cách này, một số đường hầm ( tối đa là 128) có thể liên lạc qua cùng một cổng TCP hoặc UDP.
- Tùy chọn Push/pull: Việc cài đặt mạng của clients có thể được điều khiển bởi sever. Sau khi hoàn thành cài đặt mạng của một đường hầm, sever có thể cho phép client ( cả Windows và Linux) sử dụng những sự cài đặt mạng khác nhau ngay lập tức.
- Bổ sung một Management interface- giao diện quản lý (Telnet).
- Phần mềm và driver trên Window được phát triển rộng rãi
4.3.3. OpenVPN phiên bản 2.1
Vào giữa năm 2005, các nhà phát triển OpenVPN tiếp tục cho ra phiên bản mới là 2.1. Bên cạnh phiên bản này, một phiên bản thương mại 3.0 cũng đang được phát triển. Đầu tháng 10/2008, bản quyền OpenVPN được chuyển cho công ty OpenVPN Technologies, Inc; một công ty do James Jonan sáng lập. Công ty này làpháttriểnmột số sản phẩmdựa trênOpenVPNcho các thiết lập kinh doanh. Cảhaiphiên bảnvới sự hỗ trợthươngmạivà thiết bịphần cứng,dịch vụ và hỗ trợ,và một giao diệnquản lýdựa trên websẽcó sẵn.Từ năm 2008, thiết kế lạitrang web củaOpenVPNđãphảnánhmột cách tiếp cậnchuyên nghiệpđối vớikhách hàng doanh nghiệp
4.4. OPENVPN
4.4.1. CÀI ĐẶT OPENVPN
OpenVPN được xây dựng với tính di động và hiện đang chạy trên hầu hết các hệ điều hành bao gồm cả Windows 2000/XP, Linux, Solaris, BSD, và Mac OS X. Kể từ khi nó chạy trong User – Space thay vì như một mô-đun nhân (Kernel), cài đặt là rất đơn giản. Có nhiều tài liệu cài đặt rất chi tiết có trên trang web của OpenVPN. Trên Windows, OpenVPN cài đặt giống như bất kỳ chương trình khác. Nó đi kèm như là thực thi và tất cả những gì bạn cần để làm là nhấp đúp chuột vào trình cài đặt. Nó rất đơn giản. Tuy nhiên vẫn cần phải tìm hiểu cho các phần cấu hình tiếp theo, việc hoàn thành xong việc cài đặt đó chỉ là 1 bước mà thôi. Để tự động khởi động và dừng của OpenVPN ,lúc khởi động lại sẽ cần phải chạy OpenVPN như là một dịch vụ Windows điều này cũng rất đơn giản. Khách hàng chỉ mất tối đa 10 phút cho việc cấu hình. Đối với bất cứ ai đã cố gắng cấu hình và xây dựng trong các Client IPSec của Windows đều sẽ thấy ấn tượng vì con số gây shock này.
Trên Linux cái đặt cũng rất đơn giản,hầu hết các bản phân phối đều có OpenVPn như một phần trong các gói hệ thống. Gentoo có một OpenVPN xây dựng lại và Redhat đã có sẵn RPM. OpenVPN sử dụng các trình điều khiển TAP và TUN ảo. Nếu sử dụng nhân của hệ điều hành linux 2.4.x hoặc cao hơn thì OpenVPN đều được tích hợp sẵn các trình điều khiển. Nếu sử dụng thấp hơn, thì có thể tải về và cài đặt TAP / TUN trình điều khiển khá dễ dàng. OpenVPN có một danh sách khá dài các tùy chọn cài đặt, nhưng chỉ có một thực sự cần thiết đó là tùy chọn pthreads. Tùy chọn này là rất quan trọng vì nó cho phép xử lý đa luồng để tạo ra một kênh điều khiển khác nhau mà trao đổi khóa được thực hiện. Thời gian rekeying mặc định là một giờ, do đó pthreads cho phép bạn loại bỏ độ trễ giờ rekeying qua một kênh riêng biệt và chuyển đổi sang các vật liệu keying mới một cách liền mạch.
Những người quan tâm đến băng thông cũng có thể muốn nhìn vào thư viện nén LZO mà nén dữ liệu trước khi nó được mã hóa. Nén hoạt động bằng cách xác định kiến trúc cơ bản trong cấu trúc gói dữ liệu và sau đó thay thế chung bằng một chủ sở hữu mới có kích thước nhỏ hơn. Một trong những đặc điểm của một thuật toán mã hóa chất lượng là một biểu đồ bằng phẳng, có nghĩa là văn bản được mã hóa không có bất kỳ mô hình chung và do đó không thể được nén.
4.4.2. CẤU HÌNH OPENVPN
OpenVPN được cấu hình tương tự như hầu hết các dịch vụ sử dụng UNIX đó là sử dụng file cấu hình. Một trong những điểm mạnh của OpenVPN đó là định dạng các file cấu hình hầu hết là giống nhau cho tất cả các Platform. Có một vài khác biệt nhỏ, nhưng trong hầu hết các thành phần, file cấu hình là rất tiện lợi. Đây là một ưu điểm rất quan trọng khi tiến hành so sánh với chức năng tương tự được tìm thấy giữa Windown và nhiều loại *NIX.
OpenVPN sử dụng UDP port 5000 để tunnel các luồng dữ liệu. Với phiên bản 2.0, nhiều kết nối có thể sử dụng cùng một Port UDP trên Server, tuy nhiên từ bản 1.6 trở về trước thì mỗi kết nối sẽ sử dụng một Port UDP riêng biệt. Có nhiều ý kiến thắc mắc tại sao sử dụng UDP mà ko phải là TCP, đó chính là vì sẽ phát sinh rất nhiều vần đề khi sử dụng Port TCP. TCP sẽ theo dõi số thứ tự gói, mất gói và yêu câu gửi lại khi có hiện tượng mất gói xảy ra, điều này có thể là rất tốt khi bạn chỉ có một tầng TCP. Tuy nhiên nó còn có cả thời gian đáp ứng đó là khoảng thời gian trong bao lâu trước khi nó tiến hành yêu cầu gửi lại. Cái thời gian này là có thể thay đổi và cơ bản là nó sẽ tăng theo cấp số nhân theo số lượng gói tin sẽ tiếp tục được nhận thêm vào. Nếu như triển khai TCP trên nền TCp, khi đó sẽ có 2 tầng Flow Control tính toán thời gian cho mỗi lần yêu cầu gửi lại. Nếu như hàng đợi xử lý kém, khi đó tầng TCP thấp hơn sẽ có thời gian đợi dài hơn tầng TCP nằm trên và khi đó sẽ xảy ra một khung hoảng thực sự mỗi khi về thời gian yêu cầu gửi lại mỗi khi nhận được yêu cầu trong hệ thống giám sát luồng dữ liệu.
Hình 4.1: Các giao diện chuẩn của OpenVPN
OpenVPN làm việc ở 2 chế độ. Sử dụng TUN Driver để gửi luồng dữ liệu IP và dùng TAP Driver để gửi luồng dữ liệu Ethernet. Có thể dễ dàng để sử dụng TUN Driver và thiết lập một WINS server trên các thiết bị đầu cuối để sử lý Broadcast Layer 2, chính vì thể sẽ đi vào giải thích rõ về vần đề này. Việc cấu hình TUN là rất dễ dàng và chỉ đòi hỏi một vài lệnh và nhập một vài dòng vào Modules.conf có thể đã có.
Một khi các giao diện TUN được thiết lập, nó sẽ được thực hiện rất trơn tru. OpenVPN sử dụng file cấu hình do đó việc này là rất dễ dàng. Do đó bạn có thể thay đổi bất cứ điều gì để có thể cải thiện hiệu quả về bảo mật và hiệu suất làm việc OpenVPN
User nobody
Bản chất của việc quản trị bảo mật đó chính là ý thức của người sử dụng các ứng dụng chạy dưới OpenVPN. Các tập tin cấu hình đã thiết lập các tùy chọn này:
# Downgrade UID and GID to
# "nobody" after initialization
# for extra security.
;user nobody
;group nobody
Điều bắt buộc là bạn phải ghi chú thêm vào 2 dòng dưới. Điều này cho phép OpenVPN khởi tạo ra một các User và các nhóm Nobody. Đối với những người không quen với UNIX, “ nobody” là một người sử dụng không có đặc quyền với sự cho phép chỉ đủ để thực hiện các hành động cơ bản giúp cho OpenVPN hoạt động nhưng không đủ để truy cập vào những phần khác. Nếu như một kẻ tấn công bằng cách nào đó có thể tìm ra được lỗ hổng của OpenVPN, thì họ sẽ có được toàn bộ quyền giống như là quyền của User đang có. Nếu User là quyền “ nobody”, kẻ tấn công sẽ bị hạn chế tức thì để tránh thiệt hại cho thiết bị. Không ít thì nhiều, điều này sẽ làm chậm đi các hành động của kẻ xâm nhập và từ đó giúp cho bạn có thời gian để phát hiện ra sự xâm nhập này.
Chroot the Server
Nếu như đã sử dụng nhiều loại UNIX, ngay sau dòng User “ Nobody ” nên thêm vào một lựa chọn như sau:
chroot /usr/local/openvpn
Tùy chọn này sẽ khóa các quá trình OpenVPN vào thư mục OpenVPN (hoặc bất cứ điều gì bạn chỉ định) và không cho phép nó để truy cập vào phần còn lại của hệ thống. Điều này cung cấp một lớp bảo vệ chống lại bất kỳ tổn thương trong tương lai, cho phép sự thỏa hiệp của daemon OpenVPN. Sử dụng chroot kết hợp với người sử dụng "Nobody" và bạn cung cấp một mức độ bảo vệ chủ động chống lại các cuộc tấn công không biết rằng có thể xuất hiện trong tương lai.
TLS – auth
Và nếu các tùy chọn ở trên là không đủ để làm cho bạn cảm thấy an toàn, OpenVPN bao gồm các tùy chọn tls-auth. Với kích hoạt tùy chọn tls-auth, OpenVPN sẽ sử dụng một mức độ xác thực thứ hai bằng cách tạo ra một chìa khóa HMAC để sử dụng trong quá trình bắt tay TLS. Tính năng này kết hợp một số quyền administative như tất cả các máy kết nối phải có Pre – Share bí mật trước khi chia sẻ thêm, nhưng nó cung cấp một mức độ cao của bảo vệ chống lại các cuộc tấn công như lỗi tràn bộ đệm trong OpenSSL. Với tls-auth được kích hoạt, một kẻ tấn công quét Internet cho các thiết bị SSL được kích hoạt thậm chí sẽ không khởi động bắt tay với một TLS mà không có chữ ký HMAC thích hợp.
Adjust the MTU
Kích thước dự kiến của đường hầm và kích thước đường hầm thực tế trên hai đầu của kết nối có thể khác nhau. Điều này sẽ cung cấp một thông báo lỗi trong các tập tin đăng nhập nói rằng các tùy chọn từ xa thực tế không phù hợp với các tùy chọn từ xa dự kiến. Khi đọc thông báo này chặt chẽ sẽ thấy rằng liên kết MTU hoặc tun-MTU không phù hợp với cả hai bên. Điều này được gây ra bởi các tiêu đề tăng kích thước gói lớn hơn dự kiến và có thể gây ra phân mảnh và sự xuống cấp hiệu năng. Có thể được khó khăn để tìm thấy OpenVPN vẫn sẽ chạy một cách chính xác và không để cho biết có một vấn đề, đầu mối duy nhất là giảm hiệu suất mà chỉ có thể khám phá ra dưới tải cực. Phải nhìn vào các bản ghi để tìm thấy điều này. Việc sửa chữa được đề xuất là sử dụng các tùy chọn tun-MTU và các tùy chọn MSS-sửa chữa trong file cấu hình.
Tun – mtu 1500
Mss – fix 1400
Những giá trị này sẽ loại bỏ các lỗi không phù hợp và phân mảnh. Có thể cần phải chỉnh sửa với các giá trị một chút để có được nó làm việc hoàn hảo trên thực hiện của từng trường hợp.
Route
Có thể giải thích rất nhanh về lệnh route. Vì đang kết nối đến một mạng từ xa, có thể sẽ cần phải sử dụng lệnh route để có được lưu lượng truy cập qua đường hầm VPN. Sẽ rất có thể có một cái gì đó giống như 192.168.1.x trên một mặt của đường hầm và 192.168.2.x ở phía bên kia.Điều này có nghĩa là cần phải nói với bảng định tuyến để sử dụng TUN VPN / thiết bị TAP để truy cập mạng riêng. Windows và tuyến đường sử dụng UNIX chỉ là một chút khác nhau vì vậy khi làm cho các tập tin cấu hình, sẽ cần phải chắc chắn rằng sử dụng định dạng chính xác. Đây là một trong những thay đổi nền tảng cụ thể cần phải thực hiện các tập tin cấu hình. Như một ví dụ nhanh chóng:
Route add – net 10.1.0.0/24 qw 10.2.0.1 định dạng cho UNIX.
Router 10.1.0.0 255.255.255.0 10.2.0.1 định dạng cho windows
4.4.3. TÍNH NĂNG CỦA OPENVPN
Thông lượng / hiệu suất
Các giải pháp VPN khác đòi hỏi phải mã hoá và giải mã trên luồng thông tin làm hao tốn CPU. Một trong các biện pháp quan trọng của một VPN là thông lượng của nó hoặc số lượng dữ liệu là có thể vượt qua trước khi nó là không thể để theo kịp với các hoạt động giải mã/mã hóa.Với phần cứng những VPN này thì có thể dễ dàng tìm ra thông số nhưng phần mền như OpenVPN thì lưu lượng phụ thuộc nhiều vào phần cứng.OpenVPN được thử trên 1 máy với bộ vi xử lý Pentium III 1Ghz với Ram 512K chạy trên Gentoo Linux .Ở cuối đường hầm thì dùng máy với bộ vi xử lý Pentium IV 2.7 GHx chạy trên win XP. Đường nối giữa 2 máy lưu lượng là 3Mbps và OpenVPN có thể làm việc được với cấu hình này mà không bị giảm thiểu về thông lượng. Đối với các hệ thống có cấu hình yếu mà không có nhu cầu mở rộng ra các site ngang hàng thì nên sử dụng OpenVpn cho các ứng dụng vừa và nhỏ. Còn nếu mà có tính dự phòng hoặc chia tải thì có thể triển khai nó với các dịch vụ lớn hơn. Thêm vào đó, OpenVPNdựa trên phần cứng mà có thể triển khai SSL, có khi sử dụng chuẩn SSL /TS.OpenVPN không có hạn chế số đường hầm.
NAT
Một trong những hạn chế nghiêm trọng của IPSec VPN là NAT. Authentication Header(AH) của IPSec băm địa chỉ nguồn như là một phần của quá trình xác thực của nó.Nếu NAT thay đổi địa chỉ nguồn, VPN ở đầu bên kia của đường hầm sẽ nhận được một hash khác nhau khi kiểm tra tính toàn vẹn gói tin và nó sẽ nghĩ gói tin đã bị giả mạo. Các giải pháp cho vấn đề này trong IPSec là để chạy trong đường hầm bằng cách sử dụng chỉ Encapsulating Security Payload(ESP). Điều này sẽ giúp các địa chỉ nguồn từ được băm trong kiểm tra tính toàn vẹn gói. OpenVPN, hay chính xác hơn SSL/TLS, không chạy chứng thực trên địa chỉ nguồn để nó thành công có thể đi qua một thiết bị NAT.
Xác thực X509
OpenVPN cho phép bạn sử dụng Pre – Share key, hoặc giấy chứng nhận X509 để xác thực, tất cả các sản phẩm chất lượng khác VPN. Các giải pháp an toàn và mạnh mẽ hơn là sử dụng giấy chứng nhận.
Dễ dàng cấu hình
IPSecVPN có 1 vấn đề là cấu hình phức tạp. Chính sự phức tạp luôn đi ngược với sự đám bảo an ninh, tạo nhiều lỗ hổng. Trong khi đó OpenVPN cung cấp mạnh mẽ mặc định cấu hình đơn giản phù hợp với nhu cầu thực hiện nhất. OpenVPN có thể được cấu hình và cài đặt bởi một người có kiến thức bảo mật cơ bản trong khi vẫn duy trì một mức độ bảo mật cao.
Cân bằng tải
Cân bằng tải cho phép liên kết công suất cao để xử lý một lượng lớn lưu lượng truy cập bằng cách chia tải giữa các máy chủ giống hệt nhau. Đây là hoạt động trong suốt đối với các ứng dụng và người sử dụng. OpenVPN không được xây dựng các tính năng để xử lý cân bằng tải, nhưng nó hoàn toàn giải quyết dc dễ dàng bằng cách sử dụng iptables.
Trước đây, package tường lửa/NAT phổ biến nhất chạy trên Linux là ipchains. Tuy nhiên, theo thời gian, ipchains có một số nhược điểm nên đã được Netfilter thay bằng iptables, với các improvement sau đây:
- Tích hợp tốt hơn với nhân của hệ điều hành Linux.
- Cho phép load tốt hơn các modules đặc biệt của iptables giúp cho việc cái thiện độ tin cậy và tốc độ xử lý.
- Là một statefull firewall.
- Filter packet dựa trên địa chỉ MAC và các cờ của TCP header.
- NAT tốt hơn.
- Hỗ trợ việc tích hợp một cách trong suốt với các chương trình như Web proxy: Squid.
- Một số thông số limit có thể được sử dụng trong iptables giúp cho việc ngăn chặn được các cuộc tấn công DOS.
Vậy có thể tóm tắt lại: iptables là một package firewall/NAT được sử dụng rộng rãi nhất hiện nay và được tích hợp sẵn hay cài đặt sử dụng trên các hệ điều hành của Redhat.
Chuyển đổi dự phòng
Một tính năng quan trọng cho các doanh nghiệp lớn là chuyển đổi dự phòng. Khi trụ VPN chết vì một lý do nào đó , thì phái có đường dự phòng. Một lần nữa, OpenVPN không có xây dựng tính năng để xử lý vấn đề này nhưng với việc bổ sung thêm 1cáp nhỏ và định tuyến tĩnh, thì có thể tạo ra đường dự phòngtới 1 trụ OpenVPN khác và tạo ra hệ thống chuyển đổi dự phòng đơn giản không quá nhiều rắc rối.
Trung tâm quản lý
Khi chúng ta bắt đầu nói về việc triển khai thực sự lớn, quản lý tập trung sẽ trở thành một tính năng nhiều quản trị viên yêu cầu. Một giao diện điều khiển cho phép giám sát và cấu hình các thiết bị của nhiều VPN từ một vị trí trung tâm là một tính năng được tìm thấy trong một số các sản phẩm thương mại lớn như các sản phẩm cao cấp từ Cisco, Checkpoint, hoặc NetScreen. OpenVPN không cung cấp bất kỳ khả năng như vậy, nhưng hi vọng trong tương lại một số lập trình viên đóng góp cho một dự án mã nguồn mở bằng cách thiết kế tính năng này.
4.4.4. Bảo mật OpenVPN
OpenVPN được xây dựng trên một nền tảng an ninh vững chắc. SSL / TLS, là hệ thống được sử dụng rộng rãi nhất trong ngành công nghiệp. Nó đã tồn tại rất lâu mà không hiển thị bất kỳ điểm yếu nào. Thực hiện đúng, SSL /TLS bảo mật tốt nhất hiện có. Người sáng tạo ra OpenVPN, James Yonan, đã thực hiện một công việc tuyệt vời SSL /TLS. Nhưng ông đã không dừng lại ở đó. OpenVPN cũng có thêm tính năng làm tăng khả năng của mình để đối phó với lỗ hổng chưa biết có thể xuất hiện OpenVPN hoặc lõi SSL /TLS.
Sinh khoá
Chỉ cần một lưu ý về cách sử dụng khóa. Khi SSL / TLS bắt tay chứng thực cả hai đầu, nó sẽ tạo ra bốn khoá khác nhau, một khoá HMAC gửi , một khóa HMAC nhận, khoá mã hóa / giải mã gửi, và một khóa mã hóa / giải mã nhận. Không bao giờ nên sử dụng cùng 1 khoá cho nhiều hơn một dịch vụ bảo mật cơ bản (không đối xứng, đối xứng, băm, hoặc chữ ký kỹ thuật số) và OpenVPN đúng với trường hợp này.
Khoá dẫn xuất/trao đổi
Để bảo vệ dữ liệu, ta cần phải mã hóa nó với mã hóa đối xứng. Để làm được điều này, cần phải có khóa đối xứng trên mỗi đầu của kết nối. Điều này đòi hỏi một giao thức dẫn xuất/trao đổi khóa. IPSec sử dụng mộ thệ thống gọi là Internet KeyExchange (IKE) trao đổi các khoá. Hệ thống này bao gồm sáu meseage qua lại mà cuối cùng dẫn đếnviệc chứng thực của mỗi hệ thống và trao đổi khoá đối xứng. OpenVPN sử dụng chuẩn bắt tay RSA/DHE, có chứng thực của khách hàng để thực hiện cùng một mục tiêu. Dưới đâylà các bước bắt tay.
Hình4.2: Quá trình bắt tay
Thuật toán mã hóa đối xứng
Đến thời điểm này, ta nhận thấy ren việc bảo vệ của IPSec và SSL/TLS là khá giống nhau. Nó phụ thuộc vào các thuật toán mật mã mã hóa.Trong việc lựa chọn và hầu hết các triển khai IPSec cho phép lựa chọn một loạt các thuật toán. OpenVPN chắc chắn cho chúng ta một danh sách tốt để lựa chọn, nhưng nó mặc địnhcung cấp một lựa rất tốt bằng cách sử dụng bf-cbc và sha1.
Khi lựa chọn một thuật toán mã hóa đối xứng, OpenVPN tránh sử dụng bất kỳ chương trình bao gồm DES. DES chỉ sử dụng một khóa56-bit không còn được coi là an toàn. Và tránh sử dụng cả các thuật toán 3DES, với chiều dài khóa hiệu quả của 112bit, vẫn được coi là an toàn,nhưng nó đòi hỏi xử lý lâu vì nó chỉ chạy các thuật toán DES ba lần. Có nhiều thuật toán có được mạnh mẽ hơn và nhanh hơn và bạn không cần phải dựa vào 3DES nữa.
Chúng ta có thể sử dụng một chế độ mã hóa liên tục nhằm thay đổi thông tin mật(cipher text) của chúng ta một cách ngẫu nhiên. Nếu một kẻ tấn công có thể lấy được đủ thông tin mật được mã hóa với một khóa thông thường, họ có thể có thể làm suy yếu cái khóa để gây ra tổn hại. Điều này là rất khó làm và thường đòi hỏi một số lượng lớn thông tin mât, tuy nhiên nếu sử dụng một đường hầm giữa 2 mạng trong một thời gian dài, bạn có thể tạo ra rất nhiều thông tin được mã hóa trong khoảng thời gian đó. Khi không sử dụng Pre – Share key, OpenVPN sẽ mặc định thay đổi các Key của nó theo từng giờ để tăng thêm một chút mức độ bảo vệ, chúng ta có thể sử dụng chế độ Cơ yếu Chaining Block (CBC). Cơ chế này, ngõ ra thuật toán mã hoá của khối thứ nhật được cộng( XOR) với khối thông tin gốc thứ hai tước khi mã hoá và liên tiếp như vậy cho đến khối cuối cùng. Đối với khối đầu tiên, do không có khối nào mã hoá trước nó , người ta phải tạo một khối thông tin đặc biệt, thương là ngẫu nhiên , có kích thước đúng bằng kích thước khối của thuật toán mã. Khối thông tin này được gọi là vector khỏi tạo, viết tắt là IV(Initial Vector).
OpenVPN mặc định sử dụng bf-cbc cho mã hoá đối xứng của nó. Điều nàyđề cập đến Blowfish trong chế độ Cipher Block Chaining bằng cách sử dụng một khóa128-bit. Blowfish là một thuật toán rất mạnh không có điểm yếu tính tới bây giờ .Với khoá 128-bit cung cấp một không gian rộng lớn để ngăn chặn các cuộc tấn công bằng cách dò khoá vì không có đủ thời gian để thực hiện. Blowfish không chỉ rất an toàn, mà thuật toán của nó cũng nhanh hơn.
Trên Linux,Ta có thể chạy OpenSSL kiểm tra tốc độ và để xem tốc độ tương đối của các thuật toán trên phần cứngcủa máy:
Spiritwrackroot#opensslspeed
Hình 4.3: Tốc độ tương đối của các thuật toán
HMAC/Hashing
Khi đã có khoá để tao đổi và đang sử dụng một thuật toán đối xứng để bảo đảm đường hầm, thì 2 sites có thể bắt đầu trao đổi dữ liệu. Có hai điều cần khi truyền dữ liệu. Trước tiên, đảm bảo rằng những gì bên gửi gửi là giống những gì nhận được ở đầu bên kia. Những kẻ tấn công không thể đọc được message khi họ vượt qua các mạng công cộng, nhưng vẫn có thể đi vào và ngẫu nhiên thay đổi dữ liệu. Những kẻ tấn công sẽ không biết những gì họ đã thay đổi, nhưng nó có thể có tác động tiêu cực khi dữ liệu đến phía bên kia. Bảo vệ và chống lại dữ liệu bị sai lệch hoặc giả mạo được gọi là toàn vẹn dữ liệu (data integrity). Thứ hai, đảm bảo chống các hành vi từ chối dịch vụ của 1 hoặc nhiều phía tham gia trao đổi thông tin (non-repudiation ) .
Để đảm bảo tính toàn vẹn dữ liệu, thì OpenVPN sử dụng thuật toán hash.Thay vì mã hoá toàn bộ thông tin và gửi đi thì ta xây dựng 1 bản tóm tắt , rùi hash 1 chiều bằng cách biến bản tóm tắt thành một chuỗi dài cố định(128bitMD5và160bit choSHA1) , sau đó mã hoá bản tóm tắt thông tin và đính kèm ở cuối thông tin rùi gửi đi .Khi đầu nhận nhận được thông tin và so sánh kết quả .Nếu chuỗi nhận được và chuỗi bên nhận sau khi hash không thay đổi thì dữ liệu được đảm bảo toàn vẹn.
Nhưng kẻ tấn công chỉ làm 1 việc đơn giản là loại bỏ các chuỗi băm, thay đổi các thông tin , và thực hiện một chuỗi băm mới. Để tránh trường hợp này thì Open sửa dụng thuật toán HMAC.Trước khi hash thông tin 1 chiều, thì sẽ đính kèm một khóa bí mật vào phía trước của nó. Khoá này sẽ nhận được hash cùng với thông tin. Khi thông tin đã nhận được ở đầu kia của đường hầm, người nhận sẽ mở message và chắc chắn rằng có khoá được kèm theo phía trước.Khoá HMAC này, là một trong những khóa để trao đổi ở trên trong bước dẫn xuất/ Exchange. Nếu kẻ tấn công thay đổi các thông điệp và gắn một băm mới, họ sẽ không thể tạo được khoá và do đó người nhận sẽ biết được thông báo không đến từ bên gửi. Một tác dụng nữa của việc sử dụng một HMAC là chúng ta có một cách để ngăn chặn cuộc tấn công man-in-the-middle.
OpenVPN lựa chọn theo mặc định duy nhất thuật toán băm mà chúng ta nên sử dụng, SHA-1. MD5 được sử dụng rộng rãi, nhưng đã bắt đầu crack. Chiều dài của thuật toán hash bằng nữa kích thước không gian khoá . vì vậy khoá MD5128-bit thực sự chỉ có 2^64 lần thử nên có thể tấn công bằng phương pháp thử tuần tự . Nên MD5 hiện nay được xem như là 1 hàm băm không an toàn .Vì thế OpenVPN sử dụngthuật toánbămSHA-1. SHA-1 sử dụng một khóa160-bit thì cần có khoảng 2^80 khôi thông tin được xử lý ,khoảng65.000 lần thử nên khó khăn hơn hơn MD5. SHA-1 đã không bi suy yếu bởi các cuộc tấn công toán học. Biểu đồ tốc độ ở trên cho thấy 23M /s cho MD5 và 20M/s với SHA-1. OpenVPN triển khai hầu hết với tốc dộ 20M/s
4.4.5. Nhược điểm của OPenVPN
- Không tương thích với IPSec.
- OpenVPN không được định nghĩa bởi bất kỳ RFC nào.
- Còn ít người biết cách sử dụng OpenVPN.
- Không có giao diện đồ họa làm việc nào dành cho việc quản trị.
4.5. SO SÁNH OPENVPN VỚI IPSEC VPN
Sau đây là bảng so sánh. Dấu „+‟ chỉ điểm mạnh, dấu „-„ chỉ điểm yếu.
IPsec VPN | OpenVPN |
+ Chuẩn công nghệ VPN | -Có ít người biết , không tương thích với IPsec.Có thể sớm đạt chuẩn |
+Nền tảng phần cứng ( thiết bị ) | -Chỉ trên máy tính, nhưng trên tất cả hệ điều hành , ngoại trừ các thiết bị mà Unix được nhún và và chạy ứng dụng như OpenWrt hay tương tự |
+ Công nghệ đã nổi tiếng | -Công nghệ mới, vẫn còn đang phát triển |
+ Nhiều giao diện đồ hoạ cho ngừi quản trị | -Không có giao diện đồ hoạ chuyên nghiệp |
-Việc sửa đổi của ngăn xếp IP phức tạp | + Kỹ thuật đơn giản |
-Cần thiết sửa đổi nghiêm trọng trong nhận HDH | + Giao tiếp mạng và gói tin mạng được chuẩ hoá |
-Cần thiết phải có quyền quản trị | +OpenVPN có thể chạy trong không gian ngừi sử dụng |
-IPsec của các hãng khác nhau không tương thích | +Kỹ thuật mã hoá được chuẩn hoá |
-Kỹ thuật phức tap, cấu hình phức tạp | +Công nghệ modun cấu trúc tốt và dễ cấu hình |
-Khó học hỏi đối với ngừi mới | +Dể học, dể thao tác cho ngừơi mới |
-Cần thiết đặt vài cổng và giao thức trong tường lửa | +Chỉ cần 1 cổng trong tường lửa |
-Có vấn đề với địa chỉ động ở cả 2 phía | +DynDNS hoạt động hoàn hảo và kết nối lại nhanh hơn |
-Có vấn đề bảo mật với kỹ thuật IPsec | +SSL/TLS như lớp mã hoá chuẩn công nghệ |
+Định hướng lưu lượng | |
+Tốc độ nhanh | |
+Tương thích với tường lừa và proxy | |
+Không có vấn đề với NAT | |
+Thích hợp cho người dùng lưu động |
Bảng 4.2: So sánh giữa OpenVPN và IPsec VPN