8/1/12

DỊCH VỤ FTP


1.1.         DỊCH VỤ FTP

1.1.1.     GIỚI THIỆU FTP

FTP được viết tắt từ chuỗi File Transfer Protocol. Giao thức này được xây dựng dựa trên chuẩn TCP, FTP cung cấp cơ chế truyền tin dưới dạng file thông qua mạng TCP/IP, FTP là một dịch vụ đặc biệt vì nó dùng đến hai cổng: Cổng 20 (còn gọi là data port) dùng để truyền dữ liệu và cổng 21 (còn gọi là command port) dùng để truyền lệnh. Một số chương trình ftp server sử dụng trên Linux:Vsftpd, Wu-ftpd, PureFTPd, ProFTPD. FTP có 2 loại:

Active FTP

Ở chế độ chủ động (active), máy khách FTP dùng một cổng ngẫu nhiên không dành riêng (cổng N > 1024) kết nối vào cổng 21 của FTP server. Sau đó, máy khách lắng nghe trên cổng N+1 và gửi lệnh PORT N+1 đến FTP server. Tiếp theo, từ cổng dữ liệu của mình, FTP server sẽ kết nối ngược lại vào cổng dữ liệu của client đã khai báo trước đó (tức là N+1). Ở khía cạnh firewall, để FTP Server hỗ trợ chế độ active thì các kênh truyền sau phải mở:
-   Cổng 21 phải được mở cho bất cứ nguồn gửi nào (để client khởi tạo kết nối)
-   FTP server's port 21 to ports > 1024 (server trả lời về cổng điều khiển của client)
-   Cho kết nối từ cổng 20 của FTP server đến các cổng > 1024 (server khởi tạo kết nối vào cổng dữ liệu của client)
-   Nhận kết nối hướng đến cổng 20 của FTP server từ các cổng > 1024 (client gửi xác nhận ACKs đến cổng data của server)
Sơ đồ kết nối:
-   Bước 1: Client khởi tạo kết nối vào cổng 21 của server và gửi lệnh PORT 1027.
-   Bước 2: Server gửi xác nhận ACK về cổng lệnh của client.
-   Bước 3: Server khởi tạo kết nối từ cổng 20 của mình đến cổng dữ liệu mà client đã khai báo trước đó.
-   Bước 4: Client gửi ACK phản hồi cho server.
Khi FTP Server hoạt động ở chế độ chủ động, client không tạo kết nối thật sự vào cổng dữ liệu của FTP server, mà chỉ đơn giản là thông báo cho server biết rằng nó đang lắng nghe trên cổng nào và server phải kết nối ngược về client vào cổng đó.

Passive FTP

Phương thức này gọi là FTP thụ động (passive) hoặc PASV (là lệnh mà client gửi cho server để báo cho biết là nó đang ở chế độ passive). Ở chế độ thụ động, FTP client tạo kết nối đến server. Khi kết nối FTP được mở, client sẽ mở hai cổng không dành riêng N, N+1 (N > 1024). Cổng thứ nhất dùng để liên lạc với cổng 21 của server, nhưng thay vì gửi lệnh PORT và sau đó là server kết nối ngược về client, thì lệnh PASV được phát ra. Kết quả là server sẽ mở một cổng không dành riêng bất kỳ P (P > 1024) và gửi lệnh PORT P ngược về cho client. Sau đó client sẽ khởi tạo kết nối từ cổng N+1 vào cổng P trên server để truyền dữ liệu. Phía Firewall trên server FTP, để hỗ trợ FTP chế độ passive, các kênh truyền sau phải được mở:
-   Cổng FTP 21 của server nhận kết nối từ bất kỳ nguồn nào (cho client khởi tạo kết nối).
-   Cho phép trả lời từ cổng 21 FTP server đến cổng bất kỳ trên 1024 (Server trả lời cho cổng control của client).
-   Nhận kết nối trên cổng FTP server > 1024 từ bất cứ nguồn nào (Client tạo kết nối để truyền dữ liệu đến cổng ngẫu nhiên mà server đã chỉ ra).
-   Cho phép trả lời từ cổng FTP server > 1024 đến các cổng > 1024 (Server gửi xác nhận ACKs đến cổng dữ liệu của client).
Sơ đồ:
-   Bước 1: Client kết nối vào cổng lệnh của server và phát lệnh PASV.
-   Bước 2: Server trả lời bằng lệnh PORT 2024, cho client biết cổng 2024 đang mở để nhận kết nối dữ liệu.
-   Buớc 3: Client tạo kết nối truyền dữ liệu từ cổng dữ liệu của nó đến cổng dữ liệu 2024 của server.
-   Bước 4: Là server trả lời bằng xác nhận ACK về cho cổng dữ liệu của client.

Bài đăng phổ biến