Artikel ini menunjukkan cara membuat pengguna SSH File Transfer Protocol (SFTP) aman yang dibatasi atau di-jail ke direktori home mereka.
PERINGATAN :Jangan mencoba memenjarakan pengguna root. Hanya penjarakan pengguna tambahan sehingga Anda tidak mencegah pengguna root melakukan operasi dengan benar.
Sebelum Anda mulai, tinjau praktik terbaik berikut:
-
Direktori beranda pengguna SFTP harus dimiliki oleh
root:root
. Direktori lain dapat (dan harus) dimiliki (dan dapat ditulis) oleh pengguna. -
Penting untuk memastikan pengguna chroot memiliki akses tulis ke DocumentRoot yang ditentukan.
-
Penting untuk masuk dan menguji apakah pengguna SFTP berfungsi dengan benar.
-
Penting untuk memastikan bahwa pengguna SFTP yang ditambahkan ditambahkan ke grup SFTP.
-
Petunjuk ini adalah untuk menambahkan satu domain (pengguna SFTP), tetapi Anda berpotensi menggunakannya untuk mengelola beberapa domain.
Penting :Langkah-langkah dalam artikel ini tidak bekerja dengan RHEL® 7 atau CentOS® 7. Seperti halnya operasi chroot lainnya, konfigurasi ini tidak menyediakan akses tulis ke direktori chroot. Hanya subdirektori dari chroot jail yang dapat ditulis. Ini karena cara izin root diinterpretasikan di direktori tingkat yang lebih tinggi tempat pengguna SFTP berada.
Gunakan langkah-langkah berikut untuk membuat pengguna SFTP aman yang di-jail ke direktori home mereka:
-
Tambahkan grup SFTP yang ingin Anda gunakan untuk akses SFTP dengan menjalankan perintah berikut:
groupadd sftponly
-
Tambahkan pengguna SFTP dengan menjalankan perintah berikut, menggantikan
myuser
dengan nama pengguna:useradd -d /var/www/vhosts/domain.com -s /bin/false -G sftponly myuser
-
Buat kata sandi untuk pengguna dengan menjalankan perintah berikut, menggantikan
myuser
dengan nama pengguna:passwd myuser
-
Buka
sshd_config
file yang menyimpan konfigurasi SSH dan SFTP dengan menjalankan perintah berikut:nano /etc/ssh/sshd_config
-
Komentari baris berikut dengan menambahkan simbol hash (#) di awal, seperti yang ditunjukkan pada contoh berikut:
#Subsystem sftp /usr/lib/openssh/sftp-server
-
Tambahkan baris berikut tepat di bawah baris yang baru saja Anda komentari:
Subsystem sftp internal-sftp
-
Tambahkan kode berikut ke bagian bawah file:
Match Group sftponly ChrootDirectory %h X11Forwarding no AllowTCPForwarding no ForceCommand internal-sftp
-
Jalankan
sshd
perintah untuk menguji perubahan, lalu mulai ulang layanan.Penting :Jika langkah ini dilakukan dengan tidak benar, ini dapat merusak konfigurasi SSHD Anda.
sshd -t service sshd restart
Pastikan bahwa izin file pada sistem file sudah benar
Selanjutnya, Anda perlu memverifikasi bahwa izin file pada sistem file sudah benar agar jail SFTP berfungsi dengan benar.
-
Verifikasi bahwa
SFTPROOT
direktori (direktori home yang Anda atur saat Anda menambahkan pengguna SSH) memiliki hakuser:root group:root
izin dengan menjalankan perintah berikut:chown root:root /var/www/vhosts/mywebsite.com/
-
Untuk memverifikasi bahwa login SFTP berfungsi, sambungkan ke SFTP dengan menjalankan perintah berikut, menggantikan
myuser
dengan pengguna yang telah Anda pilih, seperti yang ditunjukkan pada contoh berikut:sftp myuser@localhost myuser@localhost's password: Connected to localhost.
-
Uji daftar direktori dengan menjalankan perintah berikut:
sftp> ls -al
Outputnya harus mirip dengan contoh berikut:
drwxr-xr-x 3 0 0 4096 Sep 28 08:09 . drwxr-xr-x 3 0 0 4096 Sep 28 08:09 .. drwxr-xr-x 2 5001 33 4096 Sep 28 08:52 html -rw-r--r-- 1 0 0 0 Sep 28 08:09 test.php
Catatan :Gunakan
cd
perintah untuk masuk ke direktori HTML (yang terletak di/var/www/vhosts/mywebsite.com/html
karena website 'documentroot' satu tingkat di bawahroot
pengguna SSH SFTP direktori. Anda harus menggunakan pengaturan ini karenawww-data
. Anda pengguna (pengguna server web) memiliki rootuser:group
izin pada filenya. -
Uji kemampuan mengunggah file dengan menjalankan perintah berikut:
sftp> cd html sftp> put test.php Uploading test.php to /html/test.php test.php 100% 12K 20.0KB/s 00:00
-
Uji kemampuan mengunduh file dengan menjalankan perintah berikut:
sftp> get test.php Fetching /test.php to test.php
-
Tampilkan direktori kerja saat ini dengan menjalankan perintah berikut:
sftp> pwd Remote working directory: /html
SFTP hanya melihat file di
/var/www/vhosts/mywebsite.com/
direktori, dan menganggap direktori ini sebagai direktori root ('/') tingkat tertinggi. -
Gunakan langkah-langkah berikut untuk terhubung ke SFTP dan menyiapkan klien SFTP Anda:
- Instal Cyberduck®.
- Buka aplikasi Cyberduck.
- Di bagian atas jendela, klik ikon untuk Buka Koneksi .
- Di menu tarik-turun, pilih SFTP (Protokol Transfer File SSH) .
- Di Server kolom, masukkan alamat Internet Protocol (IP) untuk server.
- Masukkan nama pengguna dan sandi yang Anda gunakan untuk terhubung ke SFTP.
- Klik Hubungkan .
Penting :Selalu uji situs web Anda setelah Anda mengubah izin file.