Hướng dẫn thiết lập mô hình site to site VPN trên hệ thống Cisco ASA
Phần 1
Trong bài viết dưới đây, chúng tôi sẽ trình bày 1 số bước cơ bản để thiết lập, cấu hình chế độ site to site VPN với hệ thống Cisco ASA. Hiện tại, những khái niệm và ứng dụng của VPN mang lại cho người sử dụng có rất nhiều, điển hình có thể kể đến là: site to site, remote access IPSec, client-less, SSL, DMVPN... và sẽ rất khó khăn để đề cập cụ thể đến 1 thành phần bất kỳ. Do vậy, chúng tôi sẽ cố gắng đề cập đến những thông tin và các bước cấu hình, thiệt lập cơ bản nhất về VPN, thiết lập site to site VPN từ CLI với miêu tả cụ thể cho từng bước. Bên cạnh đó, phương pháp thiết lập VPN qua ASDM sử dụng VPN wizard vô cùng đơn giản và dễ dàng. Đó cũng là lý do tại sao chúng ta tập trung chủ yếu vào phần CLI. Trước khi bắt đầu, chúng ta hãy tham khảo qua một số thông tin có liên quan đến VPN. Là cụm từ viết tắt của Virtual Private Network, về cơ bản đây là kết nối từ 1 vị trí này tới vị trí khác để hình thành mô hình mạng LAN với những dịch vụ hỗ trợ như email, intranet... chỉ được truy cập khi người dùng khai báo đúng các thông tin đã được thiết lập sẵn. Và nhìn chung, có 2 loại mô hình VPN phổ biến hiện nay:
- Remote access: hay còn gọi là Remote access VPN hoặc easy VPN, dành cho những người dùng có nhu cầu đơn giản. Cách thức làm việc chung là chỉ cần cài đặt phần mềm client trên máy tính cá nhân, PC hoặc laptop, qua đó người sử dụng sẽ thiết lập kết nối tới máy tính tại văn phòng làm việc, đăng nhập bằng thông số username và password đã được gán quyền trước đó. Sau khi tunnel đã được thay thế, người dùng có thể làm việc và truy cập tới server trực tiếp như khi ở văn phòng, giao thức kết nối tunnel này được xây dựng dựa trên IPSec hoặc SSL.
- Site to site: hệ thống này thường được sử dụng giữa các chi nhánh của 1 tổ chức hoặc mạng lưới công ty nào đó. Tại đây, bạn phải sử dụng 1 thiết bị hỗ trợ VPN như Cisco ASA hoặc router của Cisco. Người sử dụng có thể cấu hình cả 2 thiết bị để thiết lập hệ thống tunnel lẫn nhau, và toàn bộ mô hình của công ty hoặc văn phòng sẽ sử dụng qua tunnel tại cùng 1 thời điểm (trong khi các kết nối truy cập VPN từ xa chỉ có thể được thực hiện trên PC đã được thiết lập tunnel sẵn) để truy cập tới các nguồn tài nguyên trong cùng 1 hệ thống.
Quá trình thiết lập tunnel thông thường được chia làm 2 giai đoạn. Giả sử, trong bài thử nghiệm của chúng ta sẽ áp dụng dựa trên tình huống sau: trong 1 công ty có 100 người sử dụng, hệ thống server với mô hình mạng LAN để dùng cho những dịch vụ như email, intranet, và sử dụng thiết bị Cisco ASA 5520 làm Internet gateway.
Địa chỉ của mạng LAN tại đây là 10.0.0.0/24, thông số gateway (ASA) có địa chỉ bên trong 10.0.0.254 và bên ngoài là 1.1.1.1. Hiện tại, công ty này đã mở thêm chi nhánh với 10 người sử dụng, văn phòng này có thêm 10 máy tính cá nhân và không trang thị thêm bất cứ server nào, có kết nối Internet và dùng ASA 5510 với vai trò của thiết bị bảo mật. Địa chỉ LAN của văn phòng này là 192.168.0.0/24, gateway (ASA) với địa chỉ IP bên trong là 192.168.0.254, bên ngoài là 1.1.1.2.
Mô hình tổng quan của hệ thống mạng
Và yêu cầu từ phía ban lãnh đạo là muốn các máy tính tại chi nhánh kết nối được tới trụ sở văn phòng qua mô hình site to site VPN. Bắt đầu:
Bây giờ là thời điểm chúng ta cần thực hiện 1 số thao tác thiết lập, cụ thể như sau:
- Các địa chỉ thường xuyên sử dụng được khởi tạo trong danh sách cho phép truy cập.
- Danh sách này sẽ được truy cập qua các traffic VPN từ giao thức NAT (NAT0).
- Cơ chế chuyển đổi thiết lập IPSec sẽ đảm nhận nhiệm vụ mã hóa IPSec.
- Hệ thống map chuyển đổi sẽ khởi tạo các tunnel thật sự dành cho IPSec.
- Chính sách isakmp khởi tạo các thiết lập cần thiết cho yêu cầu từ hệ thống ở bước 1.
- Các nhóm tunnel thiết lập thuộc tính dành cho tunnel.
Để đảm bảo hệ thống hoạt động ổn định và không gặp lỗi trong quá trình thiết lập, các bạn hãy cố gắng đáp ứng được những yêu cầu trên. Tiếp đó là việc kiểm tra giao thức NAT và các danh sách đã được đề cập. Interesting traffic:
1 điểm cần chú ý khi tạo tunnel VPN, các bạn cần phải “thông báo” với ASA về những traffic được gửi qua tunnel này – được gọi chung là interesting traffic, chúng ta có thể tạo được phần này bằng cách dùng access – list. Trên 1 hệ thống site to site VPN thì người dùng phải thiết lập được cả 2 phía của tunnel, đồng thời chúng ta cũng phải cẩn thận khi tạo access – list tương ứng. Cụ thể, trên phần site đầu tiên, ASA sẽ nhận được yêu cầu từ phía hệ thống rằng tunnel traffic sẽ được chuyển từ trụ sở văn phòng chính tới chi nhánh. Còn với site còn lại, ASA sẽ đảm nhận nhiệm vụ ngược lại, đó là chuyển tunnel traffic từ chi nhánh về trụ sở chính.
Cấu trúc lệnh cơ bản như sau: access-list VPN_cryptomap extended permit ip 10.0.0.0 255.255.255.0 192.168.0.0 255.255.255.0
Chúng ta có thể thấy rằng danh sách access – list này được tạo trên trụ sở, văn phòng chính, và có nhiệm vụ thông báo với ASA rằng các luồng traffic từ địa chỉ 10.0.0.0 tới 192.168.0.0 sẽ được cho vào tunnel. Còn lại toàn bộ các traffic khác sẽ không được xếp vào danh sách này, và tiếp tục tiến trình bình thường bằng cách đi thẳng qua ASA. Tiếp theo là phần access – list được sử dụng tại chi nhánh: access-list VPN_cryptomap extended permit ip 192.168.0.0 255.255.255.0 10.0.0.0 255.255.255.0
Các bạn cần lưu ý 1 lần nữa rằng cách thức di chuyển và lựa chọn traffic được đảo ngược với những phần traffic đặc biệt, được truyền tải từ văn phòng chi nhánh tới trụ sở chính trong trường hợp này. Trên đây chỉ là một phần của khái niệm cơ bản về interesting traffic, bản thân hệ thống ASA sẽ lựa chọn những traffic dựa trên tùy chọn của người dùng và cho phép hoạt động như bình thường. Bên cạnh đó, chúng ta cũng sẽ phải khởi tạo những thao tác, hành động tương ứng trong khi thiết lập cơ chế map chuyển đổi. NAT0:
Kể từ khi kết nối trực tiếp hệ thống mạng tại trụ sở chính tới văn phòng chi nhánh, thì phần lớn chúng ta không cần phải thực hiện quá trình NAT toàn bộ lưu lượng traffic giữa các địa điểm trên. Nếu muốn thiết lập một số mô hình NAT để kết nối Internet thì chúng ta phải bỏ qua những traffic cần đi qua tunnel khỏi bị NAT. Để thực hiện bước này, chúng ta phải sử dụng access – list lần nữa: access-list Inside_nat0_outbound extended permit ip 10.0.0.0 255.255.255.0 192.168.0.0 255.255.255.0
Cũng tương tự như những phần interesting traffic đã được lựa chọn tại thời điểm này. Đồng thời, chúng ta cũng sẽ phải thông báo với ASA những gì cần làm với traffic được lưu thông qua đây. Trong trường hợp này thì các bạn sẽ phải tạo 1 mệnh đề mới để làm quá trình NAT0 – nghĩa là không thực hiện NAT tại bước này: nat (Inside) 0 access-list Inside_nat0_outbound
Lưu ý rằng tại đây chúng ta sử dụng mệnh đề NAT như bình thường để kết nối tới phần giao diện điều khiển bên ngoài. Sau đó, cung cấp 1 số bất kỳ để khởi tạo và định nghĩa từng phần khác nhau của tunnel, trong trường hợp này chúng ta sử dụng số 0 để thông báo với ASA rằng hiện tại không cần phải sử dụng giao thức NAT. Tại đây, chúng ta cần phải tham khảo danh sách các access – list đã được khởi tạo trước đó.
Giờ đây, tất cả những traffic chúng ta lựa chọn trong danh sách access – list sẽ không phải trải qua quá trình NAT qua ASA nữa. Và áp dụng cú pháp lệnh tương tự như trên đối với hệ thống ở chi nhánh: access-list Inside_nat0_outbound extended permit ip 192.168.0.0 255.255.255.0 10.0.0.0 255.255.255.0
nat (Inside) 0 access-list Inside_nat0_outbound
Lưu ý rằng chúng ta cần thay đổi những sự lựa chọn để tham chiếu tới phần trụ sở chính.
Tiếp theo, đây là bước thực hiện có thể gây ra nhầm lẫn với hầu hết chúng ta, vì bộ biến đổi với chức năng chính là khởi tạo và định nghĩa cơ chế mã hóa của hệ thống, hoặc tại phần IPSec. Tại thời điểm này chúng ta vẫn chưa thực hiện việc mã hóa như phần trên đã định nghĩa. Cả 2 phía sẽ cùng tham khảo về cách thức mã hóa ở những tầng lớp khác nhau, và do vậy cần phải được thực hiện cùng nhau. Ví dụ, nếu bạn tiến hành mã hóa với key A thì cũng sẽ phải giải mã với cùng giá trị key đó, nếu không thì người sử dụng sẽ không thể đọc được nội dung của tin nhắn.
Tại bước này, người quản trị có thể tự khởi tạo bộ biến đổi chức năng, nhưng ASA hầu hết đã được tích hợp sẵn những thành phần này. Cú pháp cơ bản tại bước này như sau: crypto IPSec transform-set ESP-3DES-SHA esp-3des esp-sha-hmac
crypto IPSec transform-set ESP-3DES-MD5 esp-3des esp-md5-hmac
crypto IPSec transform-set ESP-AES-256-MD5 esp-aes-256 esp-md5-hmac
crypto IPSec transform-set ESP-AES-256-SHA esp-aes-256 esp-sha-hmac
Khi lần đầu tiên nhìn vào phần mã này, thì có thể các bạn sẽ thấy thừa và không cần thiết, nhưng 1 điểm cần lưu ý rằng phần IPSec của cơ chế chuyển đổi mà đã được khởi tạo bằng tên.
Phần 2
Crypto map:
Bước tiếp theo là thời điểm chúng ta tiếp tục khởi tạo những phần cần thiết của quá trình để đưa tunnel vào hoạt động, nhóm toàn bộ các khối chức năng đã tạo ở bước trên lại cùng nhau – đó là Crypto map.
Trước tiên là phần thiết lập mà chúng ta sẽ sử dụng trên site chính, và sau đó là giải thích từng phần chức năng riêng biệt: crypto map VPN_map 10 match address VPN_cryptomap
crypto map VPN_map 10 set peer 1.1.1.2
crypto map VPN_map 10 set transform-set ESP-AES-256-SHA
Cú pháp crypto map được sử dụng trước tiên, và tiếp theo là phần tên, tiếp tục sau đó là số thiết lập. Lý do xuất hiện của những con số này là vì chúng ta chỉ có thể sử dụng crypto map trên mỗi phần giao diện. Nhưng đây sẽ là vấn đề trở ngại nếu người sử dụng có 2 văn phòng chi nhánh nhưng lại chỉ có 1 phần giao diện điều khiển.
Nhưng bên cạnh đó, Cisco đã giải quyết vấn đề này bằng cách sử dụng số Preference. Chúng ta có thể sử dụng cùng crypto map trên nhiều phần giao diện khác nhau, nhưng lại có thể dùng các số Preference khác nhau trên 1 tunnel. Cách này sẽ giúp chúng ta thiết lập và khởi tạo được nhiều tunnel khác nhau trên cùng 1 giao diện duy nhất.
Trên dòng lệnh đầu tiên, chúng ta sẽ thấy danh sách access - list đã được tạo ở bước trên, và đây cũng là bước traffic được đi qua tunnel. Sau đó là bước tạo peer – đây là phần còn lại của tunnel, và trong trường hợp này là địa chỉ IP WAN của chi nhánh văn phòng.
Tiếp theo, chúng ta sẽ thông bao với ASA về các cơ chế mã hóa sẽ được dùng tại tầng IPSec. Và khi đã có được crypto map sau khi khởi tạo, thì thành phần này vẫn chưa thực hiện bất cứ chức năng nào cho tới khi được ứng dụng vào phần giao diện. Tại đây, các bạn hãy đảm bảo rằng nó đã được áp dụng tới lớp giao diện gần nhất của tunnel, tại bài thử nghiệm này là phần outside: crypto map VPN_map interface outside
Còn với phần văn phòng chi nhánh thì chúng ta thực hiện tương tự như vậy, chỉ cần thay đổi lại thông số địa chỉ IP WAN: crypto map VPN_map 10 match address VPN_cryptomap
crypto map VPN_map 10 set peer 1.1.1.1
crypto map VPN_map 10 set transform-set ESP-AES-256-SHA
crypto map VPN_map1 interface Policy isakmp:
Khi đến bước này, thời điểm tunnel thực sự của IPSec được xây dựng, và việc cần làm tiếp theo là xây dựng 1 lớp bảo mật để quản lý, giám sát các luồng dữ liệu traffic – đây chính là Isakmp hoặc phase 1.
Để tạo được lớp quản lý (security association) này, các bạn cần phải thiết lập được những policy cần thiết của ASA trước tiên: crypto isakmp policy 10 authentication pre-share
crypto isakmp policy 10 encryption aes-256
crypto isakmp policy 10 hash sha
crypto isakmp policy 10 group 5
crypto isakmp policy 10 lifetime 86400
Tại bước này, chúng ta phải bắt đầu mỗi dòng lệnh bằng crypto isakmp policy và sau đó là số Preference. Những số này càng nhỏ thì thành phần lớn hơn sẽ được cấu hình trước, và quá trình tạo tunnel sẽ diễn ra nhanh hơn.
Dòng mã đầu tiên trong quá trình này là sẽ chỉ ra phần cơ bản của cấu trúc xác nhận tunnel. Tại đây, chúng ta có thể sử dụng các key pre – share hoặc certificate, trong đó key pre – share là quá trình dễ thực hiện nhất, còn certificate thường được dùng trong những cơ sở, doanh nghiệp với phạm vi hoạt động lớn.
Tiếp theo là việc định nghĩa cơ chế mã hóa và xác nhận thông tin, có vẻ khá giống với phần chuyển đổi bên trên, nhưng vẫn được sử dụng để mã hóa dữ liệu tại lớp IPSec. Cụ thể, tại đây nhiệm vụ chính của chúng ta là định nghĩa các thành phần mã hóa, vốn khởi tạo trước khi IPSec được thiết lập.
Khi chúng ta hoàn tất với việc thiết lập và kích hoạt chế độ hoạt động của isakmp, ASA sẽ chuyển sang phần xây dựng tunnel: crypto isakmp enable Outside Các nhóm tunnel:
Khi đến bước này, sau khi đã có đầy đủ phần bước 1 và 2 thiết lập, chúng ta đã có thể sử dụng tunnel – group để khởi tạo các thiết lập riêng biệt đối với tunnel, trong các tunnel của mô hình site to site thì chúng tôi khuyến cáo các bạn nên dùng địa chỉ IP của các peer làm group – name. Cú pháp lệnh của chúng ta tại bước này như sau: tunnel-group 1.1.1.2 type ipsec-l2l
tunnel-group 1.1.1.2 IPSec-attributes
pre-shared-key testkey
Cụ thể, câu lệnh đầu tiên có nhiệm vụ thông báo với ASA rằng chúng ta đang tạo tunnel IPSec. Câu lệnh thứ 2 được dùng để tham chiếu tới các thành phần đã được khởi tạo trước đó: key pre – share, chúng ta sẽ thiết lập chúng tại đây và đề cập lại trong phần policy của crypto isakmp, và 1 điểm nữa cần lưu ý là phải tạo trên cả 2 mô hình ASA. Tổng quát:
Khi hoàn tất những bước trên là chúng ta đã thành công trong việc tạo tunnel site to site. Sau đó, tiến hành thử nghiệm trên những máy client bằng cách sử dụng lệnh ping, điều khiển từ xa hoặc truy cập website. Có thể chúng ta sẽ thất bại trong những lần đầu tiên thử nghiệm, nhưng các bạn đừng lo lắng. Vì nhưng gói tín hiệu đầu tiên được gửi tới ASA sẽ đảm nhận nhiệm vụ khởi tạo tunnel, và quá trình này cần 1 khoảng thời gian để hoàn tất. Hãy thử lại, và chúng ta sẽ đạt kết quả khả quan hơn khi “nhìn thấy” tất cả các máy tính, máy in, server và các thiết bị khác trên cả 2 phía của tunnel.
Khi gặp bất cứ vấn đề nào, các bạn có thể sử dụng lệnh sau: show crypto isakmp sa
show crypto IPSec sa
Những cú pháp trên sẽ hiển thị kết quả tìm được nếu tunnel tại các bước trên phản hồi tín hiệu. Chúc các bạn thành công!