GNU/Linux >> Belajar Linux >  >> Linux

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

Jika Anda ingin menyiapkan akun di sistem Anda yang hanya akan digunakan untuk mentransfer file (dan bukan untuk ssh ke sistem), Anda harus menyiapkan SFTP Chroot Jail seperti yang dijelaskan dalam artikel ini.

Dalam skenario sftp biasa (ketika chroot sftp tidak diatur), jika Anda menggunakan sftp, Anda dapat melihat file root seperti yang ditunjukkan di bawah ini.

Jika Anda ingin memberikan akses sftp pada sistem Anda ke vendor luar untuk mentransfer file, Anda sebaiknya tidak menggunakan sftp standar. Sebagai gantinya, Anda harus menyiapkan Chroot SFTP Jail seperti yang dijelaskan di bawah ini.

Lingkungan SFTP Non-Croot

Dalam contoh berikut (lingkungan sftp khas), john dapat sftp ke sistem, dan melihat folder /etc dan mengunduh file dari sana.

# sftp [email protected]
john@thegeekstuff's password:
sftp> pwd
Remote working directory: /home/john

sftp> ls
projects  john.txt documents 

sftp> cd /etc
sftp> ls -l passwd
-rw-r--r--    0 0        0            3750 Dec 29 23:09 passwd

sftp> get passwd
Fetching /etc/passwd to passwd
/etc/passwd     100% 3750     3.7KB/s   00:00

Lingkungan SFTP Chroot

Dalam contoh berikut, john dapat sftp ke sistem, dan hanya melihat direktori yang telah Anda tetapkan untuk john untuk melakukan sftp (yaitu / masuk).

Ketika john mencoba melakukan 'cd /etc', itu akan memberikan pesan kesalahan. Karena SFTP disiapkan di lingkungan chroot, john tidak dapat melihat file lain di sistem.

# sftp [email protected]
john@thegeekstuff's password:
sftp> pwd
Remote working directory: /home/john

sftp> ls
sftp> cd /etc
Couldn't canonicalise: No such file or directory

Sekarang setelah Anda mengetahui apa itu lingkungan SFTP Chroot, mari kita lihat cara menyiapkannya.

1. Buat Grup Baru

Buat grup bernama sftpusers. Hanya pengguna yang termasuk dalam grup ini yang akan secara otomatis dibatasi ke lingkungan chroot SFTP di sistem ini.

# groupadd sftpusers

2. Buat Pengguna (atau Ubah Pengguna yang Ada)

Katakanlah Anda ingin membuat pengguna tamu pengguna yang seharusnya hanya diizinkan untuk melakukan SFTP di lingkungan chroot, dan tidak boleh diizinkan untuk melakukan SSH.

Perintah berikut membuat guestuser, menugaskan pengguna ini ke grup sftpusers, menjadikan /incoming sebagai direktori home, menetapkan /sbin/nologin sebagai shell (yang tidak akan mengizinkan pengguna untuk ssh dan mendapatkan akses shell).

# useradd -g sftpusers -d /incoming -s /sbin/nologin guestuser
# passwd guestuser

Verifikasi bahwa pengguna dibuat dengan benar.

# grep guestuser /etc/passwd
guestuser:x:500:500::/incoming:/sbin/nologin

Jika Anda ingin memodifikasi pengguna yang ada dan menjadikannya pengguna sftp saja dan memasukkannya ke dalam chroot sftp jail, lakukan hal berikut:

# usermod -g sftpusers -d /incoming -s /sbin/nologin john

Sebagai catatan terkait, jika Anda harus mentransfer file dari windows ke Linux, gunakan salah satu klien sftp yang disebutkan dalam daftar 7 klien sftp teratas ini.

3. Siapkan Subsistem sftp-server di sshd_config

Anda harus menginstruksikan sshd untuk menggunakan internal-sftp untuk sftp (bukan sftp-server default).

Ubah file /etc/ssh/sshd_config dan beri komentar pada baris berikut:

#Subsystem       sftp    /usr/libexec/openssh/sftp-server

Selanjutnya, tambahkan baris berikut ke file /etc/ssh/sshd_config

Subsystem       sftp    internal-sftp
# grep sftp /etc/ssh/sshd_config
#Subsystem      sftp    /usr/libexec/openssh/sftp-server
Subsystem       sftp    internal-sftp

4. Tentukan Direktori Chroot untuk Grup

