BÁO CÁO BÀI TẬP LỚN
AN TOÀN THÔNG TIN
Đề tài:
“Tìm Hiểu về SSH ”
GVHD : NGUYỄN VĂN HOÀNG
Sinh viên thực hiện : THC– 52
Nguyễn Thị Nga
Nguyễn Thị Phương Thảo
Nội dung
1. Khái niệm về SSH
2. Lịch sử phát triển của SSH
3. Các đặc điểm của SSH
4. Kiến trúc chung của một hệ thống SSH
5. Bên trong SSH
6. Các thuật toán được sử dụng trong SSH
7. Các loại tấn công mà SSH có thể cản được
8. Các mối đe dọa mà SSH không thể cản
1. Khái niệm về SSH
•
SSH (tiếng anh :Secure Shell ) là một giao thức
mạng dùng để thiết lập kết nối mạng một cách bảo
mật. SSH hoạt động ở lớp trên trong mô hình
phân lớp TCP/IP.
•
Các công cụ SSH (như là OpenSSH, PuTTy….)
cung cấp cho người dùng cách thức để thiết lập
kết nối mạng được mã hóa để tạo một kênh kết
nối riêng tư. Hơn nữa tính năng tunneling (hoặc
còn gọi là port forwarding) của các công cụ này
cho phép chuyển tải các giao vận theo các giao
thức khác
2. Lịch sử phát triển của SSH
•
Năm 1995, Tatu Ylõnen, đã trình bày về SSH1 và giao
thức SSH1
•
Năm 1998, SCS phát hành sản phẩm phần mềm “SSH
Secure Shell” (SSH2), dựa trên giao thức SSH-2
•
Năm 2000, SCS mở rộng SSH2 bản quyền cho phép
dùng miễn phí đối với Linux, NetBSD, FreeBSD và hệ
điều hành OpenBSD
•
Năm 2000, OpenSSH () được
dử dụng miễn phí có đăng kí. OpenSH hỗ trợ cả SSH-
1 và SSH-2 trong một chương trình.
3. Các đặc điểm của SSH
3.1 Tính bí mật (Privacy /Encryption)
3.2 Tính toàn vẹn (integrity)
3.3 Chứng minh xác thực (authentication)
3.4 Phân quyền (authorization)
3.5 Chuyển tiếp (forwarding) hoặc tạo đường
hầm (tunneling)
3.1 Tính bí mật (Privacy /Encryption)
•
SSH cung cấp tính bí mật bằng việc mã hoá dữ liệu đi
qua mạng. Đó là việc mã hoá hai đầu dựa trên khoá
ngẫu nhiên(-session key) (sinh ra để phục vụ cho một
phiên kết nối và được huỷ đi khi phiên kết nối thành
công).
•
SSH hỗ trợ nhiều thuật toán mã hoá đối với phiên dữ
liệu, đó là những thuật toán mã hoá chuẩn như: AES,
ARCFOUR, Blowfish, Twofish, IDEA, DES và triple-
DES (3DES)
3.2 Tính toàn vẹn (integrity)
•
Để đảm bảo tính toàn vẹn dữ liệu, giao thức SSH
sử dụng phương pháp kiểm tra toàn vẹn mật mã.
Phương pháp này kiểm tra cả việc dữ liệu có bị
biến đổi hay không và dữ liệu đến có đúng là do
đầu kia gửi hay không. Nó sử dụng thuật toán
băm khóa là MD5 và SHA-1
3.3 Chứng minh xác thực (authentication)
•
Chứng minh xác thực là việc kiểm tra định danh
của ai đó để xác định chính xác đúng là người đó
hay không. Mỗi kết nối SSH bao gồm hai việc xác
thực: client kiểm tra định danh của SSH server
(server authentication) và server kiểm tra định
danh của người sử dụng yêu cầu truy cập (user
authentication).
•
Mỗi định danh và truy cập của người sử dụng có
thể được cung cấp theo nhiều cách khác nhau
•
Việc chứng thực mật khẩu là một cách rất thông
dụng để định danh người sử dụng, nhưng ngoài ra
cũng có các cách khác như chứng thực RSA, sử
dụng ssh-keygen và ssh-agent để chứng thực các
cặp khóa.
•
Một SSH client và SSH server đàm phán với nhau
để xác định cơ chế xác thực sẽ sử dụng dựa trên
cấu hình của chúng và một server thậm chí có thể
yêu cầu nhiều kiểu xác thực.
•
Việc phân quyền có tác dụng quyết định ai đó có thể
hoặc không thể làm gì đó. Nó diễn ra sau khi xác
thực, bởi vì bạn không thể trao quyền nào đó cho
một người mà bạn không biết họ là ai.
•
SSH server có nhiều cách khác nhau để giới hạn hành
động của client.
•
Việc phân quyền có thể được điều khiển tại một mức
server rộng (ví dụ: /etc/ssh/sshd_config file đối với
OpenSH) hoặc theo tài khoản phụ thuộc vào phương
thức xác thực sử dụng.
3.4 Phân quyền (authorization)
3.5 Chuyển tiếp (forwarding) hoặc
tạo đường hầm (tunneling)
•
Chuyển tiếp hoặc tạo đường hầm là đóng gói
dịch vụ dựa trên TCP khác như là Telnet hoặc
IMAP trong một phiên SSH mang lại hiệu quả
bảo mật của SSH đến với các dịch vụ dựa trên
TCP khác.
•
SSH hỗ trợ 3 kiểu chuyển tiếp sau :
•
+ X forwarding là một hệ thống window phổ biến đối
với các trạm làm việc Unix, một trong những đặc điểm
của nó là tính trong suốt. Sử dụng X bạn có thể chạy
ứng dụng X từ xa để mở các cửa sổ của chúng trên
màn hình hiển thị cục bộ của bạn.
•
+ Agent forwarding SSH client có thể làm việc với
một SSH agent trên cùng một máy. Sử dụng một đặc
trưng gọi là agent forwarding, client cũng có thể liên
lạc với các agent trên những máy từ xa. Điều thuận lợi
là nó cho phép client trên nhiều máy làm việc với một
agent và có thể tránh vấn đề liên quan đến tường lửa.
•
+ TCP port forwarding: SSH sử dụng TCP/IP làm cơ
chế vận chuyển của nó, thường là cổng 22 trên máy
chủ, vì nó mã hóa và giải mã lưu lượng truy cập qua
kết nối. Những ứng dụng khác sử dụng giao thức
TCP như telnet, SMTP, NNTP, IMAP và một số giao
thức khác cũng có thể được hướng tới các port TCP
khác dùng SSH. Quá trình này được gọi là TCP port
forwarding. Port forwarding được gọi là đường hầm
vì kết nối SSH cung cấp một “đường hầm” xuyên qua
để cho các kết nối TCP khác có thể đi qua. Tuy nhiên
SSH Port forwarding chỉ hoạt động trên giao thức
TCP và không làm việc được trên các giao thức khác
như UDP hay AppleTalk.
4. Kiến trúc chung của một hệ thống SSH
•
Server
Một chương trình cho phép đi vào kết nối SSH
với một bộ máy, trình bày xác thực, cấp phép, …
Trong hầu hết SSH bổ sung của Unix thì server
thường là sshd.
•
Client
Một chương trình kết nối đến SSH server và đưa
ra yêu cầu như là “log me in” hoặc “copy this file”.
Trong SSH1, SSH2 và OpenSSH, client chủ yếu là
ssh và scp.
•
Session
Một phiên kết nối giữa một client và một server. Nó bắt
đầu sau khi client xác thực thành công đến một server và kết
thúc khi kết nối chấm dứt.
•
Key
Một lượng dữ liệu tương đối nhỏ, thông thường từ mười
đến một hoặc hai ngàn bit. Tính hữu ích của việc sử dụng thuật
toán ràng buộc khoá: trong mã hoá, nó chắc chắn rằng chỉ
người nào đó giữ khoá (hoặc một ai có liên quan) có thể giải
mã thông điệp; trong xác thực, nó cho phép bạn kiểm tra rằng
người giữ khoá thực sự đã kí hiệu vào thông điệp. Có hai loại
khóa: khoá đối xứng (hoặc khoá bí mật) và khoá bất đối xứng
(hoặc khóa công khai).
–
Các loại khóa thành phần: User key, Host key, Server key,
Session key, Key generator.
•
Known hosts database
Là một chồng host key. Client và server dựa vào cơ
sở dữ liệu này để xác thực lẫn nhau.
•
Agent
Một chương trình lưu user key trong bộ nhớ. Agent
trả lời cho yêu cầu đối với khoá quan hệ hoạt động như
là kí hiệu một giấy xác thực nhưng nó không tự phơi bày
khoá của chúng. Nó là một đặc điểm rất có ích.
•
Signer
Một chương trình kí hiệu gói chứng thực hostbased.
•
Random seed
Một dãy dữ liệu ngẫu nhiên đựoc dùng bởi các
thành phần SSH để khởi chạy phần mềm sinh số ngẫu
nhiên .
•
Configuration file
Một chồng thiết lập để biến đổi hành vi của một
SSH client hoặc SSH server. Không phải tất cả thành
phần đều được đòi hỏi trong một bản bổ sung của
SSH. Dĩ nhiên những server, client và khoá là bắt
buộc nhưng nhiều bản bổ sung không có agent và
thậm chí vài bản không có bộ sinh khoá
5. Bên trong SSH
5.1 Bên trong SSH-2
•
Giao thức SSH-2 được chia làm 4 bộ phận chính,
được diễn tả như 4 giao thức riêng rẽ trong nhiều tài
liệu IETF khác nhau. Theo thông thường, chúng được
sắp xếp cùng với nhau để cung cấp thiết lập các dịch
vụ mà hầu hết người dùng kết hợp chúng thành một
SSH-2 đầy đủ.
•
- Giao thức lớp vận chuyển SSH (SSH-TRANS)
- Giao thức xác thực SSH (SSH-AUTH)
- Giao thức kết nối SSH (SSH-CONN)
- Giao thức truyền file SSH (SSH-SFTP)
5.2 Tóm tắt cơ chế hoạt động của SSH-2
•
Một phiên hoạt động của SSH-2 trải qua 4 bước
chủ yếu như sau:
–
Thiết lập kết nối ban đầu (SSH-TRANS)
–
Tiến hành xác thực lẫn nhau (SSH-AUTH)
–
Mở phiên kết nối để thực hiện các dịch vụ (SSH-
CONN)
–
Chạy các dịch vụ ứng dụng SSH ( có thể là SSH-
SFTP).
6. Các thuật toán được sử dụng trong SSH
•
Những thuật toán khóa công khai :
–
Rivest-Shamir-Adleman (RSA)
–
Thuật toán chữ ký số (DSA)
–
Thuật toán thoả thuận khoá Diffie-Hellman
•
Những thuật toán khoá bí mật
–
Thuật toán mã hoá dữ liệu bí mật quốc tế (IDEA)
–
Chuẩn mã hoá tiên tiến (AES)
–
Chuẩn mã hoá dữ liệu (DES)
–
Trible-DES (3DES)
•
Những thuật toán khoá bí mật (tiếp)
–
ARCFFOUR (RC4)
–
6 Blowfish
–
Twofish
–
CAST
•
Những hàm băm
–
CRC-32
–
MD5
–
SHA-1
–
RIPEMD-160
–
Thuật toán nén: Zlib
7. Các loại tấn công mà SSH có thể cản được
7.1 Eavesdropping
Một eavesdropper là một người rình mò trên mạng, có thể biết
được giao thông mạng mà không làm ảnh hưởng đến đường
truyền. Hình thức mã hóa của SSH chống lại eavesdropping
7.2 Dịch vụ đặt tên và giả mạo IP
Nếu một kẻ tấn công phá hoại dịch vụ đặt tên (DNS, NIS, …),
các chương trình liên quan đến mạng có thể bị ép buộc kết nối
đến máy tính khác. Cũng tương tự, một kẻ tấn công có thể giả
mạo một host bằng cách đánh cắp địa chỉ IP đang dùng. Trong
các trường hợp khác, bạn cũng sẽ gặp rắc rối: các chương trình
trên máy khách có thể kết nối sai đến máy chủ, đánh cắp mật
khẩu mà bạn cung cấp. Trình bảo vệ SSH chống lại kiểu tấn
công này bằng cách kiểm tra mã hóa và nhận dạng máy chủ
7.3 Chiếm đoạt kết nối
Một kẻ tấn công lanh lợi không chỉ có thể theo dõi được giao
thông mạng, mà còn có thể xen vào, chiếm đoạt một kết nối
TCP. Đây là các tai hại rõ ràng, dù cho phương thức xác nhận
của bạn có tốt như thế nào đi nữa, kẻ tấn công có thể đơn giản
là đợi cho đến khi bạn đăng nhập, sau đó đánh cắp kết nối và
chèn các lệnh bất chính của hắn vào trong session của bạn.
SSH không thể chống lại kiểu chiếm quyền điều khiển này, từ
đó trở đi đây trở thành điểm yếu trong TCP hoạt động bên
dưới SSH. Tuy nhiên, SSH đáp trả không hiệu quả (trừ kiểu
tấn công từ chối dịch vụ). Trình kiểm tra tính toàn vẹn của
SSH phát hiện một session có bị sửa đổi hay không, và ngắt
kết nối ngay lập tức mà không sử dụng bất kỳ dữ liệu bị sửa
đổi nào.
7.4 Tấn công Man-in-the-Middle
Đây là kiểu tấn công mà có một người thứ ba xen vào
giữa, là kiểu tấn công chủ động đặc biệt không dễ bị
phát hiện.
Tuy nhiên SSH có đủ khả năng để chống lại kiểu tấn
công này
8. Các mối đe dọa mà SSH không thể cản
•
Phá mật khẩu
SSH cải tiến quá trình an toàn mật khẩu bằng cách mã hóa nó
khi truyền qua mạng. Tuy nhiên, mật khẩu vẫn là điểm yếu của
quá trình xác thực, bạn phải cẩn thận với điều này. Bạn phải
chọn một mật khẩu an toàn, dễ nhớ đối với bạn nhưng lại khó
đoán với người khác. Bạn phải tránh bị đánh cắp mật khẩu, tốt
nhất là chỉ một mình bạn biết cách truy cập vào tài khoản của
mình.