Protokol SFTP dan FTPS

kata pengantar

Seminggu yang lalu saya sedang menulis esai tentang topik yang disebutkan dalam judul dan dihadapkan pada kenyataan bahwa, katakanlah, tidak banyak informasi pendidikan di Internet. Sebagian besar fakta kering dan instruksi pengaturan. Oleh karena itu, saya memutuskan untuk sedikit mengoreksi teks tersebut dan mempostingnya sebagai artikel.

Apa itu FTP

FTP (File Transfer Protocol) adalah protokol untuk mentransfer file melalui jaringan. Ini adalah salah satu protokol Ethernet dasar. Muncul pada tahun 1971 dan awalnya bekerja di jaringan DARPA. Saat ini, seperti HTTP, transfer file didasarkan pada model yang terdiri dari sekumpulan protokol TCP/IP (Transmission Control Protocol/Internet Protocol). Didefinisikan dalam RFC 959.

Protokol mendefinisikan hal berikut:

  • Bagaimana pemeriksaan kesalahan akan dilakukan?
  • Metode pengemasan data (jika pengemasan digunakan)
  • Bagaimana perangkat pengirim menunjukkan bahwa ia telah menyelesaikan pesannya?
  • Bagaimana perangkat penerima menunjukkan bahwa ia telah menerima pesan?

Komunikasi antara klien dan server

Mari kita lihat lebih dekat proses yang terjadi selama operasi FTP. Koneksi diinisialisasi oleh penerjemah protokol pengguna. Pertukaran dikendalikan melalui saluran kontrol dalam standar TELNET. Perintah FTP dihasilkan oleh penerjemah protokol pengguna dan dikirim ke server. Respons server juga dikirim ke pengguna melalui saluran kontrol. Secara umum, pengguna mempunyai kemampuan untuk menjalin kontak dengan juru bahasa protokol server dan dengan cara selain juru bahasa pengguna.

Fitur utama FTP adalah menggunakan koneksi ganda. Salah satunya digunakan untuk mengirim perintah ke server dan terjadi secara default melalui TCP port 21, yang dapat diubah. Koneksi kontrol ada selama klien berkomunikasi dengan server. Saluran kontrol harus terbuka saat mentransfer data antar mesin. Jika ditutup, transmisi data terhenti. Melalui yang kedua, terjadi transfer data langsung. Ini terbuka setiap kali transfer file terjadi antara klien dan server. Jika beberapa file ditransfer secara bersamaan, masing-masing file membuka saluran transmisinya sendiri.

FTP dapat beroperasi dalam mode aktif atau pasif, pilihannya menentukan bagaimana koneksi dibuat. Dalam mode aktif, klien membuat koneksi kontrol TCP dengan server dan mengirimkan alamat IP dan nomor port klien arbitrer ke server, dan kemudian menunggu server memulai koneksi TCP dengan alamat dan nomor port ini. Jika klien berada di belakang firewall dan tidak dapat menerima koneksi TCP masuk, mode pasif dapat digunakan. Dalam mode ini, klien menggunakan aliran kontrol untuk mengirim perintah PASV ke server, dan kemudian menerima alamat IP dan nomor port dari server, yang kemudian digunakan klien untuk membuka aliran data dari port arbitrernya.

Ada kemungkinan bahwa data dapat ditransfer ke mesin ketiga. Dalam hal ini, pengguna mengatur saluran kontrol dengan dua server dan mengatur saluran data langsung di antara keduanya. Perintah kontrol dikirim melalui pengguna, dan data dikirim langsung antar server.

Saat mentransmisikan data melalui jaringan, empat representasi data dapat digunakan:

  • ASCII – digunakan untuk teks. Data tersebut, jika perlu, diubah dari representasi karakter pada host pengirim menjadi "ASCII delapan bit" sebelum transmisi, dan (sekali lagi, jika perlu) menjadi representasi karakter pada host penerima. Khususnya, karakter baris baru diubah. Akibatnya, mode ini tidak cocok untuk file yang berisi lebih dari sekadar teks biasa.
  • Mode biner - perangkat pengirim mengirimkan setiap file byte demi byte, dan penerima menyimpan aliran byte setelah diterima. Dukungan untuk mode ini telah direkomendasikan untuk semua implementasi FTP.
  • EBCDIC – digunakan untuk mentransfer teks biasa antar host dalam pengkodean EBCDIC. Jika tidak, mode ini mirip dengan mode ASCII.
  • Mode lokal - memungkinkan dua komputer dengan pengaturan identik untuk mengirim data dalam formatnya sendiri tanpa mengonversi ke ASCII.

