Protokol SFTP dan FTPS

Perutusan

Hanya seminggu yang lalu saya menulis esei mengenai topik yang ditunjukkan dalam tajuk dan berhadapan dengan fakta bahawa, katakan, tidak ada banyak maklumat pendidikan di Internet. Kebanyakan fakta kering dan arahan persediaan. Oleh itu, saya memutuskan untuk membetulkan sedikit teks dan menyiarkannya sebagai artikel.

Apa itu FTP

FTP (File Transfer Protocol) ialah protokol untuk memindahkan fail melalui rangkaian. Ia adalah salah satu protokol Ethernet asas. Muncul pada tahun 1971 dan pada mulanya bekerja dalam rangkaian DARPA. Pada masa ini, seperti HTTP, pemindahan fail adalah berdasarkan model yang terdiri daripada satu set protokol TCP/IP (Transmission Control Protocol/Internet Protocol). Ditakrifkan dalam RFC 959.

Protokol mentakrifkan perkara berikut:

  • Bagaimanakah semakan ralat akan dijalankan?
  • Kaedah pembungkusan data (jika pembungkusan digunakan)
  • Bagaimanakah peranti penghantar menunjukkan bahawa ia telah menyelesaikan mesej?
  • Bagaimanakah peranti penerima menunjukkan bahawa ia telah menerima mesej?

Komunikasi antara pelanggan dan pelayan

Mari kita lihat dengan lebih dekat proses yang berlaku semasa operasi FTP. Sambungan dimulakan oleh penterjemah protokol pengguna. Pertukaran dikawal melalui saluran kawalan dalam standard TELNET. Arahan FTP dihasilkan oleh penterjemah protokol pengguna dan dihantar ke pelayan. Respons pelayan juga dihantar kepada pengguna melalui saluran kawalan. Secara umum, pengguna mempunyai keupayaan untuk menjalin hubungan dengan penterjemah protokol pelayan dan dengan cara selain daripada penterjemah pengguna.

Ciri utama FTP ialah ia menggunakan sambungan dwi. Salah satu daripadanya digunakan untuk menghantar arahan ke pelayan dan berlaku secara lalai melalui port TCP 21, yang boleh diubah. Sambungan kawalan wujud selagi pelanggan berkomunikasi dengan pelayan. Saluran kawalan mesti terbuka apabila memindahkan data antara mesin. Jika ia ditutup, penghantaran data berhenti. Melalui kedua, pemindahan data langsung berlaku. Ia dibuka setiap kali pemindahan fail berlaku antara klien dan pelayan. Jika beberapa fail dipindahkan secara serentak, setiap satu daripada mereka membuka saluran penghantaran sendiri.

FTP boleh beroperasi dalam mod aktif atau pasif, pilihan yang menentukan bagaimana sambungan diwujudkan. Dalam mod aktif, pelanggan mencipta sambungan kawalan TCP dengan pelayan dan menghantar alamat IPnya dan nombor port klien sewenang-wenangnya ke pelayan, dan kemudian menunggu pelayan memulakan sambungan TCP dengan alamat dan nombor port ini. Sekiranya pelanggan berada di belakang tembok api dan tidak dapat menerima sambungan TCP masuk, mod pasif boleh digunakan. Dalam mod ini, pelanggan menggunakan aliran kawalan untuk menghantar arahan PASV kepada pelayan, dan kemudian menerima daripada pelayan alamat IP dan nombor portnya, yang kemudiannya digunakan oleh pelanggan untuk membuka aliran data dari port arbitrarinya.

Ada kemungkinan data boleh dipindahkan ke mesin ketiga. Dalam kes ini, pengguna mengatur saluran kawalan dengan dua pelayan dan mengatur saluran data langsung di antara mereka. Perintah kawalan pergi melalui pengguna, dan data pergi terus antara pelayan.

Apabila menghantar data melalui rangkaian, empat perwakilan data boleh digunakan:

  • ASCII – digunakan untuk teks. Data tersebut, jika perlu, ditukar daripada perwakilan aksara pada hos penghantaran kepada "ASCII lapan bit" sebelum penghantaran, dan (sekali lagi, jika perlu) kepada perwakilan aksara pada hos penerima. Khususnya, aksara baris baharu ditukar. Akibatnya, mod ini tidak sesuai untuk fail yang mengandungi lebih daripada teks biasa sahaja.
  • Mod binari - peranti penghantar menghantar setiap bait fail demi bait, dan penerima menyimpan aliran bait apabila diterima. Sokongan untuk mod ini telah disyorkan untuk semua pelaksanaan FTP.
  • EBCDIC – digunakan untuk memindahkan teks biasa antara hos dalam pengekodan EBCDIC. Jika tidak, mod ini serupa dengan mod ASCII.
  • Mod tempatan - membenarkan dua komputer dengan tetapan yang sama menghantar data dalam format mereka sendiri tanpa menukar kepada ASCII.

