1. Trang chủ
  2. » Công Nghệ Thông Tin

ssh cơ bản - phạm công lý

36 337 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Ssh Cơ Bản
Tác giả Phạm Công Lý
Trường học Trường Đại Học Công Nghệ Thông Tin - Đại Học Quốc Gia Hà Nội
Chuyên ngành An Toàn Mạng
Thể loại Giáo trình
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 36
Dung lượng 484,41 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

TELNET là một giao thức mạng network protocol được dùng trên các kết nối với Internet hoặc các kết nối tại mạng máy tính cục bộ LAN.. Trên rất nhiều hệ thống, chương trình ứng dụng "tel

Trang 1

Chương 1: LÝ THUYẾT AN TOÀN MẠNG

1.1 Các rủi ro đối với một hệ thống mạng

Một hệ thống mạng được kết nối với Internet sẽ có rất nhiều nguy cơ bị tấn công Khi dữ liệu được truyền đi trên mạng, nhiều khả năng sẽ bị Hacker( là những người có hiểu biết sâu về tin học và có những kỹ năng tốt nhưng lại có những hành vi làm tổn hại người khác) đọc trộm dữ liệu Khi một hệ thống liên lạc với nhau thông qua địa chỉ để truyền nhận dữ liệu cũng dễ bị Hacker giả danh để lấy dữ liệu hoặc những vấn đề về Virus,…có còn nhiều nguy cơ khác nữa khiến cho một hệ thống mạng của chúng ta trở nên không an toàn nghĩa là hệ thống của chúng ta có thể bị tấn công bằng nhiều hình thức khác nhau.Sau đây là một số hình thức tấn công thường gặp:

 Giả địa chỉ - là một kiểu tấn công mà kẻ tấn công đóng vai một hệ thống hợp pháp bằng cách đánh

cấp địa chỉ sau đó giả làm nạn nhân đã bị đánh cắp để lấy dữ liệu mà những đầu liên lạc phía bên kia gứi tới

 Adware – phần mềm tích hợp trong quảng cáo Nó có thể không có hại, mà cũng có thể thu thập dữ

liệu của người sử dụng hay máy tính của người sử dụng và chuyển nó về cho người quảng cáo nó

 Sự xác nhận – hành động để bảo đảm rằng một người hay một hệ thống đang cố gắng truy cập một

hệ thống được xác nhận đúng quyền

 Cracker – một người nào đó thâm nhập vào máy tính, thường là do thích thú hay ý đồ chính trị và

đôi khi vì lý do tài chính Cracking là hành động thâm nhập vào máy tính

 Mật mã hóa – tiến trình chuyển đổi thông tin sang một mã bí mật, gọi là cipher text, bằng một giải

thuật mã hóa Dịch vụ mật mã hóa có thể cung cấp tính bảo mật, toàn vẹn, xác thực và không thể từ chối

 Cybercrime – một thuật ngữ tổng hợp được dùng để mô tả một dãy tấn công được tạo ra để chống

lại một tổ chức bằng các phương tiện điện tử

 Từ chối dịch vụ - tiến trình mà qua đó các người sử dụng hợp pháp, các khách hàng, client hay các

máy tính khác bị ngăn chặn khỏi việc truy cập tài nguyên trên một máy tính do một thành phần thứ 3 không được xác nhận Điều này được thực hiện bằng cách làm tràn ngặp máy tính do các yêu cầu giả, hay giả các yêu cầu hợp pháp.( Ví dụ như DDoS)

 Hacker – nguồn gốc là để mô tả một người nào đó có hiểu biết rất sâu về máy tính và kỹ năng tốt

và khả năng lập trình

 Mã độc – là thuật ngữ cho một virus, các applet hostile hoặc đoạn mã được tải về từ web server hay

gửi trực tiếp từ một hệ thống này đến một hệ thống khác

 Spyware – phần mềm để giám sát một máy tính được sử dụng như thế nào và gửi báo cáo đến một

máy tính khác qua internet Các chương trình spyware được tạo ra để ghi lại số thẻ tín dụng hay toàn bộ username và password Spyware cũng được dùng để khởi động một cuộc tấn công từ chối dịch vụ

 Trojan – là một dạng virus, các chương trình chạy âm thầm để xóa file hay làm xáo trộn nội dung

của chúng Hơn nữa chúng còn cho phép máy tính bị điều khiển từ xa, bằng việc cung cấp cho ai đó truy cập file hay ứng dụng

 Worm – là virus thuần túy về mạng Chúng được thiết kế để khám phá và phát hiện các điểm yếu

trong một mạng máy tính để lan truyền chính chúng từ máy này sang máy khác

Trang 2

1.2 Các bước tấn công vào một hệ thống mạng

Thông thường, một quá trình tấn công vào một hệ thống mạng trải qua 4 bước:

 Thu thập thông tin

 Truy cập ban đầu

 Thực hiện leo quyền

 Phi tang dấu vết

1.2.1 Tiến trình thu thập thông tin:

 Bước đầu tiên trong thu thập thông tin là kiếm được một đích để tấn công Một hacker có thể chọn một người hay công ty để tấn công, hoặc tìm kiếm một đối tượng không được bảo vệ trên internet mà

dễ dàng tấn công Số lượng thông tin có giá trị của người sử dụng internet có liên quan đến mức độ ta

sử dụng internet Nghĩa là lướt web càng nhiều càng dễ bị tấn công Nếu ta có một tên miền hay một web site, hay một địa chỉ mail cho mục đích công cộng

 Nếu không tìm được một đích rõ ràng thì hacker cũng có rất nhiều công cụ hỗ trợ cho việc quét

