Apa perbedaan antara FTP aktif dan pasif?

312

Dapatkah seseorang memberi tahu saya apa perbedaan antara FTP aktif dan pasif?
Mana yang lebih disukai?

karthik
sumber

Jawaban:

474

Aktif dan pasif adalah dua mode yang dapat dijalankan oleh FTP.

Untuk latar belakang, FTP sebenarnya menggunakan dua saluran antara klien dan server, perintah dan saluran data, yang sebenarnya merupakan koneksi TCP yang terpisah .

Saluran perintah adalah untuk perintah dan tanggapan sedangkan saluran data untuk benar-benar mentransfer file.

Pemisahan ini informasi perintah dan data menjadi saluran yang terpisah cara yang bagus untuk dapat mengirim perintah ke server tanpa harus menunggu transfer data saat ini selesai. Sesuai RFC, ini hanya diamanatkan untuk subset perintah, seperti berhenti, membatalkan transfer saat ini, dan mendapatkan status.


Dalam mode aktif , klien membuat saluran perintah tetapi server bertanggung jawab untuk membuat saluran data. Ini sebenarnya bisa menjadi masalah jika, misalnya, mesin klien dilindungi oleh firewall dan tidak akan mengizinkan permintaan sesi yang tidak sah dari pihak eksternal.

Dalam mode pasif , klien membuat kedua saluran. Kita sudah tahu itu membangun saluran perintah dalam mode aktif dan melakukan hal yang sama di sini.

Namun, ia kemudian meminta server (pada saluran perintah) untuk mulai mendengarkan pada port (berdasarkan kebijaksanaan server) daripada mencoba untuk membuat koneksi kembali ke klien.

Sebagai bagian dari ini, server juga mengembalikan ke klien nomor port yang telah dipilihnya untuk didengarkan, sehingga klien tahu bagaimana menghubungkannya.

Setelah klien mengetahui hal itu, ia kemudian dapat berhasil membuat saluran data dan melanjutkan.

Rincian lebih lanjut tersedia di RFC: https://www.ietf.org/rfc/rfc959.txt

paxdiablo
sumber
1
Saya tidak berpikir pernyataan di sekitar port Y benar, dalam mode aktif klien tidak menentukan port Y, server mencoba untuk secara acak memilih port # dan mencoba untuk melihat apakah klien akan mengizinkan komunikasi melalui port yang dipilih . Alasan saya mengatakan ini adalah bahwa, jika ini tidak benar (argumen saya) maka sisi klien meskipun berada di belakang firewall selalu dapat membuat dua aturan api-dinding satu untuk koneksi keluar dan satu untuk koneksi masuk.
arun.raj.mony
1
@arun, klien tidak harus mengendalikan firewall. Contoh: di lingkungan perusahaan, biasanya ada firewall antara jaringan di seluruh perusahaan dan dunia luar, di mana klien yang menjalankan FTP tidak memiliki daya.
paxdiablo
DALAM mode Pasif, mengapa server mengirim klien port acak ke klien, bukannya klien terhubung ke port server 20 secara langsung?
chengbo
@ paxdiablo Dalam mode pasif, mengapa server menetapkan port acak tidak dan mengirimkannya ke klien untuk koneksi data? Mengapa klien tidak dapat langsung membuka saluran data dari port klien no ke port no 20 di sisi server?
Zephyr
1
Saya mengajukan pertanyaan di sini sekarang networkengineering.stackexchange.com/q/43680/37406
Zephyr
166

Saya baru-baru ini mengalami pertanyaan ini di tempat kerja saya jadi saya pikir saya harus mengatakan sesuatu lebih lanjut di sini. Saya akan menggunakan gambar untuk menjelaskan cara kerja FTP sebagai sumber tambahan untuk jawaban sebelumnya.

Mode aktif:

mode aktif


Mode pasif:

masukkan deskripsi gambar di sini


Dalam konfigurasi mode aktif, server akan berusaha menyambung ke port sisi klien acak. Jadi kemungkinannya, port itu tidak akan menjadi salah satu port yang telah ditentukan. Akibatnya, upaya untuk menghubungkannya akan diblokir oleh firewall dan tidak ada koneksi yang akan dibuat.

masukkan deskripsi gambar di sini


Konfigurasi pasif tidak akan memiliki masalah ini karena klien akan menjadi orang yang memulai koneksi. Tentu saja, ada kemungkinan bagi sisi server untuk memiliki firewall juga. Namun, karena server diharapkan menerima jumlah permintaan koneksi yang lebih besar dibandingkan dengan klien, maka logis bagi admin server untuk beradaptasi dengan situasi dan membuka pilihan port untuk memenuhi konfigurasi mode pasif.

Jadi sebaiknya Anda mengkonfigurasi server untuk mendukung FTP mode pasif. Namun, mode pasif akan membuat sistem Anda rentan terhadap serangan karena klien seharusnya terhubung ke port server acak. Jadi, untuk mendukung mode ini, server Anda tidak hanya harus memiliki banyak port, firewall Anda juga harus memungkinkan koneksi ke semua port tersebut untuk dilewati!

Untuk mengurangi risiko, solusi yang baik adalah menentukan rentang port pada server Anda dan kemudian hanya mengizinkan kisaran port pada firewall Anda.

Untuk informasi lebih lanjut, silakan baca dokumen resmi .

