Aktif ve pasif FTP arasındaki fark nedir?


312

Birisi bana aktif ve pasif FTP arasındaki farkın ne olduğunu söyleyebilir mi?
Hangisi tercih edilir?

Yanıtlar:


474

Aktif ve pasif FTP'nin çalışabileceği iki moddur.

Arka plan için, FTP aslında istemci ve sunucu arasında iki kanal kullanır ; komut ve veri kanalları, aslında ayrı TCP bağlantılarıdır.

Veri kanalı gerçekte dosya aktarımı için iken komut kanalı komutlar ve yanıtlar içindir.

Komut bilgilerinin ve verilerin ayrı kanallara ayrılması, geçerli veri aktarımının bitmesini beklemek zorunda kalmadan sunucuya komut gönderebilmenin şık bir yoludur. RFC'ye göre, bu yalnızca bırakma, geçerli aktarımı iptal etme ve durumu alma gibi bir komut alt kümesi için zorunludur.


İçinde aktif mod, istemci komut kanalını oluşturur, ancak sunucu veri kanalı oluşturulmasından sorumludur. Örneğin, istemci makine güvenlik duvarları ile korunuyorsa ve harici taraflardan yetkisiz oturum isteklerine izin vermiyorsa, bu aslında bir sorun olabilir.

Gelen pasif modda, istemci kurar hem kanalları. Komut kanalını aktif modda kurduğunu ve burada aynı şeyi yaptığını zaten biliyoruz.

Ancak, daha sonra istemciyle bağlantı kurmaya çalışmak yerine sunucudan (komut kanalında) bir bağlantı noktasını (sunucuların takdirine bağlı olarak) dinlemeye başlamasını ister .

Bunun bir parçası olarak, sunucu istemciye dinlemeyi seçtiği bağlantı noktası numarasını da döndürür, böylece istemci ona nasıl bağlanacağını bilir.

Müşteri bunu öğrendikten sonra, veri kanalını başarıyla oluşturabilir ve devam edebilir.

RFC'de daha fazla ayrıntı bulabilirsiniz: https://www.ietf.org/rfc/rfc959.txt


1
Y bağlantı noktasının etrafındaki ifadenin doğru olduğunu düşünmüyorum, etkin modda istemci Y bağlantı noktasını belirlemiyor, sunucu rastgele bir bağlantı noktası # seçmeye çalışıyor ve istemcinin seçilen bağlantı noktası üzerinden iletişime izin verip vermeyeceğini görmeye çalışıyor . Bunu söylememin sebebi, eğer bu doğru değilse (benim argümanım) o zaman bir güvenlik duvarının arkasında olsa bile istemci tarafı her zaman giden bağlantı için ve diğeri gelen bağlantı için olmak üzere iki yangın duvarı kuralı oluşturabilir.
arun.raj.mony

1
@arun, istemci mutlaka güvenlik duvarını kontrol etmez. Örnek: şirket ortamlarında, genel olarak şirket çapında ağ ile dış dünya arasında, FTP çalıştıran bir istemcinin gücünün sıfır olduğu bir güvenlik duvarı vardır.
paxdiablo

Pasif modda, sunucu neden istemciye istemciye rastgele bir bağlantı noktası gönderir, bunun yerine istemci doğrudan sunucu bağlantı noktası 20'ye bağlanır?
chengbo

@paxdiablo Pasif modda, sunucu neden rasgele bir bağlantı noktası numarası atar ve veri bağlantısı için istemciye gönderir? İstemci neden doğrudan istemci tarafında sunucu bağlantı noktasından 20 numaralı bağlantı noktasına bir veri kanalı açamıyor?
Zephyr


166

Geçenlerde işyerinde bu soruya rastladım, bu yüzden burada daha fazla bir şey söylemeliyim. FTP'nin önceki yanıt için ek bir kaynak olarak nasıl çalıştığını açıklamak için görüntü kullanacağım.

Aktif mod:

aktif mod


Pasif mod:

resim açıklamasını buraya girin