các đích ngắm có thể có trên internet Các đơn giản nhất làm sử dụng lệnh ping, quét rất nhanh hàng

ngàn máy tính Đều này cho biết một máy tính có tồn tại trên mạng không

 Port Scan thì nâng cao hơn và thường được thực hiện trên máy tính riêng lẽ Một Port Scan có thể cho hacker biết rằng dịch vụ nào đang hoạt động, HTTP hay FTP Mỗi một dịch vụ đang hoạt động

cung cấp một điểm đi vào tiềm ẩn cho hacker Trên các máy tính không được bảo vệ, các port không

được dùng đáp ứng rằng chúng đã bị đóng, điều này cũng cho hacker biết rằng máy tính vẫn đang tồn tại

1.2.2 Tiến trình truy cập ban đầu

Các hacker khai thác tối đa các sơ hở tìm thấy trong giai đoạn thu thập thông tin và thiết lập một điểm “đi vào” vào trong máy tính

1.2.3 Leo thang phân quyền

Một khi đã kết nối được đến một máy tính, bước kế tiếp là đạt được điều khiển càng nhiều càng tốt Các hacker cố gắng đạt được quyền quản trị đến máy tính Điểm mấu chốt là thu thập được quyền quản trị - thường là mật khẩu Hacker cố gắng tải về file chứa mật khẩu và giải mã nó

Một cách khác là đặt một trojan horse vào máy tính đó Nếu một hacker có thể đặt một chương trình như Back Orifice, Subseven, hay NetBus trên một máy tính và chạy nó

Các trojan horse khác có thể ghi lại các keystroke để bắt các mật khẩu và dữ liệu nhạy cảm NPF cung cấp 2 mức bảo vệ để chống lại trojan horse

1.2.4 Tiến trình che đậy dấu vết:

Khi hacker chiếm được điều khiển một máy tính ở một mức nào đó, nhiệm vụ là che dấu mọi dấu vết Nếu ta chưa phát hiện một hacker đã thỏa hiệp mới máy tính rồi, thì ta không thể từng bước ngừng các hành động này Trên các máy sử dụng hệ điều hành Windows 2000/XP, các haker cố tắt việc kiểm tra và thay đổi hoặc xóa đi các log file ghi sự kiện Trên các hệ điều hành, các hacker có thể ẩn đi các file để truy cập lần sau Trong trường hợp cực đoan, các hacker có thể format ổ đĩa cứng để tránh bị nhận dạng

Trang 3

1.3 Các nguy cơ bị tấn công khi sử dụng TELNET

Ngày nay rất nhiều người có nhiều tài khoản máy tính Nếu cũng bạn hiểu biết về user, bạn phải có một tài khoản cá nhân với một nhà cung cấp dịch vụ Internet (ISP), một tài khoản làm việc trên mạng nội bộ chủ, và một hoặc nhiều máy tính cá nhân tại nhà Bạn cũng phải được cho phép sử dụng những tài khoản khác của chính gia đình hoặc bạn bè của bạn

Nếu bạn có nhiều tài khoản, tự nhiên bạn sẽ muốn kết nối giữa chúng Ví dụ như bạn muốn chép file giữa nhiều máy tính thông qua mạng, đăng nhập vào một tài khoản rất xa từ một máy khác, hoặc truyền dòng lệnh đến một máy tính ở xa để thực hiện Có nhiều chương trình khác nhau đã tồn tại để phục vụ cho những mục đích đó như là FTP và RCP để truyền file, TELNET và RLOGIN để đăng nhập từ xa, và RSH để thực hiện lệnh từ xa

TELNET là một giao thức mạng (network protocol) được dùng trên các kết nối với Internet hoặc các

kết nối tại mạng máy tính cục bộ LAN TELNET thường được dùng để cung cấp những phiên giao dịch đăng nhập, giữa các máy trên mạng Internet, dùng dòng lệnh có tính định hướng người dùng Tên

của nó có nguồn gốc từ hai chữ tiếng Anh "telephone network" (mạng điện thoại), vì chương trình

phần mềm được thiết kế, tạo cảm giác như một thiết bị cuối được gắn vào một máy tính khác Đối với

sự mở rộng của giao thức, chữ "telnet" còn ám chỉ đến một chương trình ứng dụng, phần người dùng của giao thức - hay còn gọi là trình khách (clients) Trong bao nhiêu năm qua, TELNET vốn được cài đặt sẵn trong hầu hết các hệ điều hành Unix và cả trên Window

Trên rất nhiều hệ thống, chương trình ứng dụng "telnet" còn được dùng trong những phiên giao dịch

tương tác TCP ở dạng sơ đẳng (interactive raw-TCP sessions), và còn được dùng để thông nối với

những dịch vụ trên các máy chủ POP3, mà không cần đến những trình khách chuyên dụng Cụm từ tiếng Anh "to telnet" còn được dùng như là một động từ, có nghĩa là "thành lập" hoặc "sử dụng", một

kết nối dùng giao thức TELNET

Nếu bạn truyền một file nhạy cảm thông qua Internet, có khả năng một kẻ xấu có thể chặn lại và đọc dữ liệu Thậm chí, nếu bạn đăng nhập vào một máy tính từ xa khác bằng việc sử dụng một chương trình như TELNET, username và password của bạn có thể bị lộ khi chúng được truyền trên mạng Làm sao để ngăn chặn những vấn đề nghiêm trọng đó? Bạn có thể cài một firewall, hoặc bạn có thể dùng nhiều giải pháp khác nhau với độ phức tạp và giá thành khác nhau nhưng có lẽ phương pháp hiệu quả và an toàn nhất là Bạn có thể dùng một chương trình mã hoá để chuyển dữ liệu thành một đoạn code bí mật mà không ai có thể đọc được SSH đã ra đời để thực hiện công việc đó

