SFTP ve FTPS protokolleri

Önsöz

Daha bir hafta önce başlıkta belirtilen konuyla ilgili bir makale yazıyordum ve diyelim ki internette bu kadar eğitici bilginin bulunmadığı gerçeğiyle karşı karşıya kaldım. Çoğunlukla kuru gerçekler ve kurulum talimatları. Bu nedenle metni biraz düzeltip makale olarak yayınlamaya karar verdim.

FTP nedir

FTP (Dosya Aktarım Protokolü), dosyaları bir ağ üzerinden aktarmak için kullanılan bir protokoldür. Temel Ethernet protokollerinden biridir. 1971'de ortaya çıktı ve ilk olarak DARPA ağlarında çalıştı. Şu anda, HTTP gibi, dosya aktarımı da bir dizi TCP/IP (İletim Kontrol Protokolü/İnternet Protokolü) protokolünden oluşan bir modele dayanmaktadır. RFC 959'da tanımlanmıştır.

Protokol aşağıdakileri tanımlar:

  • Hata kontrolü nasıl yapılacak?
  • Veri paketleme yöntemi (paketleme kullanılıyorsa)
  • Gönderen cihaz mesajı bitirdiğini nasıl gösteriyor?
  • Alıcı cihaz bir mesaj aldığını nasıl belirtir?

İstemci ve sunucu arasındaki iletişim

FTP işlemi sırasında meydana gelen işlemlere daha yakından bakalım. Bağlantı kullanıcının protokol yorumlayıcısı tarafından başlatılır. Santral, TELNET standardındaki bir kontrol kanalı aracılığıyla kontrol edilir. FTP komutları kullanıcının protokol yorumlayıcısı tarafından oluşturulur ve sunucuya gönderilir. Sunucunun yanıtları da kontrol kanalı aracılığıyla kullanıcıya gönderilir. Genel olarak kullanıcı, sunucunun protokol yorumlayıcısıyla ve kullanıcının yorumlayıcısı dışındaki yollarla iletişim kurma olanağına sahiptir.

FTP'nin ana özelliği çift bağlantı kullanmasıdır. Bunlardan biri sunucuya komut göndermek için kullanılır ve varsayılan olarak değiştirilebilen TCP bağlantı noktası 21 aracılığıyla gerçekleşir. İstemci sunucuyla iletişim kurduğu sürece kontrol bağlantısı mevcuttur. Makineler arasında veri aktarımı sırasında kontrol kanalı açık olmalıdır. Kapalıysa veri iletimi durur. İkincisi sayesinde doğrudan veri aktarımı gerçekleşir. İstemci ile sunucu arasında her dosya aktarımı gerçekleştiğinde açılır. Birden fazla dosya aynı anda aktarılırsa her biri kendi iletim kanalını açar.

FTP, bağlantının nasıl kurulduğunu belirleyen aktif veya pasif modda çalışabilir. Etkin modda, istemci, sunucuyla bir TCP kontrol bağlantısı oluşturur ve IP adresini ve isteğe bağlı bir istemci bağlantı noktası numarasını sunucuya gönderir ve ardından sunucunun bu adres ve bağlantı noktası numarasıyla bir TCP bağlantısı başlatmasını bekler. İstemcinin bir güvenlik duvarının arkasında olması ve gelen TCP bağlantısını kabul edememesi durumunda pasif mod kullanılabilir. Bu modda, istemci, sunucuya bir PASV komutu göndermek için kontrol akışını kullanır ve ardından sunucudan IP adresini ve bağlantı noktası numarasını alır; istemci daha sonra bunu, isteğe bağlı bağlantı noktasından bir veri akışı açmak için kullanır.

Verilerin üçüncü bir makineye aktarılması mümkündür. Bu durumda kullanıcı iki sunucu ile bir kontrol kanalı düzenler ve bunlar arasında doğrudan bir veri kanalı düzenler. Kontrol komutları kullanıcı üzerinden geçer ve veriler doğrudan sunucular arasında gider.

