Cara Setting SFTP Only di CentOS 8
SFTP (SSH File Transfer Protocol/Secure File Transfer Protocol) adalah protokol transfer file yang aman, berjalan di atas protokol SSH.
Ketika sebuah server telah menjalankan SSH service, maka selain kita bisa melakukan remote login untuk manajemen server dengan command line, kita juga bisa melakukan transfer file dengan aman melalui SFTP.
Pertanyaan lain yang muncul kemudian adalah bagaimana cara membatasi hak akses user hanya untuk SFTP saja, tidak diberikan akses untuk remote shell? Nah, di tutorial kali ini membahas tentang bagaimana cara melakukan konfigurasi SSH untuk SFTP only.
0.Membuat Group dan User
Membuat group dan user khusus untuk akses SFTP, misalnya group sftponly dengan user webapp.
1 2 3 | groupadd sftponly useradd -g sftponly -s /bin/false -m -d /home/webapp webapp passwd webapp |
- -g sftponly user baru dimasukkan ke dalam group sftponly
- -s /bin/false user baru tidak bisa mengakses shell (SSH)
- -m -d /home/webapp nama home directory dari user baru
1.Hak Akses Direktori
Home directory dari user haruslah dimiliki oleh root dengan pengaturan akses 755.
1 2 | chown root:root /home/webapp chmod 755 /home/webapp |
Karena sebelumnya home directory telah diubah kepemilikannya ke user root, maka user webapp tidak memiliki hak untuk membuat file atau directory di dalam home directory. Untuk itu perlu dibuat directory yang akan digunakan untuk directory upload file, misalnya public_html untuk directory aplikasi website.
1 2 3 | mkdir /home/webapp/public_html chmod 755 /home/webapp/public_html chown webapp:sftponly /home/webapp/public_html |
2.Konfigurasi SSH
Selanjutnya konfigurasi SSH untuk SFTP Only.
1 | vi /etc/ssh/sshd_config |
Cari baris konfigurasi Subsystem dan ubah menjadi seperti di bawah ini.
1 2 3 4 5 6 7 8 | Subsystem sftp internal-sftp Match Group sftponly ChrootDirectory %h ForceCommand internal-sftp AllowTcpForwarding no X11Forwarding no PermitTunnel no AllowAgentForwarding no |
- Match Group nama group yang dipakai untuk SFTP. Berarti semua user yang berada dalam group tersebut hanya bisa melakukan SFTP, tidak bisa SSH remote. Match Group bisa diganti dengan Match User jika hanya satu user SFTP
- ChrootDirectory %h direktori home dari masing-masing user menjadi direktori root saat login SFTP. Direktori ini bisa diganti dengan direktori lain
Restart SSH service.
1 2 | systemctl restart sshd systemctl status sshd |
3.Pengujian SFTP Only
Pengujian konfigurasi SFTP Only menggunakan SFTP client berbasis CLI.
Buat file index.html terlebih dahulu di local untuk diupload ke server.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | echo "hello world" > /tmp/index.html sftp webapp@192.168.123.8 sftp> pwd Remote working directory: / sftp> ls public_html sftp> put /tmp/index.html public_html Uploading /tmp/index.html to /public_html/index.html /tmp/index.html 100% 12 9.6KB/s 00:00 sftp> cd public_html/ sftp> ls index.html |
Dari perintah SFTP di atas memperlihatkan ketika login langsung berada di directory root (/) yang sebenarnya adalah home directory dari user webapp (/home/webapp). Kemudian dilakukan uji coba upload file ke direktori public_html.
Verifikasi hasil upload dengan melihat isi direktori public_html.
1 2 3 | cd /home/webapp/public_html/ ls -l -rw------- 1 webapp sftponly 12 Oct 23 21:11 index.html |
Dari hasil perintah ls di atas, terdapat file index.html dengan user webapp dan group sftponly.
SFTP bisa juga dilakukan dengan menggunakan aplikasi FileZilla FTP/SFTP client.
selamat mencoba 🙂