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 nhauSSH (Secure Shel) ra đời là lời giải đáp cho bài toán làm thế nào để thiết lập kết nối mạng một cách bảo mật
Trang 1MỤC LỤC
LỜI NÓI ĐẦU
Trang 2Mộ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ốtnhư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 Khimộ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ònnhiều nguy cơ khác nữa khiến cho một hệ thống mạng của chúng ta trở nênkhô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ềuhình thức khác nhau
SSH (Secure Shel) ra đời là lời giải đáp cho bài toán làm thế nào để thiết lập
đủ và hoàn thiện hơn
Sinh viên Đinh Thị Hồng Gấm
CHƯƠNG 1: LÝ THUYẾT AN TOÀN MẠNG
Trang 31.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ấncô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ềunguy 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ìnhthứ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 độngthâm nhập vào máy tính
§Mật mã hóa – tiếntrì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ấptí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àinguyê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ầugiả, hay giả các yêu cầu hợp pháp.( Ví dụ như DDoS)
Trang 4§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ốngkhá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ìnhspyware đượ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ốidị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
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 4bước:
vThu thập thông tin
vTruy cập ban đầu
vThực hiện leo quyền
vPhi 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ếmmộ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
Trang 5độ 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 đíchcô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
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ềukhiển càng nhiều càng tốt Các hacker cố gắng đạt được quyền quản trị đếnmáy tính Điểm mấu chốt là thu thập được quyền quản trị - thường là mậtkhẩ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ộtmá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ệpmớ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êncác máy sử dụng hệ điều hành Windows 2000/XP, các haker cố tắt việckiểm tra và thay đổi hoặc xóa đi các log file ghi sự kiện Trên các hệ điềuhành, các hacker có thể ẩn đi các file để truy cập lần sau Trong trường hợpcực đoan, các hacker có thể format ổ đĩa cứng để tránh bị nhận dạng
1.3.Các nguy cơ bị tấn công khi sử dụng TELNET
Trang 6Ngà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ểubiế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ặcnhiều máy tính cá nhân tại nhà Bạn cũng phải được cho phép sử dụngnhữ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àomộ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áytí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 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 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ườidù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ộngcủa giao thức, chữ "telnet" còn ám chỉ đến một chương trình ứng dụng, phầnngười dùng của giao thức - hay còn gọi là trình khách (clients) Trong baonhiêu năm qua, TELNET vốn được cài đặt sẵn trong hầu hết các hệ điềuhà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ộtmá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ênmạng
Trang 7Làm sao để ngăn chặn những vấn đề nghiêm trọng đó? Bạn có thể cài mộtfirewall, 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ạncode bí mật mà không ai có thể đọc được SSH đã ra đời để thực hiện côngviệc đó.
CHƯƠNG 2: GIỚI THIỆU SSH
Trang 82.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ânlớp TCP/IP Các công cụ SSH (như là OpenSSH, PuTTy, ) cung cấp chongười dùng cách thức để thiết lập kết nối mạng được mã hoá để tạo mộtkênh kết nối riêng tư Hơn nữa tính năng tunneling (hoặc còn gọi là portforwarding) của các công cụ này cho phép chuyển tải các giao vận theo cácgiao thức khác Do vậy có thể thấy khi xây dựng một hệ thống mạng dựatrê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ộtnhà nghiên cứu ở trường đại học kĩ thuật Helsinki của Phần Lan Sau khimạ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ắppassword 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ềmmiễn phí có source code, cho phép mọi người sao chép và sử dụng mà khôngthu phí Vào cuối năm đó, ước tính có khoảng 20.000 người dùng trên 50quố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 vàothá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à InternetEngineering Task Force (IETF), nó diễn tả hoạt động cơ bản của phần mềmSSH1 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ảnmớ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 Tronglú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ómlàm việc SECSH đã trình bày bản phác thảo Internet đầu tiên đối với giaothứ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ế SSH1trong một số lĩnh vực, có 2 lí do Thứ nhất, SSH2 không có một số tiện ích,
Trang 9cá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ìnhthương mại cũng miễn phí chỉ cần phần mềm đó không được trực tiếp báncho 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ụngSSH1 đều nhận ra vài ưu điểm của SSH1 so với SSH2 và tiếp tục sử dụngSSH1, ba năm sau khi SSH2 ra đời thì SSH1 vẫn là phiên bản được sử dụngphổ biến trên Internet và vượt qua cả SSH2 là giao thức tốt hơn và bảo mậthơn
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ỏngcủ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ùngmiễn phí đối với Linux, NetBSD, FreeBSD và hệ điều hành OpenBSD.Cùng thời gian đó, OpenSSH đã đượ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 và miễn phí sẵnbên dưới OpenBSD có đăng kí OpenSH hỗ trợ cả SSH-1 và SSH-2 trongmộ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ànhkhác Mặc dù OpenSSH tương đối mới và không có vài đặc điểm có trongSSH1 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
CHƯƠNG 3: BÊN TRONG GIAO THỨC SSH
Trang 103.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ínhbình thường không bảo đảm tính bí mật, bất cứ ai truy cập đến phần cứngcủ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ữngvấn đề này trong mạng vùng cục bộ nhưng nó vẫn còn một vấn đề nghiêmtrọ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ênkết nối và được huỷ đi khi phiên kết nối thành công) SSH hỗ trợ nhiều thuậttoá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 đầukia của mạng không bị thay đổi Giao thức SSH sử dụng phương pháp kiểmtra 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 đổihay không và dữ liệu đến có đúng là do đầu kia gửi hay không Nó sử dụngthuật toán băm khoá là MD5 và SHA-1
3.1.3.Chứng minh xác thực (authentication)
Trang 11Chứ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à serverkiể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áykhá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ớiclient 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ọnnhững từ hoặc câu trong ngôn ngữ bẩm sinh nên cũng dễ bị bẻ khoá
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ênmạ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ôngthường khác (Telnet, FTP) mà chúng gửi mật khẩu qua mạng dưới dạngclear text Tuy nhiên, việc chứng thực như thế vẫn chỉ là chứng thực mậtkhẩ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ằngkhoá 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ácthự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.4.Việc cấp giấy phép
Việc cấp giấy phép 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ể chấp nhận một ai đó
có quyền gì khi chưa biết đó là ai SSH server có nhiều cách khác nhau đểgiới hạn hành động của client Truy cập đến phiên đăng nhập tác động lẫnnhau như TCP port và X Window forwarding, key agent forwarding, … cóthể tất cả đều được điều khiển mặc dù không phải tất các đặc điểm đều cósẵn trên tất cả các bản bổ sung SSH,và chúng không luôn luôn tống quáthoặc linh hoạt như bạn ý muốn Giấy phép có thể được điều khiển tại mộtmức server rộng (ví dụ: /etc/ssh/sshd_config file đối với OpenSH) hoặc theotài khoản phụ thuộc vào phương thức xác thực sử dụng
Trang 123.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ácnhư là Telnet hoặc IMAP trong một phiên SSH mang lại hiệu quả bảo mậtcủ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 Telnetbì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ùngSSH 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 serverkhi nó mã hoá và giải mã lưu lượng đi trên mạng Ở đây chúng ta nói đếnmộ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ữnggiao thức không an toàn khác chạy TCP có thể được bảo đảm bằng việcchuyể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ếtnố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 đếnmột IMAP server trên máy S để đọc và gửi mail Bình thường thì việc kếtnố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 đượctruyền đi dưới dạng clear text giữa chương trình mail của bạn và server Đốivớ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 SSHserver cho port forwarding để cung cấp việc bảo đảm đó
Tuy nhiên, SSH port forwarding chỉ hoạt động trên giao thức TCP và khônglàm việc được trên các giao thức khác như UDP hay AppleTalk
+ 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ộttrong 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ểnthị cục bộ của bạn
Trang 13+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ụngmọt đặc trưng gọi là agent forwarding, client cũng có thể liên lạc với cácagent trên những máy từ xa Điều thuận lợi là nó cho phép client trên nhiềumá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ẫnnhau cho ra các nét đặc trưng riêng
SSH cũng có khoá (keys), phiên (sessions) và những thứ ngộ nghĩnh khác Ởđây chúng ta qui định một bản tóm tắt tổng quan của tất cả các thành phần,
ví thế bạn có thể bắt đầu thấy được bức tranh lớn về SSH như sau:
Server
Trang 14Mộ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àyxác thực, cấp phép, … Trong hầu hết SSH bổ sung của Unix thì serverthườ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 mein” 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 clientxá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 haingà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 độngtrong 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ácthực, nó cho phép bạn kiểm tra trễ rằng người giữ khoá thực sự đã kí hiệuvà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ôngkhai 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
User key
Là một thực thể tồn tại lâu dài, là khoá bất đối xứng sử dụng bởi client nhưmột sự chứng minh nhận dạng của user ( một người dùng đơn lẻ có thể cónhiều khoá)
Host key
Là một thực thể tồn tại lâu dài, là khoá bất đối xứng sử dụng bới server như
sự chứng minh nhận dạng của nó, cũng như được dùng bởi client khi chứng
Trang 15minh nhận dạng host của nó như một phần xác thực đáng tin Nếu một bộmáy chạy một SSH server đơn, host key cũng là cái duy nhất để nhận dạng
bộ máy đó Nếu bộ máy chạy nhiều SSH server, mỗi cái có thể có một hostkey khác nhau hoặc có thể dùng chung Chúng thường bị lộn với server key
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ó đựợctá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ờ đượclưu trên đĩa và thành phần bí mật của nó không bao giờ được truyền qua kếtnối ở bất cứ dạng nào, nó cung cấp “perfect forward secrecy” cho phiênSSH-1
Session key
Là một giá trị phát sinh ngẫu nhiên, là khoá đối xứng cho việc mã hoá truyềnthông giữa một SSH client và SSH server Nó được chia ra làm 2 thành phầncho client và server trong một loại bảo bật trong suốt quá trình thiết lập kếtnố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) choSSH 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ácthực lẫn nhau
Agent
A program that caches user keys in memory, so users needn't keep retypingtheir 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 agent, and the program ssh-add loads and unloads the key cache
ssh-Một chương trình lưu user key trong bộ nhớ Agent trả lời cho yêu cầu đốivớ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
Trang 16Configuration file
Một chồng thiết lập để biến đổi hành vi của một SSH client hoặc SSHserver 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ưngnhiều bản bổ sung không có agent và thậm chí vài bản không có bộ sinhkhoá
3.3.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 giaothứ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ếtngườ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)
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úngquan 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
SSH-2 đươc thiết kế để mở rộng và modul hoá Tất cả các giao thức lõi địnhnghĩa miêu tả các dịch vụ mà chúng cung cấp và chúng phải phù hợp nhưngcho phép nhiều cơ chế có thể làm việc, cũng như là một cach để dễ dàngthê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
Trang 17xa hơn Nên nhớ rằng điều này chỉ có nghĩa một việc tuân theo được thựchiện đòi hỏi hỗ trợ phương thức trong đoạn mã của nó ; bất cứ một phươngthức ngoại lệ nào cũng có thể bị tăt bởi người quản trị trong một điều kiệnđặc biệt nào đó Vì thế, trên thực tế việc chứng thực khoá công khai đòiđược hỏi bởi SSH-AUTH không có nghĩa là nó luôn luôn có sẵn cho client
từ bất 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
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épgiao thức, xác thực server, mã hoá cơ bản và các dịch vụ bảo toàn Sau khithiế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 đếnxác thực của chính nó với server SSH-AUTH định nghĩa một cái khung đốivớ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ànhcô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ứccho 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ácthức mong muốn nào trong tương lai SSH-AUTH chỉ yêu cầu một phươngthức: khoá công cộng với thuật toán DSS Xa hơn nữa, nó định nghĩa haiphương thức: mật khẩu và dựa trên host Một số phương thức đã được địnhnghĩa trong nhiều bản thảo Internet khác nhau và vài bản đã được chấp nhậnrộng rãi
Sau khi xác thực, SSH client yêu cầu giao thức SSH-CONN để cung cấpmộ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ặcchannel) 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
Trang 18Cuối cùng, một ứng dụng có thể sử dụng SFTP qua một kênh 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.
SSH-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áyMacintosh sẽ đọc cấu hình file của nó và sau đó tạo một kết nối TCP đếnphía bên đầu xa ( ví dụ đến host.foo.net) như sau:
$ ssh -vv host.foo.net
OpenSSH_3.6.1p1+CAN-2003-0693, SSH protocols 1.5/2.0,
OpenSSL 0x0090702fdebug1: Reading configuration data
/Users/res/.ssh/config
debug1: Applying options for com
debug1: Applying options for *
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Connecting to host.foo.net [10.1.1.1] port 22
debug1: Connection established
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ănbản:Debug1: Remote protocol version 2.0, remote software version 4.1.0.34SSH 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:
$ telnet host.foo.net 22
Trying 10.1.1.1
Trang 19Đị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.34củ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ườngchỉ đưa vào đó tên và phiên bản sản phẩm Điều này rất có ích để clientthường nhận biết chính xác server dùng sản phẩm và phiên bản gì để làmviệ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
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_3.6.1p1+CAN-2003-0693như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ôngthì 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ố
Trang 20Đã 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ủaSSH-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ộtcái tữ server Ở đây có sự chọn lựa nó đưa cho server:
Thuật toán này được định nghĩa và yêu cầu bởi SSH-TRANS, chỉ rõ cho biết
là dùng thủ tục Diffie-Hellman để thoả thuận khoá cùng với những tham số
cụ thể khác (Oakley Group 2 và thuật toán băm SHA-1)
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==