FTP'de pasif ve genişletilmiş pasif modlar arasındaki farklar nelerdir?


17

Pasif mod FTP (PASV) ve Genişletilmiş Pasif mod FTP (EPSV) arasındaki farkları açıklayan var mı?


2
@DavidPostill Üzgünüm, gerçekten sadece PASV vs EPSV ile ilgileniyordum.
CGCampbell

Yanıtlar:


20

Tek fark, herhangi bir ağ protokolüyle çalışırken (uygulamada sadece IPv6 kullanılmasına rağmen) PORT/PASVIPv4 ile sınırlı olmasıdır .EPRT/EPSV

FTP kontrol protokolündeki standart PORT(aktif) ve PASV(pasif) komutlar, adres ve bağlantı noktası bilgilerini altı adet 1 bayt ondalık sayı olarak değiştirir; diğer uç, dört baytlık bir IP adresi ve iki baytlık TCP bağlantı noktası numarasını yeniden yapılandırmak zorundadır.

PORT <address[4]>,<port[2]>

PORT 132,235,1,2,24,131

Ama sonra başka protokoller ortaya çıkmaya başladı. IPv4'ün yerini, oldukça kısa, daha uzun, hatta değişken ana bilgisayar adresi boyutlarına sahip oldukça az sayıda rakip değiştirme önerisi (OSI CLNP, TUBA, SIP, SIPP, CATNIP - geçmişte çeşitli zamanlarda) olan "IPng" ile değiştirmek üzereydi. 16 bayt adresli IPv6 nihayet tanımlanana kadar.

Sadece daha fazla bayt göndermek işe yaramazdı - sunucular ve istemcilerden sadece adres uzunluğuna dayalı olarak doğru protokolü bilmeleri beklenemezdi. (Örneğin, 16 bayt adresi + 4 bayt bağlantı noktasına sahip bir protokolünüz, 12 bayt adresi + 12 bayt bağlantı noktasına sahip başka bir protokolünüz varsa ne olur?)

Ayrıca - bu 20 yıl önce daha az önemli olsa da - bugünlerde internette milyonlarca NAT cihazı var, bu da FTP kontrol bağlantılarını inceliyor ve yönetiyor, böylece "dış" ana bilgisayar "iç" ana bilgisayar yerel bir RFC1918 gönderdi. NAT olmadan bile, durum bilgisi olan güvenlik duvarları genellikle manuel kurallar olmadan bir veri bağlantısına otomatik olarak izin vermek için kontrol komutlarını izler.

Bu, basitçe, daha fazla numara göndermenin PORTveya PASVbirçok kişi için kırılmasının garanti edildiği anlamına gelir . Belki bazı güvenlik duvarları, bazı adres baytlarını bağlantı noktası olarak sessizce yanlış yorumlayabilir ve geri kalanını sessizce atabilir; diğerleri bağlantıyı kesebilir veya sadece kilitlenebilir.

Yukarıdaki gibi çeşitli sorunları önlemek için, FTP'de çoklu protokol desteği için yeni komutların getirilmesi gerekiyordu.

1993 yılında, RFC 1639 (orijinal olarak 1545, RFC ) ilave "uzun adresi" LPRTveLPSV benzeri olan komutlar, PORTve PASVancak ile değişken adres uzunluğu ; protokol türü tanımlayıcısını da içeriyorlardı. (Ancak sözdizimini değiştirmedi - IPv6 adresi: bağlantı noktası altı yerine 21 sayı olarak gönderilecek.)

LPRT <protocol>,<addr-length>,<address...>,<port-length>,<port...>

LPRT 4,4,132,235,1,2,2,24,131

LPRT 6,16,16,128,0,0,0,0,0,0,0,8,8,0,32,12,65,122,2,20,162

Ancak, bu yine de bir sunucudan kontrol bağlantısından farklı bir protokol kullanmasını istemek gibi bazı sorunları çözmedi. RFC de hızla güncelliğini yitirdi; IPv6 sadece bir yıl sonra çıktığında, bu olamazdı (sadece çeşitli erken teklifler için) bunun için atanmış bir LPRT protokol tanımlayıcı olduğu için LPRT ile kullanılabilir.