Bir ağ üzerinden veri iletirken dört veri gösterimi kullanılabilir:

  • ASCII – metin için kullanılır. Veriler, gerekirse gönderen ana bilgisayardaki karakter temsilinden iletimden önce "sekiz bitlik ASCII"ye ve (gerekirse tekrar) alıcı ana bilgisayardaki karakter temsiline dönüştürülür. Özellikle yeni satır karakterleri değiştirildi. Sonuç olarak bu mod, düz metinden fazlasını içeren dosyalar için uygun değildir.
  • İkili mod - gönderen cihaz her dosyayı bayt bayt olarak gönderir ve alıcı, alındığında bayt akışını saklar. Tüm FTP uygulamaları için bu modun desteklenmesi önerilmiştir.
  • EBCDIC – EBCDIC kodlamasında ana bilgisayarlar arasında düz metin aktarmak için kullanılır. Aksi takdirde bu mod ASCII moduna benzer.
  • Yerel mod - aynı ayarlara sahip iki bilgisayarın verileri ASCII'ye dönüştürmeden kendi formatlarında göndermesine olanak tanır.

Veri aktarımı üç moddan herhangi birinde gerçekleştirilebilir:

  • Akış modu - veriler sürekli bir akış halinde gönderilir ve FTP'nin herhangi bir işlem gerçekleştirmesine gerek kalmaz. Bunun yerine tüm işlemler TCP tarafından yapılır. Verileri kayıtlara ayırmak dışında dosya sonu göstergesine gerek yoktur.
  • Blok modu - FTP, verileri birkaç bloğa (başlık bloğu, bayt sayısı, veri alanı) böler ve ardından bunları TCP'ye iletir.
  • Sıkıştırma modu – veriler tek bir algoritma kullanılarak sıkıştırılır (genellikle çalışma uzunluklarını kodlayarak).

FTP sunucusu, Dosya Aktarım Protokolünü kullanma yeteneği sağlayan bir sunucudur. Onu geleneksel web sunucularından ayıran bazı özelliklere sahiptir:

  • Kullanıcı kimlik doğrulaması gerekli
  • Tüm işlemler mevcut oturumda gerçekleştirilir
  • Dosya sistemiyle çeşitli eylemler gerçekleştirebilme yeteneği
  • Her bağlantı için ayrı bir kanal kullanılır

FTP istemcisi, uzak bir sunucuya FTP aracılığıyla bağlanmanıza ve ayrıca dosya sisteminin öğeleriyle üzerinde gerekli eylemleri gerçekleştirmenize olanak tanıyan bir programdır. İstemci, genel URL blok şemasına uygun olarak, uzak sunucudaki belirli bir dizine veya dosyaya giden yol olan adresi girmeniz gereken adres çubuğuna bir tarayıcı olabilir:

ftp://user:pass@address:port/directory/file

Ancak bu bağlamda bir web tarayıcısı kullanmak yalnızca ilgilendiğiniz dosyaları görüntülemenize veya indirmenize olanak tanır. FTP'nin tüm avantajlarından tam olarak yararlanmak için istemci olarak özel yazılım kullanmalısınız.

FTP kimlik doğrulaması, erişim izni vermek için bir kullanıcı adı/şifre şeması kullanır. Kullanıcı adı USER komutu ile sunucuya, şifre ise PASS komutu ile gönderilir. İstemcinin verdiği bilgiler sunucu tarafından kabul edilirse sunucu istemciye bir davet gönderir ve oturum başlar. Sunucu bu özelliği destekliyorsa kullanıcılar kimlik bilgilerini girmeden oturum açabilirler ancak sunucu bu tür oturumlar için yalnızca sınırlı erişim izni verebilir.

FTP hizmetini sağlayan ana bilgisayar, anonim FTP erişimi sağlayabilir. Kullanıcılar genellikle kullanıcı adı olarak "anonim" (bazı FTP sunucularında büyük/küçük harfe duyarlı olabilir) ile oturum açarlar. Kullanıcılardan genellikle şifre yerine e-posta adreslerini vermeleri istense de gerçekte herhangi bir doğrulama yapılmaz. Yazılım güncellemeleri sağlayan birçok FTP ana bilgisayarı anonim erişimi destekler.

