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 [email protected]
Anda akan diminta memasukkan kata sandi pengguna. Setelah terhubung, server jarak jauh akan menampilkan pesan konfirmasi dan permintaan sftp>
:
[email protected]'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.