Transfer data dapat dilakukan dalam tiga mode berikut:

  • Mode aliran - data dikirim sebagai aliran berkelanjutan, membebaskan FTP dari melakukan pemrosesan apa pun. Sebaliknya, semua pemrosesan dilakukan oleh TCP. Indikator akhir file tidak diperlukan kecuali untuk memisahkan data menjadi catatan.
  • Mode blok - FTP memecah data menjadi beberapa blok (blok header, jumlah byte, bidang data) dan kemudian mengirimkannya ke TCP.
  • Mode kompresi – data dikompresi menggunakan satu algoritma (biasanya dengan mengkodekan panjang proses).

Server FTP adalah server yang menyediakan kemampuan untuk menggunakan File Transfer Protocol. Ia memiliki fitur tertentu yang membedakannya dari server web konvensional:

  • Otentikasi pengguna diperlukan
  • Semua operasi dilakukan dalam sesi saat ini
  • Kemampuan untuk melakukan berbagai tindakan dengan sistem file
  • Saluran terpisah digunakan untuk setiap koneksi

Klien FTP adalah program yang memungkinkan Anda terhubung ke server jarak jauh melalui FTP dan juga melakukan tindakan yang diperlukan dengan elemen sistem file. Klien mungkin adalah browser, di bilah alamat di mana Anda harus memasukkan alamat yang merupakan jalur ke direktori atau file tertentu di server jarak jauh, sesuai dengan diagram blok URL umum:

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

Namun, menggunakan browser web dalam konteks ini hanya akan memungkinkan Anda melihat atau mendownload file yang diinginkan. Untuk memanfaatkan sepenuhnya semua keunggulan FTP, Anda harus menggunakan perangkat lunak khusus sebagai klien.

Otentikasi FTP menggunakan skema nama pengguna/kata sandi untuk memberikan akses. Nama pengguna dikirim ke server dengan perintah USER, dan kata sandi dikirim dengan perintah PASS. Jika informasi yang diberikan oleh klien diterima oleh server, maka server akan mengirimkan undangan kepada klien dan sesi dimulai. Pengguna dapat, jika server mendukung fitur ini, masuk tanpa memberikan kredensial, namun server hanya dapat memberikan akses terbatas untuk sesi tersebut.

Host yang menyediakan layanan FTP dapat memberikan akses FTP anonim. Pengguna biasanya login dengan "anonim" (mungkin peka terhadap huruf besar-kecil di beberapa server FTP) sebagai nama pengguna mereka. Meskipun pengguna biasanya diminta untuk memberikan alamat email mereka dan bukan kata sandi, sebenarnya tidak ada verifikasi yang dilakukan. Banyak host FTP yang menyediakan pembaruan perangkat lunak mendukung akses anonim.

Diagram protokol

Interaksi client-server selama koneksi FTP dapat divisualisasikan sebagai berikut:

Protokol SFTP dan FTPS

Amankan FTP

FTP awalnya tidak dimaksudkan untuk keamanan, karena dimaksudkan untuk komunikasi antara beberapa instalasi dan lembaga militer. Namun seiring dengan perkembangan dan penyebaran Internet, bahaya akses tidak sah telah meningkat berkali-kali lipat. Ada kebutuhan untuk melindungi server dari berbagai jenis serangan. Pada bulan Mei 1999, penulis RFC 2577 merangkum kerentanan tersebut ke dalam daftar masalah berikut:

  • Serangan tersembunyi (serangan pantulan)
  • Serangan palsu
  • Serangan kekerasan
  • Pengambilan paket, mengendus
  • Pencurian pelabuhan

FTP biasa tidak memiliki kemampuan untuk mentransfer data dalam bentuk terenkripsi, sehingga nama pengguna, kata sandi, perintah, dan informasi lainnya dapat dengan mudah dan mudah disadap oleh penyerang. Solusi umum untuk masalah ini adalah dengan menggunakan versi protokol rentan (FTPS) yang "aman" dan dilindungi TLS atau protokol lain yang lebih aman, seperti SFTP/SCP, yang disediakan dengan sebagian besar implementasi protokol Secure Shell.

