Giao thức SSH, viết tắt của Secure Shell, là một giao thức mạng được sử dụng để thiết lập kết nối bảo mật giữa một máy chủ và một máy khách, trong môi trường mạng không an toàn. Được thiết kế để cung cấp các dịch vụ mạng an toàn qua một kênh bảo mật, SSH giúp ngăn chặn các vấn đề như đánh cắp thông tin, tấn công MITM (Man-in-the-Middle), và nhiều loại tấn công mạng khác.
Giao thức này sử dụng kiểm soát truy cập thông qua quá trình xác thực, thường là một cặp khóa công khai và khóa riêng tư. Nó cung cấp cơ chế mã hóa dữ liệu để bảo vệ thông tin được truyền qua mạng khỏi việc bị đánh cắp hoặc thay đổi.
Ở tầng 7 trong mô hình OSI, SSH không chỉ cung cấp môi trường bảo mật cho việc truyền dữ liệu mà còn cho quá trình đăng nhập và thực hiện các lệnh từ xa trên máy chủ. Điều này giúp bảo vệ thông tin quan trọng khỏi bị lộ ra ngoại tuyến và đảm bảo tính toàn vẹn của các dữ liệu được truyền qua mạng.
Mục đích giao thức SSH
Trong quá trình truyền tải thông tin qua mạng, nếu dữ liệu không được mã hóa bởi SSH, các hacker có thể đọc thông tin, theo dõi và thay đổi thông tin. Để việc truyền tải dữ liệu qua mạng được an toàn, các giao thức mã hóa và bảo mật như SSH ra đời để thực hiện các mục đích sau:
- Mã hóa dữ liệu để tránh bị đánh cắp thông tin.
- Sử dụng cơ chế xác thực để chặn truy cập trái phép.
- Ngăn chặn các cuộc tấn công MITM.
- Giảm thiểu các lỗ hổng để tăng an ninh cho mạng.
Giao thức SSH hoạt động thế nào?
Giao thức SSH hoạt động theo mô hình Client – Server. Nghĩa là kết nối cần phải được thiết lập giữa máy chủ SSH và máy khách SSH. Quá trình hoạt động của SSH như sau:
- Máy khách bắt đầu liên kết bằng gửi yêu cầu tới máy chủ.
- Máy chủ gửi yêu cầu thông tin từ máy khách.
- Quá trình xác thực được thực hiện, máy khách có thể sử dụng thông tin tài khoản (gồm User và Password) hoặc sử dụng cặp khóa công khai và khóa riêng để xác thực.
- Nếu xác thực thành công, máy chủ và máy khách tạo ra một kênh truyền tải dữ liệu an toàn. Kênh này sẽ được giữ cho đến khi việc truyền tải dữ liệu hoàn thành.
SSH sử dụng thuật toán mã hóa để biến đổi dữ liệu ban đầu thành một dạng không đọc được nếu không có khóa giải mã. Có nhiều thuật toán mã hóa khả dụng trong SSH như AES (Advanced Encryption Standard), 3DES (Triple DES), và Blowfish.
Trước khi bắt đầu một phiên làm việc, máy chủ và máy khách thương thoả thuận về thuật toán mã hóa và tạo khóa chia sẻ. Có 3 kỹ thuật được sử dụng gồm:
- Mã hóa đối xứng (Symmetrical encryption)
- Mã hóa bất đối xứng (Asymmetrical encryption)
- Mã hóa băm (Hashing)
1. Mã hóa đối xứng
Mã hóa đối xứng sử dụng một khóa chia sẻ duy nhất giữa bên gửi và bên nhận để mã hóa và giải mã thông điệp. Cả hai đều sử dụng cùng một khóa. Kỹ thuật này giúp truyền dữ liệu nhanh và hiệu quả với việc mã hóa và giải mã dữ liệu lớn. Tuy nhiên, nếu có nhiều bên tham gia thì việc quản lý và chia sẻ khóa an toàn khá khó khăn.
2. Mã hóa bất đối xứng
Mã hóa bất đối xứng sử dụng cặp khóa, gồm khóa công khai và khóa riêng tư. Khóa công khai được chia sẻ công khai, trong khi khóa riêng tư được giữ bí mật. Dữ liệu được mã hóa bằng khóa công khai và chỉ có thể được giải mã bằng khóa riêng tư và ngược lại.
Ưu điểm của phương pháp này là giải quyết được vấn đề chia sẻ khóa trong kỹ thuật mã hóa đối xứng, hơn nữa dữ liệu cũng an toàn hơn vì không cần chia sẻ khóa riêng tư. Tuy nhiên, hiệu quả mã hóa và giải mã thấp hơn so với kỹ thuật mã hóa đối xứng, nhất là với dữ liệu lớn.
3. Mã hóa Băm
Mã hóa băm sử dụng hàm băm để chuyển đổi dữ liệu thành một giá trị băm cố định (hash value). Mỗi đầu vào khác nhau sẽ tạo ra một giá trị băm duy nhất. Kỹ thuật này cho phép truyền tải dữ liệu nhanh chóng, rất hiệu quả với việc tìm kiếm và so sánh; dữ liệu cũng không thể giải ngược để lấy giá trị ban đầu. Tuy nhiên, nhược điểm của kỹ thuật này là cùng giá trị băm có thể tạo ra từ 2 dữ liệu khác nhau và không thể giải mã để khôi phục dữ liệu ban đầu.
SSH ngăn chặn các cuộc tấn công như thế nào?
Các cuộc tấn công MITM thường xảy ra trong hệ thống mạng nhằm để nghe lén thông tin quan trọng của người dùng như tài khoản, mật khẩu ngân hàng hoặc sử dụng để sửa đổi thông tin truyền dữ liệu và mạo danh. Giao thức SSH mã hóa và ngăn chặn bằng cách:
- SSH sử dụng mã hóa để bảo vệ dữ liệu truyền tải.
- Việc sử dụng cặp khóa công khai và khóa riêng tư giúp xác minh danh tính của cả máy chủ và máy khách, ngăn chặn tấn công giả mạo.
- Mỗi gói tin được gửi qua SSH đi kèm với một mã xác minh (Message Authentication Code – MAC) để đảm bảo rằng nó không bị sửa đổi trên đường truyền.
- SSH yêu cầu xác nhận vân tay của máy chủ trước khi thiết lập kết nối, giúp ngăn chặn tấn công Man-in-the-Middle.
- SSH thường tự động tạo khóa mới cho mỗi phiên làm việc, giảm nguy cơ tấn công dựa trên thời gian và sử dụng lại khóa.
SSH dùng để làm gì?
Về cơ bản, giao thức SSH có thể sử dụng để truyền bất kỳ dữ liệu nào. Do đó, nó có rất nhiều mục đích. Tuy nhiên, các trường hợp phổ biến sử dụng SSH nhất gồm:
- Cho phép người dùng đăng nhập từ xa ở một máy tính vào một máy chủ.
- Cho phép các quản trị viên thực hiện cấu hình, quản lý, cài đặt và giám sát hệ thống từ xa.
- Truyền tải tệp dữ liệu an toàn giữa máy tính và máy chủ thông qua SCP hoặc SFTP.
- Truy cập các dịch vụ trên đám mây mà không làm lộ cổng máy cục bộ.
Mong rằng qua bài viết này, bạn đã hiểu rõ ràng về giao thức SSH và cách thức hoạt động của nó!
Thông Tin Về Tác Giả
Nguyễn Thành Hợp là một chuyên gia về lĩnh vực thiết bị mạng, viễn thông gần 10 năm kinh nghiệm với nhiều chứng chỉ chất lượng như CCNA 200-301, CCNP, CCDA, CCDP,... do Cisco cung cấp. Sở thích cá nhân là khám phá những kiến thức mới mẻ về công nghệ nói chung và đặc biệt là liên quan đến lĩnh vực mạng!