Pemindahan data boleh dilakukan dalam mana-mana tiga mod:

  • Mod strim - data dihantar sebagai aliran berterusan, membebaskan FTP daripada melakukan sebarang pemprosesan. Sebaliknya, semua pemprosesan dilakukan oleh TCP. Penunjuk akhir fail tidak diperlukan kecuali untuk mengasingkan data ke dalam rekod.
  • Mod blok - FTP memecahkan data kepada beberapa blok (blok pengepala, bilangan bait, medan data) dan kemudian menghantarnya ke TCP.
  • Mod mampatan – data dimampatkan menggunakan algoritma tunggal (biasanya dengan pengekodan panjang larian).

Pelayan FTP ialah pelayan yang menyediakan keupayaan untuk menggunakan Protokol Pemindahan Fail. Ia mempunyai ciri-ciri tertentu yang membezakannya daripada pelayan web konvensional:

  • Pengesahan pengguna diperlukan
  • Semua operasi dilakukan dalam sesi semasa
  • Keupayaan untuk melakukan pelbagai tindakan dengan sistem fail
  • Saluran berasingan digunakan untuk setiap sambungan

Pelanggan FTP ialah program yang membolehkan anda menyambung ke pelayan jauh melalui FTP dan juga melakukan tindakan yang diperlukan padanya dengan elemen sistem fail. Pelanggan mungkin penyemak imbas, dalam bar alamat yang mana anda harus memasukkan alamat, yang merupakan laluan ke direktori atau fail tertentu pada pelayan jauh, mengikut gambarajah blok URL umum:

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

Walau bagaimanapun, menggunakan pelayar web dalam konteks ini hanya akan membenarkan anda melihat atau memuat turun fail yang diminati. Untuk menggunakan sepenuhnya semua kelebihan FTP, anda harus menggunakan perisian khusus sebagai pelanggan.

Pengesahan FTP menggunakan skema nama pengguna/kata laluan untuk memberikan akses. Nama pengguna dihantar ke pelayan dengan arahan USER, dan kata laluan dihantar dengan arahan PASS. Jika maklumat yang diberikan oleh klien diterima oleh pelayan, maka pelayan akan menghantar jemputan kepada klien dan sesi bermula. Pengguna boleh, jika pelayan menyokong ciri ini, log masuk tanpa memberikan bukti kelayakan, tetapi pelayan hanya boleh memberikan akses terhad untuk sesi tersebut.

Hos yang menyediakan perkhidmatan FTP boleh menyediakan akses FTP tanpa nama. Pengguna biasanya log masuk dengan "tanpa nama" (mungkin sensitif huruf besar pada sesetengah pelayan FTP) sebagai nama pengguna mereka. Walaupun pengguna biasanya diminta untuk memberikan alamat e-mel mereka dan bukannya kata laluan, tiada pengesahan sebenarnya dilakukan. Banyak hos FTP yang menyediakan kemas kini perisian menyokong akses tanpa nama.

Gambar rajah protokol

Interaksi pelanggan-pelayan semasa sambungan FTP boleh digambarkan seperti berikut:

Protokol SFTP dan FTPS

FTP selamat

FTP pada asalnya tidak bertujuan untuk selamat, kerana ia bertujuan untuk komunikasi antara pelbagai pemasangan dan agensi tentera. Tetapi dengan perkembangan dan penyebaran Internet, bahaya capaian yang tidak dibenarkan telah meningkat berkali-kali ganda. Terdapat keperluan untuk melindungi pelayan daripada pelbagai jenis serangan. Pada Mei 1999, pengarang RFC 2577 meringkaskan kelemahan ke dalam senarai isu berikut:

  • Serangan tersembunyi (serangan lantunan)
  • Serangan palsu
  • Serangan kekerasan
  • Tangkapan paket, menghidu
  • mencuri pelabuhan

FTP biasa tidak mempunyai keupayaan untuk memindahkan data dalam bentuk yang disulitkan, akibatnya nama pengguna, kata laluan, arahan dan maklumat lain boleh dengan mudah dan mudah dipintas oleh penyerang. Penyelesaian biasa untuk masalah ini ialah menggunakan versi protokol terdedah (FTPS) yang "selamat", dilindungi TLS atau protokol lain yang lebih selamat, seperti SFTP/SCP, yang disediakan dengan kebanyakan pelaksanaan protokol Secure Shell.

