Bài tập lớn môn Cơ sở an toàn thông tin. Mục tiêu đặt ra khi thực hiện đề tài: Chương 1. Tổng quan về các giao thức: ở chương này, chúng em đi tìm hiểu tổng quan về các giao thức, cách thức hoạt động, ưu nhược điểm của mỗi giao thức từ đó rút ra được sự khác nhau của các giao thức. Chương 2. Cách thức triển khai và công cụ sử dụng: ở chương 2, chúng em sử dụng phần mềm FileZilla Client và máy ảo VMware để thực hiện từng bước quá trình truyền file từ Client đến Server. Chương 3. Bắt gói tin bằng Wireshark: ở chương này, chúng em sử dụng phần mềm Wireshark để bắt gói tin và minh họa gói tin.
Mục tiêu thực hiện đề tài
Tên đề tài: “TÌM HIỂU VỀ GIAO THỨC FTP, FTPS VÀ SFTP”
Mục tiêu đặt ra khi thực hiện đề tài:
Chương 1 Tổng quan về các giao thức: ở chương này, chúng em đi tìm hiểu tổng quan về các giao thức, cách thức hoạt động, ưu nhược điểm của mỗi giao thức từ đó rút ra được sự khác nhau của các giao thức
Chương 2 Cách thức triển khai và công cụ sử dụng: ở chương 2, chúng em sử dụng phần mềm FileZilla Client và máy ảo VMware để thực hiện từng bước quá trình truyền file từ Client đến Server
Chương 3 Bắt gói tin bằng Wireshark: ở chương này, chúng em sử dụng phần mềm Wireshark để bắt gói tin và minh họa gói tin
TỔNG QUAN VỀ GIAO THỨC FTP, FTPS VÀ SFTP
Tổng quan về giao thức FTP
FTP viết tắt từ File Transfer Protocol, là một giao thức truyền tải tệp tin từ máy tính này đến máy tính khác thông qua một mạng TCP hoặc qua mạng Internet
Nhờ vào giao thức này nên người sử dụng có thể tải dữ liệu như hình ảnh, văn bản, các tệp tin nhạc, video từ máy tính của mình lên máy chủ đang đặt ở một nơi khác hoặc tải các tệp tin đã có trên máy chủ về máy tính cá nhân một cách dễ dàng FTP là giao thức dùng để truyền tải dữ liệu web lên máy chủ web cho dù máy chủ đặt rất xa
Giao thức FTP được sử dụng nhiều nhất vào mục đích truyền tải dữ liệu, rút gọn thời gian cũng như đáp ứng nhu cầu của việc tải và truyền đi của các dữ liệu dung lượng lớn một cách nhanh chóng Có thể gửi đi và nhận những tệp tin có dung lượng lên đến vài trăm MB Điều quan trọng là có thể cùng lúc thực hiện việc upload/download nhiều tệp tin để tiết kiệm thời gian
Hoạt động của FTP dựa trên mô hình Client- Server, trong đó một máy tính cung cấp dịch vụ FTP và 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, gọi là máy chủ FTP Máy khách chạy phần mềm FTP dành cho người dùng sử dụng dịch vụ chủ động liên kết với máy chủ Một khi hai máy tính kết nối 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ủ,
Giao thức FTP sử dụng hai kênh riêng biệt - kênh điều khiển và kênh dữ liệu - để trao đổi các tệp
Không giống như các ứng dụng khác sử dụng kết nối TCP, FTP không chỉ cần một kết nối TCP mà các mô hình FTP được thiết kế xung quanh hai kênh logic trong
2 quá trình giao tiếp giữa FTP client và FTP server, đó là Control connection và Data connection:
• Control connection (kết nối điều khiển): sử dụng port 21 trên server, đây là kết nối TCP logic chính được tạo ra khi phiên làm việc bắt đầu Nó được duy trì trong suốt phiên làm việc và chỉ cho các thông tin điều khiển đi qua như các lệnh và các phản hồi Nó không được dùng để truyền tập tin
• Data connection (kết nối dữ liệu): sử dụng port 20 trên server, mỗi khi dữ liệu được gửi từ server tới client hoặc ngược lại, một kết nối dữ liệu TCP riêng biệt được thiết lập giữa chúng Dữ liệu được truyền qua kết nối này, do đó nó được gọi là kênh dữ liệu Khi hoàn tất việc truyền dữ liệu, kết nối được hủy bỏ
Hình 1 1 Kết nối TCP trong FTP
Do chức năng điều khiển và dữ liệu được truyền tải bằng cách sử dụng các kênh riêng biệt nên mô hình FTP chia mỗi thiết bị thành hai phần giao thức logic chịu trách nhiệm cho mỗi kết nối ở trên:
• Protocol Interpreter (PI): chịu trách nhiệm quản lý kết nối điều khiển, phát và nhận lệnh cũng như phản hồi
• Data Transfer Process (DTP): chịu trách nhiệm gửi và nhận dữ liệu giữa máy khách và máy chủ
Ngoài hai thành phần trên, tiến trình bên phía người dùng còn có một thành phần thứ ba là giao diện người dùng (user interface) dùng để tương tác với người dùng FTP, thành phần này không có ở phía server Dưới đây là mô hình hoạt động của FTP:
3 Hình 1 2 Mô hình hoạt động của giao thức FTP
Chức năng từng phần trong mô hình FTP:
❖ Các tiến trình bên phía Server
• Server Protocol Interpreter (Server-PI): chịu trách nhiệm quản lý kết nối điều khiển trên server Nó lắng nghe yêu cầu kết nối hướng từ người dùng trên cổng 21 Khi kết nối được thiết lập, nó nhận lệnh từ User-PI, gửi phản hồi và quản lý tiến trình truyền dữ liệu trên server
• Server Data Transfer Process (Server-DTP): chịu trách nhiệm nhận tập tin từ User-DTP hoặc gửi tập tin tới User-DTP Server-DTP vừa làm nhiệm vụ thiết lập kết nối dữ liệu và lắng nghe kết nối dữ liệu của người dùng thông qua cổng 20 Nó tương tác với Server File System trên hệ thống cục bộ để đọc và ghi file
❖ Các tiến trình bên phía Client
• User Interface: đây là chương trình được chạy trên máy tính, nó cung cấp giao diện xử lý cho người dùng, chỉ có trên phía client Nó cho phép người dùng sử dụng những lệnh đơn giản để điều khiển các phiên FTP, từ đó có thể theo dõi được các thông tin và kết quả xảy ra trong quá trình
• User Protocol Interpreter (User-PI): chịu trách nhiệm quản lý kết nối điều khiển phía client Nó khởi tạo phiên kết nối FTP bằng việc gửi yêu cầu tới
Server-PI Sau khi kết nối được thiết lập, nó xử lí các lệnh nhận được trên User Interface, gửi chúng tới Server-PI rồi đợi nhận phản hồi trở lại Nó cũng quản lý tiến trình User-DTP
• User Data Transfer Process (User-DTP): có nhiệm vụ nhận tập tin từ User- DTP hoặc gửi tập tin tới User-DTP User-DTP có thể thiết lập hoặc lắng nghe kết nối dữ liệu từ server thông qua cổng 20 Nó tương tác với hệ thống lưu trữ tệp tin phía client
1.1.2.2 Thiết lập kênh điều khiển và chứng thực người dùng trong FTP
Trước khi kết nối được sử dụng để thực sự truyền file, kênh điều khiển cần phải được thiết lập Như trong các giao thức client - server khác, FTP server tuân theo chế độ passive trong kênh điều khiển Phía server sẽ lắng nghe cổng TCP dành riêng cho kết nối FTP là cổng 21 Phía client sẽ tạo kết nối bằng việc mở một kết nối TCP từ thiết bị người dùng tới server trên cổng đó
Tổng quan về giao thức FTPS
FTPS là một giao thức được sử dụng để truyền tải dữ liệu an toàn qua mạng
Nó là một phiên bản cải tiến của giao thức FTP, nhưng nó được bổ sung thêm tính năng bảo mật bằng việc sử dụng các giao thức SSL/TLS SSL là một giao thức mã hóa dữ liệu TLS là giao thức kế nhiệm trực tiếp của SSL và tất cả các phiên bản SSL hiện không còn được đề xuất sử dụng Tuy nhiên, thuật ngữ SSL thường được sử dụng để mô tả kết nối TLS Trong hầu hết các trường hợp, cả thuật ngữ SSL và SSL/TLS đều chỉ giao thức TLS và chứng chỉ TLS
FTPS sử dụng cả kênh điều khiển và kênh dữ liệu để truyền tải dữ liệu Khi thiết lập kết nối với máy chủ, máy khách FTPS sẽ kiểm tra chứng chỉ (certificate) để xác minh tính đáng tin cậy của máy chủ Nếu chứng chỉ hợp lệ, việc trao đổi dữ liệu có thể được tiến hành Và đặc biệt, FTPS có thể được gọi qua 2 phương thức:
• Giao thức explicit FTPS: kết nối qua cổng 990
• Giao thức implicit FTPS: kết nối trên cổng 21
Giống như FTP, FTPS bắt đầu bằng việc thiết lập một kết nối điều khiển giữa máy chủ và máy khách
Ngay sau khi kết nối điều khiển được thiết lập, FTPS sẽ bắt đầu quá trình bắt tay SSL/TLS để thiết lập một kênh bảo mật Quá trình này bao gồm việc trao đổi chứng chỉ số để xác thực danh tính của máy chủ và mã hóa dữ liệu
Các bước chính xác trong quá trình bắt tay SSL/TLS sẽ khác nhau tùy thuật vào thuật toán được sử dụng và bộ mật mã được cả hai bên hỗ trợ Thuật toán trao
10 đổi khóa RSA hiện nay đã không còn an toàn nhưng nó được sử dụng cho các phiên bản trước TLS 1.3 và được diễn ra như sau:
Hình 1 6 Quá trình bắt tay SSL/TLS
1 Gói tin “client hello”: Máy khách khởi tạo quá trình bắt tay bằng cách gửi thông báo “hello” đến máy chủ Thông báo này sẽ bao gồm phiên bản SSL/TLS máy khách hỗ trợ, bộ mật mã và một chuỗi byte ngẫu nhiên được gọi là “client random”
2 Gói tin “server hello”: Khi trả lời tin nhắn của máy khách, máy chủ sẽ gửi một tin nhắn chứa chứng chỉ SSL/TLS của máy chủ, bộ mật mã đã chọn và một chuỗi byte ngẫu nhiên khác do máy chủ tạo ra “server random”
3 Xác thực: Máy khách xác minh chứng chỉ của máy chủ với bên phát hành chứng chỉ đó Điều này nhằm xác minh danh tính của máy chủ
11 4 Bí mật tiền chủ (premaster secret): Máy khách gửi thêm một chuỗi byte ngẫu nhiên khác, gọi là “premaster secret” Premaster secret này được mã hóa bằng khóa công khai và chỉ có thể được giải mã bằng khóa riêng bởi máy chủ (Máy khách lấy khóa công khai từ chứng chỉ SSL/TLS của máy chủ.)
5 Khóa riêng được sử dụng: Máy chủ sử dụng khóa riêng để giải mã premaster secret
6 Khóa phiên được tạo: Khóa phiên được tạo từ “client random”, “server random” và “premaster secret” Khóa phiên sẽ được sử dụng trong suốt quá trình trao đổi thông tin
7 Máy khách đã sẵn sàng: Máy khách gửi thông báo “finished” được mã hóa bằng khóa phiên
8 Máy chủ đã sẵn sàng: Tương tự như máy khách, máy chủ gửi thông báo
“finished” được mã hóa bằng khóa phiên
9 Quá trình bắt tay hoàn tất và quá trình trao đổi tiếp tục bằng cách sử dụng khóa phiên
Quá trình bảo mật có 2 chế độ:
• Implicit FTPS: tự động bắt đầu kết nối bảo mật SSL/TLS ngay khi máy khách FTP kết nối với máy chủ FTP Trong chế độ này, máy chủ FTP xác định một cổng cụ thể (port 990) để máy khách sử dụng kết nối an toàn Vì implicit SSL có một cổng chuyên dụng được sử dụng cho việc kết nối an toàn nên các kết nối implicit SSL yêu cầu ít chi phí hơn khi thiết lập phiên Có nhiều máy chủ FTP khác nhau hỗ trợ chế độ này, bao gồm GlobalSCAPE Secure FTP Server, RaidenFTPD, IBackup’s FTP server và các máy chủ khác
• Explicit FTPS: Máy khách bắt đầu kết nối bằng cách mở kết nối TCP thường (như trong FTP) Sau khi kết nối, máy khách sẽ gửi lệnh để báo cho máy chủ biết nó muốn chuyển sang kết nối được mã hóa (SSL/TLS) Lệnh ở đây là
“AUTH SSL hoặc AUTH TLS” Khi máy khách gửi lệnh này, máy chủ phản hồi lại cho biết nó đã sẵn sàng chấp nhận kết nối được mã hóa Điều này thường được thực hiện trên cổng FTP thông thường, (21)
12 Hình 1 7 Cách thức hoạt động của Implicit FTPS và Explicit FTPS
Sau khi thiết lập bảo mật hoàn tất, giống như FTP, FTPS yêu cầu người dùng cung cấp tên đăng nhập và mật khẩu để truy cập vào máy chủ Quá trình xác thực này cũng được mã hóa để bảo mật thông tin
Kênh điều khiển và kênh dữ liệu đều được mã hóa bởi SSL/TLS để đảm bảo bảo mật cho người dùng cũng như dữ liệu truyền tải không bị can thiệp hoặc nghe lén
− Sử dụng SSL/TLS để mã hóa dữ liệu truyền tải, bảo vệ thông tin khỏi việc nghe lén và tấn công trung gian
− FTPS được hỗ trợ trên nhiều hệ điều hành và máy chủ FTP, làm cho nó phổ biến và tương thích với nhiều ứng dụng và môi trường
− FTPS hỗ trợ xác thực đối với cả máy chủ và người dùng Điều này giúp đảm bảo rằng chỉ những người dùng được ủy quyền có thể truy cập vào máy chủ và thực hiện các thao tác tệp tin
− Cấu hình tường lửa, quản lý cổng phức tạp do sử dụng hai kết nối
− Một số hệ thống và thiết bị cũ có thể không hỗ trợ FTPS hoặc gặp vấn đề khi làm việc với các giao thức bảo mật hiện đại
− Mã hóa và giải mã dữ liệu sử dụng SSL/TLS có thể tăng tải công việc lên máy chủ và máy khách, ảnh hưởng đến hiệu suất, đặc biệt khi xử lý nhiều kết nối đồng thời
Tổng quan về giao thức SFTP
SFTP (viết tắt của Secure File Transfer Protocol, hoặc SSH File Transfer Protocol) được phát triển vào những năm 1990 là một giao thức được thiết kế để cung cấp các chức năng của FTP thông qua một kênh bảo mật SSH (Secure Shell)
SFTP không phải là một phần mở rộng của FTP mà là một giao thức hoàn toàn khác được xây dựng từ đầu để hoạt động qua SSH
SFTP giúp ngăn chặn việc chuyển giao thông tin đăng nhập mà không được mã hóa như giao thức FTP thông thường Nó cũng tạo ra một mã định danh duy nhất và phải được truyền lại từ máy khách để hoàn thành việc truyền dữ liệu Nhờ có các biện pháp này, người dùng có thể yên tâm hơn khi việc chuyển file với SFTP sẽ có tính bảo mật cao hơn
Hình 1 8 Kết nối TCP trong SFTP
Trước khi quá trình truyền tệp có thể diễn ra, máy khách kết nối TCP tới máy chủ Sau đó, thiết lập kết nối SSH Có 3 bước để thiết lập kết nối SSH:
Hình 1 9 Quá trình kết nối SSH
1 Máy khách xác minh máy chủ Máy chủ SSH luôn chờ kết nối ở cổng 22 Khi máy khách kết nối, nó sẽ bắt đầu xác minh danh tính của máy chủ Có hai tình huống có thể xảy ra khi xác minh:
• Máy khách truy cập vào máy chủ lần đầu tiên nên người dùng phải xác minh khóa công khai của máy chủ theo cách thủ công Khi lần đầu người dùng kết nối, máy client sẽ hiển thị một fingerprint (dấu vân tay) của máy chủ, người dùng xác thực fingerprint bằng cách so sánh nó với một fingerprint được cung cấp trước đó (từ quản trị viên hệ thống) hoặc đồng ý tin tưởng fingerprint của
15 máy chủ đang kết nối Sau khi fingerprint được xác thực, thông tin của máy chủ được lưu trên máy client để sử dụng cho các lần kết nối sau này
• Máy khách từng truy cập vào server nên đã có thông tin về máy chủ và có thể xác minh mà không cần đến người dùng
2 Quá trình trao đổi khóa giữa máy khách và máy chủ Quá trình tạo khóa phiên trong SSH thường sử dụng giao thức trao đổi khóa
Diffie-Hellman Trước khi tạo khóa phiên, phía client và server đã trao đổi các thuật toán được sử dụng để mã hóa Thuật toán Diffie-Hellman giúp mỗi bên có thể kết hợp khóa riêng của mình và khóa công khai từ bên còn lại để tạo khóa phiên bí mật giống hệt nhau Từ thời điểm này, tất cả dữ liệu truyền giữa máy khách và máy chủ được mã hóa bằng khóa phiên, các cặp khóa được sử dụng để tạo khóa phiên tách biệt với các khóa SSH được sử dụng để xác thực máy khách và máy chủ
3 Máy chủ xác thực máy khách
• Máy chủ xác thực máy khách bằng cặp khóa SSH Một cặp khóa được tạo từ khóa chung mà cả hai bên đều biết và khóa riêng (chỉ có người dùng được biết) Nó sẽ so sánh khóa chung SSH với khóa chung đã lưu
• Máy chủ tạo ra một số nounce, sau đó gửi cho máy khách Máy khách sẽ phải giải số nounce bằng khóa riêng
• Máy khách kết hợp số nounce vừa giải mã với khóa phiên được chia sẻ từ trước rồi dùng hàm băm MD5 để tính giá trị băm
• Máy chủ cũng dùng hàm băm MD5 để tính giá trị số nounce và khóa phiên
Sau đó, so sánh với giá trị máy khách gửi Nếu hai giá trị trùng khớp, máy khách được xác thực
Quá trình SSH hoàn tất
Khi client thực hiện các lệnh để tải tệp từ server hoặc tải lên server, dữ liệu được truyền tải qua kênh SSH đã thiết lập Dữ liệu được mã hóa trong quá trình truyền tải, đảm bảo tính bảo mật cao
16 Khi quá trình truyền tải hoàn tất, hoặc khi không cần thiết lập kết nối nữa, client có thể đóng kết nối SSH Điều này giúp giải phóng tài nguyên và bảo vệ tính bảo mật của hệ thống
− Các thông tin đăng nhập và quá trình truyền dữ liệu đều được mã hóa
− Có thể nâng cao tính bảo mật bằng việc kết hợp xác thực bằng key pair với tên người dùng và password
− Sử dụng cùng một cổng và hạ tầng bảo mật như SSH, giảm thiểu cấu hình tường lửa và mạng
− Quản lý các khóa giao thức SSH không dễ dàng
− Private key cần được lưu trữ trên thiết bị mà bạn muốn truyền tệp, cần được bảo vệ chống trộm hoặc mất
− Kích hoạt khóa SSH phức tạp, cần có chuyên môn
− SFTP yêu cầu SSH hoạt động, do đó, nếu có vấn đề với SSH hoặc cấu hình SSH không đúng, SFTP cũng sẽ bị ảnh hưởng.
So sánh FTP, FTPS và SFTP
Đặc điểm FTP FTPS SFTP
Phổ biến Rất phổ biến Phổ biến trong các môi trường cần bảo mật
Phổ biến trong các môi trường cần bảo mật cao
FTP thiết lập kết nối điều khiển trên cổng TCP 21, kết nối dữ liệu cổng
FTPS cũng sử dụng kênh điều khiển và dữ liệu, nhưng sau khi kết nối với máy chủ, máy khách FTPS sẽ tiến hành kiểm tra certificate xem có đáng tin cậy không
SFTP chuyển tệp theo kết nối được thiết lập bởi giao thức SSH giữa máy khách và máy chủ
Khó khăn (nhiều cổng) Khó khăn (nhiều cổng) Dễ dàng (một cổng)
Mật khẩu và dữ liệu FTP được gửi ở định dạng bản rõ, không mã hóa
FTPS Explicit và FTPS Implicit là các biến thể được bảo vệ của FTP sử dụng mã hóa SSL/TLS
SFTP mã hóa dữ liệu trước khi gửi đi Mã hóa dữ liệu qua mật mã mã hóa được các bên thỏa thuận Việc bảo vệ các phiên tiếp tục diễn ra thông qua việc triển khai các khóa công khai và riêng
Xác thực Mật khẩu Mật khẩu, chứng chỉ số Mật khẩu, khóa công khai
Quản lý chứng chỉ/ khóa Đơn giản Phức tạp (quản lý chứng chỉ)
Phức tạp (quản lý khóa
Phương thức truyền trực tiếp Thiết lập kênh
Dùng SSH tạo kênh mã hóa (encrypted tunnel)
Tốc độ Cao Trung bình Thấp
Căn bản FTP không cung cấp kênh bảo mật để truyền tệp giữa các máy và server
FTPS sử dụng chứng chỉ SSL để cung cấp bảo mật
SFTP cung cấp một kênh an toàn để chuyển các tệp giữa máy tính và server
Bảng 1 1 So sánh FTP, FTPS và SFTP
CÁCH THỨC TRIỂN KHAI VÀ CÔNG CỤ SỬ DỤNG
Giới thiệu công cụ FileZilla
Phần mềm FileZilla là một tiện ích FTP miễn phí (mã nguồn mở), có sẵn dưới dạng Client version và Server version, cho phép người dùng chuyển các tệp từ local computer sang một remote computer FileZilla cung cấp một số tính năng như sau:
• Site Manager: tạo và lưu trữ danh sách các FTP servers và dữ liệu kết nối liên quan
• Directory Comparison: cho phép người dùng so sánh nội dung của local và remote directory
• File and Folder View: tương tự như file manager, cho phép người dùng chỉnh sửa tệp và thư mục và cung cấp khả năng kéo và thả giữa các local và remote directories
• Transfer Queue: hiển thị trạng thái chuyển tập tin đang tiến hành hoặc đang chờ xử lý
• FileZilla có khả năng chạy trong Windows, macOS và Linux Nó hỗ trợ các giao thức FTP, SFTP và FTPS.
Cài đặt FileZilla Client
Truy cập trang chủ tại https://filezilla-project.org/ và tải về phiên bản dành cho Client
19 Chọn phiên bản phù hợp với nhu cầu
Hình 2 2 Download phiên bản phù hợp Chạy file sau khi tải Chọn I Agree và Next
Hình 2 3 Cài đặt phần mềm FileZilla Client
20 Chọn Finish để kết thúc quá trình cài đặt và khởi động công cụ
Hình 2 4 Cài đặt phần mềm FileZilla Client
Chi tiết sử dụng công cụ
Giao diện phần mềm sau khi cài đặt
Hình 2 5 Giao diện làm việc của FileZilla Client
2.3.1 Kết nối với máy chủ FTP
2.3.1.1 Kết nối với máy chủ FTP bằng Quickconnect
Hình 2 6 Các thông số cơ bản khi kết nối bằng Quickconnect
Nhập thông tin như sau để truy cập vào FTP Server:
1 Host: IP host/VPS/server hoặc hostname
2 Username: tên đăng nhập FTP
4 Port: cổng để kết nối tới FTP (tự chọn hoặc mặc định FTP là 21, SFTP là 22)
22 Kết nối thành công khi nhận được thông báo như sau:
Hình 2 7 Thông báo khi kết nối thành công
2.3.1.2 Kết nối với máy chủ FTP bằng Site Manager
Trường hợp muốn lưu trữ kết nối nhằm thuận tiện cho quá trình sử dụng sau này Thực hiện như sau:
Bước 1: File → Site Manager… để vào phần quản lý Site (hoặc nhấn tổ hợp phím Ctrl+S)
Hình 2 8 Cấu hình FileZilla bằng Site Manager
23 Sau đó, giao diện Site Manager sẽ hiện ra:
Hình 2 9 Giao diện Site Manager
Bước 2: Chọn New site rồi đặt tên để dễ quản lý Sau đó thiết lập các thông số cơ bản cho kết nối FTP này:
Hình 2 10 Các thông số cơ bản của Site Manager
• Protocol: Chọn giao thức FTP
• Host: Địa chỉ của FTP server
• Port: Cổng kết nối tới FTP server (mặc định là 21)
• Encryption: Cách dữ liệu được mã hóa
• Logon Type: Kiểu đăng nhập
• User: Tên đăng nhập FTP
Chọn OK rồi thoát Site Manager
Bước 3: Khi đã tạo xong, vào lại Site Manager Sau đó chọn chọn Site Vừa tạo rồi nhấn Connect
Nhập password của tài khoản FTP
Hình 2 11 Nhập password của tài khoản FTP
25 Nếu đăng nhập thành công sẽ có thông báo như hình dưới
Hình 2 12 Thông báo khi kết nối thành công
2.3.2 Sử dụng FileZilla để truyền file
Sau khi kết nối FTP thành công tới server, FileZilla sẽ có hai phần phần đại diện cho dữ liệu ở 2 nơi: Local site (cửa sổ bên trái) và Remote site (cửa sổ bên phải):
Hình 2 13 Giao diện sau khi kết nối FTP thành công đến Server
2.3.2.1 Upload file lên FTP Server Ở bên phía Local site, ta chọn file cần upload, chuột phải → chọn Upload
26 Hình 2 14 Upload file từ máy tính lên Server
Khi hoàn tất quá trình upload, sẽ thấy file hiển thị trên FTP server Cùng các thông báo truyền file thành công như hình dưới đây:
Hình 2 15 Upload file thành công
2.3.2.2 Download file từ FTP Server
Tương tự như việc upload file Trên Local site sẽ chọn thư mục nơi tải file từ FTP server về Bên FTP server sẽ chọn file cần download, chuột phải chọn
Download (hoặc kéo thả chuột)
Hình 2 16 Download file từ server về máy tính
28 Khi quá trình download hoàn tất, sẽ thấy file trên Local site và thông báo quá trình tải thành công
Hình 2 17 Download file thành công
2.3.2.3 Xóa file trên FTP Server Để xóa file trên server, chọn các file cần xóa trên server, click chuột phải chọn
29 Hình 2 18 Xóa file trên server
Sau khi thực hiện xong, file đã xóa sẽ không còn trên server và hiển thị thông báo xóa thành công như sau:
Hình 2 19 Xóa file thành công
2.3.2.4 Đổi tên file trên FTP Server Để đổi tên file trên server, chọn các dữ liệu trên server, click chuột phải rồi chọn Rename, sau đó sửa tên file theo mình muốn như hình dưới đây:
Hình 2 20 Đổi tên file trên server
31 Sau khi sửa tên file thành công, sẽ thấy tên file đã được sửa lại và thông báo thành công như sau:
Hình 2 21 Đổi tên file thành công
2.3.3 Một số chức năng khác
Ngoài các chức năng trên, còn có một số chức năng như: View/Edit (xem, chỉnh sửa file), Create directory (tạo thư mục), Create new file (tạo file mới),…
Hình 2 22 Một số chức năng khác
MINH HỌA GÓI TIN CỦA CÁC GIAO THỨC
Giới thiệu phần mềm Wireshark
Wireshark là một công cụ phân tích giao thức mạng hoặc một ứng dụng thu thập các gói từ kết nối mạng, chẳng hạn như từ máy tính đến văn phòng tại nhà hoặc internet Packet là tên được đặt cho một đơn vị dữ liệu riêng biệt trong mạng Ethernet thông thường
Wireshark là công cụ nghe lén gói tin được sử dụng thường xuyên nhất trên thế giới Giống như bất kỳ trình thám thính gói nào khác, Wireshark thực hiện ba việc:
• Bắt gói tin: Wireshark lắng nghe kết nối mạng trong thời gian thực và sau đó lấy toàn bộ luồng lưu lượng truy cập - có thể là hàng chục nghìn gói cùng một lúc
• Lọc gói tin: Wireshark có khả năng cắt và chia nhỏ tất cả dữ liệu trực tiếp ngẫu nhiên này bằng các bộ lọc Bằng cách áp dụng bộ lọc, có thể thu được thông tin người dùng cần xem
• Trực quan hóa: Wireshark, giống như bất kỳ trình thám thính gói nào, cho phép người dùng đi sâu vào chính giữa gói mạng Nó cũng cho phép người dùng hình dung toàn bộ cuộc hội thoại và luồng mạng.
Sử dụng Wireshark để bắt gói tin
Sau khi tải về và cài đặt, khởi động nó bằng cách double-click vào tên của Network interface trong danh sách phía dưới “Capture” để bắt đầu bắt gói tin trên card mạng đó Đường biểu diễn phía sau tên Interface thể hiện lưu lượng mạng đang sử dụng
34 Hình 3 1 Giao diện Wireshark sau khi cài đặt Đối với bài này, muốn bắt gói tin trong máy ảo VMware thì double-click vào
“VMware Network Adapter VMnet1” (do máy ảo được cấu hình card mạng ở VMnet1) Ngoài ra, cũng có thể thiết lập các biểu thức ở phần “…using this filter” để lọc và capture những packet chỉ định khi thỏa mãn yêu cầu
Hình 3 2 Thông tin card mạng
35 Để xem địa chỉ mạng trên máy ảo, gõ câu lệnh “ip a” vào terminal trên máy ảo và sẽ nhận được địa chỉ IP của máy ảo là 192.168.1.100 Cụ thể:
Hình 3 3 Lấy địa chỉ mạng trên máy ảo Để xem địa chỉ IP trên máy thật, gõ lệnh “ipconfig” vào cmd trên máy tính và ở đây địa chỉ IP tương ứng với VMnet1 là 192.168.1.1:
Hình 3 4 Lấy địa chỉ mạng trên máy thật
Sau đó, các packet sẽ bắt đầu hiển thị theo thời gian thực Wireshark sẽ capture từng packet được gửi đến hoặc đi từ hệ thống của chúng ta Click vào nút “Stop” màu đỏ nếu muốn dừng việc capture lại như hình sau:
Hình 3 5 Các gói tin được capture
36 Giao diện chính của Wireshark được chia thành 3 phần như hình sau:
Hình 3 6 Giao diện chính của Wireshark
1 Packet List: Chứa danh sách toàn bộ packet của file capture hiện tại Nó thể hiện số thứ tự của gói tin, thời gian mà gói tin được bắt, source và destination IP, protocol của packet, chiều dài gói tin và các thông tin tổng quan khác
2 Packet Details: Khi chọn một gói tin ở phần Packet List, thông tin chi tiết của gói tin sẽ được thể hiện ở phần Packet Details Các thông tin chi tiết có thể được collapsed hoặc expanded bằng cách click vào mũi tên hình tam giác ở đầu dòng
3 Packet Bytes: Thể hiện packet ở dưới dạng hex hoặc binary Thể hiện cách mà packet được truyền trên đường truyền.
Phân tích gói tin với Wireshark
3.3.1 Tìm kiếm các gói tin
Tại giao diện chính Wireshark, nhập các thông tin packet cần để lọc ra những packet thỏa mãn điều kiện trong file capture Ví dụ, ở đây muốn bắt các gói tin FTP thì nhập “ftp” vào “Display Filter”, sẽ hiện ra các gói tin FTP trên packet list Cụ thể như sau:
37 Hình 3 7 Tìm kiếm các gói tin theo giao thức FTP
3.3.2 Cách đọc các gói tin
Trong các file đã capture, click vào một packet để chọn nó, sau đó xem chi tiết về nó Ví dụ ở đây, chọn gói tin có số thứ tự là 50 như hình dưới:
Hình 3 8 Đọc một gói tin cụ thể Ở khung cửa sổ Packet List sẽ cung cấp cho chúng ta các thông tin như sau:
• No: số thứ tự của gói tin là 50
• Time: thời gian tương đối mà gói tin này được bắt là 4.863219
• Source: địa chỉ IP nguồn (máy local) là 192.168.1.1
• Destination: địa chỉ IP đích (máy server) là 192.168.1.100
• Length: chiều dài của gói tin là 71
• Protocol: giao thức của gói tin là FTP
• Info: upload gói tin “test 1.txt” lên server Ở khung cửa sổ Packet Details sẽ cho ta thông tin chi tiết từng Layer của packet như sau:
Hình 3 9 Thông tin chi tiết của packet ở cửa sổ Packet Details
• Ethernet II: Destination, Source, Mac Address
• Internet: Source IP, Destination IP, TTL, Protocol, Flag, Checksum,…
• Transmission Control Protocol: Src port, Dst port
• File Transfer Protocol (FTP): Stor test 1.txt (các lệnh yêu cầu và phản hồi) Ở khung cửa sổ của Packet Bytes thể hiện gói tin ở dạng Hex Khi click chọn 1 trường nào đó ở phần Packet Details, những bytes liên quan đến phần đó sẽ được tô đậm ở phần Packet Bytes tương ứng Cụ thể như sau:
Hình 3 10 Thông tin các gói tin ở cửa sổ Packet Bytes Ngoài ra, cũng có thể sử dụng “Follow TCP stream”, chọn một packet rồi click chuột phải chọn “Follow” → “TCP Stream” Sau đó, một hộp thoại sẽ hiện ra
39 cho dữ liệu trao đổi giữa Client và Server trong luồng tương ứng và các packet liên quan Cụ thể như sau:
Hình 3 11 Hộp thoại trao đổi dữ liệu giữa Client và Server
40 Sử dụng Wireshark để bắt gói tin FTP thì thu được như hình dưới
Hình 3 12 Minh họa gói tin FTP bằng Wireshark a) Quá trình thiết lập kênh điều khiển
Trước khi thiết lập kết nối để truyền dữ liệu, FTP phải thực hiện thiết lập kênh điều khiển trên cổng 21 bằng quá trình bắt tay 3 bước
Hình 3 13 Quá trình bắt tay 3 bước
Server (192.168.1.100) lắng nghe cổng 21, phía Client (192.168.1.1) tạo kết nối bằng việc mở một kết nối TCP trên cổng 64221 từ thiết bị người dùng tới server trên cổng đó b) Quá trình xác thực người dùng
Khi TCP đã được thiết lập xong, cả hai máy có thể bắt đầu trao đổi dữ liệu
FTP sẽ yêu cầu tên người dùng và mật khẩu
Hình 3 14 Quá trình xác thực thông tin đăng nhập
41 Client gửi username bằng lệnh USER, Server nhận lệnh này và kiểm tra xem tên người dùng có tồn tại hay không, sau đó trả về mã trạng thái yêu cầu nhập mật khẩu
Hình 3 15 Mã phản hồi xác thực username từ Server
Client gửi password bằng lệnh PASS, Server nhận lệnh này và kiểm tra xem tên người dùng có hợp lệ hay không, sau đó trả về mã trạng thái đăng nhập thành công
Hình 3 16 Mã phản hồi xác thực password từ Server
Do FTP không thực hiện mã hóa dữ liệu và kênh truyền nên username và password được truyền đi ở dạng rõ, không đảm bảo an toàn c) Upload file
Client gửi lệnh PASV dùng để khởi tạo kết nối dữ liệu ở dạng bị động Khi biết đây là chế độ truyền bị động thì server sẽ lắng nghe trên một port cao và sẽ trả
42 lại thông tin cho client biết rằng đang lắng nghe ở port nào: “227 Entering Passive Mode (192,168,1,100,156,23)”
Passive port được tính như sau: 156 * 256 + 23 = 39959
Hình 3 17 Gói tin upload file trong FTP
Sau khi đã biết port lắng nghe tại server, client sẽ dùng port cao thứ hai (64238) để kết nối đến port cao mới (39959) được tạo ra tại server Client gửi lệnh STOR để upload file có tên “test 1.txt” Server phản hồi status 150 cho biết nó đã nhận được dữ liệu từ phía client và status 226 cho biết quá trình truyền dữ liệu đã hoàn tất d) Download file
Tương tự như quá trình upload file, giữa Client và Server phải thiết lập kênh dữ liệu
Client gửi lệnh PASV để yêu cầu truyền dữ liệu ở chế độ passive Server sẽ phản hồi lại thông số port: “227 Entering Passive Mode (192,168,1,100,138,121)”
Passive port được tính như sau: 138 * 256 + 121 = 35449
Hình 3 18 Gói tin download file trogn FTP
Sau khi đã biết port lắng nghe tại server, client sẽ dùng port cao thứ hai (64250) để kết nối đến port cao mới (35449) được tạo ra tại server Client gửi lệnh RETR để dowload file có tên “download.txt” Server phản hồi status 150 cho biết
43 nó đã mở một kết nối dữ liệu trong chế độ nhị phân để truyền dữ liệu cho tệp tin
"download.txt" với kích thước là 0 byte và status 226 cho biết quá trình truyền dữ liệu đã hoàn tất e) Delete file
Client sử dụng lệnh DELE để yêu cầu Server xóa 1 tập tin cụ thể, ở đây là
“test 1.txt”, tại đường dẫn /ftp/upload
Hình 3 19 Gói tin delete file trong FTP
Sử dụng Wireshark để bắt gói tin FTPS thì thu được như hình dưới
Hình 3 20 Minh họa gói tin FTPS bằng Wireshark
44 Đầu tiên, khi truyền bằng FTPS, Client và Server cũng thực hiện quá trình bắt tay 3 bước để thiết lập kết nối
Hình 3 21 Quá trình bắt tay 3 bước
Server phản hồi lại yêu cầu từ máy Client báo hiệu rằng dịch vụ FTP đã sẵn sàng và đang chờ lệnh tiếp theo bằng status 220, nội dung gói tin đính kèm cả phiên bản máy chủ FTPS đang sử dụng (chạy vsFTPd phiên bản 3.0.5)
Tiếp theo, Client gửi lệnh AUTH TLS để yêu cầu một phiên kết nối bảo mật
TLS - bắt đầu quá trình đàm phán về việc sử dụng SSL/TLS để bảo vệ kênh điều khiển
Hình 3 22 Yêu cầu kết nối TLS
Server kiểm tra và nếu nó hỗ trợ và sẵn sàng thiết lập kết nối bảo mật, nó sẽ phản hồi bằng mã trạng thái 234 kèm theo thông báo "Proceed with negotiation" để
Client biết rằng Server đã sẵn sàng tiến hành thương lượng bảo mật Sau khi nhận được phản hồi 234, Client và Server sẽ bắt đầu quá trình bắt tay SSL/TLS
Hình 3 23 Thiết lập kết nối an toàn FTPS
45 Ở gói tin 8 cho biết, Client gửi một thông báo Client Hello đến Server, đây là gói đầu tiên trong quá trình bắt tay TLS
Hình 3 24 Gói tin Client Hello trong FTPS
• Nội dung của gói là Handshake (có mã là 22)
• Tin nhắn Client Hello được gửi từ Client đến Server Thông báo bắt đầu quá trình bắt tay
• Phiên bản SSL và TLS cao nhất được Client hỗ trợ
• Dữ liệu ngẫu nhiên được Client tạo ra để sử dụng trong quy trình tạo khóa
• Các mật mã được Client hỗ trợ Các mật mã được liệt kê theo thứ tự ưu tiên
• Các phương pháp nén dữ liệu được Client hỗ trợ
Server sẽ đáp trả lại với thông báo Server Hello
46 Hình 3 25 Gói tin Server Hello trong FTPS
• Nội dung của gói là Handshake (có mã là 22)
• Phiên bản TLS sẽ được sử dụng trong phiên này
• Tin nhắn Server Hello được gửi từ Server đến Client
• Dữ liệu ngẫu nhiên được Server tạo ra để sử dụng trong quá trình tạo khóa
• Bộ mật mã sẽ được sử dụng trong cuộc trò chuyện này Nó được chọn từ danh sách mật mã được gửi Client
• Phương pháp nén dữ liệu sẽ được sử dụng cho phiên Sau hai bước này, client và server đã thương lượng xong các thuật toán mã, nén dữ liệu, thuật toán băm, từ lúc này tất cả các gói tin trao đổi giữa client và server đều sẽ được mã hóa bằng các thuật toán và session key đã thương lượng Client thông báo xác nhận kết thúc giai đoạn HandShake Protocol bằng SSL Change Cipher Spec Protocol:
47 Hình 3 26 Gói tin Change Cipher Spec trong FTPS
Lúc này, tất cả dữ liệu trao đổi sau đó sẽ được mã hóa và bảo vệ bởi các tham số bảo mật đã thỏa thuận
Hình 3 27 Dữ liệu đã được mã hóa trong FTPS
Sử dụng Wireshark để bắt gói tin SFTP thì thu được như hình dưới
Hình 3 28 Minh họa gói tin SFTP bằng Wireshark
48 Tương tự như FTP và FTPS, SFTP cũng sẽ thiết lập một kênh điều khiển bằng quá trình bắt tay 3 bước trên cổng 22
Hình 3 29 Quá trình bắt tay 3 bước trong SFTP
Client gửi một gói tin khởi tạo kết nối đến Server Gói tin này chứa phiên bản của giao thức SSH mà Client hỗ trợ, ở đây là SSH-2.0-FileZilla_3.67.0 Server phản hồi với phiên bản của giao thức SSH mà nó hỗ trợ: SSH-2.0-OpenSSH_8.9p1 Ubuntu-3ubuntu0.7
Hình 3 30 Gói tin chứa thông tin về phiên bản SSH