Anda hanya ingin menempatkan pengguna tertentu (yaitu pengguna yang termasuk dalam grup sftpusers) di lingkungan jail chroot. Tambahkan baris berikut di akhir /etc/ssh/sshd_config

# tail /etc/ssh/sshd_config
Match Group sftpusers
        ChrootDirectory /sftp/%u
        ForceCommand internal-sftp

Di atas:

  • Cocokkan sftpusers Grup – Ini menunjukkan bahwa baris berikut hanya akan dicocokkan untuk pengguna yang tergabung dalam sftpusers grup
  • ChrootDirectory /sftp/%u – Ini adalah jalur yang akan digunakan untuk chroot setelah pengguna diautentikasi. %u menunjukkan pengguna. Jadi, untuk john, ini akan menjadi /sftp/john.
  • ForceCommand internal-sftp – Ini memaksa eksekusi internal-sftp dan mengabaikan perintah apa pun yang disebutkan dalam file ~/.ssh/rc.

5. Buat Direktori Beranda sftp

Karena kami telah menetapkan /sftp sebagai ChrootDirectory di atas, buat direktori ini (yang setara dengan direktori /home Anda).

# mkdir /sftp

Sekarang, di bawah /sftp, buat direktori individual untuk pengguna yang merupakan bagian dari grup sftpusers. yaitu pengguna yang hanya akan diizinkan untuk melakukan sftp dan akan berada di lingkungan chroot.

# mkdir /sftp/guestuser

Jadi, /sftp/guestuser sama dengan / untuk guestuser. Ketika guestuser sftp ke sistem, dan menjalankan "cd /", mereka hanya akan melihat konten direktori di bawah "/sftp/guestuser" (dan bukan / sebenarnya dari sistem). Inilah kekuatan chroot.

Jadi, di bawah direktori ini /sftp/guestuser, buat subdirektori apa pun yang Anda ingin dilihat pengguna. Misalnya, buat direktori masuk tempat pengguna dapat menyimpan file mereka.

# mkdir /sftp/guestuser/incoming

6. Siapkan Izin yang Sesuai

Agar chroot berfungsi dengan baik, Anda perlu memastikan izin yang sesuai telah diatur dengan benar pada direktori yang baru saja Anda buat di atas.

Atur kepemilikan ke pengguna, dan kelompokkan ke grup sftpusers seperti yang ditunjukkan di bawah ini.

# chown guestuser:sftpusers /sftp/guestuser/incoming

Izin akan terlihat seperti berikut untuk direktori yang masuk.

# ls -ld /sftp/guestuser/incoming
drwxr-xr-x 2 guestuser sftpusers 4096 Dec 28 23:49 /sftp/guestuser/incoming

Izin akan terlihat seperti berikut untuk direktori /sftp/guestuser

# ls -ld /sftp/guestuser
drwxr-xr-x 3 root root 4096 Dec 28 23:49 /sftp/guestuser

# ls -ld /sftp
drwxr-xr-x 3 root root 4096 Dec 28 23:49 /sftp

7. Mulai ulang sshd dan Uji SFTP Chroot

Mulai ulang sshd:

# service sshd restart

Uji lingkungan sftp chroot. Seperti yang Anda lihat di bawah, ketika gusetuser melakukan sftp, dan melakukan “cd /”, mereka hanya akan melihat direktori yang masuk.

# sftp [email protected]
guestuser@thegeekstuff's password:

sftp> pwd
Remote working directory: /incoming

sftp> cd /
sftp> ls
incoming

Saat guestuser mentransfer file apa pun ke direktori /incoming dari sftp, mereka akan benar-benar berada di bawah /sftp/guestuser/incoming direktori pada sistem.


Linux
  1. Cara mengatur jail chroot Linux

  2. Bagaimana Mengizinkan SFTP dan melarang SSH?

  3. Cara Mengatur SSH Tanpa Kata Sandi di Linux

  1. Cara Setup Rsync dengan SSH di UNIX/Linux (rsync tanpa password)

  2. Cara Mengatur Terowongan SSH Terbalik di Linux

  3. Cara mengatur login SSH tanpa kata sandi di Linux

  1. Cara Mengatur kunci SSH untuk login ssh "tanpa kata sandi" di Linux

  2. Cara mengizinkan ssh dengan kata sandi kosong di Linux

  3. Bagaimana cara Setup Rsync tanpa kata sandi dengan SSH di UNIX / Linux?