Protokol SFTP lan FTPS

Pambuka

Mung seminggu kepungkur aku nulis esai babagan topik sing dituduhake ing judhul lan ngadhepi kasunyatan sing, ayo ngomong, ora ana informasi pendidikan sing akeh ing Internet. Biasane kasunyatan garing lan instruksi persiyapan. Mulane, aku mutusake rada mbenerake teks kasebut lan ngirim minangka artikel.

Apa FTP

FTP (File Transfer Protocol) minangka protokol kanggo nransfer file liwat jaringan. Iku salah siji saka protokol Ethernet dhasar. Muncul ing taun 1971 lan wiwitane kerja ing jaringan DARPA. Saiki, kaya HTTP, transfer file adhedhasar model sing kasusun saka sakumpulan protokol TCP/IP (Transmission Control Protocol/Internet Protocol). Ditetepake ing RFC 959.

Protokol nemtokake ing ngisor iki:

  • Kepiye carane mriksa kesalahan bakal ditindakake?
  • Metode pengemasan data (yen digunakake)
  • Kepiye carane piranti ngirim nuduhake yen wis rampung pesen?
  • Kepiye carane piranti panampa nuduhake yen wis nampa pesen?

Komunikasi antarane klien lan server

Ayo goleki kanthi luwih rinci babagan proses sing kedadeyan sajrone operasi FTP. Sambungan kasebut diwiwiti dening interpreter protokol pangguna. Ijol-ijolan dikontrol liwat saluran kontrol ing standar TELNET. Printah FTP digawe dening interpreter protokol pangguna lan dikirim menyang server. Tanggepan server uga dikirim menyang pangguna liwat saluran kontrol. Umumé, pangguna nduweni kemampuan kanggo nggawe kontak karo interpreter protokol server lan liya saka interpreter pangguna.

Fitur utama FTP yaiku nggunakake sambungan dual. Salah sijine digunakake kanggo ngirim printah menyang server lan kedadeyan kanthi standar liwat port TCP 21, sing bisa diganti. Sambungan kontrol ana anggere klien komunikasi karo server. Saluran kontrol kudu mbukak nalika nransfer data antarane mesin. Yen ditutup, transmisi data mandheg. Liwat kapindho, transfer data langsung dumadi. Mbukak saben wektu transfer file dumadi antarane klien lan server. Yen sawetara file ditransfer bebarengan, saben wong mbukak saluran transmisi dhewe.

FTP bisa operate ing mode aktif utawa pasif, pilihan kang nemtokake cara sambungan ditetepake. Ing mode aktif, klien nggawe sambungan kontrol TCP karo server lan ngirim alamat IP lan nomer port klien kasepakatan menyang server, banjur ngenteni server miwiti sambungan TCP karo alamat lan nomer port iki. Yen klien ana ing mburi firewall lan ora bisa nampa sambungan TCP sing mlebu, mode pasif bisa digunakake. Ing mode iki, klien nggunakake aliran kontrol kanggo ngirim printah PASV menyang server, lan banjur ditampa saka server alamat IP lan nomer port, kang klien banjur digunakake kanggo mbukak aliran data saka port sembarang.

Bisa uga data bisa ditransfer menyang mesin katelu. Ing kasus iki, pangguna ngatur saluran kontrol kanthi rong server lan ngatur saluran data langsung ing antarane. Perintah kontrol ngliwati pangguna, lan data langsung ing antarane server.

Nalika ngirim data liwat jaringan, papat representasi data bisa digunakake:

  • ASCII - digunakake kanggo teks. Data kasebut, yen perlu, diowahi saka perwakilan karakter ing host sing dikirim menyang "ASCII wolung bit" sadurunge transmisi, lan (maneh, yen perlu) dadi perwakilan karakter ing host sing nampa. Utamane, karakter baris anyar diganti. Akibaté, mode iki ora cocok kanggo file sing ngemot luwih saka teks biasa.
  • Mode binar - piranti pangirim ngirim saben bait file kanthi bait, lan panampa nyimpen aliran bait nalika ditampa. Dhukungan kanggo mode iki wis dianjurake kanggo kabeh implementasine FTP.
  • EBCDIC – digunakake kanggo nransfer teks kosong antarane host ing enkoding EBCDIC. Yen ora, mode iki padha karo mode ASCII.
  • Mode lokal - ngidini loro komputer kanthi setelan sing padha kanggo ngirim data ing format dhewe tanpa ngowahi menyang ASCII.

