Cara Mengaktifkan SFTP Tanpa Akses Shell di Ubuntu 22.04

Pendahuluan

SFTP (Secure File Transfer Protocol) adalah metode aman untuk mentransfer file antara mesin melalui koneksi SSH terenkripsi. Meskipun mirip dengan FTP, SFTP memiliki keamanan yang lebih baik dan didukung oleh sebagian besar klien FTP modern. Dalam konfigurasi standar, pengguna SFTP yang memiliki akses SSH di server juga akan mendapatkan akses shell terminal. Namun, untuk meningkatkan keamanan, Anda dapat mengatur SFTP agar hanya memiliki akses transfer file tanpa akses ke shell.

Pada panduan ini, Anda akan mempelajari cara mengonfigurasi server SSH di Ubuntu 22.04 untuk memberikan akses SFTP terbatas pada satu direktori tanpa memberikan akses ke shell.

Disclaimer

Panduan ini hanya memberikan contoh untuk satu pengguna dan satu direktori. Pastikan untuk melakukan penyesuaian sesuai kebutuhan keamanan dan pengguna pada server Anda.

Prasyarat

  1. Server dengan Ubuntu 22.04 yang telah diaktifkan SSH-nya.
  2. Akun pengguna non-root dengan hak akses sudo.
  3. Firewall yang sudah dikonfigurasi di server Anda.

Langkah-Langkah

Langkah 1 — Membuat Pengguna Baru

Pertama, buat pengguna baru yang hanya akan diberikan akses untuk mentransfer file. Misalnya, kita akan membuat pengguna dengan nama sammyfiles, namun Anda bisa mengganti dengan nama lain.

sudo adduser sammyfiles

Cara Mengaktifkan SFTP Tanpa Akses Shell di Ubuntu 22.04

Pendahuluan

SFTP (Secure File Transfer Protocol) adalah metode aman untuk mentransfer file antara mesin melalui koneksi SSH terenkripsi. Meskipun mirip dengan FTP, SFTP memiliki keamanan yang lebih baik dan didukung oleh sebagian besar klien FTP modern. Dalam konfigurasi standar, pengguna SFTP yang memiliki akses SSH di server juga akan mendapatkan akses shell terminal. Namun, untuk meningkatkan keamanan, Anda dapat mengatur SFTP agar hanya memiliki akses transfer file tanpa akses ke shell.

Pada panduan ini, Anda akan mempelajari cara mengonfigurasi server SSH di Ubuntu 22.04 untuk memberikan akses SFTP terbatas pada satu direktori tanpa memberikan akses ke shell.

Disclaimer

Panduan ini hanya memberikan contoh untuk satu pengguna dan satu direktori. Pastikan untuk melakukan penyesuaian sesuai kebutuhan keamanan dan pengguna pada server Anda.

Prasyarat

  1. Server dengan Ubuntu 22.04 yang telah diaktifkan SSH-nya.
  2. Akun pengguna non-root dengan hak akses sudo.
  3. Firewall yang sudah dikonfigurasi di server Anda.

Langkah-Langkah

Langkah 1 — Membuat Pengguna Baru

Pertama, buat pengguna baru yang hanya akan diberikan akses untuk mentransfer file. Misalnya, kita akan membuat pengguna dengan nama sammyfiles, namun Anda bisa mengganti dengan nama lain.

sudo adduser sammyfiles

Anda akan diminta untuk membuat kata sandi dan mengisi informasi pengguna. Informasi ini opsional, sehingga Anda dapat menekan ENTER untuk melewati.

Langkah 2 — Membuat Direktori untuk Transfer File

Agar pengguna hanya bisa mengakses satu direktori, buatlah struktur direktori yang sesuai dengan persyaratan server SSH, di mana semua direktori di atasnya harus dimiliki oleh root dan tidak dapat ditulis oleh pengguna lain.

  • Buat direktori /var/sftp/uploads:
sudo mkdir -p /var/sftp/uploads
  • Ubah kepemilikan /var/sftp menjadi root:
sudo chown root:root /var/sftp
  • Atur izin pada direktori /var/sftp agar root memiliki izin menulis, dan pengguna lain hanya memiliki izin baca dan eksekusi:
sudo chmod 755 /var/sftp
  • Ubah kepemilikan direktori uploads ke pengguna yang baru Anda buat (sammyfiles):
sudo chown sammyfiles:sammyfiles /var/sftp/uploads

Langkah 3 — Membatasi Akses ke Satu Direktori

Selanjutnya, modifikasi konfigurasi server SSH untuk melarang akses terminal bagi sammyfiles dan hanya mengizinkan akses SFTP.

  • Buka file konfigurasi SSH:
sudo nano /etc/ssh/sshd_config
  • Di bagian paling bawah, tambahkan konfigurasi berikut:
Match User sammyfiles
ForceCommand internal-sftp
PasswordAuthentication yes
ChrootDirectory /var/sftp
PermitTunnel no
AllowAgentForwarding no
AllowTcpForwarding no
X11Forwarding no
  1. Match User hanya menerapkan perintah ini pada pengguna yang ditentukan (dalam contoh ini, sammyfiles).
  2. ForceCommand internal-sftp memaksa SSH untuk menjalankan SFTP saat login, tanpa akses shell.
  3. ChrootDirectory membatasi akses hanya pada direktori /var/sftp.
  • Simpan dan tutup file (tekan CTRL + X, lalu Y, dan ENTER untuk menyimpan dengan nano).
  • Terapkan perubahan dengan me-restart layanan SSH:
sudo systemctl restart sshd

Langkah 4 — Memverifikasi Konfigurasi

Uji konfigurasi dengan memastikan bahwa sammyfiles hanya bisa mengakses SFTP.

  • Coba login menggunakan SSH dengan perintah berikut:
ssh sammyfiles@ip_server_anda

Anda akan mendapatkan pesan berikut:

This service allows sftp connections only.
  • Coba akses server menggunakan SFTP:
sftp sammyfiles@ip_server_anda

Jika berhasil, Anda akan masuk ke prompt interaktif SFTP dan dapat menggunakan perintah ls untuk melihat isi direktori:

sftp> ls
uploads
  • Coba akses direktori lain dengan perintah cd .. untuk memastikan pengguna tidak bisa keluar dari direktori uploads:
sftp> cd ..

Jika konfigurasi berhasil, pengguna akan tetap berada di dalam direktori uploads tanpa akses ke direktori lain.

Penutup

Anda telah berhasil mengonfigurasi akses SFTP terbatas tanpa akses shell untuk pengguna di Ubuntu 22.04. Konfigurasi ini memberikan keamanan tambahan dengan membatasi akses hanya pada direktori yang diizinkan. Anda juga bisa menerapkan konfigurasi ini pada beberapa pengguna dengan menambahkan konfigurasi serupa untuk setiap pengguna yang ingin dibatasi.

Leave a Reply

Your email address will not be published. Required fields are marked *