Cách đơn giản và dễ dàng để tống giam người dùng


33

Tôi cần một cách đơn giản và dễ dàng để tống giam người dùng trong các thư mục nhà của họ trong Oneiric. Bạn có một cấu hình đơn giản để bỏ tù người dùng, với sự trợ giúp đầy đủ hoặc một số liên kết web tốt không?

Tôi sẽ cung cấp một máy chủ công cộng miễn phí trực tuyến với 10 đến 20 GB dung lượng trống. Tôi không biết có bao nhiêu người dùng. Tôi muốn cung cấp cho họ SSH và SFTP để họ có thể kết nối thông qua FileZilla.


Cập nhật lần 2 nếu người dùng không bị khóa trong các thư mục nhà
One Zero

sau đó tôi tin rằng bạn 1-như được đề cập bởi @Marco, bạn muốn dùng thử ChrootDirectory cho SSH 2- bạn có thể muốn vượt xa các cách làm tiêu chuẩn khi bạn cần mở rộng quy mô này để xử lý "rất nhiều" dung lượng lưu trữ, ... 3- SSH có phải là lựa chọn tốt nhất của bạn không? mọi người có cần SSH trên dịch vụ của bạn không? 4- Chúc may mắn
Ali

1
tôi cũng có kế hoạch khác .... đối với người dùng bình thường, chúng tôi sẽ chỉ cung cấp SFTP với MY SECURE SHELL, điều đó rất dễ dàng 2 xử lý
One Zero

Làm cách nào tôi có thể xóa nhà tù này, ví dụ (nhà / nhà tù)? <br> Và khi tôi thêm một số phần tù, ví dụ jk_init -v -f / home / jail netutils, tôi sẽ xóa cái này như thế nào?

Câu trả lời:


23

Jailkit là một tập hợp các tiện ích có thể giới hạn tài khoản người dùng trong một cây thư mục cụ thể và các lệnh cụ thể. Thiết lập một nhà tù dễ dàng hơn nhiều bằng cách sử dụng các tiện ích Jailkit thực hiện 'bằng tay'. Nhà tù là một cây thư mục mà bạn tạo trong hệ thống tệp của mình; người dùng không thể thấy bất kỳ thư mục hoặc tập tin nào nằm ngoài thư mục jail. Người dùng bị bỏ tù trong thư mục đó và thư mục con.

Tải xuống cài đặt:

http://olivier.sessink.nl/jailkit/index.html#d 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

Thiết lập nhà tù

Bây giờ là lúc để thiết lập thư mục tù. Người dùng bị bỏ tù sẽ xem thư mục này là thư mục gốc của máy chủ. Tôi đã chọn sử dụng / nhà / nhà tù:

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

jk_init có thể được sử dụng để nhanh chóng tạo ra một nhà tù với một số tệp hoặc thư mục cần thiết cho một tác vụ hoặc hồ sơ cụ thể, (nhấp vào nó và đọc chi tiết đầy đủ).

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

Thêm người dùng

Thêm người dùng mới với thư mục chính và bash shell và đặt mật khẩu:

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

Bây giờ là lúc để bỏ tù người dùng này

sử dụng lệnh sau:

jk_jailuser -m -j /home/jail jailtest

/etc/passwdBây giờ bạn nên chứa một cái gì đó như thế này:

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

Kích hoạt bash

Bằng cách sử dụng jk_cp, các thư viện bash được sao chép vào nhà tù:

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

Chỉnh sửa /home/jail/etc/passwd

thay thế dòng này:

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

Với cái này:

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

Bảo trì

Bằng cách sử dụng các jk_updatebản cập nhật trên hệ thống thực có thể được cập nhật trong nhà tù.

Chạy khô sẽ cho thấy những gì đang xảy ra:

jk_update -j /home/jail -d

Không có đối số -d, cập nhật thực được thực hiện. Nhiều hoạt động bảo trì có thể được tìm thấy ở đây.

(Trong trường hợp /home/jail/optbị thiếu, hãy tạo nó bằng mkdir -p /home/jail/opt/ Và chạy jk_update -j /home/jaillại)

Cấp quyền truy cập vào các thư mục khác

Bạn có thể gắn các thư mục đặc biệt mà người dùng tù có thể truy cập ngay bây giờ. Ví dụ:

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

Giúp lấy

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

http://olivier.sessink.nl/jailkit/index.html#intro (một trợ giúp rất tốt)

Cái này cũng

Điều này đã được kiểm tra và xác minh, làm việc đúng cách


+1 rất tốt. khuyên bạn nên đọc các liên kết bạn đã đề cập ở trên trong phần "Trợ giúp đã thực hiện"
cwd

2
Điều này không hoạt động trên Ubuntu 13.10. Khi bạn cố gắng đăng nhập cuối cùng, bạn nhận được thông báo chào mừng ngay sau khi kết nối được đóng lại.
Matt H

Matt H: Hãy chắc chắn làm theo hai bước cuối cùng; sao chép các tệp nhị phân bash và chỉnh sửa tệp / home / jail / etc / passwd.
ONOZ

2
Điều này hoặc không hoạt động nữa hoặc một cái gì đó đã thay đổi kể từ khi hướng dẫn này được đưa lên. Tôi nhận được chính xác các vấn đề tương tự như MattH.
James Heald

