Cách cấu hình vsftpd để hoạt động với chế độ thụ động


49

Bất cứ khi nào tôi cài đặt vsftpdtrên centos, tôi chỉ thiết lập môi trường tù cho người sử dụng và phần còn lại là cấu hình mặc định của vsftpd. Tôi tạo người dùng và cố gắng kết nối với filezilakhách hàng ftp, nhưng tôi không thể kết nối với chế độ thụ động. Tôi luôn thay đổi transfer settingschế độ hoạt động để kết nối thành công ftp servernếu không tôi nhận được

 Error: Failed to retrieve directory listing

Vậy có cách nào để thay đổi bất kỳ chỉ thị nào trong vsftp.conftệp và chúng ta có thể kết nối với chế độ thụ động với máy chủ không?

Câu trả lời:


86

Để cấu hình chế độ thụ động cho vsftpd, bạn cần đặt một số tham số trong vsftpd.conf.

pasv_enable=Yes
pasv_max_port=10100
pasv_min_port=10090

Điều này cho phép chế độ thụ động và hạn chế sử dụng mười một cổng cho kết nối dữ liệu. Điều này rất hữu ích vì bạn cần mở các cổng này trên tường lửa của mình.

iptables -I INPUT -p tcp --destination-port 10090:10100 -j ACCEPT

Nếu sau khi kiểm tra, tất cả đều hoạt động thì hãy lưu trạng thái tường lửa của bạn với

service iptables save

sẽ cập nhật các /etc/sysconfig/iptablestập tin.

Để làm điều này là CentOS 7, bạn phải sử dụng tường lửa mới, không phải iptables:

Tìm khu vực của bạn:

# firewall-cmd --get-active-zones
public
  interfaces: eth0

Vùng của tôi là 'công khai', vì vậy tôi đặt vùng của mình thành công khai, thêm phạm vi cổng và sau đó chúng tôi tải lại:

# firewall-cmd --permanent --zone=public --add-port=10090-10100/tcp
# firewall-cmd --reload

Điều gì xảy ra khi bạn thực hiện kết nối

  • Máy khách của bạn tạo kết nối đến máy chủ vsftpd trên cổng 21.

  • Máy chủ trả lời máy khách báo cho nó biết cổng nào sẽ kết nối với từ phạm vi được chỉ định ở trên.

  • Máy khách tạo kết nối dữ liệu trên cổng được chỉ định và phiên tiếp tục.

Có một lời giải thích tuyệt vời về các chế độ ftp khác nhau ở đây.


Tự hỏi tại sao bạn đặt maxcổng sau min... nhưng quan trọng hơn, nếu bạn mở cổng 10090 đến 10100, đó là 11 cổng chứ không phải 10 như bạn nói.
Alexis Wilke

Tôi tin rằng đó là bảng chữ cái, nó thực sự không quan trọng vì chúng là các chỉ thị riêng biệt.
user9517 hỗ trợ GoFundMonica

3
Điều này không làm việc cho tôi mà không có pasv_address.
fbmd

Tôi mất nhiều thời gian để tìm thấy điều này, không ai trong số các hướng dẫn vsftpd liệt kê điều này ... tuyệt vời
Pete


24

Để bật chế độ thụ động, hãy đặt các tùy chọn cấu hình sau trong vsftp.conf của bạn:

pasv_enable=YES
pasv_min_port=41361
pasv_max_port=65534
pasv_address=xxx.xxx.xxx.xxx

Tất nhiên, bạn có thể thay đổi cổng bắt đầu và kết thúc và nên thay thế các xxx bằng IP công cộng của máy chủ của bạn.

Ngoài ra, bạn nên mở phạm vi cổng chế độ thụ động trong tường lửa của mình. Trên centos, bạn có thể tải ip_conntrack_ftpmô-đun để xử lý các kết nối ftp trong tường lửa của bạn. Chỉnh sửa /etc/sysconfig/iptables-configvà thêm ip_conntrack_ftp vào tùy chọn IPTABLES_MODULES. Sau đó khởi động lại iptables:

/sbin/service iptables restart

3
pasv_addresslà mẹo gì khi mọi thứ khác đã được thiết lập và nó vẫn không hoạt động.
fbmd

1
@fbmd trước khi thử pasv_address, người ta cũng nên kiểm tra xem cả pasv_max và min_port có đúng thứ tự không. Nó đã xảy ra với tôi rằng tôi có giá trị tối đa được cấu hình trong pasv_min_port và vsftpd chỉ đơn giản bỏ qua điều này. Đó là một lỗ hổng / lỗi im lặng đã biết sẽ trực quan khiến bạn nghĩ rằng các cổng pasv được cấu hình chính xác, nhưng chúng thì không. Điều này đã xảy ra với tôi, và giải quyết vấn đề của tôi.
Pedro Sousa

Nếu bạn muốn chỉ định một địa chỉ DNS trong pasv_address, bạn nên thêm pasv_addr_resolve=YES(mặc định là NO)
Pierre-Damien

6

Bên cạnh pasv_enable=YES, chỉ định một phạm vi cổng trong đó VSFTP sẽ chạy chế độ PASV:

pasv_min_port=50000
pasv_max_port=50999
port_enable=YES

Đừng quên cấu hình iptables cho phép truyền gói trên các cổng này:

iptables -I INPUT -p tcp --dport 50000:50999 -j ACCEPT

Trên hệ thống CentOS tiêu chuẩn, có DROP mền khiến các quy tắc được thêm vào iptables -A INPUT ... bị bỏ qua
user9517 hỗ trợ GoFundMonica

Hãy chắc chắn rằng bạn bao gồm pasv_addresstrong tệp vsftpd.conf.
Pedro Madrid

3

Thông thường, đó không phải là máy chủ ftp, vsftpd, mà là tường lửa như iptable ngăn chế độ thụ động được sử dụng (chặn kết nối tcp cần thiết cho truyền dữ liệu).


Trên thực tế, vsftpd có thể đủ thông minh để mở một cổng trong tường lửa ... nhưng từ những câu trả lời tôi thấy ở đây, có vẻ như nó không có khả năng kỳ công như vậy.
Alexis Wilke

3
@Alexsis. Không có điểm nào cho tường lửa nếu các ứng dụng chỉ cần bỏ qua các quy tắc và cổng mở.
ekerner
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.