Protokol diyagramı

FTP bağlantısı sırasında istemci-sunucu etkileşimi şu şekilde görselleştirilebilir:

SFTP ve FTPS protokolleri

Güvenli FTP

FTP, birden fazla askeri tesis ve kurum arasındaki iletişim için tasarlandığından, başlangıçta güvenli olması amaçlanmamıştı. Ancak internetin gelişmesi ve yaygınlaşmasıyla birlikte yetkisiz erişim tehlikesi de kat kat arttı. Sunucuları çeşitli saldırı türlerinden korumaya ihtiyaç vardı. Mayıs 1999'da RFC 2577'nin yazarları güvenlik açıklarını aşağıdaki sorunlar listesinde özetlediler:

  • Gizli saldırılar (sıçrama saldırıları)
  • Sahte saldırılar
  • Kaba kuvvet saldırıları
  • Paket yakalama, koklama
  • Liman hırsızlığı

Normal FTP'nin verileri şifrelenmiş biçimde aktarma özelliği yoktur, bunun sonucunda kullanıcı adları, şifreler, komutlar ve diğer bilgiler saldırganlar tarafından kolayca ele geçirilebilir. Bu sorunun olağan çözümü, güvenlik açığı bulunan protokolün (FTPS) "güvenli", TLS korumalı sürümlerini veya çoğu Secure Shell protokolü uygulamasında sağlanan SFTP/SCP gibi daha güvenli başka bir protokolü kullanmaktır.

FTPS

FTPS (FTP + SSL), standart dosya aktarım protokolünün, temel işlevselliğine SSL (Güvenli Yuva Katmanı) protokolünü kullanarak şifrelenmiş oturumlar oluşturma özelliğini ekleyen bir uzantısıdır. Günümüzde koruma, daha gelişmiş analog TLS (Aktarım Katmanı Güvenliği) tarafından sağlanmaktadır.

SSL

SSL protokolü, İnternet bağlantılarının güvenliğini ve gizliliğini sağlamak için 1996 yılında Netscape Communications tarafından önerildi. Protokol istemci ve sunucu kimlik doğrulamasını destekler, uygulamadan bağımsızdır ve HTTP, FTP ve Telnet protokollerine karşı şeffaftır.

SSL El Sıkışma protokolü iki aşamadan oluşur: sunucu kimlik doğrulaması ve isteğe bağlı istemci kimlik doğrulaması. İlk aşamada sunucu, istemcinin isteğine sertifikasını ve şifreleme parametrelerini göndererek yanıt verir. İstemci daha sonra bir ana anahtar oluşturur, bunu sunucunun genel anahtarıyla şifreler ve sunucuya gönderir. Sunucu, ana anahtarın şifresini kendi özel anahtarıyla çözer ve istemcinin ana anahtarı tarafından doğrulanan bir mesaj göndererek istemciye kimliğini doğrular.

Sonraki veriler bu ana anahtardan türetilen anahtarlarla şifrelenir ve doğrulanır. İsteğe bağlı olan ikinci adımda, sunucu istemciye bir istek gönderir ve istemci, isteği kendi dijital imzası ve ortak anahtar sertifikasıyla geri göndererek sunucuya kimliğini doğrular.

SSL çeşitli şifreleme algoritmalarını destekler. İletişimin kurulması sırasında RSA açık anahtar şifreleme sistemi kullanılmaktadır. Anahtar değişiminden sonra birçok farklı şifre kullanılır: RC2, RC4, IDEA, DES ve TripleDES. MD5 de kullanılır - mesaj özeti oluşturmak için bir algoritma. Ortak anahtar sertifikalarının sözdizimi X.509'da açıklanmıştır.

