Lütfen biri bana aktif ve pasif FTP arasındaki farkın ne olduğunu söyleyebilir mi? Hangisi tercih edilir?
Aktif ve pasif, FTP'nin çalışabileceği iki moddur.
Arka plan için, FTP aslında istemci ve sunucu arasında komut ve veri kanalları olmak üzere iki kanal kullanır ve bunlar aslında ayrı TCP bağlantılarıdır.
Komut kanalı komutlar ve yanıtlar içindir, veri kanalı ise dosyaları gerçekten aktarmak içindir.
Komut bilgilerinin ve verilerin ayrı kanallara ayrılması, mevcut veri aktarımının bitmesini beklemek zorunda kalmadan sunucuya komut gönderebilmenin şık bir yoludur. RFC'ye göre, bu yalnızca çıkma, mevcut aktarımı iptal etme ve durumu alma gibi komutların bir alt kümesi için zorunludur.
Aktif modda, istemci komut kanalını kurar ancak veri kanalının kurulmasından sunucu* sorumludur. Örneğin, istemci makine güvenlik duvarları tarafından korunuyorsa ve harici taraflardan gelen yetkisiz oturum isteklerine izin vermiyorsa, bu aslında bir sorun olabilir.
Pasif modda, istemci her iki* kanalı da kurar. Aktif modda komut kanalını kurduğunu zaten biliyoruz ve burada da aynısını yapıyor.
Ancak, daha sonra istemciye geri bağlantı kurmaya çalışmak yerine sunucudan (komut kanalında) bir bağlantı noktasında (sunucuların takdirine bağlı olarak) dinlemeye başlamasını ister.
Bunun bir parçası olarak, sunucu istemciye dinlemek için seçtiği bağlantı noktası numarasını da döndürür, böylece istemci ona nasıl bağlanacağını bilir.
İstemci bunu öğrendikten sonra veri kanalını başarıyla oluşturabilir ve devam edebilir.
Daha fazla ayrıntı RFC'de mevcuttur: https://www.ietf.org/rfc/rfc959.txt
Yakın zamanda iş yerimde bu soruyla karşılaştım, bu yüzden burada daha fazla şey söylemem gerektiğini düşünüyorum. Önceki cevap için ek bir kaynak olarak FTP'nin nasıl çalıştığını açıklamak için resim kullanacağım.
Aktif mod:
Pasif mod:
Etkin mod yapılandırmasında, sunucu rastgele bir istemci tarafı bağlantı noktasına bağlanmaya çalışacaktır. Yani büyük ihtimalle bu port önceden tanımlanmış portlardan biri olmayacaktır. Sonuç olarak, bu bağlantı noktasına bağlanma girişimi güvenlik duvarı tarafından engellenecek ve hiçbir bağlantı kurulamayacaktır.
Bağlantıyı başlatan istemci olacağı için pasif bir yapılandırmada bu sorun olmayacaktır. Tabii ki, sunucu tarafında da bir güvenlik duvarı 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ırmak sizin için en iyisi olacaktır. Ancak, pasif mod sisteminizi saldırılara karşı savunmasız hale getirecektir çünkü istemcilerin rastgele sunucu portlarına bağlanması beklenir. Bu nedenle, bu modu desteklemek için yalnızca sunucunuzun birden fazla bağlantı noktasına sahip olması gerekmez, aynı zamanda güvenlik duvarınızın da tüm bu bağlantı noktalarına bağlantıların geçmesine izin vermesi gerekir!
Riskleri azaltmak için, sunucunuzda bir port aralığı belirlemek ve ardından güvenlik duvarınızda yalnızca bu port aralığına izin vermek iyi bir çözüm olacaktır.
Daha fazla bilgi için lütfen resmi belgeyi okuyunuz.
Makalemin düzeltilmiş versiyonu FTP Bağlantı Modları (Aktif ve Pasif):
FTP bağlantı modu (aktif veya pasif), bir veri bağlantısının nasıl kurulacağını belirler. Her iki durumda da, bir istemci FTP sunucusu komut bağlantı noktası 21'e bir TCP kontrol bağlantısı oluşturur. Bu, diğer dosya aktarım protokollerinde (SFTP, SCP, WebDAV) veya diğer TCP istemci uygulamalarında (örneğin web tarayıcısı) olduğu gibi standart bir giden bağlantıdır. Dolayısıyla, kontrol bağlantısını açarken genellikle herhangi bir sorun yaşanmaz.
FTP protokolünün diğer dosya aktarım protokollerine kıyasla daha karmaşık olduğu nokta dosya aktarımlarıdır. Diğer protokoller hem oturum kontrolü hem de dosya (veri) transferleri için aynı bağlantıyı kullanırken, FTP protokolü dosya transferleri ve dizin listeleri için ayrı bir bağlantı kullanır.
Aktif* modda, istemci sunucudan gelen veri bağlantıları için rastgele bir portu dinlemeye başlar (istemci sunucuya hangi portu dinlediğini bildirmek için PORT
FTP komutunu gönderir). Günümüzde, istemcinin bir güvenlik duvarının (örn. yerleşik Windows güvenlik duvarı) veya NAT yönlendiricisinin (örn. ADSL modem) arkasında olması ve gelen TCP bağlantılarını kabul edememesi tipik bir durumdur.
Bu nedenle pasif mod ortaya çıkmıştır ve günümüzde çoğunlukla kullanılmaktadır. Pasif* modun kullanılması tercih edilir çünkü karmaşık yapılandırmaların çoğu, (muhtemelen) deneyimsiz kullanıcılar tarafından istemci tarafında tek tek yapılmak yerine, deneyimli bir yönetici tarafından sunucu tarafında yalnızca bir kez yapılır.
Pasif* modda, istemci sunucuya bir PASV
komutu göndermek için kontrol bağlantısını kullanır ve ardından sunucudan bir sunucu IP adresi ve sunucu bağlantı noktası numarası alır; istemci daha sonra aldığı sunucu IP adresi ve sunucu bağlantı noktası numarasına bir veri bağlantısı açmak için bunu kullanır.
Pasif* modda, yapılandırma yükünün çoğu sunucu tarafındadır. Sunucu yöneticisi sunucuyu aşağıda açıklandığı gibi kurmalıdır.
FTP sunucusu tarafındaki güvenlik duvarı ve NAT, yalnızca FTP bağlantı noktası 21'e gelen bağlantılara izin verecek/yönlendirecek şekilde değil, aynı zamanda gelen veri bağlantıları için bir dizi bağlantı noktasına izin verecek/yönlendirecek şekilde yapılandırılmalıdır. Tipik olarak, FTP sunucu yazılımı, sunucunun kullanacağı port aralığını ayarlamak için bir yapılandırma seçeneğine sahiptir. Ve aynı aralığın güvenlik duvarı/NAT üzerinde de açılması/yönlendirilmesi gerekir.
FTP sunucusu bir NAT arkasında olduğunda, harici IP adresini bilmesi gerekir, böylece PASV
komutuna yanıt olarak istemciye sağlayabilir.
Aktif* modda, yapılandırma yükünün çoğu istemci tarafındadır.
İ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önlendirecek şekilde yapılandırılmalıdır. Windows'ta portları açmak için Denetim Masası > Sistem ve Güvenlik > Windows Güvenlik Duvarı > Gelişmiş Ayarlar > Gelen Kuralları > Yeni Kural bölümüne gidin. NAT üzerindeki bağlantı noktalarını yönlendirmek için (varsa), belgelerine bakın.
Ağınızda NAT olduğunda, FTP istemcisinin WinSCP'nin PORT
komutunu kullanarak FTP sunucusuna sağlaması gereken harici IP adresini bilmesi gerekir. Böylece sunucu, veri bağlantısını açmak için istemciye doğru bir şekilde geri bağlanabilir. Bazı FTP istemcileri harici IP adresini otomatik olarak algılayabilirken, bazılarının manuel olarak yapılandırılması gerekir.
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 bağlantı noktalarını otomatik olarak açmaya/kapatmaya çalışır.
Böyle bir güvenlik duvarı/NAT ile, şifrelenmemiş düz bir FTP için yukarıdaki yapılandırma gerekli değildir. Ancak, kontrol bağlantısı trafiği şifreli olduğundan ve güvenlik duvarı/NAT bunu denetleyemediğinden veya değiştiremediğinden, bu FTPS ile çalışamaz.