Etkin mod yapılandırmasında, sunucu rasgele bir istemci tarafı bağlantı noktasına bağlanmaya çalışır. Yani, bu bağlantı noktası önceden tanımlanmış bağlantı noktalarından biri olmaz. Sonuç olarak, güvenlik duvarı tarafından ona bağlanma denemesi engellenecek ve hiçbir bağlantı kurulmayacaktır.

resim açıklamasını buraya girin


İstemci bağlantıyı başlatan kişi olacağından pasif bir yapılandırmada bu sorun olmaz. Tabii ki, sunucu tarafının da bir güvenlik duvarına sahip olması mümkündür. Ancak, sunucunun bir istemciye kıyasla daha fazla sayıda bağlantı isteği alması beklendiğinden, sunucu yöneticisinin duruma uyum sağlaması ve pasif mod yapılandırmalarını karşılamak için bir dizi bağlantı noktası açması mantıklı olacaktır.

Bu yüzden sunucuyu pasif mod FTP'yi destekleyecek şekilde yapılandırmanız en iyisidir. Ancak, pasif mod, istemcilerin rasgele sunucu bağlantı noktalarına bağlanması gerektiği için sisteminizi saldırılara karşı savunmasız bırakacaktır. Bu nedenle, bu modu desteklemek için sadece sunucunuzda birden fazla bağlantı noktası olması gerekmez, güvenlik duvarınız da tüm bu bağlantı noktalarına bağlantıların geçmesine izin vermelidir!

Riskleri azaltmak için, sunucunuzda bir dizi bağlantı noktası belirtmek ve daha sonra güvenlik duvarınızda yalnızca bu bağlantı noktası aralığına izin vermek iyi bir çözüm olacaktır.

Daha fazla bilgi için lütfen resmi belgeyi okuyun .


Sadece güvenlik sorununun hangisi olduğunu tahmin ediyorum. Sunucu aynı bağlantı noktasını (20) dinlerse, hangi istemcinin konuştuğunu anlayamaz, bu nedenle rasgele bir bağlantı noktası seçer ve o bağlantı noktasını dinlemeye başlayarak istemciye gönderir. İstemci bu bağlantı noktasına bağlandığında, sunucu hangi istemciye ait olduğunu bilir. Ancak bir MITM'nin aynı istemciye bağlanması yeterlidir. (iyi, burada
mitm

2
Harika yanıt, özellikle güvenlik duvarı sorunu hakkında bilgi
Anh Tuan

14

Yazımın düzeltilmiş sürümü FTP Bağlantı Modları (Aktif ve Pasif) :

FTP bağlantı modu (etkin veya pasif), veri bağlantısının nasıl kurulacağını belirler. Her iki durumda da, istemci bir FTP sunucusu komut bağlantı noktası 21'e bir TCP kontrol bağlantısı oluşturur. Bu, diğer herhangi bir dosya aktarım protokolünde (SFTP, SCP, WebDAV) veya diğer herhangi bir TCP istemci uygulamasında (örn. Web tarayıcısı) olduğu gibi standart bir giden bağlantıdır ). Bu nedenle, kontrol bağlantısını açarken genellikle sorun olmaz.

FTP protokolünün diğer dosya aktarım protokollerine göre daha karmaşık olduğu durumlarda dosya aktarımlarıdır. Diğer protokoller hem oturum denetimi hem de dosya (veri) aktarımları için aynı bağlantıyı kullanırken, FTP protokolü dosya aktarımları ve dizin listeleri için ayrı bir bağlantı kullanır.

Gelen aktif mod, istemci sunucudan gelen veri bağlantıları için rasgele bir bağlantı noktasında dinleme başlar (istemci FTP komutu gönderir PORTdinleme yaptığı liman üzerinde sunucuyu bilgilendirmek). Günümüzde, istemcinin gelen TCP bağlantılarını kabul edemediği bir güvenlik duvarının (ör. Yerleşik Windows güvenlik duvarı) veya NAT yönlendiricisinin (örn. ADSL modem) arkasında olması tipiktir.

Bu nedenle pasif mod getirildi ve günümüzde daha çok kullanılıyor. Kullanılması pasif karmaşık konfigürasyon çoğu (muhtemelen) deneyimsiz kullanıcılar tarafından oldukça bireysel bir istemci tarafında daha deneyimli yönetici tarafından, sunucu tarafında yalnızca bir kez yapılır çünkü modunu tercih edilir.