Transfer data bisa ditindakake ing salah siji saka telung mode:

  • Mode stream - data dikirim minangka stream terus, freeing FTP saka nindakake sembarang Processing. Nanging, kabeh pangolahan ditindakake dening TCP. Indikator end-of-file ora dibutuhake kajaba kanggo misahake data dadi cathetan.
  • Mode pamblokiran - FTP ngilangi data dadi pirang-pirang blok (blok header, jumlah bita, kolom data) banjur dikirim menyang TCP.
  • Mode kompresi - data dikompres nggunakake algoritma siji (biasane kanthi enkoding dawa roto).

Server FTP minangka server sing nyedhiyakake kemampuan kanggo nggunakake File Transfer Protocol. Nduwe fitur tartamtu sing mbedakake saka server web konvensional:

  • Otentikasi pangguna dibutuhake
  • Kabeh operasi ditindakake ing sesi saiki
  • Kemampuan kanggo nindakake macem-macem tumindak karo sistem file
  • Saluran kapisah digunakake kanggo saben sambungan

Klien FTP minangka program sing ngidini sampeyan nyambung menyang server remot liwat FTP lan uga nindakake tindakan sing dibutuhake karo unsur sistem file. Klien bisa uga dadi browser, ing bilah alamat sampeyan kudu ngetik alamat, yaiku path menyang direktori utawa file tartamtu ing server remot, sesuai karo diagram pemblokiran URL umum:

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

Nanging, nggunakake browser web ing konteks iki mung ngidini sampeyan ndeleng utawa ndownload file sing disenengi. Supaya bisa nggunakake kabeh kaluwihan FTP kanthi lengkap, sampeyan kudu nggunakake piranti lunak khusus minangka klien.

Otentikasi FTP nggunakake skema jeneng pangguna/sandi kanggo menehi akses. Jeneng pangguna dikirim menyang server nganggo perintah USER, lan sandhi dikirim nganggo printah PASS. Yen informasi sing diwenehake dening klien ditampa dening server, banjur server bakal ngirim undhangan menyang klien lan sesi diwiwiti. Pangguna bisa, yen server ndhukung fitur iki, mlebu tanpa menehi kredensial, nanging server mung bisa menehi akses winates kanggo sesi kuwi.

Tuan rumah sing nyedhiyakake layanan FTP bisa nyedhiyakake akses FTP anonim. Pangguna biasane mlebu nganggo "anonim" (bisa uga sensitif huruf cilik ing sawetara server FTP) minangka jeneng pangguna. Sanajan pangguna biasane dijaluk menehi alamat email tinimbang sandhi, ora ana verifikasi sing ditindakake. Akeh host FTP sing nyedhiyakake nganyari piranti lunak ndhukung akses anonim.

diagram protokol

Interaksi klien-server sajrone sambungan FTP bisa digambarake kaya ing ngisor iki:

Protokol SFTP lan FTPS

FTP sing aman

FTP asline ora dimaksudake kanggo aman, amarga tujuane kanggo komunikasi antarane macem-macem instalasi lan agensi militer. Nanging kanthi pangembangan lan panyebaran Internet, bebaya akses sing ora sah saya tambah akeh. Ana perlu kanggo nglindhungi server saka macem-macem jinis serangan. Ing Mei 1999, penulis RFC 2577 ngringkes kerentanan menyang dhaptar masalah ing ngisor iki:

  • Serangan sing didhelikake (serangan bouncing)
  • Serangan spoof
  • Serangan brute force
  • Paket tangkap, sniffing
  • Port nyolong

FTP reguler ora nduweni kemampuan kanggo nransfer data ing wangun ndhelik, minangka asil saka jeneng pangguna, sandhi, printah lan informasi liyane bisa gampang lan gampang dicegat dening panyerang. Solusi sing biasa kanggo masalah iki yaiku nggunakake versi "aman", sing dilindhungi TLS saka protokol rentan (FTPS) utawa protokol liyane sing luwih aman, kayata SFTP/SCP, sing kasedhiya karo implementasi protokol Secure Shell.