Tôi cũng đã có vấn đề đóng kết nối ngay sau tin nhắn chào mừng. Tôi đã thay đổi shell đăng nhập trong tệp passwd chroot từ jk_lsh thành bash khi đọc ở đây linuxquestions.org/questions/linux-software-2/. Đây không phải là giải pháp mà là cách giải quyết!
Attila Fulop

6

Bạn không thể giới hạn họ đến / nhà vì họ cần quyền truy cập vào tệp nhị phân hệ thống và tệp bash và cấu hình trong / etc

IMO phương pháp dễ nhất để bảo vệ người dùng là sử dụng apparmor.

Bạn tạo một liên kết cứng

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

Bạn thêm jailbash vào / etc / shell

Sau đó, bạn gán jailbash cho trình bao người dùng và sau đó viết một hồ sơ apparmor cho jailbash cho phép truy cập tối thiểu.

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

Bạn sẽ phải tự viết một hồ sơ apparmor, nhưng tôi có một hồ sơ mà bạn có khả năng có thể bắt đầu với

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


You can not confine them to /home as they need access to the system binaries and bash and configuration files in /etcKhông có gì ngăn bạn liên kết / sao chép các tập tin mà bạn cảm thấy họ cần.
dùng606723

1
Có, bạn "có thể" làm như user606723 gợi ý, nhưng nó không dễ dàng như vậy, và IMO của tất cả các giải pháp tiềm năng ít thực tế nhất hoặc dễ dàng. Cũng có thể xây dựng một chroot hoặc sử dụng lxc. Bạn sao chép một nhị phân, sau đó các libs. Thường thì bạn sẽ cần xác định libs bằng ldd. Phương pháp này mất rất nhiều công việc để thiết lập. Và sau đó bạn phải giữ cho nhà tù được cập nhật, bạn sẽ phải cập nhật thủ công (sao chép) các nhị phân / libs. Liên kết có thể hoạt động tốt hơn về mặt cập nhật, nhưng bạn vẫn cần thiết lập tất cả chúng. Bằng cách nào đó tôi không nghĩ rằng đây là những gì OP có trong tâm trí. Làm thế nào để giữ chúng trong giới hạn?
Panther

1
Tôi nghĩ rằng toàn bộ vấn đề của câu hỏi là chỉ ra các công cụ để tự động hóa quá trình này ... giống như jailkit, một công cụ mà OP đề cập.
dùng606723

@ bồ đề.zazen. bạn nghĩ gì về điều này .. debootstrap (oneiric) sau đó tạo một container bằng lxc. sử dụng bộ dụng cụ tù> người dùng để chứa>. Những gì tôi đã làm cho đến nay là tôi có debbootstrap tối thiểu một lần sau đó sử dụng jailkit> hoạt động tốt
One Zero

bạn có thể sử dụng LXC cho nhiệm vụ này, hãy cẩn thận rằng sự cô lập đôi khi không hoàn chỉnh với LXC. Miễn là người dùng không có quyền truy cập root trong container, bạn sẽ ổn và bạn có thể muốn đăng ký vào danh sách gửi thư LXC.
Panther

1

Thật khó để đoán mục đích bạn có thể muốn thực hiện. Nếu đó là để từ chối ssh / sftp trong khi cung cấp truy cập bị bỏ qua qua FTP ... dễ dàng:

Thêm vào / etc / shell một shell mới:

sudo -e /etc/shells

Thêm một dòng:

/bin/false

Tiết kiệm. Đối với mỗi người dùng bạn muốn từ chối ssh / sftp, hãy thay đổi trình bao của người dùng:

sudo chsh -s /bin/false userx

Bây giờ userx không thể đăng nhập thông qua ssh / sftp.

Cài đặt vsftpd:

sudo apt-get install vsftpd

Chỉnh sửa tập tin cấu hình:

sudo -e /etc/vsftpd.conf

Và một số thay đổi ....

anonymous_enable=NO
local_enable=YES
chroot_local_user=YES

Tiết kiệm. Khởi động lại vsftpd:

sudo /etc/init.d/vsftpd restart

tôi cũng muốn cung cấp cho họ ssh + sftp (kết nối thông qua filezilla)
One Zero

0

Bạn có thể kiểm tra rbashnhư một vỏ cho người dùng của bạn.

man bash

Tìm kiếm RESTRICTED SHELLphần

Hoặc xem trên trang này http://linux.die.net/man/1/bash


3
Chỉ cần rất cẩn thận với rbash, nó rất dễ dàng để thoát ra và loại được coi là lỗi thời. Xem blog.bodhizazen.net/linux/how-to-restrict-access-with-rbash
Panther

@ bodhi.zazen Ý bạn là rbashgì?
Karlson

vâng, xin lỗi tôi đã sửa nó Có một blog cách đây vài năm, nơi một người nào đó đã phá vỡ nhà tù rbash mà tôi đã thiết lập, và tôi mặc dù nó rất chặt chẽ, nhà tù tối thiểu. Mất ít hơn 5 phút. Không có ai thoát ra khỏi jailbash.
Panther

Bạn có thể cho tôi biết làm thế nào để tôi cấu hình nó được không .... jailbash
One Zero

vâng, man bash giúp, sử dụng các khả năng shell bash restrited đơn giản hơn
c4f4t0r
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.