Saya menjalankan stabil Debian dan saya ingin membangun lingkungan berikut untuk pengguna di grup 'sftponly' saya:
- dipenjara
- dapat mentransfer dengan SFTP
- dapat mentransfer dengan SCP
- tidak dapat masuk secara interaktif dengan SSH
Dari eksperimen dan penelitian saya, tampaknya bait berikut di sshd_config membuat saya 90% di sana:
Match group sftponly
ChrootDirectory /sftp/%u
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
Ini memberi saya SFTP yang dipenjara dan tidak ada SSH, yang bagus. Tetapi juga menonaktifkan SCP, yang kurang ideal karena beberapa klien adalah warisan, proses scripted yang menggunakan SCP daripada SFTP (server yang kami ganti mendukung kedua protokol), dan karena klien tersebut tidak di bawah kendali kami dan mudah dimodifikasi, sepertinya tidak praktis untuk menonaktifkan SCP sama sekali.
Masuk akal bahwa konfigurasi ini akan menonaktifkan SCP, karena koneksi SCP yang masuk menyebabkan sshd memunculkan proses `scp 'melalui shell login pengguna, sebagai pengguna itu. Tampaknya hal yang sama biasanya berlaku untuk SFTP, kalau bukan untuk handler 'internal-sftp' khusus.
Jadi, saya kira pertanyaan saya adalah: apakah ada cara untuk mencapai efek yang sama dengan 'internal-sftp' tetapi untuk SCP, tanpa menggunakan alat pihak ketiga seperti scponly dan rssh? Hal yang benar-benar menyenangkan tentang 'internal-sftp' adalah tidak perlu membuat penjara dengan file dukungan, atau berurusan dengan binari setuid pihak ketiga yang berpotensi dapat dieksploitasi (rssh, khususnya, memiliki sejarah exploit).
Jawaban:
Lihatlah rssh yang merupakan shell alternatif yang memungkinkan akses terbatas ke suatu sistem.
Anda dapat mengkonfigurasi perintah mana yang dapat digunakan pada basis per pengguna atau sistem menggunakan file rssh.conf
Atau Anda dapat menggunakan scponly untuk melakukan apa yang Anda inginkan. Ini bertindak sebagai pembungkus ke ssh suite dan memungkinkan transfer file tetapi tidak akses shell.
sumber
Apakah Anda perlu melakukan ini melalui ssh?
JIKA jadi Anda dapat mencoba mengatur shell mereka ke:
Dan pastikan Anda menambahkan di atas ke / etc / shells
Jika Anda ingin memisahkan diri dari penggunaan akun bawaan, Anda dapat mengatur proftpd
Saya menyiapkan SFTP yang aman menggunakan proftpd. kompilasi proftpd seperti ini:
./configure --prefix = / usr --sysconfdir = / etc --with-modules = mod_sftp
Dapat menggunakan artikel ini di bawah ini, dan beberapa lainnya di google tentang cara mengaturnya:
http://tutorialgenius.blogspot.com/2012/02/linux-installing-and-configuring.html
sumber
Saya khawatir tidak ada yang sama mudah atau dapat diandalkan dengan OpenSSH, karena seperti yang Anda amati ada server SFTP bawaan, tetapi tidak ada server SCP bawaan.
Peringatan: saran dari Vince Berk buruk karena sejumlah alasan:
... dan seterusnya. Pendekatan semacam ini terlalu rapuh.
sumber
Ini adalah alat pihak ketiga, yang tidak dalam cakupan pertanyaan, tapi saya pikir itu layak disebutkan.
Jailkit: https://olivier.sessink.nl/jailkit/
Ini memiliki koleksi alat untuk memudahkan mengatur penjara pengguna - menyalin binari dan perpustakaan ke penjara, dan mengatur logging dari dalam penjara ke OS. Saya sudah menggunakannya membangun chroot sftp / scp / rsync-only.
Ini juga disertai dengan
jk_lsh
(shellkit terbatas jailkit) yang dapat digunakan di luar penjara untuk membatasi perintah yang dapat dijalankan pengguna, jika misalnya Anda ingin mengizinkan scp / sftp / rsync hanya tanpa chroot.sumber
Berikut adalah trik tentang cara melakukan serveride ini. Setel shell pengguna menjadi, katakanlah, bash:
Sekarang buat di homedir mereka '.bash_profile' dengan baris berikut:
Ini menyebabkan sesi non-interaktif (seperti 'scp') berlanjut. Namun, jika mereka mencoba login 'ssh', 'keluar' dipanggil, dan koneksi ditutup.
Pastikan mereka tidak dapat 'sftp' yang baru '.bash_profile' ke direktori home mereka!
Semoga itu bisa membantu!
sumber