Powered by Blogger.

IP SERVICES - BÀI SỐ 8: SSH TRÊN CISCO IOS

Trong bài viết trước, chúng ta đã cùng nhau trao đổi về các thao tác với hoạt động Telnet trên Cisco IOS. Trong bài viết tuần này, chúng ta sẽ cùng tiếp tục với kỹ thuật truy nhập từ xa SSH của Cisco IOS.

Như chúng ta đã biết, Telnet đem lại một cơ chế tiện lợi giúp chúng ta có thể cấu hình được thiết bị từ xa và thao tác cũng đơn giản, dễ sử dụng. Tuy nhiên, nhược điểm chính của Telnet là dữ liệu được trao đổi ở dạng clear text, điều này dẫn đến các thông tin trao đổi qua Telnet có thể bị đọc trộm bởi bên thứ 3.

Một giải pháp truy nhập từ xa có tính bảo mật cao thường được dùng để thay thế Telnet trên môi trường mạng không an toàn (ví dụ: Internet) là sử dụng giao thức SSH. SSH cung cấp một phương thức truy nhập từ xa để cấu hình thiết bị tương tự như Telnet nhưng thực hiện mã hóa toàn bộ dữ liệu trao đổi giữa SSH client và SSH server. SSH là một ứng dụng chạy trên nền TCP, sử dụng port 22.

Bài viết này cùng trao đổi cách thức cấu hình Router Cisco thành một SSH Server để có thể truy nhập từ xa đến Router bằng SSH.

Như thường lệ, chúng ta cùng tìm hiểu vấn đề cần khảo sát thông qua một bài lab ví dụ.
SƠ ĐỒ


Hình 1 – Sơ đồ bài lab ví dụ.
MÔ TẢ

· Trên sơ đồ hình 1, trước hết chúng ta cấu hình cơ bản các địa chỉ và chạy định tuyến để đảm bảo mọi địa chỉ IP trên sơ đồ thấy nhau. Khi các IP đều đã đi đến nhau được, chúng ta sẽ khảo sát việc telnet qua lại giữa các IP này.

· Người viết sử dụng các router Cisco dòng 2811với hệ điều hành là “c2800nm-adventerprisek9-mz.124-15.T1.bin” để thực hiện bài viết này.
THỰC HIỆN
BƯỚC 1: CẤU HÌNH CƠ BẢN

Trong bước này, ta đặt địa chỉ IP trên các router cũng như cấu hình định tuyến cơ bản để mọi địa chỉ thấy nhau.

Trên R1:


R1(config)#interface f0/1

R1(config-if)#no shutdown

R1(config-if)#ip address 192.168.12.1 255.255.255.0

R1(config-if)#exit

R1(config)#interface f0/0

R1(config-if)#no shutdown

R1(config-if)#ip address 192.168.1.1 255.255.255.0

R1(config-if)#exit

R1(config)#exit

Trên R2:


R2(config)#interface f0/1

R2(config-if)#no shutdown

R2(config-if)#ip address 192.168.12.2 255.255.255.0

R2(config-if)#exit

R2(config)#ip route 0.0.0.0 0.0.0.0 192.168.12.1

Tiếp theo, ta thực hiện đặt IP cho PC là 192.168.2.1/24 và chỉ default – gateway về router R1(hình 2):


Hình 2 – Cấu hình IP trên PC.

Đến đây, mọi địa chỉ đã được cấu hình trên các interface theo quy hoạch IP trên hình 1. Router R2 và PC đều đã chỉ default – gateway về R1 và vì vậy mọi địa chỉ trên các thiết bị này đã có thể đi đến nhau được.

Tiếp theo, ta kiểm tra rằng mọi địa chỉ trên sơ đồ đã thấy được nhau.

Từ PC ping kiểm tra đến R1 (hình 3):


Hình 3 – PC ping kiểm tra R1.

Từ PC ping kiểm tra đến R2 (hình 4):


Hình 4 – PC ping kiểm tra R2.

R1 ping đi được đến mọi địa chỉ khác trên sơ đồ:


R1#ping 192.168.1.2

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 192.168.1.2, timeout is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 8/30/52 ms

R1#ping 192.168.12.2

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 192.168.12.2, timeout is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 28/46/96 ms

R2 ping được mọi địa chỉ khác trên sơ đồ:


R2#ping 192.168.1.1

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 192.168.1.1, timeout is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 28/41/56 ms

R2#ping 192.168.1.2

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 192.168.1.2, timeout is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 64/91/112 ms

R2#ping 192.168.12.1

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 192.168.12.1, timeout is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 28/35/52 ms
BƯỚC 2: CẤU HÌNH SSH TRÊN ROUTER

Các bước cấu hình SSH Server trên Router:

1. Cấu hình đặt cho Router một Domain – name:


Router(config)#ip domain-name domain_name

2. Cấu hình tài khoản truy nhập bằng SSH:


Router(config)#username user_name password password 