Gelen pasif modda, istemci göndermek için kontrol bağlantısını kullanan PASVsunucuya komutunu ve ardından istemci sunucu IP adresi ve sunucuya bir veri bağlantısını açmak için kullandığı sunucudan bir sunucu IP adresi ve sunucu port numarasını alır bağlantı noktası numarası alındı.

Pasif Mod için Ağ Yapılandırması

İle pasif modda, konfigürasyon yükünün en sunucu tarafında. Sunucu yöneticisi, sunucuyu aşağıda açıklandığı gibi ayarlamalıdır.

FTP sunucusu tarafındaki güvenlik duvarı ve NAT, yalnızca FTP bağlantı noktası 21'e gelen bağlantılara izin vermek / yönlendirmek için değil, aynı zamanda gelen veri bağlantıları için bir dizi bağlantı noktasına izin verecek şekilde yapılandırılmalıdır. Genellikle, FTP sunucusu yazılımı, sunucunun kullanacağı bir dizi bağlantı noktası ayarlamak için bir yapılandırma seçeneğine sahiptir. Ve aynı aralık güvenlik duvarında / NAT'da açılmalı / yönlendirilmelidir.

FTP sunucusu bir NAT'ın arkasındayken, harici IP adresini bilmesi gerekir, böylece PASVkomuta yanıt olarak istemciye sağlayabilir .

Aktif Mod için Ağ Yapılandırması

İle aktif mod, konfigürasyon yükünün en istemci tarafında bulunur.

İstemci tarafındaki güvenlik duvarı (örn. Windows güvenlik duvarı) ve NAT (örn. ADSL modem yönlendirme kuralları), gelen veri bağlantıları için bir dizi bağlantı noktasına izin verecek / yönlendirilecek şekilde yapılandırılmalıdır. Windows'ta bağlantı noktalarını açmak için Denetim Masası> Sistem ve Güvenlik> Windows Güvenlik Duvarı> Gelişmiş Ayarlar> Gelen Kuralları> Yeni Kural'a gidin . NAT (varsa) üzerindeki bağlantı noktalarını yönlendirmek için belgelerine bakın.

Ağınızda NAT olduğunda, FTP istemcisi WinSCP'nin PORTkomut kullanarak FTP sunucusuna sağlaması gereken harici IP adresini bilmelidir . Böylece sunucu, veri bağlantısını açmak için istemciye doğru şekilde bağlanabilir. Bazı FTP istemcileri harici IP adresini otomatik olarak algılayabilir, bazıları manuel olarak yapılandırılmalıdır.

Akıllı Güvenlik Duvarları / NAT'lar

Bazı güvenlik duvarları / NAT'lar, FTP kontrol bağlantısını inceleyerek ve / veya kontrol bağlantısı trafiğindeki veri bağlantısı IP adreslerini çevirerek veri portlarını otomatik olarak açmaya / kapatmaya çalışır.

Böyle bir güvenlik duvarı / NAT ile, yukarıdaki yapılandırma, şifrelenmemiş bir düz FTP için gerekli değildir. Ancak, kontrol bağlantı trafiği şifreli olduğundan ve güvenlik duvarı / NAT onu denetleyemediğinden veya değiştiremediğinden FTPS ile çalışamaz.


11

Aktif mod: -server bağlantıyı başlatır.

Pasif mod: -client bağlantıyı başlatır.


1

Etkin Mod — İstemci, sunucuya, Veri Bağlantısını istemciye geri açmak için bir IP ve bağlantı noktası numarası sağlayacağını bildiren bir PORT komutu verir.

Pasif Mod — İstemci, sunucunun IP ve bağlantı noktası numarası vermesini “pasif olarak” bekleyeceğini ve ardından istemcinin sunucuya bir Veri Bağlantısı oluşturacağını belirten bir PASV komutu verir.

Yukarıda çok sayıda iyi yanıt var, ancak bu blog yayını bazı yararlı grafikler içeriyor ve oldukça sağlam bir açıklama veriyor: https://titanftp.com/2018/08/23/what-is-the-difference-between-active-and -passive-ftp /

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.