CHƯƠNG 1: TỔNG QUAN VỀ GIAO THỨC FTP, FTPS VÀ SFTP 1. Tổng quan về giao thức FTP 1. Giới thiệu 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. Cách thức hoạt động 1. Mô hình hoạt động 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 1 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ỏ.
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: 2 Hình 1.
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.
3 • 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. 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 đó. Khi TCP đã được cài đặt xong, kênh điều khiển giữa các thiết bị sẽ được thiết lập, cho phép các lệnh được thực hiện truyền từ client tới server, và server sẽ đáp trả kết quả là các mã phản hồi.
Bước đầu tiên sau khi kênh điều khiển đã đi vào hoạt động là bước xác thực người dùng hay còn được gọi là trình tự đăng nhập (login sequence). Bước này có hai mục đích: • Access Control (Điều khiển truy cập): quá trình chứng thực cho phép hạn chế truy cập tới server với những người dùng nhất định. Nó cũng cho phép server điều khiển loại truy cập như thế nào đối với từng người dùng. • Resource Selection (Chọn nguồn cung cấp): bằng việc nhận dạng người dùng tạo kết nối, FTP server có thể đưa ra quyết định sẽ cung cấp những nguồn nào cho người dùng đã được nhận dạng đó.
Quy luật chứng thực FTP khá đơn giản, người dùng chỉ cần cung cấp username và password để đăng nhập. Trình tự của việc chứng thực như sau: 4 Hình 1. Quy trình chứng thực người dùng • Người dùng gửi một username tới server bằng lệnh USER. Sau đó password của người dùng được gửi đi bằng lệnh PASS.
• Server kiểm tra username và password trong database người dùng của nó. Nếu người dùng hợp lệ, server sẽ gửi trả lời một thông báo tới người dùng rằng phiên làm việc đã được mở. Nếu người dùng không hợp lệ, server yêu cầu người dùng thực hiện lại việc chứng thực. Sau số lần chứng thực sai nhất định, phiên sẽ được đóng và server sẽ ngắt kết nối.
Giả sử quá trình chứng thực đã thành công, server sau đó sẽ thiết lập kết nối để cho phép từng loại truy cập đối với người dùng được cấp quyền. Một số người dùng chỉ có thể truy cập vào một số file nhất định hoặc vào một số loại file nhất định. Truyền tải dữ liệu Kênh điều khiển được tạo ra giữa server và client sử dụng quá trình thiết lập kết nối và chứng thực được duy trì trong suốt phiên kết nối FTP. Các lệnh và các phản hồi được trao đổi qua kênh điều khiển, nhưng dữ liệu thì không.
Mỗi khi cần gửi dữ liệu giữa các server và client, một kênh dữ liệu phải được tạo ra. Kết nối này 5 cần thiết cho cả hoạt động truyền tập tin trực tiếp (gửi hoặc nhận một tập tin) cũng như đối với việc truyền dữ liệu ngầm, như là yêu cầu một danh sách các tệp trong thư mục nào đó trên server. FTP chỉ định hai phương thức khác nhau để tạo ra kênh dữ liệu. a) Kết nối dữ liệu dạng chủ động - Normal (Active) Data Connections Trong chế độ truyền chủ động, client sẽ đưa ra yêu cầu phiên kết nối từ port cao (>1024) đến port 21 của server bằng lệnh PORT Hình 1.
Kết nối dữ liệu dạng chủ động • Ngay sau khi nhận được yêu cầu này, server sẽ đáp trả lại một ACK đến client. Đồng thời, client cũng sẽ lắng nghe trên một port cao nào đó, chờ đợi tín hiệu đến từ server. • Sau khi đã thiết lập kết nối, server sẽ dùng port 20 của nó để truyền dữ liệu đến một port cao khác đang lắng nghe trên client. Trong phương thức kết nối này, phía client có khả năng không nhận được dữ liệu gửi từ phía server do tường lửa chặn các kết nối đến từ bên ngoài, bao gồm cả các kết nối được khởi tạo từ phía FTP server.
Việc cấu hình lại tường lửa hay mở kết nối đem lại nhiều rủi ro bảo mật cho client. 6 b) Kết nối dữ liệu dạng bị động - Passive Data Connections Với vấn đề firewall ở chế độ active nên đã xuất hiện chế độ truyền dữ liệu thứ hai trong FTP là Passive Data Connections. Kết nối dữ liệu dạng bị động • Tại chế độ truyền bị động thì client sẽ đưa ra lệnh, trong cả hai lần kết nối (do FTP cần hai kết nối TCP) thì client đều chủ động đưa ra kết nối, điều này khắc phục tình trạng firewall ở trên. • Khi khởi tạo kết nối, client sẽ đồng thời tạo ra hai port cao.
Port đầu tiên dùng để kết nối đến port 21 của server, và port thứ hai sẽ dùng để vận chuyển dữ liệu. • Port thứ nhất sẽ liên lạc với server qua port 21 bằng lệnh PASV để nói cho server biết rằng đây là chế độ truyền bị động. Khi biết đây là chế độ truyền bị động thì server sẽ lắng nghe trên một port cao, không phải port 20 và sẽ trả lại 7 thông tin cho client biết rằng đang lắng nghe ở port nào. Sau khi đã biết port lắng nghe tại server, client sẽ dùng port cao thứ hai để kết nối đến port cao mới được tạo ra tại server, server sẽ đáp trả lại bằng một ACK để chấp nhận.