3. Cấu hình Router phát sinh key cho việc mã hóa dữ liệu:


Router(config)#crypto key generate rsa

4. Thiết lập line vty hỗ trợ truy nhập bằng SSH:


Router(config)#line vty 0 4

Router(config-line)#transport input ssh

Router(config-line)#login local

Ta thực hiện cấu hình SSH Server trên R1:


R1(config)#ip domain-name example.com

R1(config)#username cisco password cisco

R1(config)#crypto key generate rsa

The name for the keys will be: R1.example.com

Choose the size of the key modulus in the range of 360 to 2048 for your

General Purpose Keys. Choosing a key modulus greater than 512 may take

a few minutes.



How many bits in the modulus [512]: 512 

% Generating 512 bit RSA keys, keys will be non-exportable...[OK]



*Feb 20 08:11:52.703: %SSH-5-ENABLED: SSH 1.99 has been enabled

R1(config)#line vty 0 4

R1(config-line)#transport input ssh

R1(config-line)#login local

R1(config-line)#exit

R1(config)# 

Ta đã thực hiện các tác vụ như sau trên R1:

· Đầu tiên, ta đặt domain – name cho R1 là “example.com”. Tên miền này chỉ định một miền quản lý mà Router R1 thuộc về. Trong trường hợp này tên miền sẽ được sử dụng trong tiến trình phát sinh key cho việc mã hóa ở bước 3.

· Tiếp theo, ta khai báo một tài khoản cho việc SSH vào R1, tài khoản này có username là “cisco” và password là “cisco”.

· Ở bước 3, ta cấu hình phát sinh key cho việc mã hóa dữ liệu SSH, các key này được phát sinh theo thuật toán RSA. Trong quá trình phát sinh key, Router sẽ hỏi chúng ta sử dụng key bao nhiêu bit “How many bits in the modulus [512]:”. Chúng ta có thể chọn giá trị mặc định (512) bằng cách gõ Enter, hoặc nhập vào một giá trị chúng ta chọn, giá trị này càng cao, hoạt động mã hóa càng an toàn.

· Cuối cùng, chúng ta vào cổng VTY chuyển cổng từ chế độ mặc định là Telnet sang chế độ cho phép truy nhập bằng SSH (lệnh “transport input ssh”). Hình thức xác thực truy nhập cũng được thay đổi từ chỉ cần khai báo password trên line sang yêu cầu phải khai báo đầy đủ username và password (lệnh “login local”).
BƯỚC 3: KIỂM TRA

Sau khi cấu hình xong, ta thử SSH vào R1 từ PC và R2:
SSH TỪ PC

Trên các hệ điều hành Window không tích hợp sẵn chương trình SSH Client nên ta phải sử dụng chương trình riêng để thực hiện SSH. Một chương trình đơn giản thường được sử dụng cho mục đích này là chương trình PuTTY. Ta có thể download miễn phí chương trình này từ trang http://www.putty.org/. PuTTY được chạy trực tiếp luôn mà không cần phải cài đặt trên Window.

Giao diện của chương trình PuTTY (hình 5):


Hình 5 – Giao diện chương trình PuTTY.

Trong ô Host Name (or IP address) (hình 5), ta nhập địa chỉ IP của thiết bị mà ta muốn SSH đến, trong bài lab này là địa chỉ của R1: 192.168.1.1. Sau khi nhập xong, chúng ta nhấn “Open” (hình 5), cửa sổ SSH mở ra (hình 6):


Hình 6 – Cửa sổ SSH.

Tại đây, chúng ta được yêu cầu nhập username (Login as:), tiếp theo là Password. Sau khi nhập đúng thông tin tài khoản, chúng ta có thể truy nhập vào Router và thực hiện cấu hình cho Router như bình thường.

Sau khi thực hiện xong các tác vụ cấu hình, chúng ta có thể đóng SSH bằng cách sử dụng lệnh “exit”
SSH TỪ R2

Cisco IOS có tích hợp sẵn SSH Client nên ta có thể từ một Router SSH sang một Router đã cấu hình SSH. Câu lệnh thực hiện SSH:


Router#ssh -l username remote_IP

Password: <- Nhập password SSH tại đây

Thực hiện trên R2:


R2#ssh -l cisco 192.168.12.1



Password: <- Nhập password SSH tại đây



R1>

Từ đây ta có thể thực hiện các tác vụ cấu hình trên R1 từ R2 thông quá SSH. Sau khi cấu hình xong, ta có thể sử dụng lệnh “exit” để giải phóng kết nối SSH và trở về R2 (ta có thể sử dụng tổ hợp phím “Ctrl – Shift – 6” + “X” để từ R1 trở về R2 mà vẫn giữ kết nối).
KIỂM TRA RẰNG DỮ LIỆU SSH ĐƯỢC MÃ HÓA KHI TRUYỀN 