SSL'nin önemli avantajlarından biri yazılım platformundan tam bağımsız olmasıdır. Protokol, taşınabilirlik ilkeleri üzerine geliştirilmiştir ve yapım ideolojisi, kullanıldığı uygulamalara bağlı değildir. Ayrıca, diğer protokollerin şeffaf bir şekilde SSL protokolünün üzerine yerleştirilebilmesi de önemlidir; ya hedef bilgi akışlarının koruma derecesini daha da artırmak ya da SSL'nin şifreleme yeteneklerini iyi tanımlanmış başka bir göreve uyarlamak için.

SSL bağlantısı

SFTP ve FTPS protokolleri

SSL tarafından sağlanan güvenli kanalın üç ana özelliği vardır:

  • Kanal özeldir. Şifreleme, gizli anahtarı belirlemeye yarayan basit bir diyalogdan sonra tüm mesajlar için kullanılır.
  • Kanalın kimliği doğrulandı. Konuşmanın sunucu tarafının kimliği her zaman doğrulanırken istemci tarafının kimliği isteğe bağlı olarak doğrulanır.
  • Kanal güvenilirdir. Mesaj aktarımı bütünlük kontrolünü içerir (MAC kullanılarak).

FTPS'nin özellikleri

Güvenliği sağlamak için farklı yöntemler kullanan iki FTPS uygulaması vardır:

  • Örtülü yöntem, verileri göndermeden önce bir oturum oluşturmak için standart SSL protokolünün kullanılmasını içerir ve bu da normal FTP istemcileri ve sunucularıyla uyumluluğu bozar. FTPS'yi desteklemeyen istemcilerle geriye dönük uyumluluk sağlamak amacıyla, kontrol bağlantısı için TCP bağlantı noktası 990 ve veri aktarımı için 989 kullanılır. Bu, FTP protokolü için standart bağlantı noktası 21'i korur. Bu yöntem eski olarak kabul edilir.
  • Açık, standart FTP komutlarını kullandığı için çok daha kullanışlıdır, ancak yanıt verirken verileri şifreler, bu da hem FTP hem de FTPS için aynı kontrol bağlantısını kullanmanıza olanak tanır. İstemcinin sunucudan açıkça güvenli veri aktarımı istemesi ve ardından şifreleme yöntemini onaylaması gerekir. İstemci güvenli bir aktarım talep etmezse, FTPS sunucusu güvenli olmayan bağlantıyı sürdürme veya kapatma hakkına sahiptir. Yeni FTP AUTH komutunu içeren RFC 2228'in altına bir kimlik doğrulama ve veri güvenliği anlaşma mekanizması eklendi. Bu standart, güvenlik mekanizmalarını açıkça tanımlamasa da, yukarıda açıklanan algoritma kullanılarak istemci tarafından güvenli bir bağlantının başlatılması gerektiğini belirtir. Güvenli bağlantılar sunucu tarafından desteklenmiyorsa, 504 hata kodu döndürülmelidir. FTPS istemcileri, FEAT komutunu kullanarak sunucu tarafından desteklenen güvenlik protokolleri hakkında bilgi alabilir, ancak sunucunun hangi güvenlik düzeylerini açıklamasına gerek yoktur. destekler. En yaygın FTPS komutları sırasıyla TLS ve SSL güvenliği sağlayan AUTH TLS ve AUTH SSL'dir.

SFTP

SFTP (Güvenli Dosya Aktarım Protokolü), güvenli bir kanalın üzerinde çalışan bir uygulama katmanı dosya aktarım protokolüdür. Aynı kısaltmaya sahip olan (Basit Dosya Aktarım Protokolü) ile karıştırılmamalıdır. FTPS, FTP'nin yalnızca bir uzantısıysa, SFTP, SSH'yi (Secure Shell) temel olarak kullanan ayrı ve ilgisiz bir protokoldür.

Güvenli Kabuk

