Panduan ini menjelaskan cara mengatur SFTP Chroot di Linux untuk membatasi akses pengguna SSH ke direktori home atau direktori tertentu. Dengan kata lain, kita akan memaksa pengguna ke direktori tertentu dan menyetel shell mereka ke /bin/nologin
atau shell lain yang menolak akses ke login ssh. Setelah SFTP chroot dikonfigurasi, pengguna hanya dapat mengakses direktori home yang ditetapkan, tetapi tidak seluruh sistem file
Mengaktifkan akses SFTP chroot menawarkan manfaat berikut:
- Izinkan pengguna untuk terhubung hanya melalui SFTP, tetapi tidak mengizinkan mereka untuk terhubung melalui SSH.
- Batasi sesi pengguna SSH ke direktori home mereka atau direktori tertentu pilihan Anda.
- Batasi akses SSH ke pengguna tertentu dan tetap izinkan mereka mentransfer file antara sistem lokal dan jarak jauh.
- Tolak akses pengguna ke seluruh sistem file.
Sekarang, mari kita lanjutkan dan setup SFTP Chroot untuk membatasi pengguna SSH ke direktori Home dan/atau direktori lain dengan jail Chroot di Linux.
Panduan ini secara resmi diuji pada distribusi Debian 11 bullseye, Ubuntu 20.04 LTS dan Ubuntu 18.04 LTS. Namun, langkah-langkah yang diberikan di bawah ini harus bekerja pada semua distribusi Linux yang mendukung openSSH .
Setup SFTP Chroot di Linux
Mulai dari versi 4.9, openSSH memiliki fitur yang dikenal sebagai subsistem sftp internal yang hanya mengizinkan akses SFTP, tetapi bukan akses SSH. Jadi, pengguna hanya dapat mengakses data dari server, tetapi tidak dapat mengaksesnya menggunakan SSH.
Buat direktori Chroot
Pertama, Buat direktori chroot menggunakan perintah:
$ sudo mkdir /sftp
Jadikan direktori ini sepenuhnya dimiliki oleh root
pengguna menggunakan perintah:
$ sudo chown root:root /sftp/
Di bawah direktori ini, buat direktori terpisah untuk setiap pengguna, seperti /sftp/user1
, /sftp/user2
, dan /sftp/user3
dan seterusnya.
Untuk tujuan panduan ini, saya akan membuat direktori bernama ostechnix
di bawah /sftp
direktori.
$ sudo mkdir /sftp/ostechnix
Ini adalah direktori tempat pengguna dapat menyimpan data. Juga, pengguna tidak dapat melampaui direktori ini. Ini seperti $HOME their mereka direktori.
Buat grup sftp dan tetapkan pengguna ke grup itu
Sekarang, kita perlu membuat pengguna untuk dapat mengakses direktori chroot SFTP.
Buat grup bernama sftponly
seperti yang ditunjukkan pada perintah berikut:
$ sudo groupadd sftponly
Kemudian, buat pengguna SFTP baru atau tetapkan pengguna yang ada ke "sftponly"
grup seperti yang ditunjukkan di bawah ini.
Biarkan saya membuat pengguna baru, misalnya senthil , dan tetapkan dia ke "sftponly"
kelompok. Dan kemudian, atur direktori home-nya sebagai /sftp/ostechnix
dan shell default sebagai /sbin/nologin
.
Kita dapat melakukannya dengan menggunakan perintah online berikut:
$ sudo useradd -g sftponly -d /ostechnix -s /sbin/nologin senthil
Setel kata sandi untuk pengguna yang baru dibuat menggunakan perintah:
$ sudo passwd senthil
Untuk mengubah pengguna yang ada, gunakan "usermod"
bukannya "useradd"
perintah seperti di bawah ini:
$ sudo usermod -g sftponly -d /ostechnix -s /sbin/nologin senthil
Tetapkan izin yang tepat ke direktori chroot
Anda perlu memberikan izin yang tepat kepada pengguna SFTP untuk mengakses direktori HOME mereka seperti di bawah ini.
$ sudo chown senthil:sftponly /sftp/ostechnix
$ sudo chmod 700 /sftp/ostechnix/
Pengguna SFTP lain tidak dapat mengakses direktori ini.
Demikian pula, tetapkan izin yang sesuai untuk semua pengguna SFTP lainnya juga.
Unduhan yang Disarankan - eBuku Gratis:"Belajar Linux dalam 5 Hari"
Konfigurasi SFTP Chroot
Edit /etc/ssh/sshd_config
berkas:
$ sudo vi /etc/ssh/sshd_config
Temukan dan beri komentar pada baris berikut (yaitu tambahkan tanda bintang # di depannya untuk memberi komentar).
#Subsystem sftp /usr/libexec/openssh/sftp-server
Di beberapa distribusi, misalnya Ubuntu 18.04 LTS , temukan dan beri komentar pada baris berikut:
#Subsystem sftp /usr/lib/openssh/sftp-server
Selanjutnya, tambahkan baris berikut di akhir file:
Subsystem sftp internal-sftp Match group sftponly ChrootDirectory /sftp/ X11Forwarding no AllowTcpForwarding no ForceCommand internal-sftp
Konfigurasikan SFTP chroot
Jika Anda ingin membatasi pengguna ke $HOME
direktori, cukup ganti /sftp
dengan /home
dalam kode di atas. Pastikan Anda telah menentukan jalur direktori sftp yang benar. Tekan ESC dan ketik :wq
untuk menyimpan file dan keluar.
Mulai ulang ssh
layanan untuk memperbarui perubahan.
$ sudo systemctl restart sshd
Sekarang, coba SSH ke sistem ini dari sistem lain di jaringan menggunakan pengguna sftp (yaitu senthil dalam kasus kami).
$ ssh [email protected]1
Anda akan mendapatkan pesan kesalahan berikut.
[email protected]'s password: This service allows sftp connections only. Connection to 192.168.122.181 closed.
Di sini, 192.168.122.181 adalah alamat IP sistem Debian jarak jauh tempat saya mengonfigurasi SFTP.
Anda hanya dapat mengakses sistem jarak jauh menggunakan sftp seperti yang ditunjukkan di bawah ini.
$ sftp [email protected] [email protected]'s password: Connected to 192.168.43.2. sftp>
Lihat? Pengguna "senthil" dapat terhubung melalui sftp, tetapi tidak melalui ssh.
Untuk mengetahui direktori kerja saat ini, gunakan 'pwd'
perintah:
sftp> pwd Remote working directory: /ostechnix sftp>
Siapkan SFTP chroot di Linux
Perintah SFTP Dasar
Kita dapat terhubung menggunakan port alternatif menggunakan -p
bendera.
$ sftp -P <port_number> [email protected]_host
Untuk mentransfer file jarak jauh ke sistem lokal, lakukan:
sftp> get /path/remote_file
Kita dapat mentransfer file lokal ke sistem jarak jauh menggunakan perintah:
sftp> put /path/local_file
Untuk mentransfer folder jarak jauh ke sistem lokal secara rekursif:
sftp> get -R /path/remote_folder
Untuk menampilkan daftar file pada mesin lokal:
sftp> lls
Untuk menampilkan daftar file pada mesin jarak jauh:
sftp> ls
Untuk detail lebih lanjut tentang penggunaan sftp, lihat halaman manual.
$ man sftp
Kesimpulan
Dalam panduan ini, kita telah membahas cara mengkonfigurasi dan mengatur SFTP chroot di sistem operasi Linux seperti Debian dan Ubuntu.
Bacaan yang disarankan:
- Cara Mengubah Port Default FTP Menjadi Port Khusus
- Instal server VSFTPD di Ubuntu
- Server VSFTPD aman dengan enkripsi TLS/SSL di Ubuntu
- Siapkan Server FTP langkah demi langkah di CentOS
- FTP_Manager :Skrip Sederhana Untuk Menginstal Dan Mengelola Server FTP di CentOS