FTPS

FTPS (FTP + SSL) ialah lanjutan daripada protokol pemindahan fail standard yang menambah kepada fungsi asasnya penciptaan sesi yang disulitkan menggunakan protokol SSL (Secure Sockets Layer). Hari ini, perlindungan disediakan oleh TLS (Transport Layer Security) analognya yang lebih maju.

SSL

Protokol SSL telah dicadangkan oleh Netscape Communications pada tahun 1996 untuk memastikan keselamatan dan privasi sambungan Internet. Protokol ini menyokong pengesahan klien dan pelayan, bebas aplikasi, dan telus kepada protokol HTTP, FTP dan Telnet.

Protokol Jabat Tangan SSL terdiri daripada dua peringkat: pengesahan pelayan dan pengesahan klien pilihan. Pada peringkat pertama, pelayan bertindak balas kepada permintaan pelanggan dengan menghantar sijil dan parameter penyulitannya. Pelanggan kemudian menjana kunci induk, menyulitkannya dengan kunci awam pelayan, dan menghantarnya ke pelayan. Pelayan menyahsulit kunci induk dengan kunci peribadinya dan mengesahkan dirinya kepada klien dengan mengembalikan mesej yang disahkan oleh kunci induk klien.

Data seterusnya disulitkan dan disahkan dengan kunci yang diperoleh daripada kunci induk ini. Dalam langkah kedua, yang merupakan pilihan, pelayan menghantar permintaan kepada klien, dan klien mengesahkan dirinya kepada pelayan dengan mengembalikan permintaan itu dengan tandatangan digitalnya sendiri dan sijil kunci awam.

SSL menyokong pelbagai algoritma kriptografi. Semasa penubuhan komunikasi, sistem kriptografi kunci awam RSA digunakan. Selepas pertukaran kunci, banyak sifir berbeza digunakan: RC2, RC4, IDEA, DES dan TripleDES. MD5 juga digunakan - algoritma untuk mencipta ringkasan mesej. Sintaks untuk sijil kunci awam diterangkan dalam X.509.

Salah satu kelebihan penting SSL ialah kebebasan platform perisian yang lengkap. Protokol ini dibangunkan berdasarkan prinsip mudah alih, dan ideologi pembinaannya tidak bergantung pada aplikasi di mana ia digunakan. Di samping itu, adalah juga penting bahawa protokol lain boleh ditindih secara telus di atas protokol SSL; sama ada untuk meningkatkan lagi tahap perlindungan aliran maklumat sasaran, atau untuk menyesuaikan keupayaan kriptografi SSL untuk beberapa tugas lain yang jelas.

Sambungan SSL

Protokol SFTP dan FTPS

Saluran selamat yang disediakan oleh SSL mempunyai tiga sifat utama:

  • Saluran adalah peribadi. Penyulitan digunakan untuk semua mesej selepas dialog mudah yang berfungsi untuk menentukan kunci rahsia.
  • Saluran itu disahkan. Bahagian pelayan perbualan sentiasa disahkan, manakala bahagian klien disahkan secara pilihan.
  • Saluran ini boleh dipercayai. Pengangkutan mesej termasuk pemeriksaan integriti (menggunakan MAC).

Ciri-ciri FTPS

Terdapat dua pelaksanaan FTPS, menggunakan kaedah yang berbeza untuk menyediakan keselamatan:

  • Kaedah tersirat melibatkan penggunaan protokol SSL standard untuk menubuhkan sesi sebelum menghantar data, yang seterusnya, memecahkan keserasian dengan klien dan pelayan FTP biasa. Untuk keserasian ke belakang dengan pelanggan yang tidak menyokong FTPS, port TCP 990 digunakan untuk sambungan kawalan dan 989 digunakan untuk pemindahan data. Ini mengekalkan port standard 21 untuk protokol FTP. Kaedah ini dianggap usang.
  • Eksplisit adalah lebih mudah, kerana ia menggunakan arahan FTP standard, tetapi menyulitkan data apabila bertindak balas, yang membolehkan anda menggunakan sambungan kawalan yang sama untuk kedua-dua FTP dan FTPS. Pelanggan mesti secara eksplisit meminta pemindahan data selamat daripada pelayan, dan kemudian meluluskan kaedah penyulitan. Jika pelanggan tidak meminta pemindahan selamat, pelayan FTPS mempunyai hak sama ada untuk mengekalkan atau menutup sambungan tidak terjamin. Mekanisme rundingan pengesahan dan keselamatan data telah ditambahkan di bawah RFC 2228 yang merangkumi arahan FTP AUTH baharu. Walaupun piawaian ini tidak mentakrifkan mekanisme keselamatan secara eksplisit, ia menyatakan bahawa sambungan selamat mesti dimulakan oleh klien menggunakan algoritma yang diterangkan di atas. Jika sambungan selamat tidak disokong oleh pelayan, kod ralat 504 harus dikembalikan. Pelanggan FTPS boleh mendapatkan maklumat tentang protokol keselamatan yang disokong oleh pelayan menggunakan arahan FEAT, namun, pelayan tidak perlu mendedahkan tahap keselamatannya. menyokong. Perintah FTPS yang paling biasa ialah AUTH TLS dan AUTH SSL, yang masing-masing menyediakan keselamatan TLS dan SSL.

