Cara sederhana & mudah untuk memenjarakan pengguna

33

Saya perlu cara sederhana dan mudah untuk memenjarakan pengguna di direktori rumah mereka di Oneiric. Apakah Anda memiliki konfigurasi sederhana untuk pengguna pemenjaraan, dengan bantuan penuh, atau beberapa tautan web yang bagus?

Saya akan menawarkan server publik online gratis dengan ruang kosong 10 hingga 20 GB. Saya tidak tahu berapa banyak pengguna. Saya ingin memberi mereka SSH dan SFTP sehingga mereka dapat terhubung melalui FileZilla.

Satu Nol
sumber
Pembaruan ke-2 jika pengguna tidak dikunci di direktori home
One Zero
maka saya percaya Anda 1-seperti yang disebutkan oleh @Marco Anda ingin mencoba ChrootDirectory untuk SSH 2- Anda mungkin ingin melampaui cara standar dalam melakukan sesuatu karena Anda perlu skala ini untuk menangani "banyak" penyimpanan, ... 3- Apakah SSH pilihan terbaik Anda? apakah orang membutuhkan SSH pada layanan Anda? 4- Semoga beruntung
Ali
1
saya punya rencana lain juga .... untuk pengguna normal kami hanya akan menawarkan SFTP dengan MY SECURE SHELL, itu sangat mudah menangani 2
One Zero
Bagaimana saya bisa menghapus penjara ini misalnya (rumah / penjara)? <br> Dan ketika saya menambahkan beberapa bagian penjara misalnya jk_init -v -f / home / jail netutils, bagaimana saya menghapus ini?

Jawaban:

23

Jailkit adalah seperangkat utilitas yang dapat membatasi akun pengguna untuk pohon direktori tertentu dan perintah tertentu. Menyiapkan penjara jauh lebih mudah menggunakan utilitas Jailkit yang melakukannya 'dengan tangan'. Penjara adalah pohon direktori yang Anda buat dalam sistem file Anda; pengguna tidak dapat melihat direktori atau file apa pun yang ada di luar direktori jail. Pengguna dipenjara di direktori itu dan subdirektori.

Unduh & Pasang:

http://olivier.sessink.nl/jailkit/index.html#download

VERSION=2.20 # from November 2018
cd /tmp
wget https://olivier.sessink.nl/jailkit/jailkit-$VERSION.tar.gz
tar -zxvf jailkit-$VERSION.tar.gz
cd jailkit-$VERSION/
./configure
make
su -
make install

Menyiapkan penjara

Sekarang saatnya mengatur direktori jail. Pengguna yang dipenjara akan melihat direktori ini sebagai direktori root dari server. Saya memilih untuk menggunakan / home / jail:

mkdir /home/jail
chown root:root /home/jail

jk_init dapat digunakan untuk dengan cepat membuat penjara dengan beberapa file atau direktori yang diperlukan untuk tugas atau profil tertentu, (klik di atasnya & baca detail lengkap).

jk_init -v /home/jail basicshell
jk_init -v /home/jail netutils
jk_init -v /home/jail ssh
jk_init -v /home/jail jk_lsh

Tambahkan pengguna

Tambahkan pengguna baru dengan direktori home dan bash shell, dan atur kata sandi:

useradd -d /home/jailtest -m jailtest -s /bin/bash
passwd jailtest

Sekarang saatnya memenjara pengguna ini

gunakan perintah berikut:

jk_jailuser -m -j /home/jail jailtest

Anda /etc/passwdharus mengandung sesuatu seperti ini sekarang:

jailtest:x:1001:1001::/home/jail/./home/jailtest:/usr/sbin/jk_chrootsh

Aktifkan bash

Dengan menggunakan jk_cp perpustakaan bash disalin ke penjara:

jk_cp -v -f /home/jail /bin/bash

Edit /home/jail/etc/passwd

ganti baris ini:

jailtest:x:1001:1001::test:/usr/sbin/jk_lsh

dengan ini:

jailtest:x:1001:1001::/home/jailtest:/bin/bash

Pemeliharaan

Dengan menggunakan jk_updatepembaruan pada sistem nyata dapat diperbarui di penjara.

Dry-run akan menunjukkan apa yang terjadi:

jk_update -j /home/jail -d

Tanpa argumen -d, pembaruan yang sebenarnya dilakukan. Lebih banyak operasi pemeliharaan dapat ditemukan di sini.

(Jika /home/jail/optada yang hilang, buat dengan mkdir -p /home/jail/opt/ Dan jalankan jk_update -j /home/jaillagi)

Berikan akses ke direktori lain

Anda dapat memasang folder khusus, yang dapat diakses pengguna penjara sekarang. Misalnya:

mount --bind /media/$USER/Data/ /home/jail/home/jailtest/test/

Bantuan Diambil

http://olivier.sessink.nl/jailkit/howtos_chroot_shell.html

http://olivier.sessink.nl/jailkit/index.html#intro (bantuan yang sangat baik)

Yang ini juga

Ini sudah diperiksa & diverifikasi, Bekerja dengan Benar

