SSH Secure Shell là một phương thức xác thực được sử dụng trong giao thức SSH để truyền tải dữ liệu qua mạng một cách an toàn và bảo mật.. Lớp Truyền Tải Transport Layer Lớp này chịu trá
Trang 1HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
KHOA CÔNG NGHỆ THÔNG TIN
TIỂU LUẬN MÔN AT&BM HTTT
Đề tài: Giao thức bảo mật SSH
Giảng viên: Thầy <Tên thầy>
Nhóm 1:
Tên thành viên (NT) Mã sinh viên Viết báo cáo, Làm Slide
Tên thành viên Mã sinh viên Thuyết trình
Tên thành viên Mã sinh viên Thuyết trình
Tên thành viên Mã sinh viên Thuyết trình
Hà Nội, 2024
Trang 2Mục lục
1.2 Lớp 6 - Trình Bày (Presentation Layer) 6
1.1 Mã hóa Bất đối xứng trong Khởi tạo Kết nối 9 1.2 Tạo và Sử dụng Khóa Phiên (Session Key) 10
1.4 Kết hợp mã hóa Đối xứng và Bất đối xứng 11
1 Tấn công dò mật khẩu (Brute-force attacks) 13
2 Tấn công trung gian (Man-in-the-Middle - MITM) 14
3 Tấn công dựa trên tệp cấu hình và khóa (File-based attacks) 16
Trang 3V SSH và tiêu chuẩn Zero Trust 17
2 Kiểm Soát Truy Cập Theo Chính Sách (Policy-Based Access Control) 18
3 Giám Sát và Đăng Nhập Mọi Hoạt Động (Monitoring and Logging) 18
4 Bảo Mật Dữ Liệu Trong Quá Trình Truyền Tải (Data Protection in Transit) 18
VI Tiêu chuẩn an toàn thông tin Việt Nam liên quan đến SSH 19
1 TCVN ISO/IEC 27001:2019 - Hệ thống Quản lý An toàn Thông tin 19
2 TCVN 11930:2017 - An toàn Công nghệ Thông tin: Các kỹ thuật kiểm soát và bảo
3 TCVN 8628:2010 - Công nghệ thông tin - Các kỹ thuật bảo mật - Tiêu chuẩn cho
Trang 4I Giới thiệu
1 SSH là gì?
SSH (Secure Shell) là một phương thức xác thực được sử dụng trong giao thức SSH để truyền tải dữ liệu qua mạng một cách an toàn và bảo mật Đây là một giao thức mã hóa, với cổng mặc định là 22, cho phép người dùng kết nối tới máy chủ mà không cần phải nhập mật khẩu mỗi lần truy cập SSH hoạt động dựa trên hai loại khóa:
Khóa công khai: Được công khai và không cần bảo vệ, dùng trong quá trình mã
hóa dữ liệu
Khóa riêng: Được lưu trữ trên máy tính cá nhân và cần được bảo vệ, dùng trong
việc giải mã
2 Sự ra đời của SSH
SSH, viết tắt của Secure Shell, là một giao thức cung cấp khả năng kết nối an toàn với một máy tính khác qua mạng không an toàn Được giới thiệu lần đầu vào năm
1995, SSH ra đời nhằm thay thế các phương thức truyền thống như Telnet, vốn chỉ chuyển dữ liệu dưới dạng văn bản thuần túy
Hãy tưởng tượng một quản trị viên hệ thống làm việc từ xa muốn quản lý máy chủ tại trung tâm dữ liệu của công ty Nếu không có SSH, họ sẽ phải lo ngại việc thông tin đăng nhập bị chặn, dẫn đến nguy cơ máy chủ bị tấn công bởi tin tặc Tuy nhiên, với SSH, quản trị viên có thể thiết lập một kết nối được mã hóa, bảo vệ toàn bộ dữ liệu truyền qua internet Nhờ đó, họ có thể đăng nhập bằng tên người dùng và khóa riêng, cho phép thực hiện các lệnh, truyền tệp, và cập nhật hệ thống một cách an toàn mà không lo ngại việc bị theo dõi Khả năng truy cập bảo mật này là rất cần thiết để bảo
vệ tính toàn vẹn của các thông tin quan trọng của công ty
3 Mục tiêu
Bài viết này đưa ra cái nhìn chi tiết về Secure Shell (SSH), làm rõ lý do vì sao SSH được xem là bảo mật, phân tích các phương pháp tấn công có thể xảy ra nhắm vào SSH, đánh giá mức độ phù hợp của SSH với các nguyên tắc Zero Trust, đồng thời xem xét các tiêu chuẩn an toàn thông tin hiện hành của Việt Nam có liên quan
Trang 5II Kiến trúc
1 Vị trí hoạt động
SSH hoạt động chủ yếu ở lớp ứng dụng của mô hình OSI, nhưng cũng liên quan đến một số lớp khác
1.1 Lớp 7 - Ứng Dụng (Application Layer)
Đây là lớp chính nơi SSH vận hành Lớp ứng dụng cung cấp các giao diện và dịch
vụ, cho phép người dùng cuối thiết lập kết nối SSH và thực hiện các thao tác như truy cập từ xa hoặc truyền tải dữ liệu thông qua SCP hoặc SFTP Tất cả lệnh và truy vấn từ người dùng đều được thực thi trên lớp này
Trang 61.2 Lớp 6 - Trình Bày (Presentation Layer)
Tầng này chịu trách nhiệm mã hóa và giải mã thông tin SSH áp dụng nhiều thuật toán mã hóa như AES, ChaCha20, và các hàm băm như SHA-2, MD5 để bảo vệ dữ liệu trong quá trình truyền tải Việc mã hóa ở tầng trình bày giúp ngăn chặn nguy
cơ dữ liệu bị nghe lén
1.3 Lớp 4 - Giao Vận (Transport Layer)
SSH sử dụng giao thức TCP (Transmission Control Protocol) nhằm thiết lập một kênh truyền tải đáng tin cậy Tầng này đảm bảo rằng dữ liệu được truyền đi không
bị thất lạc và duy trì thứ tự đúng đắn SSH được cài đặt mặc định để hoạt động qua cổng 22/TCP, giúp dữ liệu được truyền tải an toàn và có tính xác thực cao
Trang 72 Kiến trúc
Kiến trúc của SSH có ba lớp chính: Lớp truyền tải, lớp xác thực và lớp kết nối
2.1 Lớp Truyền Tải (Transport Layer)
Lớp này chịu trách nhiệm cung cấp tính năng bảo mật cơ bản cho kết nối, bao gồm:
● Mã hóa: Sử dụng các thuật toán mã hóa như AES, Triple DES, hoặc
ChaCha20 để bảo vệ dữ liệu khỏi bị đọc trộm
● Xác thực máy chủ: Lớp truyền tải đảm bảo tính toàn vẹn của phiên
làm việc bằng cách xác thực máy chủ với khách hàng thông qua khóa công khai Điều này giúp phát hiện sự giả mạo nếu một kẻ tấn công
cố gắng đóng vai trò máy chủ trong kết nối
● Chống Tấn Công Replay và MITM: Bằng cách sử dụng nonce và
mã MAC, lớp truyền tải ngăn chặn việc phát lại gói tin từ các phiên trước, đồng thời bảo vệ chống tấn công MITM
2.2 Lớp Xác Thực (Authentication Layer)
Lớp xác thực quản lý quá trình xác thực người dùng trước khi cho phép truy cập vào hệ thống:
Trang 8● Xác thực dựa trên mật khẩu hoặc khóa SSH: SSH hỗ trợ cả mật
khẩu và các cặp khóa công khai/riêng tư để xác thực người dùng Xác thực bằng khóa SSH đặc biệt mạnh mẽ do khóa riêng tư không được chia sẻ trên mạng, làm giảm khả năng bị đánh cắp
● Xác thực nhiều lớp: SSH cũng có thể kết hợp xác thực nhiều yếu tố
(MFA) để tăng cường bảo mật, chẳng hạn như yêu cầu người dùng nhập mã xác minh từ thiết bị di động
2.3 Lớp Kết Nối (Connection Layer)
Lớp này cung cấp một kênh liên lạc ảo cho nhiều phiên làm việc độc lập giữa máy khách và máy chủ, bao gồm:
● Quản lý kênh (channel): Lớp kết nối quản lý nhiều phiên (ví dụ:
truy cập shell, chuyển tập tin qua SCP/SFTP) bằng cách chia chúng thành các kênh riêng biệt Mỗi kênh hoạt động độc lập, cho phép chuyển dữ liệu song song mà không làm ảnh hưởng đến các kênh khác
● Chuyển tiếp cổng (port forwarding): SSH cho phép chuyển tiếp các
kết nối từ máy khách đến các dịch vụ khác thông qua lớp kết nối, giúp tạo ra các kênh bảo mật cho các dịch vụ không an toàn
Trang 9III Tại sao SSH lại an toàn?
Mã hóa được sử dụng bởi giao thức SSH để bảo vệ cả máy chủ và máy khách Tất
cả các tệp truyền đi, khóa và tên đăng nhập đều được mã hóa để ngăn chặn các cuộc tấn công
1 Bảo mật Dữ liệu trong Giao thức SSH
SSH (Secure Shell) là một giao thức mạng an toàn, cho phép truyền tải dữ liệu một cách bảo mật qua các kênh không an toàn Sở dĩ SSH có độ an toàn cao là nhờ vào việc sử dụng các cơ chế mã hóa dữ liệu Dưới đây là những yếu tố quan trọng giúp SSH bảo vệ an toàn dữ liệu trong suốt quá trình kết nối
1.1 Mã hóa Bất đối xứng trong Khởi tạo Kết nối
Trong giai đoạn ban đầu của kết nối, SSH dùng mã hóa bất đối xứng
để trao đổi khóa và xác thực danh tính giữa máy chủ và máy khách Các thuật toán như RSA (Rivest–Shamir–Adleman), DSA (Digital Signature Algorithm), và ECDSA (Elliptic Curve Digital Signature Algorithm) được
sử dụng để đảm bảo:
● Xác thực danh tính: Máy khách nhận khóa công khai từ máy chủ và
chỉ máy chủ có khóa bí mật tương ứng mới có thể giải mã thông tin này
● Bảo vệ khỏi tấn công giả mạo: Mã hóa bất đối xứng bảo đảm rằng
chỉ có máy chủ hợp lệ mới được kết nối, ngăn ngừa các đối tượng xấu can thiệp hoặc mạo danh trong quá trình khởi tạo
Trang 101.2 Tạo và Sử dụng Khóa Phiên (Session Key)
Sau khi xác thực hoàn tất, SSH chuyển sang sử dụng mã hóa bất đối xứng để tạo
ra khóa phiên (session key), một khóa đối xứng riêng biệt cho mỗi phiên làm việc
và dùng để mã hóa toàn bộ dữ liệu trao đổi
● Bảo mật phiên: Khóa phiên là duy nhất và không tái sử dụng, giúp giảm
nguy cơ tấn công và bảo vệ an toàn tuyệt đối cho mỗi lần kết nối
● Hiệu suất cao: Mã hóa đối xứng nhanh hơn nhiều so với mã hóa bất đối
xứng, nên SSH chỉ dùng mã hóa bất đối xứng ban đầu để trao đổi khóa, sau
đó toàn bộ dữ liệu được mã hóa bằng khóa đối xứng để tối ưu hóa tốc độ
1.3 Mã hóa Dữ liệu trong Kênh SSH
Khi đã thiết lập khóa phiên, mọi dữ liệu được truyền qua kênh SSH đều sẽ mã hóa với thuật toán đối xứng như AES (Advanced Encryption Standard), Blowfish, hoặc ChaCha20
● Bảo mật nội dung: Dữ liệu được mã hóa ngay tại mỗi gói, đảm bảo không
bị lộ hoặc đọc trộm trên mạng
● Chống can thiệp dữ liệu: Kết hợp các thuật toán băm như SHA-256 để tạo
mã xác thực (MAC - Message Authentication Code) cho mỗi gói dữ liệu, ngăn chặn mọi hành vi chỉnh sửa hoặc giả mạo dữ liệu khi truyền
Trang 111.4 Kết hợp mã hóa Đối xứng và Bất đối xứng
SSH kết hợp hai loại mã hóa nhằm đạt được cả hiệu quả và bảo mật:
● Mã hóa bất đối xứng: Bảo đảm quá trình trao đổi khóa ban đầu được an
toàn và tránh tấn công MITM (Man-In-The-Middle)
● Mã hóa đối xứng: Cung cấp tốc độ cao khi mã hóa dữ liệu, đảm bảo dữ
liệu được bảo mật suốt quá trình truyền tải mà không ảnh hưởng đến hiệu suất
2 Xác thực người dùng
SSH triển khai các phương thức xác thực mạnh mẽ để đảm bảo chỉ các thực thể được phép mới có thể truy cập vào hệ thống từ xa Các phương pháp xác thực SSH bao gồm:
● Xác thực qua khóa công khai: Cơ chế này sử dụng cặp khóa công khai và
bí mật, trong đó máy khách giữ khóa bí mật còn khóa công khai lưu trên máy chủ từ xa Khi kết nối, máy chủ sẽ gửi một thử thách mà chỉ máy khách có khóa bí mật mới giải mã được, từ đó xác minh danh tính
● Xác thực bằng mật khẩu: SSH cũng hỗ trợ xác thực qua mật khẩu Người
dùng nhập mật khẩu để đăng nhập, tuy nhiên, phương thức này ít an toàn hơn do khả năng bị lộ hoặc bị đánh cắp mật khẩu
● Xác thực qua chứng chỉ hoặc 2FA: Các phương pháp này tăng cường bảo
mật bằng việc yêu cầu OTP hoặc chứng chỉ để xác thực, phù hợp với những
hệ thống đòi hỏi mức độ an toàn cao hơn
Nhờ các cơ chế xác thực này, SSH đảm bảo chỉ người dùng có quyền truy cập vào
hệ thống, tránh các truy cập trái phép
3 Bảo Toàn Tính Toàn Vẹn
SSH sử dụng mã xác thực thông điệp (MAC) để đảm bảo tính toàn vẹn của dữ liệu, ngăn chặn và phát hiện các hành vi sửa đổi trong quá trình truyền
● MAC (Message Authentication Code): Đây là giá trị băm được tạo từ nội
dung gói dữ liệu truyền đi Khi trao đổi, máy khách và máy chủ tính toán MAC và gửi cùng với dữ liệu
● Xác minh tính toàn vẹn: Bên nhận sẽ tính toán lại MAC và so sánh Nếu
không khớp, gói dữ liệu có thể đã bị thay đổi và sẽ bị loại bỏ
Trang 124 Truyền Tệp Tin Bảo Mật
SSH cung cấp các giao thức SCP và SFTP để truyền tệp giữa các máy từ xa an toàn
● SCP: Truyền tệp trực tiếp giữa hai máy qua kết nối SSH với dữ liệu được
mã hóa trong suốt quá trình truyền và xác thực bên nhận, giúp bảo vệ dữ liệu khỏi việc bị đọc trộm
● SFTP: Cung cấp tính năng quản lý tệp linh hoạt như duyệt thư mục, tạo,
xóa, và thay đổi quyền tệp từ xa Giao thức này mã hóa dữ liệu và đảm bảo tính toàn vẹn trong quá trình truyền tải
Nhờ SCP và SFTP, SSH đáp ứng nhu cầu truyền tệp an toàn, đặc biệt hữu ích trong môi trường doanh nghiệp và hệ thống nhạy cảm
5 Chuyển Tiếp Cổng và Tunneling
SSH hỗ trợ tunneling qua cơ chế chuyển tiếp cổng, giúp tạo các kênh kết nối an toàn cho nhiều mục đích khác nhau
● Chuyển tiếp cổng cục bộ: Cho phép máy khách truy cập vào tài nguyên
mạng nội bộ qua cổng SSH của máy chủ Ví dụ, máy khách từ xa có thể truy cập vào cơ sở dữ liệu nội bộ qua SSH
● Chuyển tiếp cổng từ xa: Cho phép dịch vụ trên máy khách được truy cập
từ xa qua máy chủ SSH, hữu ích khi cần truy cập tài nguyên của máy khách
từ mạng bên ngoài
● Chuyển tiếp cổng động: Thiết lập một proxy linh hoạt thông qua SOCKS,
cho phép lưu lượng từ nhiều ứng dụng qua kênh SSH
Trang 13IV Thử các phương thức tấn công vào SSH
1 Tấn công dò mật khẩu (Brute-force attacks)
1.1 Mô tả tấn công:
Trong tấn công brute-force, kẻ tấn công thử nhiều tổ hợp mật khẩu khác nhau để truy cập vào máy chủ SSH Nếu mật khẩu đơn giản hoặc không an toàn, kẻ tấn công có thể đoán đúng và truy cập vào hệ thống
1.2 Thử nghiệm tấn công:
Chuẩn bị:
- Máy tấn công: Công cụ brute-force ( ví dụ Hydra), Danh sách mật khẩu phổ biến
- Máy nạn nhân: Có mở cổng ssh với mật khẩu yếu Thực hiện tấn công:
- Sử dụng Hydra với danh sách mật khẩu hiện có Phản hồi từ máy nạn nhân:
- Giới hạn đăng nhập thất bại: Kẻ tấn công sẽ thấy các thông báo như "Connection refused" hoặc "Too many authentication failures" trong Hydra
- Sử dụng xác thực bằng khóa công khai: Các thông báo từ Hydra sẽ hiển thị "No valid authentication method found" hoặc "Authentication failed" cho mọi lần thử mật khẩu
Kết luận:
SSH ngăn chặn tấn công brute-force hiệu quả bằng cách
từ chối các lần đăng nhập quá nhiều hoặc không cho phép xác thực bằng mật khẩu Điều này làm cho brute-force không thành công khi cấu hình bảo mật được thiết lập đúng cách
Trang 141.3 Cơ chế bảo vệ của SSH:
1.3.1 Xác thực bằng khóa công khai: SSH cung cấp phương thức
xác thực bằng khóa công khai thay vì chỉ dùng mật khẩu Với cách thức này, khi sử dụng cặp khóa riêng - khóa công khai, việc dò mật khẩu trở nên vô ích vì SSH không lưu mật khẩu mà thay vào đó sử dụng các khóa mã hóa phức tạp Cơ chế này loại
bỏ hoàn toàn khả năng thu thập thông tin nhạy cảm, đảm bảo an toàn kể cả trong trường hợp có nguy cơ bị tấn công
1.3.2 Giới hạn đăng nhập thất bại: Phần lớn cấu hình SSH đều thiết
lập giới hạn số lần đăng nhập thất bại, nếu vượt quá mức này,
IP sẽ bị khóa tạm thời hoặc chặn truy cập Điều này giúp giảm nguy cơ thành công của các cuộc tấn công brute-force và ngăn chặn việc dò mật khẩu liên tục
1.3.3 Firewall và hệ thống phát hiện xâm nhập: Các tường lửa và
hệ thống phát hiện xâm nhập (IDS/IPS) có khả năng nhận diện
và chặn đứng các yêu cầu brute-force vào cổng SSH, ngăn chặn những nỗ lực tấn công liên tục vào hệ thống
2 Tấn công trung gian (Man-in-the-Middle - MITM)
2.1 Mô tả tấn công:
Tấn công MITM xảy ra khi kẻ tấn công can thiệp vào kênh truyền thông giữa máy khách và máy chủ, cho phép chúng theo dõi hoặc thay đổi dữ liệu trong quá trình truyền
2.2 Thử nghiệm tấn công:
Chuẩn bị:
- Máy tấn công: Công cụ Ettercap, Wireshark
- Máy nạn nhân: Có mở cổng ssh
Điều kiện thực hiện:
- IP của máy nạn nhân và máy tấn công trong cùng mạng
Trang 15Thực hiện tấn công:
- Ettercap với ARP spoofing giữa máy nạn nhân và máy chủ SSH
- Sử dụng Wireshark để theo dõi lưu lượng giữa hai máy này Lọc lưu lượng SSH trên cổng 22 và theo dõi dữ liệu truyền qua
Phản hồi từ máy nạn nhân:
- Khi kẻ tấn công chặn dữ liệu qua Wireshark hoặc Ettercap, chúng sẽ chỉ thấy các gói tin được mã hóa và không thể đọc được nội dung Wireshark sẽ hiển thị các gói tin SSH với nội dung bị mã hóa, không thể hiểu được thông tin bên trong
- Nếu kẻ tấn công cố gắng đóng giả máy chủ SSH, máy khách sẽ phát hiện sự thay đổi trong fingerprint và đưa ra cảnh báo rằng fingerprint của máy chủ đã thay đổi Khi người dùng thấy cảnh báo này, họ có thể từ chối kết nối, ngăn chặn cuộc tấn công MITM
Kết luận:
Nhờ mã hóa toàn bộ dữ liệu và xác thực fingerprint, SSH bảo vệ người dùng khỏi tấn công MITM, đảm bảo rằng
dữ liệu không thể đọc hoặc thay đổi bởi bên thứ ba
2.3 Cơ chế bảo vệ của SSH:
2.3.1 Mã hóa end-to-end: SSH áp dụng mã hóa cho toàn bộ quá trình
trao đổi giữa máy khách và máy chủ, giúp dữ liệu trở nên không thể đọc được đối với các bên thứ ba Phương thức mã hóa này đảm bảo an toàn cho nội dung truyền tải, bảo vệ khỏi các nguy cơ tấn công
2.3.2 Xác thực fingerprint của máy chủ: Khi lần đầu kết nối SSH
với máy chủ, người dùng sẽ lưu lại dấu vân tay của máy chủ đó Nếu dấu vân tay này thay đổi trong những lần kết nối tiếp theo,
hệ thống sẽ cảnh báo người dùng Đây là cách giúp phát hiện và ngăn chặn các cuộc tấn công MITM, đảm bảo tính hợp lệ của máy chủ