Trong phần này, chúng ta sẽ cùng thử bắt gói trong các session Telnet và SSH để kiểm chứng rằng dữ liệu của SSH thì được mã hóa, còn của Telnet thì không. Việc bắt gói được thực hiện trên PC khi PC Telnet vào R1 và khi PC SSH vào R1. Phần mềm bắt gói được sử dụng là một phần mềm rất thông dụng có tên là Wireshark. Ta có thể download miễn phí phần mềm này từ địa chỉ http://www.wireshark.org/download.html và thực hiện cài đặt bình thường trên Window. Một lưu ý nhỏ: trong quá trình cài đặt, nếu máy tính của chúng ta chưa cài WinPcap thì hãy click chọn cài đặt module này khi giao diện cài đặt hỏi ý kiến của chúng ta về các tùy chọn cài đặt.

Giao diện của chương trình Wireshark (hình 7):


Hình 7 – Giao diện chương trình Wireshark.

Để kích hoạt bắt gói, chúng ta click vào biểu tượng “Capture Interfaces” ở góc trên bên trái màn hình (xem hình 7). Sau khi chọn biểu tượng này, cửa sổ sau đây hiện ra (hình 8):


Hình 8 – Wireshark: Capture Interfaces.

Ta chọn “Start” để bắt đầu bắt gói cho card mạng của PC (hình 8).

Tiếp theo, ta sửa lại cấu hình của Router R1 để cho phép các line vty của R1 vừa thực hiện được Telnet, vừa thực hiện được SSH:


R1(config)#line vty 0 4

R1(config-line)#transport input telnet ssh

R1(config-line)#exit

R1(config)#

Từ PC, chúng ta Telnet vào R1, thực hiện một vài thao tác cấu hình (hình 9):


Hình 9 – Cửa sổ telnet vào R1.

Bây giờ, chúng ta cùng quan sát kết quả bắt gói trên Wireshark, chúng ta chọn một gói Telnet bất kỳ trên màn hình thống kê của Wireshark, click vào dòng hiển thị để dòng hiển thị chuyển qua màu xanh (hình 10):


Hình 10 – Cửa sổ bắt gói của Wireshark.

Tiếp theo, trong phần Menu, ta chọn “Analyze -> Follow TCP Stream” (hình 11):


Hình 11 – Menu phân tích gói.

Kết quả bắt gói cho luồng dữ liệu Telnet hiện ra (hình 12):


Hình 12 – Kết quả bắt gói luồng dữ liệu Telnet.

Từ kết quả bắt gói, ta thấy rằng toàn bộ dữ liệu Telnet đều được phơi ra dưới dạng clear – text, kể cả các password! Điều này cho thấy mức độ bảo mật của Telnet rất kém.

Ta tiếp tục tiến hành bắt gói tương tự nhưng cho kết nối SSH từ PC lên Router R1:

Trước hết, ta đóng cửa sổ kết quả bắt gói của Wireshark lại (nhấn “Close”), tiếp theo ta mở lại việc bắt gói cho kết nối mới trên Wireshark bằng cách chọn lại biểu tượng góc trên bên trái màn hình (xem hình 7). Khi cửa sổ như hình 8 hiện ra, ta chọn “Stop” rồi “Start” lại việc bắt gói trên cổng mạng của PC. Một cửa sổ hiện ra hỏi chúng ta có lưu kết quả bắt gói lần trước lại không, chúng ta chọn “Continue without Saving” (hình 13):


Hình 13 – Có lưu lại kết quả hay không?

Sau khi chọn xong, ta nhấn “Clear” để tiến trình bắt gói bắt đầu lại (hình 14):


Hình 14 – Chọn “Clear” để bắt đầu lại tiến trình bắt gói.

Tiếp theo, từ PC, ta mở kết nối SSH lên R1 bằng cách sử dụng PuTTY như đã thực hiện ơ trên (hình 15):


Hình 15 – SSH vào R1.

Ta cũng thực hiện chọn một gói SSH bất kỳ trên cửa sổ Wireshark, chọn “Analyze -> Follow TCP Stream” như đã làm ở trên và quan sát kết quả bắt gói cho kết nối SSH (hình 16):


Hình 16 – Kết quả bắt gói SSH.

Từ kết quả bắt gói SSH ta thấy, toàn bộ dữ liệu SSH đã được mã hóa.

Cùng phục vụ chung một mục đích là giúp người dùng truy nhập từ xa nhưng SSH có tính bảo mật cao hơn hẳn Telnet do có cơ chế mã hóa toàn bộ dữ liệu trao đổi. Vì vậy, trong môi trường mạng doanh nghiệp ngày nay, SSH được khuyến nghị sử dụng cho việc truy nhập thiết bị từ xa, đặc biệt khi phải thực hiện truy nhập qua môi trường Internet – một môi trường có nhiều nguy cơ và không an toàn.

Cảm ơn các bạn!

Hẹn gặp lại các bạn trong các bài viết tiếp theo!


Nguồn : NTPS
    Blogger Comment
    Facebook Comment