Satu Nol
sumber
+1 sangat bagus. sangat merekomendasikan membaca tautan yang Anda sebutkan di atas di bagian "Bantuan Diambil" juga
cwd
2
Ini tidak berfungsi di Ubuntu 13.10. Ketika Anda mencoba masuk akhirnya Anda mendapatkan pesan selamat datang segera diikuti oleh koneksi ditutup.
Matt H
Matt H: Pastikan untuk mengikuti dua langkah terakhir; menyalin biner bash dan mengedit file / home / jail / etc / passwd.
ONOZ
2
Ini tidak berfungsi lagi atau ada yang berubah sejak tutorial ini dibuat. Saya mendapatkan masalah yang persis sama dengan MattH.
James Heald
Saya juga mengalami masalah koneksi ditutup segera setelah pesan selamat datang. Saya mengubah shell login dalam file passwd chroot dari jk_lsh menjadi bash seperti yang dibaca di sini linuxquestions.org/questions/linux-software-2/… Ini bukan solusi, tetapi sebuah solusi!
Attila Fulop
6

Anda tidak dapat membatasi mereka ke / home karena mereka membutuhkan akses ke sistem binari dan file konfigurasi dan bash di / etc

IMO metode paling mudah untuk mengamankan pengguna adalah menggunakan apparmor.

Anda membuat tautan keras

ln /bin/bash /usr/local/bin/jailbash

Anda menambahkan jailbash ke / etc / shells

Anda kemudian menetapkan jailbash ke shell pengguna, dan kemudian menulis profil apparmor untuk jailbash yang memungkinkan akses minimal.

sudo chsh -s /usr/local/bin/jailbash user_to_confine

Anda harus menulis sendiri profil apparmor, tetapi saya memiliki profil yang bisa Anda mulai

http://bodhizazen.com/aa-profiles/bodhizazen/ubuntu-10.04/usr.local.bin.jailbash

Harimau kumbang
sumber
You can not confine them to /home as they need access to the system binaries and bash and configuration files in /etcTidak ada yang menghentikan Anda dari menautkan / menyalin file yang Anda rasa mereka butuhkan.
user606723
1
Ya, Anda "bisa" melakukan seperti yang disarankan oleh user606723, tetapi itu tidak mudah, dan IMO dari semua solusi potensial yang paling tidak praktis atau mudah. Mungkin juga membangun chroot atau menggunakan lxc. Anda menyalin biner, lalu lib. Seringkali Anda perlu mengidentifikasi lib secara manual dengan ldd. Metode ini membutuhkan banyak pekerjaan untuk disiapkan. Dan kemudian Anda harus menjaga penjara tetap mutakhir, Anda harus memperbarui (menyalin) binari / lib secara manual. Tautan mungkin berfungsi lebih baik dalam hal pembaruan, tetapi Anda masih perlu mengatur semuanya. Entah bagaimana saya tidak berpikir inilah yang ada dalam pikiran OP. Lalu bagaimana agar mereka tetap terkurung?
Panther
1
Saya pikir inti dari pertanyaan adalah untuk menunjukkan alat untuk mengotomatiskan proses ini ... seperti jailkit, alat OP menyebutkan.
user606723
@ bodhi.zazen. apa yang kamu pikirkan tentang ini .. debootstrap (oneiric) kemudian buat wadah menggunakan lxc. menggunakan kit penjara> pengguna ke wadah>. apa yang saya lakukan sejauh ini adalah saya memiliki debbootstrap oneiric minimum kemudian menggunakan jailkit> berfungsi dengan baik
One Zero
Anda dapat menggunakan LXC untuk tugas ini, berhati-hatilah karena isolasi terkadang tidak lengkap dengan LXC. Selama pengguna tidak memiliki akses root di wadah Anda harus baik-baik saja dan Anda mungkin ingin berlangganan milis LXC.
Panther
1

Sulit menebak tujuan apa yang ingin Anda capai. Jika menolak ssh / sftp sambil memberikan akses yang dipenjara melalui FTP ... mudah:

Tambahkan ke / etc / shells a shell baru:

sudo -e /etc/shells

Tambahkan satu baris:

/bin/false

Menyimpan. Untuk setiap pengguna yang Anda ingin tolak ssh / sftp, ubah shell pengguna:

sudo chsh -s /bin/false userx

Sekarang userx tidak bisa masuk melalui ssh / sftp.

Instal vsftpd:

sudo apt-get install vsftpd

Edit file konfigurasi:

sudo -e /etc/vsftpd.conf

Dan beberapa perubahan ....

anonymous_enable=NO
local_enable=YES
chroot_local_user=YES

Menyimpan. Mulai ulang vsftpd:

sudo /etc/init.d/vsftpd restart

sumber
Saya juga ingin memberi mereka ssh + sftp (terhubung melalui filezilla)
One Zero
0

Anda dapat memeriksa rbashsebagai shell untuk pengguna Anda.

man bash

Cari RESTRICTED SHELLbagian

Atau lihat halaman ini http://linux.die.net/man/1/bash

Karlson
sumber
3
Hanya sangat berhati-hati dengan rbash, sangat mudah untuk keluar dan dianggap ketinggalan jaman. Lihat blog.bodhizazen.net/linux/how-to-restrict-access-with-rbash
Panther
@ bodhi.zazen Maksud Anda rbash?
Karlson
ya, maaf saya memperbaikinya. Ada sebuah blog beberapa tahun yang lalu di mana seseorang merusak penjara rbash yang saya buat, dan saya pikir itu ketat, penjara minimal. Butuh waktu kurang dari 5 menit. Tidak ada yang keluar dari jailbash.
Panther
bisakah kau katakan padaku bagaimana cara mengkonfigurasinya .... jailbash
One Zero
ya, man bash membantu, menggunakan kemampuan shell bash yang direstrukturisasi lebih sederhana
c4f4t0r