Xin chào ! Nếu đây là lần đầu tiên bạn đến với diễn đàn, xin vui lòng danh ra một phút bấm vào đây để đăng kí và tham gia thảo luận cùng VnPro.

Announcement

Collapse
No announcement yet.

SSH là gì ? Cách hoạt động của SSH

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • SSH là gì ? Cách hoạt động của SSH

    SSH là gì ?

    SSH tên đầy đủ là Secure SHell là một giao thức mạng mang tính bảo mật, cung cấp cách thức truy cập từ xa vào một thiết bị khác một cách an toàn thông qua các cơ chế mã hóa. Bằng cách sử dụng một số kỹ thuật mã hóa, xác thực mỗi bên với nhau để đảm bảo dữ liệu trao đổi giữa các máy trong phiên làm việc được mã hóa và giải mã nhằm mục đích giữ vững tính toàn vẹn của dữ liệu và bảo vệ an ninh thông tin.

    Hoạt động của SSH

    Click image for larger version  Name:	ssh-la-gi-cach-hoat-dong-cua-ssh.jpg Views:	0 Size:	54.8 KB ID:	424545

    SSH hoạt động theo mô hình client-server để xác thực hai bên và mã hóa dữ liệu giữa chúng. Client sẽ là thành phần tạo phiên kết nối SSH đến thành phần khác, còn Server sẽ cho phép Client mở phiên SSH kết nối vào chính mình.
    Để làm được điều này Server sẽ lắng nghe trên một port được chỉ định cho SSH, mặc định là port 22. Mỗi kết nối SSH bao gồm hai việc xác thực: xác thực SSH Server và xác thực SSH Client. Client chịu trách nhiệm khởi tạo quá trình bắt tay TCP với Server, thương lượng kết nối an toàn, xác thực Server và cung cấp thông tin đăng nhập để Server xác thực mình. Còn Server có trách nhiệm thương lượng kết nối an toàn, xác thực bên Client và sinh ra phiên làm việc nếu thông tin đăng nhập được chấp nhận. SSH Client và SSH Server thương lượng với nhau để xác định cơ chế xác thực sẽ sử dụng thậm chí có thể yêu cầu nhiều kiểu xác thực để thiết lập kết nối an toàn trong quá tình trao đổi dữ liệu giữa chúng.


    Đối với SSH version 1 là hoạt động của version 1 này có thể được chia làm 3 bước chính:
    1. Khởi tạo 1 kết nối SSH, chính là tạo ra 1 kênh giao tiếp bảo mật giữa Server và Client.
    2. Client xác thực Server. Sau khi Client xác định được định danh của Server, 1 kết nối bảo mật đối xứng được hình thành giữa 2 bên.
    3. Server xác thực Client dựa trên kết nối được thiết lập ở trên.
    Bước 1: Khi Client khởi tạo 1 kết nối TCP tới port 22 ở Server, sẽ có 2 thông tin được trao đổi:
    • Phiên bản Protocol mà Server hỗ trợ
    • Phiên bản của gói cài đặt SSH trên Server
    Nếu phiên bản Protocol của Server phù hợp với Client thì kết nối mới được tiếp tục. Ngay sau khi Client tiếp tục kết nối, Server và Client sẽ chuyển sang sử dụng bộ giao thức Binary Packet Protocol dài 32 bit.

    Bước 2: Server sẽ gửi các thông tin quan trọng tới Client, đây là những thông tin nắm vai trò chính trong session hiện tại:
    • Server cho Client biết định danh của mình bằng RSA Public Key trên Server. Mọi Client kết nối tới Server đều nhận được RSA Public Key giống nhau.
    • Server Key. Server Key này được tái tạo theo mỗi khoảng thời gian nhất định.
    • 1 chuỗi 8 bytes ngẫu nhiên được gọi là checkbytes. Sau này Client sẽ sử dụng chuỗi này để hồi đáp lại cho Server.
    • Cuối cùng, Server cấp cho Client biết toàn bộ các phương thức xác thực, mã hóa mà Server hỗ trợ.
    Dựa vào danh sách các phương thức mã hóa mà Server hỗ trợ, Client tạo ra 1 Symmetric Key ngẫu nhiên và gửi cho Server. Key này sẽ được sử dụng để mã hóa và giải mã trong toàn bộ quá trình giao tiếp giữa 2 bên trong session hiện tại, đây còn được gọi là Session Key. Session Key sẽ được mã hóa kép, mã hóa đầu tiên dựa vào RSA Public Key và mã hóa thứ 2 dựa vào Server Key. Việc mã hóa kép đảm bảo cho dù RSA Public Key có bị lộ thì cũng không thể giải mã gói tin do còn 1 lớp mã hóa bằng Session Key được thay đổi theo thời gian.
    Cho đến lúc này Client vẫn chưa thể xác thực được Server, nó chỉ biết được định danh của Server dựa vào RSA Public Key. Để xác thực Server thì Client phải chắc chắn Server có khả năng giải mã được Session Key. Bởi vậy sau khi gửi Session Key xong Client sẽ chờ hồi âm từ phía Server. Nếu nhận được thông báo xác nhận Client đã sẵn sàng để xác thực được Server thì quá trình này hoàn tất.

    Bước 3: Server xác thực Client: có nhiều phương pháp, trong đó có 2 phương pháp phổ biến nhất:
    1. Password Authentication: Đây là phương pháp phổ biến và đơn giản nhất. Server yêu cầu Client cung cấp user name và password. Server xác nhận password dựa trên cơ sở dữ liệu được lưu trên Server. Và dĩ nhiên, Client sẽ mã hóa Password bằng Session Key trước khi gửi cho Server kiểm chứng Password này.
    2. Public Key Authentication: Để sử dụng Public Key Authentication, Client cần phải tạo ra RSA Public Key và RSA Private Key, 2 Key này chỉ dùng để xác thực Client. Public Key này sẽ được gửi đến Server và được Server lưu lại. Bất kỳ dữ liệu nào được mã hóa bằng Public Key chỉ có thể giải mã bằng Private Key tương ứng.
    Lúc này, Client sẽ gửi cho Server 1 yêu cầu chứng thực Public Key và các chi tiết về thuận toán mã hóa nó sử dụng, Server lấy Public Key ứng với Client đang yêu cầu để mã hóa 1 chuỗi 256 bit ngẫu nhiên rồi gửi cho Client. Client nhận chuỗi này, sử dụng Private Key của mình để giải mã, sau khi giải mã, Client dùng kết quả kết hợp với Session Key ở bước 2 để tạo 1 đoạn hash rồi gửi trả lại cho Server. Sau khi Server nhận được đoạn hash, nó sẽ dùng chuỗi 256 bit ban đầu nó tạo ra kết hợp với Session Key để tạo ra 1 đoạn hash và đem so sánh với đoạn nó nhận được, Nếu 2 đoạn hash khớp nhau thì quá trình Server chứng thực Client thành công.

    Kể từ giờ kết nối SSH đã sẵn sàng, Client và Server cũng đã có thể gửi các gói tin cho nhau

    Tuy nhiên SSH version 1 rất hạn chế trong việc hỗ trợ sử dụng nhiều thuật toán để trao đổi Session Key, Message Authentication Code (MAC), thuật toán nén. Còn đối với SSH version 2 chẵng những cung cấp nhiều lựa chọn cho Client để sử dụng các thuật toán trao đổi Key mà còn có không gian để có thể thêm thuật toán tùy chỉnh riêng của người sử dụng.

    SSH version 2 là giao thức SSH mặc định được sử dụng ngày nay bởi một số tiến bộ trong version 2 so với version 1 như cải tiến các chuẩn mã hóa, Public Key Certification, Message Authentication Code tốt hơn và phân bố lại Session Key.

    Trong hoạt động của SSH version 1, sau khi chọn một thuật toán trong danh sách từ Server hỗ trợ, Client tạo 1 Session Key, mã hóa kép và gửi đến Server, mã hóa lần đầu bởi Public Key, mã hóa lần 2 bởi Server Key. Trong SSH version 2, không có khái niệm Server Key. Thay vào đó, Server cung cấp thêm danh sách các phương thức trao đổi khóa mà nó hỗ trợ, từ đó Client chọn một phương thức. SSH version 2 hoạt động dựa trên phương thức diffie-hellman-group1-sha1 và diffie-hellman-group14-sha1 để trao đổi khóa.

    Sự thay đổi thứ hai trong SSH version 2 là một khái niệm gọi là cơ quan cấp chứng chỉ (Certificate Authority - CA), CA sẽ ký vào Public Key được sử dụng trong giao tiếp giữa Client và Server.

    Message Authentication Code được sử dụng trong bất kỳ giao tiếp bảo mật nào để xác minh tính toàn vẹn của dữ liệu. Ngay cả phiên bản SSH 1 cũng sử dụng Message Authentication Code được gọi là CRC-32. CRC mặc dù kiểm tra sự thay đổi trong dữ liệu, nhưng không được coi là tốt nhất. SSH version 2 sử dụng Message Authentication Code nâng cao. Một số Message Authentication Code SSH version 2 hỗ trợ như: hmac-md5; hmac-sha1; Hmac-ripemd160
    Rekeying Session Key: Trong SSH version 1, chỉ có một Session Key được sử dụng cho toàn bộ session làm việc của SSH. Trong SSH version 2 có bổ sung tính năng Rekeying Session Key cho phép thay đổi Session Key mà không làm mất session làm việc hiện tại.


    SSH trong Cisco IOS

    SSH được sử dụng rất nhiều trong các ứng dụng và được cài đặt, tích hợp vào nhiều hệ thống, hệ điều hành, trên Cisco IOS cũng vậy, nhưng chỉ những phiên bản IOS có kí tự k9 với version từ 12.1 trở về sau thì mới hỗ trợ SSH, đối với IOS phiên bản 12.2 trở về trước thì chỉ hỗ trợ SSH version 1, còn những phiên bản từ 12.3 trở lên sẽ hỗ trợ cả SSH version 2. Có thể dùng lệnh “show version” để xem phiên bản IOS. Ví dụ 1 phiên bản IOS có hỗ trợ SSH: c2800nm-adventerprisek9-mz.124-24.T8.bin. SSH được tích hợp vào Cisco IOS cho phép thiết bị vừa có thể thực hiện SSH đến 1 SSH Server khác vừa có thể làm 1 SSH Server để 1 Client khác kết nối vào. Ngoài ra còn có thể sử dụng kết hợp chứng thực SSH Client thông qua cặp username/password cục bộ hoặc thông qua 1 RADIUS Server hoặc TACACS+ Server.

    Các bước để cấu hình SSH trên thiết bị Cisco sử dụng Password Authentication


    1. Cấu hình Host name
    R1(config)#hostname Router
    tạo cặp username/password cho thiết bị
    Router(config)#username cisco password vnpro
    Sau khi cấu hình host name, cần cấu hình lệnh
    Router(config)#aaa new-model
    để bật tính năng xác thực bằng cặp username và password trên thiết bị, hoặc có thể thay thế bằng lệnh
    Router(config)#line vty 0 4
    Router(config-line)#login local
    trong cổng vty

    2. Cấu hình domain name cho thiết bị
    Router(config)#ip domain-name vnpro.org
    Thiết bị sẽ dùng domain name này để tạo SSH Key

    3. Tạo SSH Key để sử dụng
    Router(config)#crypto key generate rsa
    sẽ tạo ra 1 Key, nhưng do không chỉ rõ chiều dài của Key nên lúc này thiết bị sẽ hỏi chiều dài của Key muốn tạo, mặc định Cisco IOS sẽ tạo ra 1 Key có chiều dài 512 bit, nếu muốn sử dụng SSH version 2 thì chiều dài của Key phải từ 768 bit trở lên, nếu cấu hình chỉ định rõ chiều dài của Key trong câu lệnh thì
    Router(config)#crypto key generate rsa general-keys modulus integer
    Lệnh “Router(config)#crypto key generate rsa”ngoài tạo ra 1 Key còn có tác dụng bật giao thức SSH trên thiết bị.
    Có thể kiểm tra Key bằng lệnh
    Router#show crypto key mypubkey rsa
    Ngoài ra còn có một số thông số đi kèm như thời gian kết thúc session SSH mặc định 120 giây, số lần nhập sai username/password 3 lần thì phải khởi tạo lại 1 session SSH mới. Có thể hiệu chỉnh các thông số này bằng lệnh
    Router(config)#ip ssh {[timeout seconds] | [authentication-retries integer]}
    Bật phương thức truy cập SSH trên cổng vty
    Mặc định phương thức truy cập ở cổng vty là Telnet, nếu muốn sử dụng SSH cần cấu hình phương thức truy cập ở cổng vty thành SSH
    Router(config-line)#transport input ssh
    Kiểm tra Version SSH hiện tại bằng lệnh
    Router#show ip ssh
    Kiểm tra trạng thái các session SSH hiện tại
    Router#show ssh
    Kiểm tra tiến trình hoạt động của SSH
    Debug ip ssh
    Email : vnpro@vnpro.org
    ---------------------------------------------------------------------------------------------------------------
    Trung Tâm Tin Học VnPro
    149/1D Ung Văn Khiêm P25 Q.Bình thạnh TPHCM
    Tel : (08) 35124257 (5 lines)
    Fax: (08) 35124314

    Home page: http://www.vnpro.vn
    Support Forum: http://www.vnpro.org
    - Chuyên đào tạo quản trị mạng và hạ tầng Internet
    - Phát hành sách chuyên môn
    - Tư vấn và tuyển dụng nhân sự IT
    - Tư vấn thiết kế và hỗ trợ kỹ thuật hệ thống mạng

    Network channel: http://www.dancisco.com
    Blog: http://www.vnpro.org/blog
Working...
X