Yuantao
sumber
Saya hanya menebak yang merupakan masalah keamanan. Jika server mendengarkan port yang sama (20) maka ia tidak dapat memahami klien mana yang sedang berbicara, jadi ia memilih port acak dan mengirimkannya ke klien, mulai mendengarkan port itu. Ketika klien terhubung ke port itu, server tahu klien miliknya. Tetapi cukup bagi MITM untuk terhubung ke klien yang sama. (yah, serangan mitm di sini rumit sih ...)
Daniele Cruciani
2
Jawaban yang bagus, terutama informasi tentang masalah firewall
Anh Tuan
14

Versi yang sudah dihapus dari artikel saya Mode Koneksi FTP (Aktif vs Pasif) :

Mode koneksi FTP (aktif atau pasif), menentukan bagaimana koneksi data dibuat. Dalam kedua kasus, klien membuat koneksi kontrol TCP ke port perintah server FTP 21. Ini adalah koneksi keluar standar, seperti dengan protokol transfer file lainnya (SFTP, SCP, WebDAV) atau aplikasi klien TCP lainnya (mis. Browser web ). Jadi, biasanya tidak ada masalah saat membuka koneksi kontrol.

Dimana protokol FTP lebih rumit dibandingkan dengan protokol transfer file lainnya adalah transfer file. Sementara protokol lain menggunakan koneksi yang sama untuk kontrol sesi dan transfer file (data), protokol FTP menggunakan koneksi terpisah untuk transfer file dan daftar direktori.

Dalam mode aktif , klien mulai mendengarkan pada port acak untuk koneksi data yang masuk dari server (klien mengirim perintah FTP PORTuntuk menginformasikan server di mana port itu mendengarkan). Saat ini, biasanya klien berada di belakang firewall (mis. Firewall Windows bawaan) atau router NAT (mis. Modem ADSL), tidak dapat menerima koneksi TCP yang masuk.

Untuk alasan ini mode pasif diperkenalkan dan sebagian besar digunakan saat ini. Menggunakan mode pasif lebih disukai karena sebagian besar konfigurasi kompleks dilakukan hanya sekali di sisi server, oleh administrator berpengalaman, daripada secara individual di sisi klien, oleh (mungkin) pengguna yang tidak berpengalaman.

Dalam mode pasif , klien menggunakan koneksi kontrol untuk mengirim PASVperintah ke server dan kemudian menerima alamat IP server dan nomor port server dari server, yang kemudian digunakan klien untuk membuka koneksi data ke alamat IP server dan server nomor port diterima.

Konfigurasi Jaringan untuk Mode Pasif

Dengan mode pasif , sebagian besar beban konfigurasi ada di sisi server. Administrator server harus mengatur server seperti yang dijelaskan di bawah ini.

Firewall dan NAT di sisi server FTP harus dikonfigurasi tidak hanya untuk mengizinkan / merutekan koneksi yang masuk pada port FTP 21 tetapi juga berbagai port untuk koneksi data yang masuk. Biasanya, perangkat lunak server FTP memiliki opsi konfigurasi untuk mengatur berbagai port, server akan menggunakan. Dan rentang yang sama harus dibuka / diarahkan pada firewall / NAT.

Ketika server FTP berada di belakang NAT, ia perlu tahu itu alamat IP eksternal, sehingga dapat memberikannya kepada klien sebagai respons terhadap PASVperintah.

Konfigurasi Jaringan untuk Mode Aktif

Dengan mode aktif , sebagian besar beban konfigurasi ada di sisi klien.

Firewall (mis. Windows firewall) dan NAT (mis. Aturan perutean modem ADSL) pada sisi klien harus dikonfigurasi untuk mengizinkan / merutekan berbagai port untuk koneksi data yang masuk. Untuk membuka porta di Windows, buka Control Panel> System and Security> Windows Firewall> Pengaturan Lanjut> Aturan Masuk> Aturan Baru . Untuk merutekan port pada NAT (jika ada), lihat dokumentasinya.

Ketika ada NAT di jaringan Anda, klien FTP perlu mengetahui alamat IP eksternal yang perlu disediakan WinSCP ke server FTP menggunakan PORTperintah. Sehingga server dapat terhubung dengan benar ke klien untuk membuka koneksi data. Beberapa klien FTP mampu mendeteksi alamat IP eksternal secara otomatis, beberapa harus dikonfigurasi secara manual.

Smart Firewall / NATs

Beberapa firewall / NAT mencoba membuka / menutup port data secara otomatis dengan memeriksa koneksi kontrol FTP dan / atau menerjemahkan alamat IP koneksi data dalam lalu lintas koneksi kontrol.

Dengan firewall / NAT seperti itu, konfigurasi di atas tidak diperlukan untuk FTP yang tidak terenkripsi. Tetapi ini tidak dapat bekerja dengan FTPS, karena lalu lintas koneksi kontrol dienkripsi dan firewall / NAT tidak dapat memeriksa atau memodifikasinya.

Martin Prikryl
sumber
11

Mode aktif: -server menginisiasi koneksi.

Mode pasif: -client memulai koneksi.

Saeed Aliakbari
sumber
1

Mode Aktif — Klien mengeluarkan perintah PORT ke server yang menandakan bahwa ia akan "secara aktif" memberikan IP dan nomor port untuk membuka Sambungan Data kembali ke klien.

Mode Pasif — Klien mengeluarkan perintah PASV untuk menunjukkan bahwa ia akan menunggu "secara pasif" agar server memberikan IP dan nomor port, setelah itu klien akan membuat Koneksi Data ke server.

Ada banyak jawaban bagus di atas, tetapi posting blog ini mencakup beberapa grafik bermanfaat dan memberikan penjelasan yang cukup solid: https://titanftp.com/2018/08/23/what-is-the-ddference-between-active-and -passive-ftp /

DaveW2122
sumber