Jika Anda seorang administrator sistem yang mengelola server Linux, kemungkinan Anda perlu memberikan akses SFTP ke beberapa pengguna untuk mengunggah file ke direktori home mereka. Secara default, pengguna yang dapat masuk ke sistem melalui SSH, SFTP dan SCP dapat menelusuri seluruh sistem file termasuk direktori pengguna lain. Ini mungkin bukan masalah jika pengguna tersebut dapat dipercaya, tetapi jika Anda tidak ingin pengguna yang masuk menavigasi di bagian sistem, Anda perlu membatasi akses pengguna hanya ke direktori home mereka. Ini menambahkan lapisan keamanan ekstra terutama pada sistem dengan banyak pengguna.

Dalam tutorial ini, kami akan menjelaskan cara menyiapkan lingkungan SFTP Chroot Jail yang akan membatasi pengguna hanya di direktori home mereka. Pengguna hanya akan memiliki akses SFTP, akses SSH akan dinonaktifkan. Instruksi ini bekerja untuk distribusi Linux modern termasuk Ubuntu, CentOS, Debian, dan Fedora.

Membuat Grup SFTP

Alih-alih mengonfigurasi server OpenSSH untuk setiap pengguna secara individual, kami akan membuat grup baru dan menambahkan semua pengguna chroot ke grup ini.

Jalankan perintah groupadd berikut untuk membuat grup user sftponly:

sudo groupadd sftponly

Anda dapat memberi nama grup apapun seperti yang Anda inginkan.

Menambahkan User ke Grup SFTP

Langkah selanjutnya adalah menambahkan user yang ingin Anda batasi ke grup sftponly .

Jika ini adalah pengaturan baru dan pengguna tidak ada, Anda dapat membuat akun user baru dengan mengetik:

sudo useradd -g sftponly -s /bin/false -m -d /home/username username
  • Opsi -g sftponly akan menambahkan user ke group sftponly.
  • Opsi -s /bin/false akan mengatur login shell user. Dengan mengatur login shell menjadi /bin/false, User tidak akan dapat login ke server melalui SSH.
  • Opsi -m -d /home/username akan memberitahu perintah useradd membuat home directory untuk user .

Tetapkan kata sandi yang kuat untuk user yang baru dibuat:

sudo passwd username

Kalau tidak, jika pengguna yang ingin Anda batasi sudah ada, tambahkan pengguna ke grup sftponly dan ubah shell user:

sudo usermod -G sftponly -s /bin/false username2

Direktori home user harus dimiliki oleh root dan memiliki izin 755:

sudo chown root: /home/username
sudo chmod 755 /home/username

Karena direktori home pengguna dimiliki oleh root, user tersebut tidak akan dapat membuat file dan direktori di direktori home mereka. Jika tidak ada direktori di home user, Anda harus membuat direktori baru di mana  user akan memiliki akses penuh. Misalnya, Anda dapat membuat direktori berikut:

sudo mkdir /home/username/{public_html,uploads}
sudo chmod 755 /home/username/{public_html,uploads}
sudo chown username:sftponly /home/username/{public_html,uploads}

Jika aplikasi web menggunakan direktori public_html sebagai root dokumen, perubahan ini dapat menyebabkan masalah izin. Misalnya, jika Anda menjalankan WordPress, Anda harus membuat kumpulan PHP yang akan berjalan sebagai pengguna yang memiliki file dan menambahkan penghapus web ke grup sftponly.

Mengkonfigurasi SSH

SFTP adalah subsistem SSH dan mendukung semua mekanisme otentikasi SSH.

Buka file konfigurasi SSH di /etc/ssh/sshd_config dengan teks editor Anda:

sudo nano /etc/ssh/sshd_config

Cari baris yang dimulai dengan Subsystem sftp, biasanya di akhir file. Jika baris dimulai dengan hash # , yang perlu kita lakukan adalah hapus hash # dan modifikasi agar terlihat seperti berikut:

Subsystem sftp internal-sftp

Menjelang akhir file, blok konfigurasi berikut:

Match Group sftponly
  ChrootDirectory %h
  ForceCommand internal-sftp
  AllowTcpForwarding no
  X11Forwarding no

Directive ChrootDirectory menentukan jalur ke direktori chroot. %h berarti direktori home user. Direktori ini, harus dimiliki oleh pengguna root dan tidak dapat ditulis oleh pengguna atau grup lain.

Berhati-hatilah saat memodifikasi file konfigurasi SSH. Konfigurasi yang salah dapat menyebabkan layanan SSH gagal untuk memulai.

Setelah selesai simpan file dan restart layanan SSH untuk menerapkan perubahan:

sudo systemctl restart ssh

Di CentOS dan Fedora, layanan ssh dinamai sshd:

sudo systemctl restart sshd

Menguji Konfigurasi

Sekarang Anda telah mengkonfigurasi chroot SFTP Anda dapat mencoba masuk ke mesin remote melalui SFTP menggunakan kredensial pengguna chroot.

Dalam kebanyakan kasus, Anda akan menggunakan klien SFTP desktop seperti FileZilla tetapi dalam contoh ini, kami akan menggunakan perintah sftp.

Buka koneksi SFTP menggunakan perintah sftp diikuti oleh nama user server jarak jauh dan alamat IP server atau nama domain:

sftp username@192.168.111.20

Anda akan diminta memasukkan kata sandi pengguna. Setelah terhubung, server jarak jauh akan menampilkan pesan konfirmasi dan permintaan sftp>:

username@192.168.111.20's password:
sftp>

Jalankan perintah pwd, seperti yang ditunjukkan di bawah ini, dan jika semuanya berfungsi seperti yang diharapkan, perintah akan mengeluar output /.

sftp> pwd
Remote working directory: /

Anda juga dapat membuat daftar file dan direktori jarak jauh menggunakan perintah ls dan Anda akan melihat direktori yang telah kita buat sebelumnya:

sftp> ls
public_html  uploads

Kesimpulan

Dalam tutorial ini, Anda telah belajar cara setup  SFTP Chroot Jail di server Linux dan membatasi akses pengguna hanya ke direktori home mereka.

Secara default, SSH listens pada port 22. Mengubah port SSH default menambah lapisan keamanan tambahan ke server dengan mengurangi risiko serangan otomatis (brute force). Anda mungkin juga ingin mengatur otentikasi SSH berbasis key dan terhubung ke server tanpa memasukkan kata sandi.