FTPS

FTPS (FTP + SSL) minangka extension saka protokol transfer file standar sing nambah fungsi dhasar nggawe sesi ndhelik nggunakake protokol SSL (Secure Sockets Layer). Saiki, perlindungan diwenehake dening TLS (Transport Layer Security) analog sing luwih maju.

SSL

Protokol SSL diusulake dening Netscape Communications ing taun 1996 kanggo njamin keamanan lan privasi sambungan Internet. Protokol ndhukung otentikasi klien lan server, aplikasi independen, lan transparan kanggo protokol HTTP, FTP, lan Telnet.

Protokol SSL Handshake kasusun saka rong tahap: otentikasi server lan otentikasi klien opsional. Ing tahap pisanan, server nanggapi panjaluk klien kanthi ngirim paramèter sertifikat lan enkripsi. Klien banjur ngasilake kunci master, ndhelik nganggo kunci umum server, lan dikirim menyang server. Server dekripsi kunci master nganggo kunci pribadhi lan otentikasi dhewe menyang klien kanthi mbalekake pesen sing wis dikonfirmasi dening kunci master klien.

Data sakteruse dienkripsi lan diotentikasi nganggo kunci sing asale saka kunci master iki. Ing langkah kapindho, sing opsional, server ngirim panjalukan menyang klien, lan klien otentikasi dhewe menyang server kanthi mbalekake panjalukan kasebut kanthi teken digital dhewe lan sertifikat kunci umum.

SSL ndhukung macem-macem algoritma kriptografi. Sajrone panyiapan komunikasi, RSA public key cryptosystem digunakake. Sawise ijol-ijolan tombol, akeh cipher beda digunakake: RC2, RC4, IDEA, DES lan TripleDES. MD5 uga digunakake - algoritma kanggo nggawe pesen digest. Sintaks kanggo sertifikat kunci umum diterangake ing X.509.

Salah sawijining kaluwihan penting SSL yaiku kamardikan platform piranti lunak sing lengkap. Protokol kasebut dikembangake kanthi prinsip portabilitas, lan ideologi konstruksi kasebut ora gumantung marang aplikasi sing digunakake. Kajaba iku, penting uga protokol liyane bisa dilapisi kanthi transparan ing ndhuwur protokol SSL; salah siji kanggo nambah tingkat pangayoman saka informasi target mili, utawa kanggo ngganti kemampuan cryptographic saka SSL kanggo sawetara liyane, uga ditetepake tugas.

sambungan SSL

Protokol SFTP lan FTPS

Saluran aman sing disedhiyakake dening SSL nduweni telung sifat utama:

  • Saluran kasebut pribadi. Enkripsi digunakake kanggo kabeh pesen sawise dialog prasaja sing serves kanggo nemtokake kunci rahasia.
  • Saluran kasebut dikonfirmasi. Sisih server obrolan tansah diotentikasi, dene sisih klien opsional diotentikasi.
  • Saluran kasebut dipercaya. Transportasi pesen kalebu mriksa integritas (nggunakake MAC).

Fitur FTPS

Ana rong implementasi FTPS, nggunakake cara sing beda kanggo nyedhiyakake keamanan:

  • Cara implisit kalebu nggunakake protokol SSL standar kanggo netepake sesi sadurunge ngirim data, sing, banjur, ngilangi kompatibilitas karo klien lan server FTP biasa. Kanggo kompatibilitas mundur karo klien sing ora ndhukung FTPS, port TCP 990 digunakake kanggo sambungan kontrol lan 989 digunakake kanggo transfer data. Iki nahan port standar 21 kanggo protokol FTP. Cara iki dianggep lungse.
  • Eksplisit luwih trep, amarga nggunakake printah FTP standar, nanging ndhelik data nalika nanggapi, sing ngidini sampeyan nggunakake sambungan kontrol sing padha kanggo FTP lan FTPS. Klien kudu kanthi tegas njaluk transfer data sing aman saka server, banjur nyetujoni cara enkripsi. Yen klien ora njaluk transfer aman, server FTPS duwe hak kanggo njaga utawa nutup sambungan sing ora aman. Mekanisme rembugan otentikasi lan keamanan data ditambahake ing RFC 2228 sing kalebu perintah FTP AUTH anyar. Sanajan standar iki ora nemtokake mekanisme keamanan kanthi jelas, nanging nemtokake manawa sambungan aman kudu diwiwiti dening klien nggunakake algoritma sing kasebut ing ndhuwur. Yen sambungan aman ora didhukung dening server, kode kesalahan 504 kudu dibalekake. Klien FTPS bisa entuk informasi babagan protokol keamanan sing didhukung dening server nggunakake printah FEAT, nanging server ora kudu ngumumake tingkat keamanan apa wae. ndhukung. Perintah FTPS sing paling umum yaiku AUTH TLS lan AUTH SSL, sing nyedhiyakake keamanan TLS lan SSL.

