Passive FTP - Phân biệt những đặc điểm cơ bản của Active FTP và Passive FTP
File Transfer Protocol (FTP) có hai chế độ: Active FTP và Passive FTP. Trong Active FTP, máy khách kết nối máy chủ qua cổng 21, sau đó máy chủ kết nối lại qua cổng 20. Tường lửa có thể chặn kết nối này, vì vậy chế độ Passive FTP được sử dụng. Trong chế độ này, máy chủ thông báo cổng tạm thời cho máy khách kết nối. Lệnh PASV được dùng để chỉ định rằng máy khách đang ở chế độ Passive.
Nhắc lại một chút về FTP
FTP là thuật ngữ viết tắt của cụm từ tiếng Anh File Transfer Protocol. Nó là 1 giao thức giúp 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ạng Internet hoặc mạng TCP/IP. Máy tính sử dụng FTP có thể dễ dàng tải dữ liệu như văn bản, hình ảnh, video…lên máy chủ đang đặt ở 1 nơi khác hoặc ngược lại cũng có thể tải các tập tin ở trên máy chủ về máy tính cá nhân của mình. Ngoài ra, FTP cũng hỗ trợ truyền tải dữ liệu web lên máy chủ web bất kể máy chủ ở đâu.
Ưu điểm lớn nhất của FTP là khả năng truyền tải các dữ liệu có dung lượng lớn (lên đến vài trăm MB) 1 cách nhanh chóng, rút ngắn thời gian cho người dùng. Ngoài ra nó còn hỗ trợ upload/download nhiều tập tin cùng lúc mà mà không hề gặp phải vấn đề gì.
Active FTP
FTP có 2 chế độ hoạt động chủ yếu là Active FTP và Passive FTP. Ở phần này chúng ta sẽ tìm hiểu trước về Active FTP, còn Passive FTP bạn theo dõi ở phần sau nhé. Active FTP là chế độ hoạt động mặc định của mạng máy tính sử dụng giao thức FTP.
Trong phiên làm việc của FTP, cần có 2 kết nối TCP là TCP Data connection hoạt động trên cổng 20 và TCP Control connection hoạt động trên cổng 21. Trong đó cổng 21 (Control connection) phải luôn được mở tại mọi thời điểm mà dữ liệu hoặc lệnh được gửi đi còn cổng 20 (data connection) chỉ được mở khi việc trao đổi dữ liệu thực sự xảy ra. Cụ thể như sau:
Đầu tiên, FTP client sẽ tiến hành mở Control connection để connect tới port 21 là port command trên server. Tiếp theo, client sẽ lắng nghe thông qua port N+1 và gửi command port “port N+1” tới server. Cuối cùng, FTP server sẽ tạo kết nối dữ liệu với Client trên port mặc định của nó (thường là port 20).
Cần phải mở những luồng xử lý sau để hỗ trợ cho Mode Active FTP này (ở góc độ Firewall Server).
1. Cổng 21 phải được FTP Server mở để đón nhận tất cả các connect đến từ Client.
2. Để trả lời request của Client thì FTP Server phải mở kết nối từ port 21 đến ports >1023.
3. Để tạo kết nối truyền dữ liệu với Client thì FTP server phải mở kết nối từ port 20 đến ports > 1023.
4. Cuối cùng, để xác nhận kết nối với Client thì FTP Server phải mở kết nối từ ports > 1023 đến port 20.
Xem hình minh họa dưới đây:
Dựa vào thông tin mô tả của hình minh họa ở trên, có thể thấy ở bước 1 từ command port 1026 Client kết nối tới command port 21 của Server (gửi kèm theo command port 1027) . Ở bước 2, Server gửi gói tin ACK (hiểu đơn giản là chấp nhận ) về cho Client. Sau đó đến bước 3, Server sẽ khởi tạo kết nối từ port data 20 tới port 1027 của Client (đây là port Client gửi cho Server ở bước 1). Cuối cùng, Client sẽ gửi gói tin ACK về cho Server.
Vấn đề lớn nhất khi sử dụng chế độ hoạt động Active FTP là việc dễ dàng xảy ra tình trạng mất kết nối ở phía Client. Điều này là do Client có thể không khởi tạo kết nối đến port data của Server mà nó chỉ thông báo với Server là đang lắng nghe trên port 1027 và chờ server kết nối tới. Vấn đề thường gặp tiếp theo là connection sẽ bị blocked nếu có tồn tại Firewall đứng trước Client. Ngoài ra, FTP Active mode cũng không thể hoạt động được với các thiết bị sử dụng mô hình Client-side NAT vì chúng không có khả năng thay thế thông tin IP trong FTP Packets. Điều này có thể khắc phục được bằng Passive FTP sẽ được đề cập ở phần tiếp theo.
Tóm lại, biểu đồ Active FTP tóm gọn như sau:
command : client >1023 –> server 21
data : client >1023 <– server 20
Passive FTP
Passive FTP là phương thức kết nối mới cho FTP ra đời để khắc phục vấn đề firewall bị chặn ở chế độ Active mode. Nhờ vào việc khởi tạo 2 connections từ FTP Client đến Server ở chế độ passive mode mà vấn đề bên phía Client Blocked connection từ Server đến data port của Client sẽ được giải quyết. Hoạt động của Passive mode như sau:
Client sẽ mở cùng lúc 2 ports random unprivileged port local (N > 1023 and N+1 ) khi bắt đầu khởi tạo kết nối tới FTP server. Port đầu tiên, Client sẽ mở connect tới Port 21. Sau đó, Client sẽ gửi câu lệnh PASV command thay vì gửi Port command như ở chế độ Active đến server. Tiếp đó, server sẽ tạo ra một random unprivileged port (P> 1023) và gửi nó đến Client trong response PASV command (tạm gọi là port P).
Cuối cùng, Client sẽ khởi tạo connection từ port N+1 của nó tới port P vừa mới được tạo trên server và tiến hành transfer data.
Ở phía Server, để support Passive mode FTP này thì cần phải mở những luồng connect sau đây:
1. Để nhận kết nối từ mọi Client thì FTP server phải luôn mở cổng 21.
2. Để response cho các Client thì FTP server phải luôn mở các kết nối từ port 21 tới các port >1023.
3. Để nhận các kết nối tới data port từ phía Client thì FTP server phải mở các port > 1023
4. Cuối cùng để chấp nhận các kết nối và truyền dữ liệu tới Client thì FTP server phải mở các port> 1023 tới các port> 1023.
Xem hình minh họa dưới đây.
Căn cứ vào hình minh họa ở trên, có thể thấy ở bước 1, Client từ command port 1026 liên lạc với FTP server trên command port 21 và đưa ra câu lệnh PASV. Ở bước 2, server trả lời với Client thông qua Port 1024 là tôi đang lắng nghe. Ở bước 3, Client sẽ khởi tạo data connection từ port data của nó (1027) tới port 1024 mà server đã gửi cho nó ở bước 2. Cuối cùng ở bước 4, server sẽ gửi các gói tin ACK chấp nhận từ port 1024 đến Client qua port 1027.
Có thể thấy rằng Passive mode giải quyết được rất nhiều vấn đề phát sinh ở phía Client mà Active mode gặp phải trước đây. Tuy nhiên khi sử dụng chế độ hoạt động Passive mode sẽ mở ra một range port rất lớn (phải chấp nhận hầu hết các kết nối port> 1023) và có khả năng tạo ra nhiều lỗ hổng nguy hiểm cho phía FTP server. Vì vậy nên các FTP Service đều được khai báo một range port nhất định để tránh rủi ro và dễ dàng control hơn. Ngoài ra, một số nhà cung cấp FTP client có thể không hỗ trợ chế độ Passive mode.
Tóm lại, biểu đồ Passive FTP tóm gọn như sau:
command : client >1023 –> server 21
data : client >1024 –> server >1023
Trên đây là toàn bộ những thông tin cơ bản về FTP là gì và những đặc điểm cơ bản của 2 chế độ hoạt động phổ biến của FTP là Active FTP và Passive FTP. Hy vọng bài viết có thể mang đến cho bạn những thông tin bổ ích và giúp bạn đưa ra được lựa chọn tốt nhất khi support cho hệ thống FTP của doanh nghiệp mình.
Phạm Thanh Long
Pho Tue SoftWare Solutions JSC là Nhà Cung cấp dịch Trung Tâm Dữ Liệu, Điện Toán Đám Mây Và Phát Triển Phần Mềm Hàng Đầu Việt Nam. Hệ Thống Data Center Đáp Ứng Mọi Nhu Cầu Với Kết Nối Internet Nhanh, Băng Thông Lớn, Uptime Lên Đến 99,99% Theo Tiêu Chuẩn TIER III-TIA 942.
Leave a comment
Your email address will not be published. Required fields are marked *