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
- Server dengan Ubuntu 22.04 yang telah diaktifkan SSH-nya.
- Akun pengguna non-root dengan hak akses
sudo
. - 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
- Server dengan Ubuntu 22.04 yang telah diaktifkan SSH-nya.
- Akun pengguna non-root dengan hak akses
sudo
. - 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
menjadiroot
:
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
Match User
hanya menerapkan perintah ini pada pengguna yang ditentukan (dalam contoh ini,sammyfiles
).ForceCommand internal-sftp
memaksa SSH untuk menjalankan SFTP saat login, tanpa akses shell.ChrootDirectory
membatasi akses hanya pada direktori/var/sftp
.
- Simpan dan tutup file (tekan
CTRL + X
, laluY
, danENTER
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 direktoriuploads
:
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.