FTP pasif mod dizin listeleme hatası nasıl çözülür?
FTP giris yapiyor ancak dizin listeleme sirasinda takiliyorsa veri kanali portlari engelleniyor demektir. Guvenlik duvarinda pasif port araligini nasil tanimlayacaginizi ogrenin.
FTP neden giriş yapıyor ancak dizin listeleme sırasında takılıyor
FTP pasif modu, FTP'nin tek değil iki TCP bağlantısı kullanması nedeniyle güvenlik duvarında kesintiye uğrar. 21 numaralı porta yapılan bağlantı, oturum açma ve komutları taşır; bu nedenle kullanıcı adı ve parola kabul edilir ve güvenlik duvarı yapılandırması doğru görünür. İlk ls, ardından farklı bir port üzerinden ikinci bir bağlantıya ihtiyaç duyar. Güvenlik duvarında buna izin veren bir kural bulunmadığından, istemci zaman aşımına uğrayana kadar bekler.
Bunun çözümü, veri bağlantıları için sabit bir port aralığı belirlemek ve güvenlik duvarında bu aralığa izin veren bir kural tanımlamaktır. NAT (ağ adresi çevirisi) arkasındaki bir sunucu, doğru adresi duyurabilmek için bir ayara daha ihtiyaç duyar. Bağlantı izleme yardımcıları (connection tracking helpers) eskiden bu işi sizin yerinize yapardı. Artık bunu yapmıyorlar; eski bir kılavuzu kopyalamadan önce bunun nedenini bilmek önemlidir.
Kontrol kanalı ve veri kanalı
FTP (file transfer protocol), RFC 959 ile tanımlanmıştır ve hem NAT hem de durum bilgili (stateful) güvenlik duvarlarından daha eski bir protokoldür. Bir oturum, TCP 21 numaralı portuna bir kontrol bağlantısı açar ve bu bağlantıyı tüm oturum boyunca açık tutar. Komutlar düz metin olarak iletilir. Yanıtlar ise üç haneli bir kod ve bir metin satırı olarak döner. Bu bağlantı üzerinden hiçbir zaman dosya içeriği aktarılmaz.
Her veri parçası için ayrı bir TCP bağlantısı kurulur: dizin listeleme için bir tane (LIST), her indirme için bir tane (RETR) ve her yükleme için bir tane (STOR). Bu bağlantı açılır, bir kez kullanılır ve kapatılır. Kimlik doğrulama tamamen kontrol kanalı üzerinden gerçekleşir; bu nedenle kopuk bir veri yolu her zaman aynı sonucu verir: başarılı bir girişin ardından gelen bir donma. Eğer istemci bir 230 yanıtı veriyor ve ardından listeleme aşamasında duruyorsa, sorun kimlik bilgilerinde değil, veri kanalındadır.
Aktif mod: sunucu istemciye geri bağlanır
Aktif modda istemci bir port seçer, bu portu dinlemeye başlar ve sunucuya nereye bağlanması gerektiğini bildirir:
PORT 192,168,1,50,195,80İlk dört sayı istemcinin IP adresidir. Son iki sayı ise iki bayt olarak kodlanmış port numarasıdır: 195 * 256 + 80 = 50000. Sunucu daha sonra kendi 20 numaralı portundan istemcinin 50000 numaralı portuna bir veri bağlantısı açar.
Bu bağlantı, istemci tarafı için gelen ve talep edilmemiş bir bağlantı olduğundan, istemci güvenlik duvarı tarafından reddedilir. İstemci bir ev yönlendiricisi (router) arkasında bulunuyorsa, PORT komutundaki adres sunucunun hiçbir şekilde erişemeyeceği özel bir adrestir. FTP'nin çalışmama konusundaki kötü şöhreti, aktif moddan kaynaklanmaktadır.
Pasif mod: istemci her iki bağlantıyı da açar
Pasif mod, veri bağlantısını tersine çevirir. İstemci PASV komutunu gönderir ve sunucu kendi adresini ve portunu içeren bir yanıt döner:
227 Entering Passive Mode (203,0,113,10,195,80)Kodlama aynıdır; bu nedenle istemci 203.0.113.10 adresine 50000 numaralı port üzerinden bağlanır. İstemci artık her iki bağlantıyı da kendisi açtığı için pasif mod, istemci tarafındaki NAT arkasında sorunsuz çalışır ve güncel tüm istemciler öncelikle bu modu talep eder.
Sorun ortadan kalkmak yerine yer değiştirmiştir. İstenmeyen gelen bağlantı artık sunucunuza, her aktarımda değişen yüksek numaralı bir porta ulaşır. Güvenlik duvarı size ait olduğundan, sorun artık sizin sorumluluğunuzdadır.
EPSV (genişletilmiş pasif mod, RFC 2428), daha temiz bir yanıt yapısıyla aynı mantığı kullanır:
229 Entering Extended Passive Mode (|||50000|)Bu yanıtta adres bilgisi bulunmaz. İstemci, kontrol bağlantısı için halihazırda kullandığı adresi tekrar kullanır; bu durum IPv6 üzerinde çalışmasını sağlar ve bir NAT hatası sınıfını tamamen ortadan kaldırır. curl kılavuzu, curl aracının normal şartlarda PASV öncesinde EPSV denediğini belirtir. Port hala çalışma zamanında seçildiği için EPSV kullanımı güvenlik duvarı kurallarınızda herhangi bir değişiklik yaratmaz.
Normal bir güvenlik duvarı kuralı veri kanalına neden izin veremez
Kuralı yazdığınız sırada port numarası henüz mevcut değildir. Sunucu, port numarasını her aktarım için ayrı seçer. Varsayılan ayarlarda bırakıldığında, vsftpd pasv_min_port ve pasv_max_port değerlerini 0 olarak belgeler; bu, "herhangi bir portu kullan" anlamına gelir, dolayısıyla veri bağlantısı 1023 üzerindeki herhangi bir porttan gelebilir. sudo ufw allow 21/tcp yalnızca kontrol kanalına izin verir, başka hiçbir şeye izin vermez; başarılı bir giriş yapıp listeleme aşamasında donan yapılandırma tam olarak budur. Bir servisin sabit bir portta dinleme yapması fikri hala karmaşıksa, Linux üzerinde portların ve dinleme soketlerinin çalışma mantığı bu konuda temel bilgiyi sağlar.
Durum bilgisi tutan (stateful) bir güvenlik duvarı bağlantıları takip eder ve çekirdek, yeni bir bağlantıyı mevcut bir bağlantının RELATED'sı olarak kabul edebilir. FTP için bu, kontrol akışını okuyacak ve port numarasını bir 227 veya PORT satırından çekip alacak bir mekanizmaya ihtiyaç duyar. Varsayılan olarak hiçbir araç bunu yapmaz.
FTP bağlantı izleme yardımcısının artık çözüm olmamasının nedenleri
Eski kılavuzlar sizi nf_conntrack_ftp çekirdek modülüne yönlendirir. Bu modül, şifrelenmemiş kontrol kanalını okur, duyurulan portu bulur ve bir beklenti kaydı oluşturur; böylece veri bağlantısı, portunu belirten bir kural olmaksızın kabul edilir. Bu kılavuzlar yazıldığından beri dört şey değişti.
Otomatik yardımcı ataması devre dışıdır. Çekirdek belgeleri nf_conntrack_helper sysctl değerini "0 - devre dışı (varsayılan)" olarak tanımlar ve şunu ekler: "Devre dışı bırakılmışsa, yardımcıları bağlantılara atamak için iptables kurallarının ayarlanması gerekir." Modülü yüklemek tek başına bir sonuç vermez.
Güncel çekirdeklerde bu anahtar kaldırılmıştır. sysctl net.netfilter.nf_conntrack_helper komutunu çalıştırın. sysctl: cannot stat /proc/sys/net/netfilter/nf_conntrack_helper: No such file or directory yanıtı, çekirdekte etkinleştirilecek otomatik yardımcı ataması kalmadığı anlamına gelir. Eğer bir sayı dönüyorsa, anahtar hala mevcuttur ve varsayılan değeri 0'tür.
Güvenlik duvarı arayüzleri de bu özelliği kullanımdan kaldırmıştır. Ubuntu 24.04 üzerindeki man ufw-framework, /etc/default/ufw içindeki IPT_MODULES satırı için şunları belirtir: "Bağlantı izleme modüllerinin (nf_conntrack_*) bu şekilde koşulsuz yüklenmesi kullanımdan kaldırılmıştır" ve yardımcı kurallarının "KURALLAR DOSYALARI aracılığıyla yönetilmesi gerektiğini" ekler. firewalld, firewalld.conf içindeki AutomaticHelpers seçeneğini "Kullanımdan kaldırıldı. Bu seçenek göz ardı edilir ve artık kullanılmamaktadır" şeklinde belgeler. Bir yardımcıyı eklemek artık CT hedefiyle manuel olarak açık bir kural yazmak anlamına gelir; bu, aşağıdaki çözümden daha fazla iş yükü gerektirir ve TLS'yi etkinleştirdiğiniz anda çalışmayı durdurur. Ubuntu üzerinde iptables ve nftables bu kuralların gerçekte nerede bulunduğunu açıklar.
TLS tartışmayı sonlandırır. Bir yardımcı, kontrol kanalını metin olarak okuyarak çalışır. Kanalı şifrelediğinizde yardımcı sadece şifreli metni görür ve bu nedenle portu bulamaz. Bunun bir çözümü yoktur ve olmamalıdır: kontrol kanalınızı okuyabilen bir ara kutu, parolanızı da okuyabilen bir ara kutudur.
Sunucuda pasif port aralığı tanımlama
Her FTP sunucusuna, pasif portlarını belirlediğiniz bir aralıktan seçmesi talimatı verilebilir. Seçenek isimleri farklılık gösterir, bu nedenle kullandığınız sunucunun dokümantasyonunu kontrol edin.
vsftpd için, /etc/vsftpd.conf dosyasında:
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=30099pasv_enable zaten varsayılan olarak YES değerindedir. İki port seçeneği varsayılan olarak yukarıda açıklanan "herhangi bir portu kullan" davranışını temsil eden 0 değerine sahiptir. sudo systemctl restart vsftpd ile uygulayın, ardından systemctl status vsftpd ile servisin geri geldiğini doğrulayın. vsftpd, ayrıştıramadığı bir yapılandırma satırını görmezden gelmek yerine servisi başlatmayı reddeder; bu nedenle yeniden başlatma başarısız olursa, yazdığınız seçeneği belirten 500 OOPS: satırı için journalctl -u vsftpd -n 20 dosyasını okuyun.
ProFTPD için, proftpd.conf dosyasında:
PassivePorts 30000 30099ProFTPD burada varsayılan bir değer belirtmez: yönerge olmadığında portu çekirdek (kernel) seçer. Dokümantasyonu ayrıca, aralığınızdaki hiçbir port boş olmadığında sunucunun çekirdek tarafından atanan bir porta geri döndüğünü ve bir mesaj kaydettiğini belirtir. Bu nedenle çok küçük bir aralık, temiz bir şekilde hata vermek yerine zaman zaman başarısız olur ve bu durumun teşhisi çok daha zordur. 1024 ve üzerindeki ayrıcalıksız portları kullanın.
Pure-FTPd, man pure-ftpd dosyasında "Pasif mod indirmeleri için yalnızca ilk ve son dahil aralıktaki portları kullan" şeklinde belgelenen ve "pure-ftpd'yi paket filtreleriyle daha uyumlu hale getiren" -p first:last bayrağını alır. Paket halindeki sürümler genellikle bu bayrağı bir yapılandırma dosyasına sarar, bu yüzden tahmin etmek yerine dosya adı için dağıtımınızın kendi dokümanlarını kontrol edin.
Kaç porta ihtiyacınız var? Aktif olan her veri bağlantısı için bir tane. Kapanan bir TCP portu, yeniden kullanılabilmesi için birkaç dakika boyunca TIME_WAIT durumunda kalır, bu nedenle beklenen yoğunluğunuzun birkaç katına izin verin. Yüz port birkaç kullanıcı için yeterlidir, yoğun bir genel sunucu ise çok daha fazlasına ihtiyaç duyar.
Aralık nerede olmalı? Önce sysctl net.ipv4.ip_local_port_range komutunu çalıştırın. Standart bir Ubuntu sisteminde, çekirdeğin giden bağlantılar için dağıttığı portları gösteren 32768 60999 değerini okur. Bu pencere içindeki bir pasif aralık, halihazırda portu tutan bir giden bağlantıyla çakışabilir, bu yüzden aralığı bunun altında tutun. 30000 ile 30099 arası varsayılan bir sistemde boştur. Bu sayıya güvenmek yerine kendi sisteminizi kontrol edin.
Aynı aralığı güvenlik duvarında açın
ufw, bir aralığı iki nokta üst üste işaretiyle yazar ve kılavuzu, bir aralığın veya listenin "birden fazla portu belirtmek için de kullanılabileceğini, bu durumda protokolün zorunlu olduğunu" belirtir:
sudo ufw allow 21/tcp
sudo ufw allow 30000:30099/tcp
sudo ufw status verboseufw status verbose artık her iki girdiyi de listelemelidir. /tcp olmadan aynı komut, ufw tahmin yürütmeyeceği için tcp veya udp belirtmenizi söyleyen bir hata ile reddedilir. VPS üzerinde ufw kural sözdizimi geri kalanını kapsar.
firewalld, aralığı kısa çizgi ile yazar ve yeniden yükleme gerektirir:
sudo firewall-cmd --permanent --add-service=ftp
sudo firewall-cmd --permanent --add-port=30000-30099/tcp
sudo firewall-cmd --reload
sudo firewall-cmd --list-all--add-service=ftp, 21/tcp portunu açar ve yüklü servis tanımının belirttiği ftp yardımcısını talep eder. Pasif aralığınızı açmaz, bu nedenle tek başına sizi tam olarak başladığınız noktada bırakır. VPS üzerinde firewalld bölgeleri ve servisleri daha geniş bir bakış açısı sunar.
Doğrudan nftables, input zincirinizin içinde:
tcp dport { 21, 30000-30099 } acceptHatırlanması gereken bir güvenlik duvarı daha var: çoğu sağlayıcı, işletim sisteminin dışında, kontrol panelinde bir ağ güvenlik duvarı çalıştırır. Sunucu üzerindeki kurallar doğru görünüyorsa ancak paketler hala ulaşmıyorsa, aynı aralığı orada da açın.
Sunucu NAT arkasındaysa genel adresini belirtin
Sunucuda ip -4 addr show komutunu çalıştırın. Arayüzdeki adres, istemcilerin bağlandığı adres ile aynıysa bu bölümü atlayın. Arayüz özel bir adres (10.x, 172.16 ile 172.31.x arası, 192.168.x) tutuyorsa ve platform buna genel bir adres yönlendiriyorsa, sunucu kendi genel adresini bilemez. vsftpd, pasv_address için varsayılan değeri "adres, gelen bağlantı soketinden alınır" şeklinde tanımlar; bu nedenle 227 yanıtı özel adresi taşır ve istemci ulaşamayacağı bir yere yönlendirilir.
FileZilla bunu tam olarak şu şekilde adlandırır:
Server sent passive reply with unroutable address. Using server address instead.FileZilla bunu onarır ve devam eder. Diğer birçok istemci bunu yapmaz. 10.0.0.5 adresine bağlanmaya çalışır ve yanıt alamaz.
curl de bu sorunu gizler; eğer testlerinizde curl kullanıyorsanız bu önemlidir. Kılavuzuna göre --ftp-skip-pasv-ip "varsayılan olarak etkindir (7.74.0 sürümünde eklenmiştir)", bu nedenle curl, 227 yanıtındaki adresi görmezden gelir ve kontrol bağlantısının adresini yeniden kullanır. curl ile çalışan bir aktarım, sırf bu nedenle grafiksel bir istemcide başarısız olabilir.
Adresi açıkça ayarlayın. vsftpd, pasv_address=203.0.113.10 parametresini ve bir ana makine adı yazmak isterseniz pasv_addr_resolve=YES (varsayılan NO) parametresini kullanır. ProFTPD, bir adres, DNS adı veya arayüz adı kabul eden MasqueradeAddress parametresini kullanır. Pure-FTPd, "sunucunun bir maskeleme (NAT) kutusunun arkasında olduğu" durumlar için belgelenen -P parametresini kullanır. EPSV, yanıtında adres alanı bulunmadığı için tüm sorunu ortadan kaldırır; ancak istemci hangi komutu göndereceğine karar verdiği için buna güvenemezsiniz.
TLS değişiklikleri nelerdir
FTPS, TLS (transport layer security) üzerinden FTP kullanımıdır. İstemci, standart olarak 21 numaralı porta bağlanır, kontrol kanalını güvenli hale getirmek için AUTH TLS komutunu gönderir, ardından veri kanalını da şifrelemek için PROT P komutunu iletir. Düz FTP, parolayı ağ üzerinde okunabilir metin olarak iletir; bu nedenle FTP kullanmak zorundaysanız FTPS tercih edilmelidir. vsftpd, ssl_enable ayarı varsayılan olarak NO olacak şekilde dağıtılır.
Bunun iki sonucu vardır. Hiçbir bağlantı izleme yardımcısı (connection tracking helper) çalışamaz; bu, yukarıda belirtilen durumun diğer taraftan görünümüdür. Ayrıca sudo tcpdump -nAi any 'tcp port 21' artık size 227 yanıtını göstermeyecektir; bu nedenle sunucunun hangi adres ve portu duyurduğunu öğrenmeniz gerektiğinde, ağ trafiği yerine sunucunun kendi günlük kayıtlarını inceleyin.
Değişikliğin dışarıdan test edilmesi
Bu komutları başka bir makineden çalıştırın. Sunucunun kendisinden test yapmak, düzeltmeye çalıştığınız güvenlik duvarını devre dışı bırakır.
sudo ss -ltnp | grep :21
curl -v --disable-epsv --user ftpuser:secret ftp://example.com/
nc -vz example.com 30000ss, FTP daemon'ın 21 numaralı portta dinleme yaptığını göstermelidir. Sunucu boşta iken pasif aralıkta hiçbir şey dinleme yapmaz; çünkü bu soketler yalnızca bir aktarım için oluşturulur ve aktarım bittiğinde kapatılır.
--disable-epsv, curl komutunu PASV yoluna girmeye zorlar; bu yol adres sorununu ortaya çıkaran yoldur. İzleme çıktısı, sunucunun yanıtını ve ardından curl'ün bağlandığı adres ile portu yazdırır:
< 227 Entering Passive Mode (203,0,113,10,117,52)117 * 256 + 52 = 30004, bu değer tanımlanan aralığın içindedir. Bu satırdaki özel bir IP adresi, pasv_address değerinin ayarlanmadığı anlamına gelir. Tanımladığınız aralığın dışındaki bir port ise sunucunun yapılandırma değişikliğini hiç okumadığını gösterir; bu durumda çalışan servisin kullandığı dosyayı düzenlediğinizden emin olun.
nc, güvenlik duvarı sorusunu kendi başına yanıtlar. Anlık bir Connection refused, paketin sunucuya ulaştığını ve dinleme yapan bir servis bulamadığını gösterir; bu, boşta olan bir pasif port için doğru sonuçtur: kuralınız çalışıyor demektir. nc zaman aşımına uğrayana kadar beklemek, bir şeyin paketi sessizce düşürdüğü anlamına gelir; bu durum ya sunucu üzerindeki ya da servis sağlayıcınızın panelindeki bir güvenlik duvarından kaynaklanır. Bu ayrım, SSH için reddedilen bağlantı ile zaman aşımı bölümünde açıklananla aynıdır ve her port için geçerlidir.
Hala FTP kullanmalı mısınız?
Yeni projeler için hayır. SFTP (SSH file transfer protocol), 22 numaralı port üzerinden tek bir SSH bağlantısı içinde çalışır. İkinci bir kanal, pasif aralık, NAT ayarı veya güvenli hale getirilecek ek bir daemon yoktur; çünkü OpenSSH bunu zaten sağlar. sftp user@example.com, hiçbir dosya transfer servisi yapılandırmadığınız bir sunucuda bile çalışır. Birine yalnızca dosya erişimi vermek için sshd_config, ForceCommand internal-sftp ile birlikte ChrootDirectory kullanır. Bu dizinin sahibi root olmalı ve kullanıcı tarafından yazılabilir olmamalıdır; aksi takdirde sshd oturumu reddeder ve bir bad ownership or modes for chroot directory satırı günlüğe kaydeder.
FTP, karşı tarafın değişiklik yapamadığı durumlarda hala yerini korur. Tarayıcılar ve çok fonksiyonlu yazıcılar, yalnızca FTP ile konuşan firmware sürümleriyle gelir. Laboratuvar ve endüstriyel ekipmanlar genellikle kimsenin yeniden sertifikalandırmayacağı sabit bir imaj üzerinde çalışır. İş ortakları bir FTPS dizini yayınlar ve tek bir tedarikçi için protokol değişikliği yapmazlar. Bu durumların her birinde, pasif aralık ve buna karşılık gelen güvenlik duvarı kuralı işin tamamıdır ve çalıştırılması gereken sürüm düz FTP yerine FTPS'dir. İki kanallı tasarım, 1985 yılından kalma bir karardır ve günümüzde hiç öngörmediği bir dünyada çalışmaktadır; bu hikaye dosya transfer protokollerinin tarihi içinde ele alınmıştır.
FAQ
FTP ile giriş yapabiliyorum ancak dizin listeleme neden takılıyor?
Giriş işlemi, güvenlik duvarınızın izin verdiği 21 numaralı port üzerindeki kontrol bağlantısını kullanır. Dizin listeleme ise farklı bir port üzerinde ikinci bir TCP bağlantısına ihtiyaç duyar ve bu bağlantı engellenmektedir. FTP sunucusu üzerinde pasif bir port aralığı tanımlayın ve aynı aralığı güvenlik duvarında açın; listeleme işlemi tamamlanacaktır. Takılan bir listeleme, veri kanalı sorunudur; parola sorunu değildir.
FTP pasif modu için hangi portları açmam gerekiyor?
Kontrol kanalı için 21 numaralı portun yanı sıra, pasif veri bağlantıları için yapılandırdığınız aralığı açmalısınız. Standart bir aralık yoktur, aralığı siz belirlersiniz. Örneğin 30000 ile 30099 arası bir aralık iş görür: bu aralığı eşzamanlı maksimum transfer sayınıza göre boyutlandırın ve çekirdeğin giden port aralığıyla çakışmamasına dikkat edin; bu aralığı sysctl net.ipv4.ip_local_port_range ile görüntüleyebilirsiniz. Eğer servis sağlayıcınızın kontrol panelinde bir ağ güvenlik duvarı varsa, aynı aralığı orada da açın.
Hala nf_conntrack_ftp kullanmam gerekiyor mu?
Hayır, güncel bir çekirdekte buna güvenemezsiniz. Otomatik yardımcı ataması varsayılan olarak devre dışıdır ve yeni çekirdeklerde net.netfilter.nf_conntrack_helper anahtarı kaldırılmıştır; bu nedenle sysctl dosyanın bulunamadığını bildirir. ufw kılavuzları, bu modüllerin koşulsuz yüklenmesini artık desteklenmeyen bir yöntem olarak niteler ve firewalld, AutomaticHelpers ayarını tamamen görmezden gelir. Ayrıca bir yardımcı modül, kontrol kanalını düz metin olarak okumak zorundadır; bu nedenle FTPS'yi etkinleştirdiğiniz anda çalışmayı durdurur. Bunun yerine pasif bir port aralığı tanımlayın.
FTP istemcim neden pasif yanıtın yönlendirilemez bir adres içerdiğini söylüyor?
Sunucu, PASV yanıtını kendi arayüzünde gördüğü adresle vermiştir ve bu adres özel (private) bir adrestir. Bu durum, platform genel (public) bir adresi özel bir adrese eşlediğinde meydana gelir. Genel adresi açıkça belirtin: vsftpd için pasv_address, ProFTPD için MasqueradeAddress veya Pure-FTPd için -P. FileZilla, halihazırda bağlandığı adresi yeniden kullanarak bu sorunu aşar ve "Using server address instead" şeklinde bir günlük kaydı düşer; bazı istemcilerin yanlış yapılandırmaya rağmen çalışmasının, diğerlerinin ise takılmasının nedeni budur.
FTPS mi yoksa SFTP mi kullanmalıyım?
Her iki ucu da kontrol ettiğiniz durumlar için SFTP kullanın: 22 numaralı port üzerinden SSH ile tek bir bağlantı kurulur, açılması gereken bir veri kanalı yoktur ve zaten çalışır durumdadır. FTPS, TLS üzerinden FTP'dir; bu nedenle iki kanallı tasarımı ve beraberinde getirdiği tüm güvenlik duvarı sorunlarını korur. Karşı taraf başka bir protokol desteklemiyorsa FTPS'yi tercih edin. İnternet üzerinden düz FTP kullanmayın, çünkü parola ağ üzerinden okunabilir metin olarak iletilir.