SFTP

SFTP (Secure File Transfer Protocol) minangka protokol transfer file lapisan aplikasi sing mlaku ing ndhuwur saluran sing aman. Ora bakal bingung karo (Simple File Transfer Protocol), sing nduweni singkatan sing padha. Yen FTPS mung ekstensi saka FTP, mula SFTP minangka protokol sing kapisah lan ora ana hubungane sing nggunakake SSH (Secure Shell) minangka basis.

Shell sing aman

Protokol kasebut dikembangake dening salah sawijining klompok IETF sing diarani Secsh. Dokumentasi kerja kanggo protokol SFTP anyar ora dadi standar resmi, nanging wiwit aktif digunakake kanggo pangembangan aplikasi. Sabanjure, enem versi protokol dirilis. Nanging, paningkatan bertahap ing fungsi kasebut nyebabake kasunyatan manawa tanggal 14 Agustus 2006, diputusake mandheg nggarap pangembangan protokol amarga rampung tugas utama proyek kasebut (pengembangan SSH) lan kekurangan. saka tingkat pakar sing cukup kanggo nerusake kanggo pangembangan protokol sistem file remot lengkap.

SSH minangka protokol jaringan sing ngidini remot kontrol sistem operasi lan tunneling sambungan TCP (contone, kanggo transfer file). Fungsi sing padha karo protokol Telnet lan rlogin, nanging ora kaya wong-wong mau, ndhelik kabeh lalu lintas, kalebu sandhi sing dikirim. SSH ngidini pilihan saka algoritma enkripsi beda. Klien SSH lan server SSH kasedhiya kanggo umume sistem operasi jaringan.

SSH ngidini sampeyan nransfer meh kabeh protokol jaringan liyane kanthi aman ing lingkungan sing ora aman. Mangkono, sampeyan ora mung bisa mbatalake ing komputer liwat cangkang printah, nanging uga ngirim stream audio utawa video (contone, saka webcam) liwat saluran ndhelik. SSH uga bisa nggunakake komprèsi data sing ditularaké kanggo enkripsi sakteruse, kang trep, contone, kanggo mbatalake mbukak klien X WindowSystem.

Versi pisanan protokol kasebut, SSH-1, dikembangake ing taun 1995 dening peneliti Tatu Ulönen saka Universitas Teknologi Helsinki (Finlandia). SSH-1 ditulis kanggo nyedhiyakake privasi sing luwih gedhe tinimbang protokol rlogin, telnet, lan rsh. Ing taun 1996, versi protokol sing luwih aman, SSH-2, dikembangake, sing ora kompatibel karo SSH-1. Protokol kasebut dadi luwih populer, lan ing taun 2000 wis kira-kira rong yuta pangguna. Saiki, istilah "SSH" biasane tegese SSH-2, amarga Versi pisanan protokol saiki praktis ora digunakake amarga kekurangan sing signifikan. Ing taun 2006, protokol kasebut disetujoni dening grup kerja IETF minangka standar Internet.

Ana rong implementasi umum SSH: komersial pribadi lan sumber terbuka gratis. Implementasi gratis kasebut diarani OpenSSH. Ing taun 2006, 80% komputer ing Internet nggunakake OpenSSH. Implementasi kepemilikan dikembangake dening SSH Communications Security, anak perusahaan Tectia Corporation, lan gratis kanggo panggunaan non-komersial. Implementasi kasebut ngemot prentah sing meh padha.