Trang 4

Chương 2: GIỚI THIỆU SSH

2.1 Giao thức SSH là gì?

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ã hoá để 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 Do vậy có thể thấy khi xây dựng một hệ thống mạng dựa trên SSH, chúng ta sẽ có một hệ thống mạng riêng ảo VPN đơn giản

Mỗi khi dữ liệu được gửi bởi một máy tính vào mạng, SSH tự động mã hoá nó Khi dữ liệu được nhận vào, SSH tự động giải mã nó Kết quả là việc mã hoá được thực hiện trong suốt: người dùng có thể làm việc bình thường, không biết rằng việc truyền thông của họ đã được mã hoá an toàn trên mạng

2.2 Lịch sử phát triển các phiên bản SSH

SSH1 và giao thức SSH-1 được trình bày năm 1995 bởi Tatu Ylõnen, một nhà nghiên cứu ở trường đại học kĩ thuật Helsinki của Phần Lan Sau khi mạng trường đại học của ông ta là nạn nhân của một cuộc tấn công đánh cắp password vào đầu năm đó

Tháng 7 năm 1995, SSH1 được phát hành rộng rãi dưới dạng một phần mềm miễn phí có source code, cho phép mọi người sao chép và sử dụng mà không thu phí Vào cuối năm đó, ước tính có khoảng 20.000 người dùng trên 50 quốc gia đã sử dụng SSH1, và mỗi ngày Ylõnen nhận 150 mail yêu cầu hỗ trợ Để đáp lại, Ylõnen đã thành lập SSH Communications Security (SCS, http://www.ssh.com) vào tháng 12 năm 1995 để duy trì, thương nghiệp hoá và tiếp tục phát triển SSH

Cũng trong năm 1995, Ylõnen soạn thảo giao thức SSH-1 còn gọi là Internet Engineering Task Force (IETF), nó diễn tả hoạt động cơ bản của phần mềm SSH1 trên thực tế Nó là một giao thức có phần quảng cáo nhưng còn một số lỗi và giới hạn nhưng rất phổ biến Năm 1996, SCS giới thiệu một phiên bản mới đó là phiên bản chính của giao thức, SSH 2.0 hay SSH-2, phiên bản này được kết hợp chặt chẽ những thuật toán mới và không hợp với SSH-1 Trong lúc đó, IETF thành lập một nhóm làm việc gọi là SECSH (Secure Shell) để chuẩn hoá giao thức và chỉ đạo sự phát triển của nó trên lợi ích chung Nhóm làm việc SECSH đã trình bày bản phác thảo Internet đầu tiên đối với giao thức SSH-2 vào tháng 2 năm 1997

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 Tuy nhiên, SSH2 không thay thế SSH1 trong một số lĩnh vực, có 2 lí do Thứ nhất, SSH2 không

có một số tiện ích, các đặc điểm có ích và cấu hình tuỳ chọn như SSH1 Thứ hai, SSH2 có nhiều giới hạn về việc đăng kí Bản chính SSH1 đã có sẵn miễn phí từ Ylõnen và trường đại học kĩ thuật Helsinki Phiên bản mới hơn của SSH1 từ SCS vẫn có sẵn miễn phí cho hầu hết người dùng, thậm chí cả cấu hình thương mại cũng miễn phí chỉ cần phần mềm đó không được trực tiếp bán cho việc thu lợi nhuận hoặc được tặng như là một dịch vụ cho khách hàng Vì thế, tuy SSH2 đã xuất hiện, nhưng hầu hết những người đang sử dụng SSH1 đều nhận ra vài ưu điểm của SSH1 so với SSH2 và tiếp tục sử dụng SSH1,

ba năm sau khi SSH2 ra đời thì SSH1 vẫn là phiên bản được sử dụng phổ biến trên Internet và vượt qua

cả SSH2 là giao thức tốt hơn và bảo mật hơn

Trang 5

Tuy nhiên, SSH2 cũng có hai sự phát triển hưa hẹn, đó là một bản nới lỏng của SSH2 bản quyền và

sự xuất hiện SSH-2 bổ sung Năm 2000, SCS mở rộng SSH2 bản quyền để cho phép sử dụng khi làm việc riêng lẻ đối với các tổ chức hoạt động phi lợi nhuận Nó cũng được mở rộng cho phép dùng miễn phí đối với Linux, NetBSD, FreeBSD và hệ điều hành OpenBSD Cùng thời gian đó, OpenSSH (http://www.openssh.com) đã được phát triển nổi bật như là một SSH bổ sung, được phát triển dưới hoạt động của dự án OpenBSD (http://www.openbsd.org) và miễn phí sẵn bên dưới OpenBSD có đăng

kí OpenSH hỗ trợ cả SSH-1 và SSH-2 trong một chương trình Tuy OpenSSH được phát triển trên nền OpenBSD nhưng nó cũng hoạt động được trên Linux, Solais, AIX và những hệ điều hành khác Mặc dù OpenSSH tương đối mới và không có vài đặc điểm có trong SSH1 và SSH2 nhưng nó đang trên đà phát triển nhanh chóng và hứa hẹn trở thành bản SSH chính trong tương lai không xa

Trang 6

Chương 3: BÊN TRONG GIAO THỨC SSH

3.1 Tổng quan về các đặc điểm của SSH

Các đặc điểm chính của giao thức SSH là:

- Tính bí mật (Privacy) của dữ liệu thông qua việc mã hoá mạnh mẽ

- Tính toàn vẹn (integrity) của thông tin truyền, đảm bảo chúng không bị biến đổi

- Chứng minh xác thực (authentication) nghĩa là bằng chứng để nhận dạng bên gửi và bên nhận

- Giấy phép (authorization) :dùng để điều khiển truy cập đến tài khoản

- Chuyển tiếp (forwarding) hoặc tạo đường hầm (tunneling) để mã hoá những phiên khác dựa trên giao thức TCP/IP

3.1.1 Tính bí mật (Privacy)

Tính bí mật có nghĩa là bảo vệ dữ liệu không bị phơi bày Mạng máy tính bình thường không bảo đảm tính bí mật, bất cứ ai truy cập đến phần cứng của mạng hoặc đến những host kết nối với mạng đều

có thể sẽ đọc được tất cả dữ liệu đi qua mạng Mặc dù mạng chuyển mạch hiện đại đã giảm những vấn

đề này trong mạng vùng cục bộ nhưng nó vẫn còn một vấn đề nghiêm trọng đó là mật khẩu dễ bị những

kẻ xấu đánh cắp

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 (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.1.2 Tính toàn vẹn (Integrity)

Tính toàn vẹn nghĩa là bảo đảm dữ liệu được truyền từ một đầu này đến đầu kia của mạng không bị thay đổi 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 khoá là MD5 và SHA-1

3.1.3 Chứng minh xác thực (authentication)

Chứng minh xác thực là 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 sr dụng yêu cầu truy cập (user authentication) Server authentication chắc chắn rằng SSH server là chính xác và không phải là kẻ lừa đảo để đề phòng

kẻ tấn công lại gửi kết nối mạng đến một máy khác Server authentication cũng bảo vệ việc bị kẻ xấu ngồi ở giữa hai bên, lừa gạt cả hai bên nghĩa là kẻ xấu sẽ nói với server nó là client và nói với client nó

là server để đọc được dữ liệu trao đổi giữa hai bên

User authentication theo truyền thống là làm việc với mật khẩu Để xác thực định danh của bạn, bạn phải đưa ra mật khẩu, và dễ bị lấy cắp Thêm nữa, để dễ nhớ một mật khẩu, người ta thường đặt nó ngắn và có ý nghĩa nào đó nên dễ bị kẻ xấu đoán ra Đối với mật khẩu dài hơn thì người ta thường chọn những từ hoặc câu trong ngôn ngữ bẩm sinh nên cũng dễ bị bẻ khoá

Trang 7

SSH hỗ trợ xác thực bằng mật khẩu, mã hoá mật khẩu khi nó truyền đi trên mạng Đây là sự cải thiện rất lớn so với những giao thức truy cập từ xa thông thường khác (Telnet, FTP) mà chúng gửi mật khẩu qua mạng dưới dạng clear text Tuy nhiên, việc chứng thực như thế vẫn chỉ là chứng thực mật khẩu đơn giản vì thế SSH cung cấp cơ chế mạnh hơn và dễ sử dụng hơn: mỗi user có nhiều chữ kí khoá công cộng (per-user public-key signature) và một cải tiến rlogin-style xác thực với định danh host được kiểm tra bằng khoá công khai Hơn nữa, những bản bổ sung khác nhau của SSH hỗ trợ vài hệ thống khác bao gồm Kerberos, RSA, mật khẩu S/Key one-time và PAM 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

3.1.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à tóm lược 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 Ví

dụ, một kết nối Telnet bình thường truyền username, password của bạn và phiên đăng nhập của bạn ở dạng clear text Bằng cách chuyển tiếp telnet thông qua SSH, tất cả dữ liệu sẽ tự động được mã hoá và kiểm tra định danh và bạn có thể xác nhận dùng SSH tin cậy

SSH hỗ trợ 3 kiểu chuyển tiếp:

 TCP port forwarding:

SSH dùng TCP/IP làm cơ chế truyền, thường dùng port 22 trên máy server khi nó mã hoá và giải mã lưu lượng đi trên mạng Ở đây chúng ta nói đến một đặc điểm mã hoá và giải mã lưu lựong TCP/IP thuộc về ứng dụng khác, trên cổng TCP khác dùng SSH Tiến trình này gọi là port forwarding, nó có tính trong suốt cao va khá mạnh Telnet, SMTP, NNTP, IMAP và những giao thức không an toàn khác chạy TCP có thể được bảo đảm bằng việc chuyển tiếp kết nối thông qua SSH Port forwarding đôi khi được gọi là tunneling bởi vì kết nối SSH cung cấp một “đường hầm” xuyên qua để kết nối TCP khác có thể đi qua

Giả sử bạn có một máy H ở nhà đang chạy IMAP và bạn muốn kết nối đến một IMAP server trên máy

S để đọc và gửi mail Bình thường thì việc kết nối này không đảm bảo an toàn, tài khoản và mật khẩu mail của bạn được truyền đi dưới dạng clear text giữa chương trình mail của bạn và server Đối với SSH port forwarding, bạn có thể định tuyến lại trong suốt kết nối IMAP ( tìm cổng TCP 143 trên server S) để truyền đi thông qua SSH, mã hoá bảo đảm dữ liệu truyền đi trên kết nối Máy IMAP server phải chạy một SSH server cho port forwarding để cung cấp việc bảo đảm đó

Trang 8

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

 X forwarding

X 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 tốt nhất 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

3.2 Kiến trúc chung của một hệ thống SSH

SSH có khoảng một bộ 12 thuộc tính riêng lẻ, các thành phần tác động lẫn nhau cho ra các nét đặc trưng riêng

Trang 9

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 Session có thể được tương tác với nhau hoặc có thể là một chuyến riêng

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á hoạt động trong vài cách để giữ 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 trễ 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 Một khoá bất đối xứng hoặc khoá công khai có hai phần: thành phần công khai và thàn phần bí mật SSH đề cập đến 4 kiểu của khoá như phần tóm tắt trong bảng 3-1 và diễn tả dưới đây

Name Lifetime Created by Type Purpose

User key Persistent User Public Identify a user to the server

Session key One session Client (and server) Secret Protect communications

Host key Persistent Administrator Public Identify a server/machine

Server key One hour Server Public Encrypt the session key (SSH1 only)

Server key

Tồn tại tạm thời, là khoá bất đối xứng dùng trong giao thức SSH-1 Nó đựợc tái tạo bởi server theo chu kỳ thường xuyên ( mặc định là mỗi giờ) và bảo vệ session key Thường bị lộn với host key Khoá này thì không bao giờ được lưu trên đĩa và thành phần bí mật của nó không bao giờ được truyền qua kết nối ở bất cứ dạng nào, nó cung cấp “perfect forward secrecy” cho phiên SSH-1

Session key

Trang 10

Là một giá trị phát sinh ngẫu nhiên, là khoá đối xứng cho việc mã hoá truyền thông giữa một SSH client và SSH server Nó được chia ra làm 2 thành phần cho client và server trong một loại bảo bật trong suốt quá trình thiết lập kết nối SSH để kẻ xấu không phát hiện được nó

Key generator

Một chương trình tạo ra những loại khoá lâu dài( user key và host key) cho SSH SSH1, SSH2

và OpenSSH có chương trình ssh-keygen

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

A program that caches user keys in memory, so users needn't keep retyping their passphrases The agent responds to requests for key-related operations, such as signing an authenticator, but it doesn't disclose the keys themselves It is a convenience feature SSH1, SSH2, and OpenSSH have the agent ssh-agent, and the program ssh-add loads and unloads the key cache

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 SSH1, SSH2 và OpenSSH có agent ssh-agent và chương trình ssh-add để xếp vào và lấy ra khoá được lưu

- 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)

Trang 11

Hình 3-2 phác thảo việc phân chia công việc giữa các giao thức, và chúng quan hệ với nhau như thế nào, những chương trình ứng dụng và mạng Những chữ nghiêng là phần mở rộng giao thức

Hình 3-2 Đặc điểm giao thức SSH-2

SSH-2 đươc thiết kế để mở rộng và modul hoá Tất cả các giao thức lõi định nghĩa miêu tả các dịch vụ

mà chúng cung cấp và chúng phải phù hợp nhưng cho phép nhiều cơ chế có thể làm việc, cũng như là một cach để dễ dàng thêm vào một cơ chế mới Tất cả những tham số chủ yếu của kết nối SSH đều có thể được thương lượng, bao gồm những thuật toán và phương thức sử dụng trong:

 Trao đổi khoá phiên

cứ máy nào chạy SSH server, nó chỉ có nghĩa là nó phải có sẵn và có thể được bật lên nếu cần

Trang 12

3.3.1 Tóm tăt cơ chế hoạt động của SSH-2

Một phiên làm việc 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)

SSH-TRANS là khối xây dựng cơ bản cung cấp kết nối ban đầu, ghi chép giao thức, xác thực server, mã hoá cơ bản và các dịch vụ bảo toàn Sau khi thiết lập một kết nối SSH-TRANS, client có một kết nối đơn, đảm bảo, luồng truyền byte full-duplex đến một xác nhận tương đương

Kế đến, client có thể dùng SSH-AUTH thông qua kết nối SSH-TRANS đến xác thực của chính nó với server SSH-AUTH định nghĩa một cái khung đối với việc nhiều cơ chế xác thực có thể được sử dụng, sữa chữa mọi thứ như là định dạng và những yêu cầu khác của xác thực,những điều kiện để thành công hoặc có thể bị lỗi và làm thế nào client học được những phương thức có sẵn Có thể là một phương thức bất kỳ nào đó được thi hành, và giao thức cho phép trao đổi tuỳ ý một phần của bất kỳ cơ chế riêng nào để phần mở rộng giao thức dễ định nghĩa để kết hợp chặt chẽ với bất cứ phương thức xác thức mong muốn nào trong tương lai SSH-AUTH chỉ yêu cầu một phương thức: khoá công cộng với thuật toán DSS Xa hơn nữa, nó định nghĩa hai phương thức: mật khẩu và dựa trên host Một số phương thức đã được định nghĩa trong nhiều bản thảo Internet khác nhau và vài bản đã được chấp nhận rộng rãi

Sau khi xác thực, SSH client yêu cầu giao thức SSH-CONN để cung cấp một sự đa dạng của các dịch vụ thông qua một kênh đơn cung cấp bởi SSH-TRANS Điều này bao gồm mọi thứ cần để hỗ trợ nhiều phiên tương tác và phiên không tương tác: những luồng đa thành phần khác nhau (hoặc channel) ngang qua kết nối bên dưới, quản lý X, TCP và agent forwarding, truyền tín hiệu thông qua kết nối, nén

dữ liệu và thực thi chương trình từ xa

Cuối cùng, một ứng dụng có thể sử dụng SSH-SFTP qua một kênh SSH-CONN để cung cấp truyền file

và các chức năng thao tác hệ thống tập tin từ xa

3.3.2 Giao thức lớp vận chuyển SSH (SSH-TRANS)

3.3.2.1 Tiến trình tạo kết nối

Để minh hoạ, chúng ta lấy một ví dụ một Client SSH chạy trên một máy Macintosh sẽ đọc cấu hình file của nó và sau đó tạo một kết nối TCP đến phía bên đầu xa ( ví dụ đến host.foo.net) như sau:

$ ssh -vv host.foo.net

0x0090702f

debug1: Reading configuration data /Users/res/.ssh/config

debug1: Applying options for com

Trang 13

debug1: Applying options for *

debug1: Reading configuration data /etc/ssh/ssh_config

debug1: Connecting to host.foo.net [10.1.1.1] port 22

3.3.2.2 Tiến trình chọn lựa phiên bản giao thức

Càng sớm càng tốt khi server chấp nhận kết nối, giao thức SSH bắt đầu Server thông báo phiên bản giao thức của nó bằng một chuỗi văn bản:

Debug1: Remote protocol version 2.0, remote software version 4.1.0.34 SSH Secure Shell

Bạn có thể thấy chuỗi này trong kết nối đơn giản của bạn đến server như telnet:

Định dạng của thông báo là:

SSH-<phiên bản giao thức>-<lời chú thích>

Trong trường hợp này, server dùng giao thức SSH-2 và phần mềm 4.1.0.34 của SSH từ công ty bảo mật truyền thông (SSH Communication Security) Mặc dù trường chú thích có thể bao gồm mọi thứ nhưng SSH server thường chỉ đưa vào đó tên và phiên bản sản phẩm Điều này rất có ích để client thường nhận biết chính xác server dùng sản phẩm và phiên bản gì để làm việc cho đúng và tránh lỗi hoặc không tương thích với nhau

Phiên bản giao thức số “1.99” có ý nghĩa đặc biêt: nó hỗ trợ cả hai giao thức SSH-1 và SSH-2

Tiếp theo, OpenSH phân tích lời chú thích:

debug1: no match: 4.1.0.34 SSH Secure Shell

Trang 14

debug1: Enabling compatibility mode for protocol 2.0

debug1: Local version string SSH-2.0-OpenSSH_3.6.1p1+CAN-2003-0693

nhưng không tìm thấy một cái hợp với danh sách của nó thì nó biết là có vấn đề Nó chọn SSH-2 (chỉ chọn trong ví dụ này) và gửi chuỗi phiên bản của nó đến server giống như cách mà server đã gửi Nếu client và server đồng ý phiên bản của chúng đã tương thích thì tiến trình kết nối tiếp tục, nếu không thì

cả hai có thể kết thúc kết nối

3.3.2.3 Tiến trình thương lượng tham số

Đã thiết lập kết nối và đồng ý trên một phiên bản, nhiệm vụ đầu tiên của SSH-TRANS là chuẩn bị các thuộc tính bảo mật cơ bản của SSH:

Debug1: SSH2_MSG_KEXINIT sent

Debug1: SSH2_MSG_KEXINIT receive

Client gửi thông báo KEXINIT (khởi tạo tao đổi khoá) của nó và nhận một cái tữ server Ở đây có sự chọn lựa nó đưa cho server:

debug2: kex_parse_kexinit: gss-group1-sha1-toWM5Slw5Ew8Mqkay+al2g==, gss-group1-sha1-A/vxljAEU54gt9a48EiANQ==,

Diffie-diffie-hellman-group-exchange-sha1

Tương tự, nhưng cho phép client chọn từ một danh sách các nhóm tham số, địa chỉ liên quan về những khả năng có thể bị tấn công dựa trên một nhóm được bố trí trước, định nghĩa trong tài liệu phác thảo IETF “secsh-dh-group-exchange”

gss-group1-sha1-toWM5Slw5Ew8Mqkay+al2g==

gss-group1-sha1-A/vxljAEU54gt9a48EiANQ==

Trang 15

Những các tên trông kỳ quặc là được mã hóa Base64 - chúng hiển thị hai giá trị khác nhau của xác thực Kerberos, trao đổi Diffe-Hellman Một cơ sở hạ tầng Kerberos có sẵn cung cấp xác thực server tự động và linh hoạt mà không cần xác nhận SSH host key và file known-host riêng Xác thực Kerberos được cung cấp bởi GSSAPI và những tên phía sau là mã hóa Base64 của hàm băm MD5

Trong điều kiện tóm tắt của thỏa thuận, một thuật toán trao đổi khoá SSH có hai đầu ra :

o Một share secret, K

o Một “exchange hash”, H

K là tham số bí mật chính đối với phiên: SSH-TRANS định nghĩa một phương thức đối với secret K từ những nguồn gốc khoá khác nhau và những tham số mã hoá khác cần thiết cho việc mã hoá cụ thể và thuật toán toàn vẹn dữ liệu được sử dụng trong kết nối SSH Exchange hash H thì không bí mật, mặc

dù nó không cần thiết để lộ ra và nó là duy nhất trong mỗi phiên

Trao đổi khoá cũng diễn ra trên xác thực server để đề phòng việc giả mạo và tấn công middle và có thể được lặp lại trong một kết nối để thay thế một cái cũ hoặc xác thực lại server

man-in-the-Tiếp theo, client cung cấp một kiểu SSH host key mà nó có thể cháp nhận :

debug2: kex_parse_kexinit: ssh-rsa,ssh-dss,null

Trong trường hợp này, nó cung cấp RSA, DSA và null đối với trường hợp không có khoá Nó bao gồm

cả null bởi vì nó hỗ trợ Kerberos cho xác thực host Nếu dùng trao đổi khoá Kerberos thì không có SSH host key nào cần thiết đối với việc xác thực server

Sau đó, client liệt kê những thuật toán mã hoá dữ liệu mà nó hỗ trợ :

debug2: kex_parse_kexinit: cbc,arcfour,

aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se

Dữ liệu chính thì không bao giờ được mã hoá trực tiếp với phương thức khoá công khai như RSA hoặc DSA bởi vì chúng làm qua chậm Thay vào đó, chúng ta sử dụng một thuật toán khoá đối xứng như trong danh sách phia trên để bảo vệ khoá phiên đối với việc mã hoá bằng phương thức khoá công khai nếu thích hợp

Kế đến, client hiển thị danh sách các thuật toán toàn vẹn dữ liệu mà nó có sẵn:

debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,hmac-ripemd160,

hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96

Thuật toán toàn vẹn được ứng dụng để mỗi thông điệp được gửi bởi giao thức hồ sơ SSH cùng với một chuỗi số và một khoá phiên toạ ra một mã xác nhận thông điệp (MAC:message authentication code) được thêm vào mỗi thông điệp Bên nhận có thể dùngg MAC và bản sao chép khoá phiên của nó để kiểm tra thông điệp không bị biến đổi trên đường truyền, không bị truyền lặp lại và không phải là do một phiên khác gửi tới, đó là những thuộc tính của toàn vẹn dữ liệu

Cuối cùng, client cho biết kỹ thuật nén dữ liệu mà nó hỗ trợ:

Trang 16

debug2: kex_parse_kexinit: none,zlib

Sau khi gửi thông điệp thoả thuận của nó, client cũng nhận từ server danh sách các tham số mà server

hỗ trợ:

debug2: kex_parse_kexinit: diffie-hellman-group1-sha1

debug2: kex_parse_kexinit: ssh-dss,x509v3-sign-rsa

debug2: kex_parse_kexinit: none,zlib

Kế đến, mỗi bên chọn các thuật toán tương ứng từ các thuật toán hõ trợ của bên kia:

debug1: kex: server->client aes128-cbc hmac-md5 none

debug1: kex: client->server aes128-cbc hmac-md5 none

Trong trường hợp này, việc chọn lựa trên cả hai bên là giống nhau Tuy nhiên, chúng không cần thiết phải giống Việc mỗi bên chọn lựa một thuật toán hay một khoá độc lập với nhau cũng không có hại gì

3.3.2.4 Tiến trình trao đổi khoá và xác thực server

Tại thời điểm này, chúng sẵn sàng để đưa ra danh sách trao đổi khoá:

debug2: dh_gen_key: priv key bits set: 131/256

debug2: bits set: 510/1024

debug1: sending SSH2_MSG_KEXDH_INIT

Client chọn mọt thuật toán trao đổi khoá từ bộ thông báo của server, trong trường hợp này thì server chỉ đưa ra có một cái Nó sinh ra một khoá tạm thời như một phần của thuật toán Diffe-Hellman và gửi thông điệp khởi tạo của trao đổi diffie-hellman-group1-sha1, cùng lúc đó server biết được phương thức mà hai bên sử dụng và bắt đầu trao đổi

Tiếp theo, client đợi và server gửi thông điệp KEXDH_INIT của chúng:

debug1: expecting SSH2_MSG_KEXDH_REPLY

debug1: Host 'host.foo.net' is known and matches the DSA host key debug1: Found key in /Users/res/.ssh/known_hosts:169

debug2: bits set: 526/1024

debug1: ssh_dss_verify: signature correct

Trang 17

Bao gồm trong phần trả lời của server là khoá công khai SSH của nó, cùng với một chữ kí cung cấp khoá bí mật tương ứng mà nó giữ Dĩ nhiên cữ kí sẽ được kiểm tra nhưng không có ý nghĩa quan trọng, bước quan trọng ở đây là kiểm tra định danh khoá công khai của server Trong ví dụ này, client tìm một bản kết hợp tên foo.host.net với khoá được cung cấp bởi server

SSH-2 hỗ trợ hệ thống PKI (Public Key Infrastructure) để kiểm tra khoá công khai, định nghĩa một số kiểu khoá bao gồm gắn với giấy xác thực :

x509v3-sign-rsa X.509 certifivates (RSA key)

x509v3-sign-dss X.509 certificates (DSS key)

spki-sign-rsa SPKI certificates (RSA key)

spki-sign-dss SPKI certificates (DSS key)

3.3.3 Giao thức chứng thực SSH (SSH_AUTH)

3.3.3.1 Tiến trình yêu cầu chứng thực

Quá trình chứng thực được client bắt đầu bằng yêu cầu chứng thực và server hồi đáp lại Một yêu cầu chứng thực bao gồm những phần như sau:

 Username U: là định danh giấy phép của client

 Tên dịch vụ S: những việc mà client yêu cầu được truy cập, bắt đầu hoạt động thông qua kết nối SSH-TRANS sau khi chứng thực thành công Có thể có nhiều dịch vụ có sẵn nhưng thông thường chỉ

có một “ssh-connection” yêu cầu truy cập đến những dịch vụ cung cấp khác nhau thông qua giao thức SSH-CONN: đăng nhập, thi hành lệnh từ xa, chuyển tiếp cổng và tất cả những thứ khác mà người sử dụng muốn làm với SSH

 Tên phương thức M, và phương thức dữ liệu cụ thể D : phương thức xác thực cụ thể được dùng trong yêu cầu là “pasword” hoặc “publickey” và phương thức dữ liệu cụ thể truyền bất cứ thứ gì cần thiết để bắt đầu trao đổi chứng thực rõ ràng, ví dụ, một mật khẩu được kiểm tra bởi server Như là tên khoá trao đổi trong SSH-TRANS thì tên có cú pháp “@domain” có thể được dùng bởi bất cứ ai để thực hiện phương thức cục bộ, trong khi những tên không có @ phải được đăng kí tên toàn bộ các phương thức chứng thực SSH

Mỗi khi phương thức chứng thực bắt đầu, nó có thể bao gồm bất kỳ một số kiểu thông điệp chi tiết nào khác mà nó cần Hoặc trong trường hợp đơn giản, dữ liệu mang bởi yêu cầu ban đầu cũng đã đủ và server có thể hồi đáp đúng như thể Trong bất cứ trường hợp nào, sau khi yêu cầu và sau vài phương thức thông điệp theo sau đó thì server cấp phát một hồi đáp chứng thực

Trang 18

3.3.3.2 Tiến trình hồi đáp chứng thực

Một hồi đáp chứng thực có hai trạng thái: Thành công và thất bại Một thông báo thành công không mang dữ liệu nào khác ngoài thông báo là xác thực đã thành công và dịch vụ yêu cầu đã được bắt đầu Thêm nữa, thông báo SSH-TRANS được client gửi được định nghĩa cùng với giao thức của dịch vụ và SSH-AUTH được chạy

Một thông báo lỗi có sẽ có cấu trúc hư sau:

 Một danh sách các phương thức chứng thực có thể tiếp tục

 Một cờ “ partial success”

Nếu cờ partial success không bật lên thì thông báo đó có nghĩa là những phương thức chứng thực trước đó đã bị lỗi Nếu cờ partical được bật lên thì thông báo có nghĩa là phương thức đã thành công, tuy nhiên, server yêu cầu phải bổ sung những phương thức còn bị lỗi khác cho thành công trươc khi đồng ý cho truy cập

3.3.3.3 Chứng thực khoá công khai

Một yêu cầu chứng thực khoá công khai mang phương thức có tên là “publickey” và có thể có nhiều dạng khác nhau phụ thuộc vào một cờ được thiết lập Một dạng của phương thức này là:

 flag = FALSE

 Tên thuật toán

 Dữ liệu khoá

Thuật toán khoá công khai có thể dùng là những thuật toán thiết lập trong SSH-TRANS và định dạng

dữ liệu khoá phụ thuộc vào kiểu khoá như ssh-dss hay ssh-rsa

Với cờ thiết lập là FALSE, thông báo này chỉ đơn thuần là kiểm tra xác thực: nó yêu cầu server kiểm tra khoá này có được xác thực để truy cập như mong muốn của tài khoản hay không, nếu được thì gửi lại một thông báo cho biết Nếu khoá không được xác thực, hồi đáp có giá trị FALSE đơn giản

Sau khi xác nhận khoá và gửi thông báo thành công, server cho biết đã chấp nhận truy cập và kết thúc phiên SSH-AUTH

3.3.3.4 Xác thực password

Phương thức mật khẩu thì rất đơn giản: nó tên là “password” Phương thức này chỉ có trong một số bản bố sung của SSH2 Sau khi kiểm tra các tham số thích hợp, server sẽ gửi thông báo chấp nhận truy cập của client và nếu có giao thức này thì server sẽ gửi kết hợp password với thông báo đó để xác thực với client

3.3.3.5 Xác thực dựa trên host (hostbased)

Cũng là một phương thức của một số bản bổ sung Phương thức này dùng để server xác thực client

mà nó đã nhận yêu cầu có đúng hay không dựa trên tên máy Giả sử rằng bạn ở máy A gửi yêu cầu đến server nhưng không đi trực tiếp đến server mà trên đường truyền phải đi qua máy B thì server không kiểm tra máy B mà sẽ kiểm tra xem có phải bên gửi yêu cầu truy cập đến nó có phải là máy A hay không

3.3.4 Giao thức kết nối SSH-CONN

Ngày đăng: 30/03/2014, 21:34

HÌNH ẢNH LIÊN QUAN

Hình  3-1. Kiến trúc SSH - ssh cơ bản - phạm công lý
nh 3-1. Kiến trúc SSH (Trang 8)
Hình 3-2 phác thảo việc phân chia công việc giữa các giao thức, và chúng quan hệ với nhau như thế  nào, những chương trình ứng dụng và mạng - ssh cơ bản - phạm công lý
Hình 3 2 phác thảo việc phân chia công việc giữa các giao thức, và chúng quan hệ với nhau như thế nào, những chương trình ứng dụng và mạng (Trang 11)
Hình 3-2  Đặc điểm giao thức SSH-2 - ssh cơ bản - phạm công lý
Hình 3 2 Đặc điểm giao thức SSH-2 (Trang 11)
Hình 3.2 . Hoạt động của scp - ssh cơ bản - phạm công lý
Hình 3.2 Hoạt động của scp (Trang 21)
Hình 3.3 . Man-in-the-Middle attack - ssh cơ bản - phạm công lý
Hình 3.3 Man-in-the-Middle attack (Trang 25)
Hình 4.1. Mô hình hệ thống mạng dùng SSH - ssh cơ bản - phạm công lý
Hình 4.1. Mô hình hệ thống mạng dùng SSH (Trang 28)
Hình 4.2. Chọn các thông số cho Tab session - ssh cơ bản - phạm công lý
Hình 4.2. Chọn các thông số cho Tab session (Trang 29)
Hình 4.3. Thiết lập các thông số đối với Tab Window - ssh cơ bản - phạm công lý
Hình 4.3. Thiết lập các thông số đối với Tab Window (Trang 30)
Hình 4.4. chọn phiên bản cho giao thức SSH - ssh cơ bản - phạm công lý
Hình 4.4. chọn phiên bản cho giao thức SSH (Trang 31)
Hình 4.5 làm việc với phiên SSH - ssh cơ bản - phạm công lý
Hình 4.5 làm việc với phiên SSH (Trang 31)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w