FTPS

FTPS (FTP + SSL) adalah perpanjangan dari protokol transfer file standar yang menambah fungsionalitas dasarnya dengan membuat sesi terenkripsi menggunakan protokol SSL (Secure Sockets Layer). Saat ini, perlindungan diberikan oleh analognya yang lebih canggih, TLS (Transport Layer Security).

SSL

Protokol SSL diusulkan oleh Netscape Communications pada tahun 1996 untuk menjamin keamanan dan privasi koneksi Internet. Protokol ini mendukung otentikasi klien dan server, tidak bergantung pada aplikasi, dan transparan terhadap protokol HTTP, FTP, dan Telnet.

Protokol SSL Handshake terdiri dari dua tahap: otentikasi server dan otentikasi klien opsional. Pada tahap pertama, server merespons permintaan klien dengan mengirimkan sertifikat dan parameter enkripsinya. Klien kemudian membuat kunci master, mengenkripsinya dengan kunci publik server, dan mengirimkannya ke server. Server mendekripsi kunci master dengan kunci pribadinya dan mengautentikasi dirinya ke klien dengan mengembalikan pesan yang diautentikasi oleh kunci master klien.

Data selanjutnya dienkripsi dan diautentikasi dengan kunci yang berasal dari kunci master ini. Pada langkah kedua, yang bersifat opsional, server mengirimkan permintaan ke klien, dan klien mengautentikasi dirinya ke server dengan mengembalikan permintaan tersebut dengan tanda tangan digitalnya sendiri dan sertifikat kunci publik.

SSL mendukung berbagai algoritma kriptografi. Selama pembentukan komunikasi, sistem kriptografi kunci publik RSA digunakan. Setelah pertukaran kunci, banyak cipher berbeda yang digunakan: RC2, RC4, IDEA, DES dan TripleDES. MD5 juga digunakan - sebuah algoritma untuk membuat intisari pesan. Sintaks untuk sertifikat kunci publik dijelaskan di X.509.

Salah satu keunggulan penting SSL adalah independensi platform perangkat lunaknya yang lengkap. Protokol ini dikembangkan berdasarkan prinsip portabilitas, dan ideologi konstruksinya tidak bergantung pada aplikasi yang menggunakannya. Selain itu, penting juga agar protokol lain dapat dilapiskan secara transparan di atas protokol SSL; baik untuk lebih meningkatkan tingkat perlindungan arus informasi target, atau untuk mengadaptasi kemampuan kriptografi SSL untuk beberapa tugas lain yang terdefinisi dengan baik.

koneksi SSL

Protokol SFTP dan FTPS

Saluran aman yang disediakan oleh SSL memiliki tiga properti utama:

  • Saluran ini bersifat pribadi. Enkripsi digunakan untuk semua pesan setelah dialog sederhana yang berfungsi untuk menentukan kunci rahasia.
  • Saluran tersebut diautentikasi. Sisi server percakapan selalu diautentikasi, sedangkan sisi klien diautentikasi secara opsional.
  • Saluran ini dapat diandalkan. Pengangkutan pesan mencakup pemeriksaan integritas (menggunakan MAC).

Fitur FTPS

Ada dua implementasi FTPS, menggunakan metode berbeda dalam memberikan keamanan:

  • Metode implisit melibatkan penggunaan protokol SSL standar untuk membuat sesi sebelum mengirim data, yang, pada gilirannya, merusak kompatibilitas dengan klien dan server FTP biasa. Untuk kompatibilitas mundur dengan klien yang tidak mendukung FTPS, port TCP 990 digunakan untuk koneksi kontrol dan 989 digunakan untuk transfer data. Ini mempertahankan port standar 21 untuk protokol FTP. Cara ini dianggap ketinggalan jaman.
  • Eksplisit jauh lebih nyaman karena menggunakan perintah FTP standar, tetapi mengenkripsi data saat merespons, sehingga Anda dapat menggunakan koneksi kontrol yang sama untuk FTP dan FTPS. Klien harus secara eksplisit meminta transfer data aman dari server, dan kemudian menyetujui metode enkripsi. Jika klien tidak meminta transfer aman, server FTPS berhak mempertahankan atau menutup koneksi tidak aman. Mekanisme negosiasi otentikasi dan keamanan data ditambahkan di bawah RFC 2228 yang mencakup perintah FTP AUTH baru. Meskipun standar ini tidak secara eksplisit mendefinisikan mekanisme keamanan, standar ini menetapkan bahwa koneksi aman harus dimulai oleh klien menggunakan algoritma yang dijelaskan di atas. Jika koneksi aman tidak didukung oleh server, kode kesalahan 504 harus dikembalikan. Klien FTPS dapat memperoleh informasi tentang protokol keamanan yang didukung oleh server menggunakan perintah FEAT, namun server tidak diharuskan untuk mengungkapkan tingkat keamanan apa yang dimilikinya. mendukung. Perintah FTPS yang paling umum adalah AUTH TLS dan AUTH SSL, yang masing-masing menyediakan keamanan TLS dan SSL.

