Hệ thống mạng được kết nố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 đọ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ò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. 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 kết nối mạng một cách bảo mật. Trong đó SFTP sử dụng giao thức SSH để kết nối nên các dữ liệu di chuyển thông qua giao thức này cũng sẽ được mã hóa để bảo mật dữ liệu tốt hơn. Được sự hướng dẫn nhiệt tình của cô giáo Trần Thị Lượng, chúng em sẽ tìm hiểu về hai giao thức SSh và SFTP cũng như triển khai hệ thống của hai giao thức này.
Trang 1BAN CƠ YẾU CHÍNH PHỦ
Trang 2MỤC LỤC
Nội dung
Lời nói đầu ii
Chương 1 : Tìm hiểu về SSH 1
I Giao Thức SSH (Secure Shell): 1
1 Khái niệm SSH: 1
2 Lịch sử phát triển các phiên bản SSH: 1
3 các đặc điểm của SSH: 1
4 Cách thức hoạt động: 2
5 Chứng thực 4
6 Tạo private key và public key trên client 4
7 Tạo khóa trên server 6
Chương 2: TÌM HIỂU VỀ SFTP 8
II Giao thức SFTP 8
2.1 Giao thức FTP: 8
2.2 Giao thức SFTP : 11
2.3 Ưu nhược điểm của giao thức SFTP 18
Trang 3LỜI NÓI ĐẦU
Hệ thống mạng được kết nố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 đọ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ò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
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 kết nối mạng một cách bảo mật
Trong đó SFTP sử dụng giao thức SSH để kết nối nên các dữ liệu di chuyển thông qua giao thức này cũng sẽ được mã hóa để bảo mật dữ liệu tốt hơn
Được sự hướng dẫn nhiệt tình của cô giáo Trần Thị Lượng, chúng em sẽ tìm hiểu về hai giao thức SSh và SFTP cũng như triển khai hệ thống của hai giao thức này
Do khả năng còn hạn chế và kiến thức thực tế chưa nhiều nên không thể tránh khỏi những thiếu sót Rất mong nhận được góp ý của các bạn và chỉ bảo của
cô giáo để bài được chính xác, đầy đủ và hoàn thiện hơn
Trang 4Mỗ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ó 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 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 đó
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í
3 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
Trang 54 Cách thức hoạt động:
SSH làm việc thông qua 3 bước đơn giản:
- Định danh host - xác định định danh của hệ thống tham gia phiên làm việc SSH
- Mã hoá - thiết lập kênh làm việc mã hoá
- Chứng thực - xác thực người sử dụng có quyền đăng nhập hệ thống 4.1 Định danh host:
Việc định danh host được thực hiện qua việc trao đổi khoá Mỗi máy tính có
hỗ trợ kiểu truyền thông SSH có một khoá định danh duy nhất Khoá này gồm hai thành phần: khoá riêng và khoá công cộng
Khoá công cộng được sử dụng khi cần trao đổi giữa các máy chủ với nhau trong phiên làm việc SSH, dữ liệu sẽ được mã hoá bằng khoá công khai và chỉ có thể giải mã bằng khoá riêng Khi có sự thay đổi về cấu hình trên máy chủ: thay đổi chương trình SSH, thay đổi cơ bản trong hệ điều hành, khoá định danh cũng sẽ thay đổi Khi đó mọi người sử dụng SSH để đăng nhập vào máy chủ này đều được cảnh báo về sự thay đổi này
Khi hai hệ thống bắt đầu một phiên làm việc SSH, máy chủ sẽ gửi khoá công cộng của nó cho máy khách Máy khách sinh ra một khoá phiên ngẫu nhiên và mã hoá khoá này bằng khoá công cộng của máy chủ, sau đó gửi lại cho máy chủ Máy chủ sẽ giải mã khoá phiên này bằng khoá riêng của mình và nhận được khoá phiên Khoá phiên này sẽ là khoá sử dụng để trao đổi dữ liệu giữa hai máy
Quá trình này được xem như các bước nhận diện máy chủ và máy khách 4.2 Mã hoá:
- Có 3 kỹ thuật mã hóa chính đó là:
+ Mã hóa đối xứng.(AES) +Mã hóa bất đối xứng.(RSA) +Hàm băm.(MD5)
a Mã hóa đối xứng:
Trang 6Điều khiến cho thuật toán này an toàn vì key không truyền đi mà được ngầm định chia sẻ trước sau đó dung key này tính ra khóa bí mật Thông tin được truyền
đi được mã hóa bằng khóa bí mật, hacker bắt được gói tin này cũng không thể tính đươc khóa bí mật vì không thể biết thuật toán tạo key
b Mã hóa bất đối xứng:
2 bên sẽ có 1 cặp khóa (public key và private key) Public key không thể tìm
ra private key Gói tin được mã hóa bởi Private key nhưng được giải mã bằng private key của người nhận
Trang 7Mã hóa bất đối xứng không được dùng để mã hóa toàn bộ phiên SSH mà chỉ
sử dụng trao đổi thuật toán khóa.cả 2 tạo ra 1 cặp public – private key tạm, chia sẻ
1 private key để tạo 1 khóa secret key chung
c Hàm băm
Dữ liệu và khóa bí mật được băm và gửi đi cùng với bản rõ, bên nhận sẽ dung khóa mật chung để băm dữ liệu nếu 2 kết quả băm giống nhau thì xác thực đính danh người gửi và thông điệp không bị sửa đổi
5 Chứng thực
Việc chứng thực là bước cuối cùng trong ba bước, và là bước đa dạng nhất Tại thời điểm này, kênh trao đổi bản thân nó đã được bảo mật Mỗi định danh và truy nhập của người sử dụng có thể được cung cấp theo rất nhiều cách khác nhau
Chẳng hạn, kiểu chứng thực rhosts có thể được sử dụng, nhưng không phải
là mặc định; nó đơn giản chỉ kiểm tra định danh của máy khách được liệt kê trong file rhost (theo DNS và địa chỉ IP) 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: chứng thực RSA, sử dụng ssh-keygen và ssh-agent để chứng thực các cặp khoá
6 Tạo private key và public key trên client
- Tạo SSH key trên window
Chọn thuật toán mã hóa, măc định là SSH-2 RSA và chọn độ dại chuỗi
mã hóa (512 - 1024 - 2048 - 4096…)
Trang 8Và chọn khóa (nhập tùy ý)
Trang 9Note : Save private key ra file có đuôi ppk
7 Tạo khóa trên server
Tìm đến file /ect/ssh/sshd_config : chỉnh thông số
ChallengeResponseAuthentication no
PasswordAuthentication no
UsePAM no
Trên window sử dụng PuTTy để thử đăng nhập bằng SSH key
Chọn Auth để chuyển sang phần cài đặt sử dụng Key, sau đó Browse…
chọn Private Key, nhấn Open tạo kết nối
Trang 11Chương 2: TÌM HIỂU VỀ SFTP
II Giao thức SFTP
2.1 Giao thức FTP:
2.1.1 Khái quát về giao thức FTP:
- FTP (viết tắt của File Transfer Protocol dịch ra là "Giao thức truyền tập tin") thường được dùng để trao đổi tập tin qua mạng lưới truyền thông dùng giao thức TCP/IP (chẳng hạn như Internet - mạng ngoại bộ - hoặc Intranet - mạng nội bộ) Hoạt động của FTP cần có hai máy tính, một máy chủ và một máy khách) Máy chủ FTP, dùng chạy phần mềm cung cấp dịch vụ FTP, gọi là trình chủ, lắng nghe yêu cầu về dịch vụ của các máy tính khác trên mạng lưới Máy khách chạy phần mềm FTP dành cho người sử dụng dịch vụ, gọi là trình khách, thì khởi đầu một liên kết với máy chủ Một khi hai máy đã liên kết với nhau, máy khách có thể xử lý một số thao tác về tập tin, như tải tập tin lên máy chủ, tải tập tin từ máy chủ xuống máy của mình, đổi tên của tập tin, hoặc xóa tập tin ở máy chủ v.v Vì giao thức FTP là một giao thức chuẩn công khai, cho nên bất cứ một công ty phần mềm nào, hay một lập trình viên nào cũng có thể viết trình chủ FTP hoặc trình khách FTP Hầu như bất cứ một nền tảng hệ điều hành máy tính nào cũng hỗ trợ giao thức FTP Điều này cho phép tất cả các máy tính kết nối với một mạng lưới
có nền TCP/IP, xử lý tập tin trên một máy tính khác trên cùng một mạng lưới với mình, bất kể máy tính ấy dùng hệ điều hành nào (nếu các máy tính
ấy đều cho phép sự truy cập của các máy tính khác, dùng giao thức FTP) Hiện nay trên thị trường có rất nhiều các trình khách và trình chủ FTP, và phần đông các trình ứng dụng này cho phép người dùng được lấy tự do, không mất tiền
Trang 12trình khách FTP, trên cổng 21 Đường kết nối trên cổng 21 này tạo nên một dòng truyền điều khiển, cho phép các dòng lệnh được chuyển qua trình chủ FTP Để truyền tải tập tin qua lại giữa hai máy, chúng ta cần phải có một kết nối khác Tùy thuộc vào chế độ truyền tải được sử dụng, trình khách (ở chế độ chủ động - active mode) hoặc trình chủ (ở chế độ bị động - passive mode) đều có thể lắng nghe yêu cầu kết nối đến từ đầu kia của mình Trong trường hợp kết nối ở chế độ chủ động, (trình chủ kết nối với trình khách để truyền tải dữ liệu), trình chủ phải trước tiên đóng kết nối vào cổng 20, trước khi liên lạc và kết nối với trình khách Trong chế
độ bị động, hạn chế này được khắc phục, và việc đóng kết nối trước là một việc không cần phải làm
Trong khi dữ liệu được truyền tải qua dòng dữ liệu, dòng điều khiển đứng im Tình trạng này gây ra một số vấn đề, đặc biệt khi số lượng dữ liệu đòi hỏi được truyền tải là lớn, và đường truyền tải chạy thông qua những bức tường lửa Bức tường lửa
là dụng cụ thường tự động ngắt các phiên giao dịch sau một thời gian dài im lặng Tuy tập tin có thể được truyền tải hoàn thiện, song dòng điều khiển do bị bức
tường lửa ngắt mạch truyền thông giữa quãng, gây ra báo lỗi
2.1.2 Mục đích của giao thức FTP
Mục đích của giao thức FTP, như được phác thảo trong bản RFC, là:
1 Khuyến khích việc dùng chung tập tin (như chương trình ứng dụng hoặc dữ liệu)
2 Khuyến khích việc sử dụng máy tính ở xa một cách gián tiếp / âm thầm (implicit)
3 Che đậy sự khác biệt về hệ thống lưu trữ tập tin giữa các máy chủ, hầu cho người dùng không cần phải quan tâm đến những sự khác biệt riêng tư của chúng
4 Truyền tải dữ liệu một cách đáng tin cậy và có hiệu quả cao
2.1.3 Những vấn đề về bảo đảm an toàn khi dùng FTP:
FTP là một phương pháp truyền tập tin có truyền thống phi bảo an (không an toàn), vì theo như bản thiết kế gốc đặc tả của FTP, không có cách nào có thể
Trang 13truyền tải dữ liệu dưới hình thức mật mã hóa được Ảnh hưởng này có nghĩa
là, phần lớn các cài đặt của mạng lưới truyền thông, tên người dùng, mật khẩu, dòng lệnh FTP và tập tin được truyền tải, đều có thể bị người khác trên cùng một mạng lưới, "ngửi" hoặc quan sát, dùng phần mềm phân tích giao thức (protocol analyzer) (hoặc còn gọi là "dụng cụ ngửi dữ liệu", tiếng Anh là "sniffer") Nên chú ý rằng đây là vấn đề thường thấy ở các giao thức của Internet được thiết kế trước khi SSL (Secure Sockets Layer) ra đời (tạm dịch là giao thức "tầng kết nối bảo mật"), như HTTP, SMTP và Telnet Giải pháp thường thấy, đối với vấn đề này, là dùng SFTP (Secure Shell File Transfer Protocol - tạm dịch là "giao thức truyền tập tin dùng trình bao bảo mật"), một giao thức dựa trên nền của SSH, hoặc trên FTPS (FTP
over SSL) SFTP là FTP được cộng thêm chức năng mã hoá dữ liệu
của SSL hoặc TLS (Transport Layer Security - tạm dịch là "Bảo mật tầng giao vận")
Trang 14máy đích, chẳng hạn một máy dùng hệ điều hành Windows, nhận một tập tin từ một máy dùng hệ điều hành Unix, máy dùng Windows sẽ thay thế những chữ xuống dòng (carriage return) bằng một cặp mã, bao gồm mã xuống dòng và mã thêm hàng (carriage return và line feed pairs) Tốc độ truyền tải tập tin dùng
mã ASCII cũng nhanh hơn một chút, vì bit ở hàng cao nhất của mỗi byte của tập tin bị bỏ
Gửi tập tin dùng chế độ nhị phân khác với cái trên Máy gửi tập tin gửi từng bit một sang cho máy nhận Máy nhận lưu trữ dòng bit, y như nó đã được gửi sang Nếu dữ liệu không phải ở dạng thức văn bản thường, thì chúng ta phải truyền tải chúng ở chế độ nhị phân, nếu không, dữ liệu sẽ bị thoái hóa, không dùng được
Theo như cài đặt sẵn, phần lớn các trình khách FTP dùng chế độ ASCII khi khởi công Một số trình khách FTP xét nghiệm tên và nội dung của tập tin được gửi, để xác định chế độ cần phải dùng
2.2 Giao thức SFTP :
2.2.1 Khái quát chung về giao thức SFTP:
"sFTP" viết tắt của từ "Secure File Transfer Protocol", hoặc "SSH File
Transfer Protocol" là "một giao thức mạng giúp ta có thể upload hoặc download dữ liệu trên máy chủ" Ta cũng có thể sử dụng giao thức này để sửa, tạo hoặc xóa các tập tin và thư mục trên máy chủ Linux
Bởi vì sFTP sử dụng giao thức SSH để kết nối nên các dữ liệu bạn di chuyển thông qua giao thức này cũng sẽ được mã hóa để bảo mật dữ liệu tốt hơn
Các VPS Linux hoặc máy chủ riêng Linux khi mua đều đã được cài
sẵn SSH (hoặc bạn có thể cài ở bài hướng dẫn này) Và khi cài SSH nó đã bao gồm luôn giao thức sFTP để bạn có thể truy cập vào máy chủ bằng các phần mềm hỗ trợ sFTP để có thể upload/download dữ liệu trên máy chủ
Trang 15Ngoài ra một cách sử dụng thường gặp đó là nhiều bạn sẽ không quen
sửa/xóa tập tin/thư mục bằng lệnh trên SSH nên dùng giao thức sFTP sẽ giúp bạn
Bạn có thể sử dụng thông tin đăng nhập ở giao thức SSH để đăng nhập vào sFTP, điều đó có nghĩa bạn cũng sẽ sử dụng cổng mạng 22 trên máy chủ, hoặc nếu bạn đã đổi cổng 22 thành cổng khác thì bạn sẽ sử dụng cổng bạn đã đổi sang để đăng nhập
2.2.2.2 Kết nối vào SFTP trên Window
Giống như SSH, sFTP là extension của SSH nên nếu bạn dùng Windows mà muốn sử dụng được giao thức này để gửi file lên máy chủ hoặc download file từ máy chủ về thì phải dùng một sFTP Client Số lượng sFTP Client hiện nay có rất nhiều mà hầu như các phần mềm FTP Client quen thuộc
như FileZilla,FlashFXP, Cyberduck đều hỗ trợ
Tuy nhiên ở đây, mình khuyến khích bạn sử dụng WinSCP vì nó nhẹ nhàng
mà lại dễ sử dụng Sau khi tải về và cài đặt, bạn bật ứng dụng WinSCP lên
Trang 16Ở trên bạn sẽ cần điền IP của VPS hoặc hostname, port bạn đặt là 22 (trùng với port của giao thức SSH) rồi đăng nhập với user là root hoặc một user nào đó trên VPS
Sau khi ấn Login, có thể nó sẽ hỏi bạn thêm fingerprint giống như lần đầu tiên bạn đăng nhập vào SSH, cứ Yes cho nó đẹp trời nhé Khi login thành công, nó
sẽ chuyển bạn đến thư mục hiện tại của user mà bạn đăng nhập
Trang 17Bây giờ bạn có thể thoải mái duyệt các thư mục ngay trên sFTP và tiến hành sửa/upload các file mà bạn tùy thích giống như bạn đang dùng FTP vậy
Bạn có thể ra ngoài thư mục gốc và đi vòng vòng cho biết, nhớ là đừng có sửa hay xóa cái gì nhé, mình sẽ giải thích ý nghĩa của từngthư mục sau
2.2.2.3 Kết nối vào sFTP trên Linux
Trang 18Đăng nhập xong nó sẽ chuyển bạn đến thư mục của user mà bạn đăng nhập vào Nếu user đó có quyền xem các thư mục khác thì bạn có thể truy cập vào thư mục khác
Còn nếu bạn là người thích sử dụng lệnh thì có thể sử dụng các lệnh ftp theo hướng dẫn này Ubuntu và Mac đều có cài FTP sẵn
Cứ thong thả xem qua 1 vòng, nhất là xem kỹ các thư mục mà bạn thấy khi truy cập vào thư mục gốc (như bin, etc, var,….) vì phần dưới mình sẽ giải thích
ý nghĩa của từng thư mục
2.2.2.4 Ý nghĩa của các thư mục mặc định trên Linux
Khi truy cập vào thư mục gốc (thư mục /) thì bạn sẽ thấy các thư mục khác như sau: