Cara Mengaktifkan SFTP Tanpa Akses Shell di Ubuntu 16.04

0
86
views
SFTP (SSH File Transfer Protocol) Client
SFTP (SSH File Transfer Protocol) Client (image :https://www.goanywhere.com)

SFTP singkatan dari SSH File Transfer Protocol. Seperti namanya, ini adalah cara aman untuk mentransfer file ke server menggunakan koneksi SSH terenkripsi. Terlepas dari namanya, ini adalah protokol yang sama sekali berbeda dari FTP ( File Transfer Protocol), meskipun didukung secara luas oleh klien FTP Server modern.

SFTP tersedia secara default tanpa konfigurasi tambahan pada semua server yang mengaktifkan akses SSH. Ini aman dan mudah digunakan, namun hadir dengan kerugian: dalam konfigurasi standar, server SSH memberikan akses transfer file dan akses shell terminal ke semua pengguna yang memiliki akun di sistem.

Dalam beberapa kasus, Anda mungkin hanya ingin pengguna tertentu diizinkan mentransfer file dan tidak memiliki akses SSH. Dalam tutorial ini, kita akan mengatur daemon SSH untuk membatasi akses SFTP ke satu direktori tanpa akses SSH yang diperbolehkan berdasarkan pengguna.

Langkah 1 – Membuat Pengguna Baru

Pertama, buat user baru yang akan diberikan hanya transfer file akses ke server. Di sini, kita menggunakan username dicochol , tapi Anda bisa menggunakan username yang Anda suka.

sudo adduser dicochol

Anda akan diminta untuk membuat kata sandi untuk akun tersebut, diikuti beberapa informasi tentang pengguna. Informasi pengguna bersifat opsional, sehingga Anda dapat menekan ENTER untuk membiarkan kolom kosong.

Anda sekarang telah membuat pengguna baru yang akan diberikan akses ke direktori yang dibatasi. Pada langkah selanjutnya kita akan membuat direktori untuk transfer file dan mengatur hak akses yang diperlukan.

Langkah 2 – Membuat Direktori untuk Transfer File

Untuk membatasi akses SFTP ke satu direktori, pertama-tama kita harus memastikan bahwa direktori sesuai dengan persyaratan perizinan server SSH, yang sangat khusus.

Secara khusus, direktori itu sendiri dan semua direktori di atasnya berada di tree filesystem harus dimiliki oleh root dan tidak dapat ditulis oleh orang lain. Akibatnya, tidak mungkin hanya memberikan akses terbatas ke direktori home pengguna karena direktori home dimiliki oleh pengguna, bukan root .

Ada beberapa cara untuk mengatasi masalah kepemilikan ini. Dalam tutorial ini, kita akan membuat dan menggunakan /var/sftp/uploads sebagai direktori upload target. /var/sftp Akan dimiliki oleh root dan tidak akan disalahgunakan oleh pengguna lain; Subdirektori /var/sftp/uploads akan dimiliki oleh dicochol , sehingga pengguna bisa mengupload file ke dalamnya.

Pertama, buatlah direktori.

sudo mkdir -p /var/sftp/uploads

Tetapkan pemiliknya /var/sftp ke root.

sudo chown root:root /var/sftp

Berikan izin menulis root ke direktori yang sama, dan berikan pengguna lain hanya hak baca dan eksekusi.

sudo chmod 755 /var/sftp

Ubah kepemilikan di direktori upload menjadi dicochol 

sudo chown sammyfiles:sammyfiles /var/sftp/uploads

Sekarang struktur direktori ada di tempat, kita bisa mengkonfigurasi server SSH itu sendiri.

Langkah 3 – Membatasi Akses ke Satu Direktori

Pada langkah ini, kita akan memodifikasi konfigurasi server SSH untuk melarang akses terminal untuk dicochol namun memungkinkan akses transfer file.

Buka file konfigurasi server SSH menggunakan nano atau editor teks favorit Anda.

sudo nano /etc/ssh/sshd_config

Gulir ke bagian paling bawah dari file dan tambahkan snipet konfigurasi berikut ini:

Match User dicochol
ForceCommand internal-sftp
Password Authentication yes
ChrootDirectory /var/sftp
PermitTunnel no
AllowAgentForwarding no
AllowTcpForwarding no
X11Forwarding no

Kemudian simpan dan tutup file tersebut.

 

Inilah yang masing-masing Kumpulan perintah:

  • Match User Memberitahu server SSH untuk menerapkan perintah berikut hanya untuk pengguna yang ditentukan. Di sini, kami menentukan sammyfiles .
  • ForceCommand internal-sftp Memaksa server SSH untuk menjalankan server SFTP saat login, melumpuhkan akses shell.
  • PasswordAuthentication yes Memungkinkan otentikasi password untuk pengguna ini.
  • ChrootDirectory /var/sftp/ Memastikan bahwa pengguna tidak akan diizinkan mengakses apapun selain /var/sftp direktori.
  • AllowAgentForwarding no, AllowTcpForwarding no. Dan X11Forwarding no  menonaktifkan penerusan port, tunneling dan penerusan X11 untuk pengguna ini.

Untuk menerapkan perubahan konfigurasi, restart layanan.

sudo systemctl restart sshd

Anda sekarang telah mengkonfigurasi server SSH untuk membatasi akses ke transfer file hanya untuk dicochol . Langkah terakhir adalah menguji konfigurasi untuk memastikan kerjanya sesuai yang diinginkan.

Langkah 4 – Memeriksa Konfigurasi

Mari kita pastikan bahwa pengguna dicochol  baru kita hanya bisa mentransfer file.

Masuk ke server sebagai dicochol yang menggunakan akses shell normal seharusnya tidak dapat dilakukan lagi. Mari kita coba:

ssh dicochol@localhost

Anda akan melihat pesan berikut sebelum dikembalikan ke prompt awal Anda:

This service allows sftp connections only.

Connection to localhost closed.

Ini berarti bahwa dicochol  tidak bisa lagi mengakses shell server menggunakan SSH.

Selanjutnya, mari verifikasi apakah pengguna berhasil mengakses SFTP untuk transfer file.

sftp dicochol@localhost

Alih-alih pesan kesalahan, perintah ini akan menampilkan pesan masuk yang berhasil dengan prompt interaktif.

Connected to localhost.

sftp>

Anda dapat daftar isi direktori menggunakan ls dalam prompt:

sftp> ls

Ini akan menampilkan direktori uploads yang telah dibuat pada langkah sebelumnya dan mengembalikan Anda ke sftp> prompt.

SFTP file list output

uploads

Untuk memverifikasi bahwa pengguna memang terbatas pada direktori ini dan tidak dapat mengakses direktori apa pun di atasnya, Anda dapat mencoba mengubah direktori menjadi direktori di atasnya.

sftp> cd ..

Perintah ini tidak akan memberikan error, tapi daftar isi direktori seperti sebelumnya tidak akan menunjukkan perubahan, membuktikan bahwa pengguna tidak dapat beralih ke direktori induknya.

Anda sekarang telah memverifikasi bahwa konfigurasi yang dibatasi berfungsi sebagaimana mestinya. Pengguna dicochol  yang baru dibuat dapat mengakses server hanya dengan menggunakan protokol SFTP untuk transfer file dan tidak memiliki kemampuan untuk mengakses shell penuh.

Anda telah membatasi pengguna hanya ke akses SFTP ke satu direktori di server tanpa akses shell penuh. Sementara tutorial ini hanya menggunakan satu direktori dan satu pengguna untuk singkatnya, Anda dapat memperpanjang contoh ini ke beberapa pengguna dan beberapa direktori.

Server SSH memungkinkan skema konfigurasi yang lebih kompleks, termasuk membatasi akses ke grup atau beberapa pengguna sekaligus atau akses terbatas ke alamat IP tertentu. Anda dapat menemukan contoh opsi konfigurasi tambahan dan penjelasan tentang kemungkinan arahan dalam OpenSSH Cookbook .

LEAVE A REPLY

Please enter your comment!
Please enter your name here