Apakah ada cara sederhana untuk membatasi pengguna SCP / SFTP ke direktori? Semua metode yang saya temui mengharuskan saya untuk mengatur chroot jail dengan menyalin binari, tetapi saya pikir itu tidak perlu.
36
SSH Mendukung chroot pengguna SFTP secara asli. Anda hanya perlu memasok
Direktori Chroot
Di file konfigurasi sshd Anda, dan restart sshd.
Jika Anda hanya melakukan sftp, maka Anda tidak perlu melakukan apa-apa lagi. Sayangnya, ini tidak berfungsi untuk scp. Untuk shell interaktif, Anda perlu menyalin binari, dan / dev node ke chroot.
Contoh konfigurasi, hanya untuk satu pengguna, testuser:
Match User testuser
ChrootDirectory /home/testuser
ForceCommand internal-sftp
Beberapa hal yang perlu diperhatikan, dari halaman manual sshd_config:
Semua komponen pathname harus direktori milik root yang tidak dapat ditulis oleh pengguna atau grup lain. Setelah chroot, sshd (8) mengubah direktori kerja ke direktori home pengguna.
Cari ChrootDirectory di man sshd_config untuk informasi lebih lanjut.
Subsystem sftp /usr/lib/openssh/sftp-server
jalur keSubsystem sftp internal-sftp -f AUTH -l VERBOSE
Match
bagian lain .Chroot adalah metode yang cukup sederhana. Karena sistem operasi sudah memiliki fitur keamanan ini, penulis daemon cenderung tidak berusaha untuk mengimplementasikannya kembali.
Rssh dilengkapi dengan panduan tentang cara mengatur chroot jail. Ada dalam
CHROOT
file di distribusi sumber. Singkatnya, Anda harus memiliki:/usr/bin/scp
,/usr/libexec/openssh/sftp-server
,/usr/bin/rssh_chroot_helper
{/usr,}/lib/lib*.so.[0-9]
) yang mereka gunakan, juga disalin/etc/passwd
(sangat mungkin bukan salinan tetapi berasal dari master)/dev/null
,,/dev/tty
dan juga/dev/log
soket untuk logging (dan Anda perlu memberi tahu daemon syslog Anda untuk mendengarkannya)Kiat tambahan yang tidak ada dalam dokumentasi rssh: Jika Anda memerlukan beberapa file agar dapat diakses di chroot jail, Anda dapat menggunakan bindf atau Linux
mount --bind
untuk membuat hierarki direktori tambahan dari luar jail.bindfs
memungkinkan direktori remounted memiliki izin yang lebih ketat, misalnya hanya baca. (mount --bind
tidak kecuali Anda menerapkan patch kernel; Debian telah menyertakan patch ini sejak di east lenny tetapi sebagian besar distribusi lainnya belum pada 2011.)sumber
Anda mungkin ingin melihat scponly (atau lebih baru-baru ini, rssh ); pada dasarnya shell login yang hanya dapat digunakan untuk meluncurkan subsistem scp atau sftpd. Dalam
scponlyc
varian itu melakukan chroot sebelum mengaktifkan subsistem yang dimaksud.sumber