GNU/Linux >> Belajar Linux >  >> Linux

Cara Mengatur SFTP Chroot Di Linux

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

Linux
  1. Cara mengatur jail chroot Linux

  2. Cara Mengatur SSH Tanpa Kata Sandi di Linux

  3. Cara Setup Chroot SFTP di Linux (Izinkan Hanya SFTP, bukan SSH)

  1. Cara memperbarui symlink Linux

  2. Cara mendapatkan ukuran direktori di Linux

  3. Cara mengatur login SSH tanpa kata sandi di Linux

  1. Cara Mengunggah atau Mengunduh File/Direktori Menggunakan sFTP di Linux

  2. Cara Mengganti Nama Direktori di Linux

  3. Bagaimana Membuat Direktori Bersama Dapat Diakses Oleh Sftp?