Protokol SSH-2, ora kaya protokol telnet, tahan kanggo serangan eavesdropping lalu lintas ("sniffing"), nanging ora tahan kanggo serangan man-in-the-middle. Protokol SSH-2 uga tahan kanggo serangan pembajakan sesi, amarga ora bisa gabung utawa mbajak sesi sing wis ditetepake.

Kanggo nyegah serangan man-in-the-middle nalika nyambung menyang host sing kuncine durung dingerteni klien, piranti lunak klien nuduhake pangguna "sidik jari kunci". Disaranake kanggo mriksa kanthi ati-ati "gambar kunci" sing dituduhake dening piranti lunak klien kanthi gambar kunci server, luwih becik dipikolehi liwat saluran komunikasi sing dipercaya utawa kanthi pribadi.

Dhukungan SSH kasedhiya ing kabeh sistem kaya UNIX, lan umume duwe klien lan server ssh minangka utilitas standar. Ana akeh implementasi klien SSH kanggo OS non-UNIX. Protokol kasebut entuk popularitas gedhe sawise ngembangake analisa lalu lintas lan cara sing nyebar kanggo ngganggu operasi jaringan lokal, minangka solusi alternatif kanggo protokol Telnet sing ora aman kanggo ngatur simpul penting.

Komunikasi nggunakake SSH

Kanggo nggarap SSH, sampeyan butuh server SSH lan klien SSH. Server ngrungokake sambungan saka mesin klien lan, nalika sambungan ditetepake, nindakake otentikasi, sawise iku wiwit nglayani klien. Klien digunakake kanggo mlebu menyang mesin remot lan nglakokake perintah.

Protokol SFTP lan FTPS

Perbandingan karo FTPS

Babagan utama sing mbedakake SFTP saka FTP lan FTPS standar yaiku SFTP ndhelik kabeh perintah, jeneng pangguna, sandhi lan informasi rahasia liyane.

Protokol FTPS lan SFTP loro-lorone nggunakake kombinasi algoritma asimetris (RSA, DSA), algoritma simetris (DES/3DES, AES, Twhofish, lan liya-liyane), uga algoritma pertukaran kunci. Kanggo otentikasi, FTPS (utawa luwih tepat, SSL/TLS liwat FTP) nggunakake sertifikat X.509, dene SFTP (protokol SSH) nggunakake tombol SSH.

Sertifikat X.509 kalebu kunci umum lan sawetara informasi babagan sertifikat pemilik. Informasi iki ngidini, ing sisih liya, kanggo verifikasi integritas sertifikat kasebut dhewe, keaslian lan pemilik sertifikat kasebut. Sertifikat X.509 duwe kunci pribadi sing cocog, sing biasane disimpen kanthi kapisah saka sertifikat kanggo alasan keamanan.

Tombol SSH mung ngemot kunci umum (kunci pribadi sing cocog disimpen kanthi kapisah). Ora ngemot informasi babagan pemilik kunci kasebut. Sawetara implementasi SSH nggunakake sertifikat X.509 kanggo otentikasi, nanging ora bener verifikasi kabeh chain sertifikat-mung kunci umum sing digunakake (sing nggawe otentikasi kasebut ora lengkap).

kesimpulan

Protokol FTP temtunipun isih nduweni peran penting ing panyimpenan lan distribusi informasi ing jaringan sanajan umur sing dihormati. Iki minangka protokol sing trep, multifungsi lan standar. Akeh arsip file wis dibangun ing basis, tanpa karya technical ora bakal dadi efektif. Kajaba iku, gampang diatur, lan program server lan klien ana kanggo meh kabeh platform saiki lan ora saiki.

Sabanjure, versi sing dilindhungi ngatasi masalah kerahasiaan data sing disimpen lan dikirim ing donya modern. Loro-lorone protokol anyar duwe pro lan kontra lan duwe peran sing rada beda. Ing wilayah sing mbutuhake arsip file, luwih becik nggunakake FTPS, utamane yen FTP klasik wis digunakake sadurunge. SFTP kurang umum amarga incompatibility karo protokol lawas, nanging luwih aman lan luwih fungsi, awit iku bagéan saka sistem manajemen remot.

Dhaptar sumber

Source: www.habr.com

Add a comment