Protokol, Secsh adlı IETF gruplarından biri tarafından geliştirildi. Yeni SFTP protokolünün çalışma belgeleri resmi bir standart haline gelmedi ancak uygulama geliştirme için aktif olarak kullanılmaya başlandı. Daha sonra protokolün altı versiyonu yayınlandı. Ancak işlevselliğin kademeli olarak artması, 14 Ağustos 2006'da projenin ana görevinin (SSH'nin geliştirilmesi) tamamlanması nedeniyle protokolün geliştirilmesine yönelik çalışmaların durdurulmasına karar verilmesine ve tam teşekküllü bir uzak dosya sistemi protokolünün geliştirilmesine geçmek için yeterli uzman seviyesinin bulunmaması.

SSH, işletim sisteminin uzaktan kontrolüne ve TCP bağlantılarının tünellenmesine (örneğin dosya aktarımı için) olanak tanıyan bir ağ protokolüdür. İşlevsellik açısından Telnet ve rlogin protokollerine benzer, ancak onlardan farklı olarak, iletilen şifreler dahil tüm trafiği şifreler. SSH, farklı şifreleme algoritmaları seçimine izin verir. Çoğu ağ işletim sistemi için SSH istemcileri ve SSH sunucuları mevcuttur.

SSH, güvenli olmayan bir ortamda hemen hemen tüm ağ protokollerini güvenli bir şekilde aktarmanıza olanak tanır. Böylece, komut kabuğu aracılığıyla yalnızca bilgisayarınızda uzaktan çalışmakla kalmaz, aynı zamanda şifreli bir kanal üzerinden bir ses akışı veya video (örneğin bir web kamerasından) iletebilirsiniz. SSH ayrıca daha sonraki şifreleme için iletilen verilerin sıkıştırılmasını da kullanabilir; bu, örneğin X WindowSystem istemcilerinin uzaktan başlatılması için uygundur.

Protokolün ilk versiyonu olan SSH-1, 1995 yılında Helsinki Teknoloji Üniversitesi'nden (Finlandiya) araştırmacı Tatu Ulönen tarafından geliştirildi. SSH-1, rlogin, telnet ve rsh protokollerinden daha fazla gizlilik sağlayacak şekilde yazılmıştır. 1996 yılında protokolün SSH-2 ile uyumlu olmayan daha güvenli bir versiyonu olan SSH-1 geliştirildi. Protokol daha da popüler hale geldi ve 2000 yılına gelindiğinde yaklaşık iki milyon kullanıcıya ulaştı. Şu anda "SSH" terimi genellikle SSH-2 anlamına gelir, çünkü Protokolün ilk versiyonu, önemli eksiklikler nedeniyle artık pratikte kullanılmıyor. 2006 yılında protokol, IETF çalışma grubu tarafından bir İnternet standardı olarak onaylandı.

SSH'nin iki yaygın uygulaması vardır: özel ticari ve ücretsiz açık kaynak. Ücretsiz uygulamaya OpenSSH adı verilir. 2006 yılına gelindiğinde internetteki bilgisayarların %80'i OpenSSH kullanıyordu. Tescilli uygulama, Tectia Corporation'ın yüzde yüz iştiraki olan SSH Communications Security tarafından geliştirilmiştir ve ticari olmayan kullanım için ücretsizdir. Bu uygulamalar hemen hemen aynı komut setini içerir.

SSH-2 protokolü, telnet protokolünün aksine trafiği gizlice dinleme saldırılarına ("koklama") karşı dayanıklıdır, ancak ortadaki adam saldırılarına karşı dayanıklı değildir. SSH-2 protokolü, halihazırda kurulmuş bir oturuma katılmak veya onu ele geçirmek mümkün olmadığından, oturum ele geçirme saldırılarına karşı da dayanıklıdır.

İstemcinin anahtarı henüz bilmediği bir ana bilgisayara bağlanırken ortadaki adam saldırılarını önlemek için istemci yazılımı kullanıcıya bir "anahtar parmak izi" gösterir. İstemci yazılımı tarafından gösterilen "anahtar anlık görüntüsünün", tercihen güvenilir iletişim kanalları aracılığıyla veya şahsen elde edilen sunucu anahtarı anlık görüntüsüyle dikkatlice kontrol edilmesi önerilir.