Bunu düzeltmek için, 1998'de RFC 2428 eklenmiş EPRTve EPSV"genişletilmiş bağlantı noktası" ve "genişletilmiş pasif" olarak da adlandırılmıştır. "Genişletilmiş" komutlar aynı zamanda adresleri insan tarafından okunabilir biçimde gönderir - IPv6 için, bir dizi ayrı ondalık sayı yerine onaltılık ve iki nokta notasyonu kullanmak anlamına gelir.

EPRT x<protocol>x<address>x<port>x

EPRT |1|132.235.1.2|6275|

EPRT |2|1080::8:800:200C:417A|5282|

Sonuç olarak, IPv6 desteği tek farktır.


Vay canına, okuduğum tüm siteler ve buna kadar tıklamadı. Bunun için teşekkür ederim. Muhtemelen bir veya iki saat içinde kabul edeceğim, başka birinin bunu farklı yapıp yapmadığını görmek istiyorum. Ayrıca, Active için de sormamın nedeni, etiketlemenin google ile iyi çalışması nedeniyle, bu soru / cevabın aramalarda bulunmasıydı. Kimse cevaba eklemezse (bir Google cevabı için daha eksiksiz hale getirir) cevabımın içeriğini yansıtacak şekilde asıl sorum ve bedenimi düzenleyeceğim, esas olarak sorumu cevabınıza uyacak.
CGCampbell

3
Başka bir fark, EPSVyanıtın IP adresini içermemesidir ( PASVyanıtın yaptığı şey). Bu, bir NAT'ın arkasında bulunan FTP sunucusu harici IP adresini bilmediğinde ve FTP istemcisini dahili adresini göndererek karıştırdığında yaygın sorunlardan kaçınmaktır.
Martin Prikryl

@MartinPrikryl'in söylediklerine eklemek için, TLS üzerinden FTP kullanmanın başka bir nedeni, güvenlik duvarı / NAT, yeniden yazmak için PASV komutundaki IP adresini kesemez (en azından kontrol bağlantısını MITMing olmadan). Unix dünya insanları genellikle TLS üzerinden FTP yerine SFTP kullanır, TLS üzerinden FTP, IBM ana çerçeveleri ile yaygın olarak kullanılır, çünkü FTP kayıt odaklı dosyalar (STRU R, MODE B) için destek sağlarken SFTP yalnızca akış yönelimini destekler dosyaları
Simon Kissane

1

Aktif ve pasif arasındaki fark zaten cevaplanmıştır. Genişletilmiş pasif (EPSV) sadece IPv4 ve IPv6 ile pasiftir, çünkü PASV'ye verilen yanıtın sözdizimi IPv4'e özgüdür ve bu nedenle IPv6 için yeni bir komut gerekliydi. Aktif modda EPTR ve PORT ile aynı. EPRT ve EPSV ile PORT ve PASV gibi sadece portu değil, portu içerebileceklerinden biraz farklı bir davranış vardır. Böylece veri aktarımı sadece kontrol bağlantısına sahip sistemler arasında yapılabilir. PORT ve PASV ile diğer sistemler arasında bir veri bağlantısı oluşturmak mümkündür (günümüzde bu kötü tasarım ve güvenlik riski olarak kabul edilmektedir).


2
Bu istemediğim bir cevaptı. Bu EPSV IPv6 için oluşturulduğunu, ancak değil, hangi tam olarak çok başka yerde bulabiliriz olarak söylüyor açıklayan neden. (yani nedeninizi yeterince iyi bir açıklama olarak kabul etmiyorum) Size cevabınızı daha da iyi hale getireceğinizi umuyorum.
CGCampbell

PASV komutuna verilen yanıtın IPv6'yı desteklememesi için yanıt düzeltildi ve yeni bir komut gerekliydi.
Steffen Ullrich
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.