SFTP

SFTP (Secure File Transfer Protocol) adalah protokol transfer file lapisan aplikasi yang berjalan di atas saluran aman. Jangan bingung dengan (Simple File Transfer Protocol), yang memiliki singkatan yang sama. Jika FTPS hanyalah perpanjangan dari FTP, maka SFTP adalah protokol terpisah dan tidak terkait yang menggunakan SSH (Secure Shell) sebagai dasarnya.

Secure Shell

Protokol ini dikembangkan oleh salah satu kelompok IETF bernama Secsh. Dokumentasi kerja protokol SFTP baru tidak menjadi standar resmi, tetapi mulai digunakan secara aktif untuk pengembangan aplikasi. Selanjutnya, enam versi protokol dirilis. Namun, peningkatan fungsionalitas secara bertahap di dalamnya menyebabkan fakta bahwa pada tanggal 14 Agustus 2006, diputuskan untuk berhenti mengerjakan pengembangan protokol karena selesainya tugas utama proyek (pengembangan SSH) dan kurangnya tingkat ahli yang memadai untuk beralih ke pengembangan protokol sistem file jarak jauh yang lengkap.

SSH adalah protokol jaringan yang memungkinkan kendali jarak jauh sistem operasi dan penerowongan koneksi TCP (misalnya, untuk transfer file). Fungsinya mirip dengan protokol Telnet dan rlogin, tetapi, tidak seperti keduanya, protokol ini mengenkripsi semua lalu lintas, termasuk kata sandi yang dikirimkan. SSH memungkinkan pilihan algoritma enkripsi yang berbeda. Klien SSH dan server SSH tersedia untuk sebagian besar sistem operasi jaringan.

SSH memungkinkan Anda mentransfer hampir semua protokol jaringan lainnya dengan aman di lingkungan yang tidak aman. Dengan demikian, Anda tidak hanya dapat bekerja dari jarak jauh di komputer Anda melalui shell perintah, tetapi juga mengirimkan aliran audio atau video (misalnya, dari webcam) melalui saluran terenkripsi. SSH juga dapat menggunakan kompresi data yang dikirimkan untuk enkripsi selanjutnya, yang berguna, misalnya, untuk meluncurkan klien X WindowSystem dari jarak jauh.

Versi pertama dari protokol, SSH-1, dikembangkan pada tahun 1995 oleh peneliti Tatu Ulönen dari Universitas Teknologi Helsinki (Finlandia). SSH-1 ditulis untuk memberikan privasi lebih baik daripada protokol rlogin, telnet, dan rsh. Pada tahun 1996, versi protokol yang lebih aman, SSH-2, dikembangkan, yang tidak kompatibel dengan SSH-1. Protokol ini semakin populer dan pada tahun 2000 memiliki sekitar dua juta pengguna. Saat ini istilah “SSH” biasanya berarti SSH-2, karena Versi pertama dari protokol ini sekarang praktis tidak digunakan karena kekurangan yang signifikan. Pada tahun 2006, protokol tersebut disetujui oleh kelompok kerja IETF sebagai standar Internet.

Ada dua implementasi umum SSH: komersial swasta dan open source gratis. Implementasi gratisnya disebut OpenSSH. Pada tahun 2006, 80% komputer di Internet menggunakan OpenSSH. Implementasi kepemilikannya dikembangkan oleh SSH Communications Security, anak perusahaan yang sepenuhnya dimiliki oleh Tectia Corporation, dan gratis untuk penggunaan non-komersial. Implementasi ini berisi kumpulan perintah yang hampir sama.