SSH desteği tüm UNIX benzeri sistemlerde mevcuttur ve çoğunda standart yardımcı programlar olarak bir ssh istemcisi ve sunucusu bulunur. UNIX dışı işletim sistemleri için SSH istemcilerinin birçok uygulaması vardır. Protokol, önemli düğümleri yönetmek için güvenli olmayan Telnet protokolüne alternatif bir çözüm olarak, trafik analizörlerinin ve yerel ağların çalışmasını bozmaya yönelik yöntemlerin yaygın olarak geliştirilmesinden sonra büyük bir popülerlik kazandı.

SSH kullanarak iletişim

SSH aracılığıyla çalışmak için bir SSH sunucusuna ve bir SSH istemcisine ihtiyacınız vardır. Sunucu, istemci makinelerden gelen bağlantıları dinler ve bir bağlantı kurulduğunda kimlik doğrulamayı gerçekleştirir ve ardından istemciye hizmet vermeye başlar. İstemci uzak bir makinede oturum açmak ve komutları yürütmek için kullanılır.

SFTP ve FTPS protokolleri

FTPS ile Karşılaştırma

SFTP'yi standart FTP ve FTPS'den ayıran en önemli şey, SFTP'nin tüm komutları, kullanıcı adlarını, şifreleri ve diğer gizli bilgileri kesinlikle şifrelemesidir.

Hem FTPS hem de SFTP protokolleri, asimetrik algoritmaların (RSA, DSA), simetrik algoritmaların (DES/3DES, AES, Twhofish vb.) yanı sıra bir anahtar değişim algoritmasının bir kombinasyonunu kullanır. Kimlik doğrulama için FTPS (veya daha doğrusu, FTP üzerinden SSL/TLS) X.509 sertifikalarını kullanırken SFTP (SSH protokolü) SSH anahtarlarını kullanır.

X.509 sertifikaları bir genel anahtar ve sahibinin sertifikasına ilişkin bazı bilgiler içerir. Bu bilgi diğer yandan sertifikanın kendisinin bütünlüğünü, orijinalliğini ve sertifika sahibinin doğrulanmasını sağlar. X.509 sertifikaları, güvenlik nedeniyle genellikle sertifikadan ayrı olarak saklanan karşılık gelen bir özel anahtara sahiptir.

SSH anahtarı yalnızca genel anahtarı içerir (ilgili özel anahtar ayrı olarak saklanır). Anahtarın sahibi hakkında herhangi bir bilgi içermez. Bazı SSH uygulamaları, kimlik doğrulama için X.509 sertifikalarını kullanır, ancak gerçekte tüm sertifika zincirini doğrulamazlar; yalnızca genel anahtar kullanılır (bu da kimlik doğrulamanın eksik kalmasına neden olur).

Sonuç

FTP protokolü, eski yaşına rağmen şüphesiz ki bilgilerin ağ üzerinde depolanması ve dağıtılmasında hala önemli bir rol oynamaktadır. Kullanışlı, çok işlevli ve standartlaştırılmış bir protokoldür. Birçok dosya arşivi temel alınarak oluşturulmuştur ve bu olmadan teknik çalışma o kadar etkili olmayacaktır. Buna ek olarak, kurulumu kolaydır ve sunucu ve istemci programları, mevcut ve o kadar da güncel olmayan hemen hemen tüm platformlar için mevcuttur.

Buna karşılık, korumalı sürümleri modern dünyada depolanan ve iletilen verilerin gizliliği sorununu çözmektedir. Her iki yeni protokolün de artıları ve eksileri var ve biraz farklı rollere hizmet ediyorlar. Dosya arşivinin gerekli olduğu alanlarda, özellikle klasik FTP daha önce kullanılmışsa, FTPS kullanılması tercih edilir. SFTP, eski protokolle uyumsuzluğu nedeniyle daha az yaygındır ancak uzaktan yönetim sisteminin bir parçası olduğundan daha güvenlidir ve daha fazla işlevselliğe sahiptir.

Kaynakların listesi

Kaynak: habr.com

Yorum ekle