Cara mengkonfigurasi vsftpd agar berfungsi dengan mode pasif

49

Setiap kali saya menginstal vsftpdpada centos, saya hanya setup lingkungan penjara bagi pengguna dan sisanya adalah konfigurasi default dari vsftpd. Saya membuat pengguna dan mencoba terhubung dengan filezilaklien ftp, tetapi saya tidak dapat terhubung dengan mode pasif. Saya selalu mengubah transfer settingske mode aktif untuk berhasil terhubung ke yang ftp serversaya dapatkan

 Error: Failed to retrieve directory listing

Jadi apakah ada cara untuk mengubah arahan dalam vsftp.conffile dan kita dapat terhubung dengan mode pasif ke server?

Toqeer
sumber

Jawaban:

86

Untuk mengkonfigurasi mode pasif untuk vsftpd, Anda perlu mengatur beberapa parameter di vsftpd.conf.

pasv_enable=Yes
pasv_max_port=10100
pasv_min_port=10090

Ini memungkinkan mode pasif dan membatasi untuk menggunakan sebelas port untuk koneksi data. Ini berguna karena Anda perlu membuka port ini di firewall Anda.

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

Jika setelah pengujian ini semua berfungsi maka simpan status firewall Anda dengan

service iptables save

yang akan memperbarui /etc/sysconfig/iptablesfile.

Untuk melakukan ini adalah CentOS 7 Anda harus menggunakan firewalld baru, bukan iptables:

Temukan zona Anda:

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

Zona saya 'publik', jadi saya mengatur zona saya ke publik, tambahkan rentang port, dan setelah itu kita memuat ulang:

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

Apa yang terjadi ketika Anda membuat koneksi

  • Klien Anda membuat koneksi ke server vsftpd pada port 21.

  • Sever menanggapi klien yang memberitahukan port mana yang akan disambungkan dari rentang yang ditentukan di atas.

  • Klien membuat koneksi data pada port yang ditentukan dan sesi berlanjut.

Ada banyak penjelasan tentang berbagai mode ftp di sini.

user9517 mendukung GoFundMonica
sumber
Ingin tahu mengapa Anda meletakkan maxport setelah min... tetapi yang lebih penting, jika Anda membuka port 10090 hingga 10100, itu 11 port dan bukan 10 seperti yang Anda katakan.
Alexis Wilke 6-15
Saya percaya ini abjad, itu benar-benar tidak masalah karena mereka adalah arahan yang terpisah.
user9517 mendukung GoFundMonica
3
Ini tidak bekerja untuk saya tanpa pasv_address.
fbmd
butuh waktu lama untuk menemukan ini, tidak ada panduan vsftpd yang mencantumkan ini ... brilian
Pete
Hebat - konfigurasi vsftp ini menyelesaikan semua masalah FTP-firewall saya :)
BurninLeo
24

Untuk mengaktifkan mode pasif, setel opsi konfigurasi berikut di vsftp.conf Anda:

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

Anda tentu saja dapat mengubah port awal dan akhir, dan harus mengganti xxx dengan IP publik dari server Anda.

Selain itu, Anda harus membuka rentang port mode pasif di firewall Anda. Pada centos, Anda dapat memuat ip_conntrack_ftpmodul untuk menangani koneksi ftp di firewall Anda. Edit /etc/sysconfig/iptables-configdan tambahkan ip_conntrack_ftp ke opsi IPTABLES_MODULES. Setelah itu restart iptables:

/sbin/service iptables restart
otak99
sumber
3
pasv_addressadalah apa triknya ketika segalanya telah diatur dan itu masih tidak berhasil.
fbmd
1
@ fbmd sebelum mencoba pasv_address, kita juga harus memeriksa apakah pasv_max dan min_port berada dalam urutan yang benar. Itu terjadi pada saya bahwa saya memiliki nilai max yang dikonfigurasi di pasv_min_port, dan vsftpd mengabaikannya. Ini adalah cacat / bug yang dikenal diam yang secara visual akan membuat Anda berpikir bahwa port pasv sudah terkonfigurasi, tetapi sebenarnya tidak. Ini terjadi pada saya, dan memecahkan masalah saya.
Pedro Sousa
Jika Anda ingin menentukan alamat DNS pasv_address, Anda harus menambahkan pasv_addr_resolve=YES(defaultnya ke NO)
Pierre-Damien
6

Di samping itu pasv_enable=YES, tentukan rentang port di mana VSFTP akan menjalankan mode PASV:

pasv_min_port=50000
pasv_max_port=50999
port_enable=YES

Jangan lupa untuk mengkonfigurasi iptables memungkinkan pengiriman paket pada port-port ini:

iptables -I INPUT -p tcp --dport 50000:50999 -j ACCEPT
kuanta
sumber
Pada sistem CentOS standar ada selimut DROP yang menyebabkan aturan ditambahkan dengan iptables -A INPUT ... diabaikan
user9517 mendukung GoFundMonica
Pastikan Anda memasukkan pasv_addressdalam file vsftpd.conf.
Pedro Madrid
3

Biasanya, ini bukan ftp server, vsftpd, tetapi firewall seperti iptable yang mencegah mode pasif dari digunakan (memblokir koneksi tcp yang diperlukan untuk transfer data).


sumber
Sebenarnya, vsftpd bisa cukup pintar untuk membuka port di firewall ... tetapi dari jawaban yang saya lihat di sini, sepertinya itu tidak mampu melakukan hal yang sama.
Alexis Wilke 6-15
3
@Alexsis. Tidak ada gunanya firewall jika aplikasi mengabaikan aturan dan tetap membuka port.
ekerner