SFTP

SFTP (Secure File Transfer Protocol) ialah protokol pemindahan fail lapisan aplikasi yang berjalan di atas saluran selamat. Jangan dikelirukan dengan (Protokol Pemindahan Fail Mudah), yang mempunyai singkatan yang sama. Jika FTPS hanyalah lanjutan FTP, maka SFTP ialah protokol yang berasingan dan tidak berkaitan yang menggunakan SSH (Secure Shell) sebagai asasnya.

Shell selamat

Protokol ini dibangunkan oleh salah satu kumpulan IETF yang dipanggil Secsh. Dokumentasi kerja untuk protokol SFTP baharu tidak menjadi standard rasmi, tetapi mula digunakan secara aktif untuk pembangunan aplikasi. Selepas itu, enam versi protokol telah dikeluarkan. Walau bagaimanapun, peningkatan secara beransur-ansur dalam fungsi di dalamnya membawa kepada fakta bahawa pada 14 Ogos 2006, ia telah memutuskan untuk berhenti bekerja pada pembangunan protokol kerana selesainya tugas utama projek (pembangunan SSH) dan kekurangan. tahap pakar yang mencukupi untuk meneruskan pembangunan protokol sistem fail jauh yang lengkap.

SSH ialah protokol rangkaian yang membenarkan kawalan jauh sistem pengendalian dan terowong sambungan TCP (contohnya, untuk pemindahan fail). Fungsi yang serupa dengan protokol Telnet dan rlogin, tetapi, tidak seperti mereka, ia menyulitkan semua trafik, termasuk kata laluan yang dihantar. SSH membenarkan pilihan algoritma penyulitan yang berbeza. Pelanggan SSH dan pelayan SSH tersedia untuk kebanyakan sistem pengendalian rangkaian.

SSH membolehkan anda memindahkan hampir mana-mana protokol rangkaian lain dengan selamat dalam persekitaran yang tidak selamat. Oleh itu, anda bukan sahaja boleh bekerja dari jauh pada komputer anda melalui cangkerang arahan, tetapi juga menghantar aliran audio atau video (contohnya, dari kamera web) melalui saluran yang disulitkan. SSH juga boleh menggunakan pemampatan data yang dihantar untuk penyulitan berikutnya, yang mudah, contohnya, untuk melancarkan pelanggan X WindowSystem dari jauh.

Versi pertama protokol, SSH-1, telah dibangunkan pada tahun 1995 oleh penyelidik Tatu UlΓΆnen dari Universiti Teknologi Helsinki (Finland). SSH-1 telah ditulis untuk menyediakan privasi yang lebih besar daripada protokol rlogin, telnet, dan rsh. Pada tahun 1996, versi protokol yang lebih selamat, SSH-2, telah dibangunkan, yang tidak serasi dengan SSH-1. Protokol ini mendapat lebih populariti, dan pada tahun 2000 ia mempunyai kira-kira dua juta pengguna. Pada masa ini, istilah "SSH" biasanya bermaksud SSH-2, kerana Versi pertama protokol kini boleh dikatakan tidak digunakan kerana kekurangan yang ketara. Pada tahun 2006, protokol telah diluluskan oleh kumpulan kerja IETF sebagai standard Internet.

Terdapat dua pelaksanaan biasa SSH: komersial swasta dan sumber terbuka percuma. Pelaksanaan percuma dipanggil OpenSSH. Menjelang 2006, 80% komputer di Internet menggunakan OpenSSH. Pelaksanaan proprietari dibangunkan oleh SSH Communications Security, anak syarikat milik penuh Tectia Corporation, dan percuma untuk kegunaan bukan komersial. Pelaksanaan ini mengandungi set perintah yang hampir sama.