Protokol SSH-2, tidak seperti protokol telnet, tahan terhadap serangan penyadapan lalu lintas (“sniffing”), namun tidak tahan terhadap serangan man-in-the-middle. Protokol SSH-2 juga tahan terhadap serangan pembajakan sesi, karena tidak mungkin untuk bergabung atau membajak sesi yang sudah ada.

Untuk mencegah serangan man-in-the-middle ketika menghubungkan ke host yang kuncinya belum diketahui oleh klien, perangkat lunak klien menunjukkan “sidik jari kunci” kepada pengguna. Disarankan untuk hati-hati memeriksa "snapshot kunci" yang ditunjukkan oleh perangkat lunak klien dengan snapshot kunci server, sebaiknya diperoleh melalui saluran komunikasi yang dapat diandalkan atau secara langsung.

Dukungan SSH tersedia di semua sistem mirip UNIX, dan sebagian besar memiliki klien dan server ssh sebagai utilitas standar. Ada banyak implementasi klien SSH untuk OS non-UNIX. Protokol ini mendapatkan popularitas besar setelah meluasnya pengembangan penganalisis lalu lintas dan metode untuk mengganggu pengoperasian jaringan lokal, sebagai solusi alternatif terhadap protokol Telnet yang tidak aman untuk mengelola node-node penting.

Komunikasi menggunakan SSH

Untuk bekerja melalui SSH, Anda memerlukan server SSH dan klien SSH. Server mendengarkan koneksi dari mesin klien dan, ketika koneksi dibuat, melakukan otentikasi, setelah itu mulai melayani klien. Klien digunakan untuk masuk ke mesin jarak jauh dan menjalankan perintah.

Protokol SFTP dan FTPS

Perbandingan dengan FTPS

Hal utama yang membedakan SFTP dari FTP dan FTPS standar adalah SFTP benar-benar mengenkripsi semua perintah, nama pengguna, kata sandi, dan informasi rahasia lainnya.

Baik protokol FTPS maupun SFTP menggunakan kombinasi algoritma asimetris (RSA, DSA), algoritma simetris (DES/3DES, AES, Twhofish, dll.), serta algoritma pertukaran kunci. Untuk autentikasi, FTPS (atau lebih tepatnya, SSL/TLS melalui FTP) menggunakan sertifikat X.509, sedangkan SFTP (protokol SSH) menggunakan kunci SSH.

Sertifikat X.509 menyertakan kunci publik dan beberapa informasi tentang sertifikat pemilik. Sebaliknya, informasi ini memungkinkan untuk memverifikasi integritas sertifikat itu sendiri, keaslian dan pemilik sertifikat. Sertifikat X.509 memiliki kunci pribadi terkait, yang biasanya disimpan terpisah dari sertifikat untuk alasan keamanan.

Kunci SSH hanya berisi kunci publik (kunci pribadi terkait disimpan secara terpisah). Itu tidak berisi informasi apa pun tentang pemilik kunci. Beberapa implementasi SSH menggunakan sertifikat X.509 untuk autentikasi, namun tidak benar-benar memverifikasi seluruh rantai sertifikat—hanya kunci publik yang digunakan (yang membuat autentikasi tersebut tidak lengkap).

Kesimpulan

Protokol FTP tidak diragukan lagi masih memainkan peran penting dalam penyimpanan dan distribusi informasi di jaringan meskipun usianya sudah tua. Ini adalah protokol yang nyaman, multifungsi dan terstandarisasi. Banyak arsip file telah dibuat atas dasar ini, yang tanpanya pekerjaan teknis tidak akan begitu efektif. Selain itu, pengaturannya mudah, dan program server dan klien tersedia untuk hampir semua platform terkini dan tidak terkini.

Pada gilirannya, versi yang dilindungi memecahkan masalah kerahasiaan data yang disimpan dan dikirimkan di dunia modern. Kedua protokol baru ini memiliki kelebihan dan kekurangan serta memiliki peran yang sedikit berbeda. Di area yang memerlukan arsip file, sebaiknya menggunakan FTPS, terutama jika FTP klasik sudah pernah digunakan di sana sebelumnya. SFTP kurang umum karena ketidakcocokannya dengan protokol lama, namun lebih aman dan memiliki lebih banyak fungsi karena merupakan bagian dari sistem manajemen jarak jauh.

Daftar sumber

Sumber: www.habr.com

Tambah komentar