Bài số 3: Làm việc với IKE
Sử dụng sơ đồ mạng trong bài thực hành số 1, giả sử có thêm nhiều các trạm mới muốn tham gia vào kết nối bảo mật như C0 và C2. Cần sử dụng tính năng IKE để tự động tạo và phân phối cơ sở dữ liệu SA giữa các trạm này. Lưu ý cần xóa các cơ sở dữ liệu cũ đã được thiết lập thủ công bằng lệnh setkey với tham số -c (console mode) và dùng các lệnh flush & spdflush:
Bước 1: Thiệt lập cấu hình IPSec IKE trên các trạm.
Trên mỗi trạm C0, C1, C2, thực hiện các công việc sau.
Tạo file chưa khóa chia sẽ giữa các trạm. Khác với các khóa dùng để mã hóa hay giải mã, khóa chia sẻ này chỉ nhằm mục đích xác thực giữa các trạm khi IKE thiết lập liên kết để trao đổi thông tin. Nó hoạt động như một lệnh login với password là khóa được cung cấp. Do chế độ thiết lập kết nối IKE đơn giản như vậy, giá trị các khóa chia sẽ này phải ở chế độ bảo mật cao. Người sử dụng thông thường không có quyền đọc.
Tạo file cấu hình /etc/raccoon.conf. Các từ khóa anonymous được sử dụng để khai báo các kết nối mà có thể áp dụng bất cứ máy nào yêu cầu. Có thể thay anonymous bằng các thông tin địa chỉ IP của trạm remote.
[root@C0 ~]# cat /etc/racoon.conf path pre_shared_key "/etc/psk.txt"; remote anonymous { exchange_mode main; proposal { encryption_algorithm 3des; hash_algorithm md5; authentication_method pre_shared_key; dh_group modp1024; } } sainfo anonymous { pfs_group modp768; encryption_algorithm 3des; authentication_algorithm hmac_md5; compression_algorithm deflate; }
Tạo file cấu hình /etc/setkey.conf. So sánh với file cấu hình tương ứng trong trường hợp tạo các SA bằng cách thủ công, phần khai báo SA được bỏ đi, chỉ giữ lại phần khai báo các SP. Để cho đơn giản, duy nhất giao thức ESP được sử dụng để bảo vệ các kết nối in và out giữa các máy C0, C1, C2.
[root@C0 ~]# cat /etc/setkey.conf #!/usr/sbin/setkey -f # Flush the SAD and SPD flush; spdflush; # Security policies spdadd 192.168.0.7 192.168.2.7 any -P out ipsec esp/transport//require; spdadd 192.168.2.7 192.168.0.7 any -P in ipsec esp/transport//require; spdadd 192.168.0.7 192.168.1.7 any -P out ipsec esp/transport//require; spdadd 192.168.1.7 192.168.0.7 any -P in ipsec esp/transport//require;
Chạy setkey và kiểm tra thấy mỗi trạm đều có SP nhưng chưa có SA.
[root@C0 ~]# setkey -f /etc/setkey.conf [root@C0 ~]# setkey -D No SAD entries. [root@C0 ~]# setkey -PD 192.168.1.7[any] 192.168.0.7[any] 255 fwd prio def ipsec esp/transport//require created: Aug 2 14:22:38 2016 lastused: lifetime: 0(s) validtime: 0(s) spid=3266 seq=1 pid=4131 refcnt=1 192.168.1.7[any] 192.168.0.7[any] 255 in prio def ipsec esp/transport//require created: Aug 2 14:22:38 2016 lastused: lifetime: 0(s) validtime: 0(s) spid=3256 seq=2 pid=4131 refcnt=1 192.168.0.7[any] 192.168.1.7[any] 255 out prio def ipsec esp/transport//require created: Aug 2 14:22:38 2016 lastused: lifetime: 0(s) validtime: 0(s) spid=3249 seq=3 pid=4131 refcnt=1 192.168.2.7[any] 192.168.0.7[any] 255 fwd prio def ipsec esp/transport//require created: Aug 2 14:22:38 2016 lastused: lifetime: 0(s) validtime: 0(s) spid=3242 seq=4 pid=4131 refcnt=1 192.168.2.7[any] 192.168.0.7[any] 255 in prio def ipsec esp/transport//require created: Aug 2 14:22:38 2016 lastused: lifetime: 0(s) validtime: 0(s) spid=3232 seq=5 pid=4131 refcnt=1 192.168.0.7[any] 192.168.2.7[any] 255 out prio def ipsec esp/transport//require created: Aug 2 14:22:38 2016 lastused: lifetime: 0(s) validtime: 0(s) spid=3225 seq=0 pid=4131 refcnt=1
Chạy tiến trình racoon trên tất cả các trạm để thiết lập môi trường IKE.
Bước 2: Kiểm tra các dòng dữ liệu
Sử dụng ping để tạo dòng dữ liệu ICMP đi và về giữa C0 với C2, C0 với C1 hoặc C1 với C2. Lệnh ping chạy bình thường như trường hợp không có bảo mật hoặc giống như trong bài 1 (khai báo SA thủ công). Dùng công cụ Wireshark bắt gói tin giữa 2 trạm C0&C2, kết quả cũng giống như khi khai báo SA thủ công. Không có gói tin ICMP nào được gửi giữa 2 trạm. Thay vào đó là các gói tin ESP với phần dữ liệu bị mã hóa (chính là các gói tin ICMP).
Trong khi lệnh ping đang chạy, thực hiện setkey -D để xem cơ sở dữ liệu SA. Các SA phục vụ cho kết nối ping đã được tự động thiết lập. Có thể thấy những SA này có nhiều thông số hơn các SA được tạo theo cách thủ công như trong bài thực hành số 1.
[root@C0 ~]# setkey -D 192.168.0.7 192.168.2.7 esp mode=transport spi=130509956(0x07c76c84) reqid=0(0x00000000) E: 3des-cbc b3d9d9f7 b821a831 bc254844 769cdfc4 c17df1d2 14aae29d A: hmac-md5 8e912c80 42383b9f ff77c7d5 72fd27f0 seq=0x00000000 replay=4 flags=0x00000000 state=mature created: Aug 2 14:29:21 2016 current: Aug 2 14:29:30 2016 diff: 9(s) hard: 28800(s) soft: 23040(s) last: Aug 2 14:29:22 2016 hard: 0(s) soft: 0(s) current: 320(bytes) hard: 0(bytes) soft: 0(bytes) allocated: 5 hard: 0 soft: 0 sadb_seq=1 pid=4184 refcnt=0 192.168.2.7 192.168.0.7 esp mode=transport spi=139088032(0x084a50a0) reqid=0(0x00000000) E: 3des-cbc fb1100fc bcfd8f15 753b36b8 c6ca1154 deaf23e0 e044593f A: hmac-md5 82147976 e0ccc982 9fe74b48 6ef21fc3 seq=0x00000000 replay=4 flags=0x00000000 state=mature created: Aug 2 14:29:21 2016 current: Aug 2 14:29:30 2016 diff: 9(s) hard: 28800(s) soft: 23040(s) last: Aug 2 14:29:22 2016 hard: 0(s) soft: 0(s) current: 320(bytes) hard: 0(bytes) soft: 0(bytes) allocated: 5 hard: 0 soft: 0 sadb_seq=0 pid=4184 refcnt=0
Bước 3: Thiết lập cấu hình IKE trên các router để áp dụng chế độ tunnel
Một cách hoàn toàn tương tự như trong bước 1, IKE cũng có thể được thiết lập trên các router R1 và R2 để tự động tạo các SA trên hai router này. Dựa trên đó, các đường truyền dữ liệu giữa các trạm có thể được khải báo bảo vệ bằng cơ chế tunnel.
[root@R2 ~]# cat /etc/psk.txt 192.168.1.1 123 [root@R2 ~]# cat /etc/racoon.conf path pre_shared_key "/etc/psk.txt"; remote anonymous { exchange_mode main; proposal { encryption_algorithm 3des; hash_algorithm md5; authentication_method pre_shared_key; dh_group modp1024; } } sainfo anonymous { pfs_group modp768; encryption_algorithm 3des; authentication_algorithm hmac_md5; compression_algorithm deflate; } [root@R2 ~]# cat /etc/setkey.conf spdadd 192.168.0.0/24 192.168.2.0/24 any -P in ipsec esp/tunnel/192.168.1.1-192.168.1.2/require; spdadd 192.168.2.0/24 192.168.0.0/24 any -P out ipsec esp/tunnel/192.168.1.2-192.168.1.1/require; [root@R2 umip]# racoon -F -f /etc/racoon.conf Foreground mode. 2016-08-07 13:30:59: INFO: @(#)ipsec-tools 0.8.2 (http://ipsec-tools.sourceforge.net) 2016-08-07 13:30:59: INFO: @(#)This product linked OpenSSL 1.0.1e-fips 11 Feb 2013 (http://www.openssl.org/) 2016-08-07 13:30:59: INFO: Reading configuration from "/etc/racoon.conf" 2016-08-07 13:30:59: INFO: 192.168.1.2[500] used for NAT-T 2016-08-07 13:30:59: INFO: 192.168.1.2[500] used as isakmp port (fd=9) 2016-08-07 13:30:59: INFO: 192.168.1.2[4500] used for NAT-T 2016-08-07 13:30:59: INFO: 192.168.1.2[4500] used as isakmp port (fd=10) 2016-08-07 13:30:59: INFO: 192.168.2.1[500] used for NAT-T 2016-08-07 13:30:59: INFO: 192.168.2.1[500] used as isakmp port (fd=11) 2016-08-07 13:30:59: INFO: 192.168.2.1[4500] used for NAT-T 2016-08-07 13:30:59: INFO: 192.168.2.1[4500] used as isakmp port (fd=12)