Protokol SSH-2, tidak seperti protokol telnet, tahan terhadap serangan mencuri dengar lalu lintas ("menghidu"), tetapi tidak tahan terhadap serangan man-in-the-middle. Protokol SSH-2 juga tahan terhadap serangan rampasan sesi, kerana adalah mustahil untuk menyertai atau merampas sesi yang telah ditetapkan.

Untuk mengelakkan serangan man-in-the-middle apabila menyambung kepada hos yang kuncinya belum diketahui oleh klien, perisian klien menunjukkan kepada pengguna "cap jari kunci". Adalah disyorkan untuk menyemak dengan teliti "gambar kunci" yang ditunjukkan oleh perisian klien dengan syot kilat kunci pelayan, sebaik-baiknya diperoleh melalui saluran komunikasi yang boleh dipercayai atau secara peribadi.

Sokongan SSH tersedia pada semua sistem seperti UNIX, dan kebanyakannya mempunyai klien dan pelayan ssh sebagai utiliti standard. Terdapat banyak pelaksanaan klien SSH untuk OS bukan UNIX. Protokol ini mendapat populariti besar selepas pembangunan meluas penganalisis trafik dan kaedah untuk mengganggu operasi rangkaian tempatan, sebagai penyelesaian alternatif kepada protokol Telnet yang tidak selamat untuk menguruskan nod penting.

Komunikasi menggunakan SSH

Untuk bekerja melalui SSH, anda memerlukan pelayan SSH dan klien SSH. Pelayan mendengar sambungan daripada mesin klien dan, apabila sambungan diwujudkan, melakukan pengesahan, selepas itu ia mula memberi perkhidmatan kepada klien. Pelanggan digunakan untuk log masuk ke mesin jauh dan melaksanakan arahan.

Protokol SFTP dan FTPS

Perbandingan dengan FTPS

Perkara utama yang membezakan SFTP daripada FTP standard dan FTPS ialah SFTP menyulitkan sepenuhnya semua arahan, nama pengguna, kata laluan dan maklumat sulit yang lain.

Kedua-dua protokol FTPS dan SFTP menggunakan gabungan algoritma asimetri (RSA, DSA), algoritma simetri (DES/3DES, AES, Twhofish, dll.), serta algoritma pertukaran utama. Untuk pengesahan, FTPS (atau lebih tepat lagi, SSL/TLS melalui FTP) menggunakan sijil X.509, manakala SFTP (protokol SSH) menggunakan kekunci SSH.

Sijil X.509 termasuk kunci awam dan beberapa maklumat tentang sijil pemilik. Maklumat ini membolehkan, sebaliknya, untuk mengesahkan integriti sijil itu sendiri, ketulenan dan pemilik sijil. Sijil X.509 mempunyai kunci peribadi yang sepadan, yang biasanya disimpan secara berasingan daripada sijil atas sebab keselamatan.

Kunci SSH hanya mengandungi kunci awam (kunci peribadi yang sepadan disimpan secara berasingan). Ia tidak mengandungi sebarang maklumat tentang pemilik kunci. Sesetengah pelaksanaan SSH menggunakan sijil X.509 untuk pengesahan, tetapi ia sebenarnya tidak mengesahkan keseluruhan rantaian sijilβ€”hanya kunci awam digunakan (yang menjadikan pengesahan sedemikian tidak lengkap).

Kesimpulan

Protokol FTP sudah pasti masih memainkan peranan penting dalam penyimpanan dan pengedaran maklumat pada rangkaian walaupun usianya yang dihormati. Ia adalah protokol yang mudah, pelbagai fungsi dan piawai. Banyak arkib fail telah dibina berdasarkannya, tanpa kerja teknikal tidak akan begitu berkesan. Di samping itu, ia mudah untuk disediakan, dan program pelayan dan klien wujud untuk hampir semua platform semasa dan tidak begitu semasa.

Sebaliknya, versi dilindunginya menyelesaikan masalah kerahsiaan data yang disimpan dan dihantar dalam dunia moden. Kedua-dua protokol baharu mempunyai kebaikan dan keburukan mereka dan memainkan peranan yang sedikit berbeza. Di kawasan yang memerlukan arkib fail, adalah lebih baik untuk menggunakan FTPS, terutamanya jika FTP klasik telah digunakan di sana sebelum ini. SFTP adalah kurang biasa kerana ketidakserasiannya dengan protokol lama, tetapi ia lebih selamat dan mempunyai lebih banyak fungsi, kerana ia adalah sebahagian daripada sistem pengurusan jauh.

Senarai sumber

Sumber: www.habr.com

Tambah komen