วิธีที่ง่ายและสะดวกในการจำผู้ใช้


33

ฉันต้องการวิธีที่ง่ายและสะดวกในการจำคุกผู้ใช้ในโฮมไดเร็คทอรี่ของ Oneiric คุณมีการกำหนดค่าอย่างง่ายสำหรับการจำผู้ใช้ด้วยความช่วยเหลืออย่างเต็มที่หรือมีลิงค์จากเว็บที่ดีหรือไม่?

ฉันจะเสนอเซิร์ฟเวอร์สาธารณะออนไลน์ฟรีที่มีพื้นที่ว่าง 10 ถึง 20 GB ฉันไม่รู้ว่ามีผู้ใช้กี่คน ฉันต้องการให้ SSH และ SFTP แก่พวกเขาเพื่อให้พวกเขาสามารถเชื่อมต่อผ่าน FileZilla


อัปเดตครั้งที่สองหากผู้ใช้ไม่ได้ล็อคในโฮมไดเรกทอรี
One Zero

ถ้าอย่างนั้นฉันเชื่อว่าคุณ 1 คนดังที่ @Marco คุณต้องการลอง ChrootDirectory สำหรับ SSH 2- คุณอาจต้องการมากกว่าวิธีมาตรฐานในการทำสิ่งต่าง ๆ ตามที่คุณต้องการปรับขนาดนี้เพื่อจัดการพื้นที่จัดเก็บ "มาก" ... 3- SSH เป็นทางเลือกที่ดีที่สุดของคุณหรือไม่? คนต้องการ SSH ในบริการของคุณ? 4- ขอให้โชคดี
อาลี

1
ฉันมีแผนอื่นเช่นกัน .... สำหรับผู้ใช้ทั่วไปเราจะเสนอเฉพาะ SFTP กับ MY SECURE SHELL ซึ่งเป็น 2 มือจับง่ายมาก
One Zero

ฉันจะลบคุกนี้ได้อย่างไร (home / คุก) <br> <br> และเมื่อฉันเพิ่มหมวดคุกเช่น jk_init -v -f / home / jail netutils ฉันจะลบมันได้อย่างไร

คำตอบ:


23

Jailkit เป็นชุดของยูทิลิตี้ที่สามารถ จำกัด บัญชีผู้ใช้กับแผนผังไดเรกทอรีเฉพาะและคำสั่งเฉพาะ การตั้งค่าคุกทำได้ง่ายกว่ามากโดยใช้โปรแกรมอรรถประโยชน์ของ Jailkit ที่ทำเช่นนั้นด้วยมือ คุกคือแผนผังไดเรกทอรีที่คุณสร้างภายในระบบไฟล์ของคุณ ผู้ใช้ไม่สามารถเห็นไดเร็กทอรีหรือไฟล์ใด ๆ ที่อยู่นอกไดเร็กทอรีคุก ผู้ใช้ถูกจำคุกในไดเรกทอรีนั้นและไดเรกทอรีย่อย

ดาวน์โหลดและติดตั้ง:

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

การจัดตั้งคุก

ตอนนี้ถึงเวลาตั้งค่าไดเรกทอรีจำคุกแล้ว ผู้ใช้ที่ถูกคุมขังจะเห็นไดเรกทอรีนี้เป็นไดเรกทอรีรูทของเซิร์ฟเวอร์ ฉันเลือกที่จะใช้ / home / คุก:

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

jk_init สามารถใช้ในการสร้างคุกอย่างรวดเร็วด้วยไฟล์หรือไดเรกทอรีที่จำเป็นสำหรับงานหรือโปรไฟล์เฉพาะ (คลิกที่มัน & อ่านรายละเอียดแบบเต็ม)

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

เพิ่มผู้ใช้

เพิ่มผู้ใช้ใหม่ด้วยโฮมไดเรกทอรีและ bash shell และตั้งรหัสผ่าน:

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

ตอนนี้ได้เวลาเข้าคุกผู้ใช้รายนี้แล้ว

ใช้คำสั่งต่อไปนี้:

jk_jailuser -m -j /home/jail jailtest

คุณ/etc/passwdควรมีอะไรเช่นนี้ตอนนี้:

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

เปิดใช้งาน bash

โดยใช้jk_cpไลบรารี bash จะถูกคัดลอกไปยังคุก:

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

แก้ไข /home/jail/etc/passwd

แทนที่บรรทัดนี้:

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

ด้วยสิ่งนี้:

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

ซ่อมบำรุง

โดยใช้jk_updateการอัปเดตในระบบจริงสามารถอัปเดตในคุก

การซักแห้งจะแสดงสิ่งที่เกิดขึ้น:

jk_update -j /home/jail -d

หากไม่มีอาร์กิวเมนต์ -d การอัพเดตจริงจะถูกดำเนินการ สามารถดำเนินการบำรุงรักษาเพิ่มเติมได้ที่นี่

(ในกรณีที่/home/jail/optหายไปสร้างด้วยmkdir -p /home/jail/opt/ และเรียกใช้jk_update -j /home/jailอีกครั้ง)

ให้การเข้าถึงไดเรกทอรีอื่น ๆ

คุณสามารถเมานต์โฟลเดอร์พิเศษเพื่อให้ผู้ใช้คุกสามารถเข้าใช้งานได้ทันที เช่น:

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

ช่วยถ่าย

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

http://olivier.sessink.nl/jailkit/index.html#intro (ความช่วยเหลือที่ดีมาก)

อันนี้ก็เช่นกัน

สิ่งนี้ได้รับการตรวจสอบและตรวจสอบแล้วว่าทำงานได้อย่างถูกต้อง


+1 ดีมาก ขอแนะนำให้อ่านลิงก์ที่คุณกล่าวถึงข้างต้นในส่วน "ช่วยดำเนินการ" ด้วย
cwd

2
สิ่งนี้ใช้ไม่ได้กับ Ubuntu 13.10 เมื่อคุณพยายามที่จะเข้าสู่ระบบในที่สุดคุณจะได้รับข้อความต้อนรับตามด้วยการเชื่อมต่อปิดทันที
Matt H

Matt H: ตรวจสอบให้แน่ใจว่าได้ทำตามสองขั้นตอนสุดท้าย การคัดลอก bash ไบนารีและแก้ไขไฟล์ / home / jail / etc / passwd
ONOZ

2
สิ่งนี้อาจใช้งานไม่ได้อีกต่อไปหรือมีอะไรเปลี่ยนแปลงไปตั้งแต่การสอนนี้ ฉันได้รับปัญหาเช่นเดียวกับ MattH
James Heald

ฉันยังมีปัญหาการเชื่อมต่อปิดทันทีหลังจากข้อความต้อนรับ ฉันเปลี่ยนเชลล์ล็อกอินภายในไฟล์ chroot passwd จาก jk_lsh เป็น bash อ่านที่นี่linuxquestions.org/questions/linux-software-2/ ......มันไม่ใช่ทางออก แต่เป็นวิธีแก้ปัญหา!
Attila Fulop

6

คุณไม่สามารถ จำกัด ให้ / home ได้เนื่องจากต้องการการเข้าถึงไบนารีระบบและไฟล์ทุบตีและไฟล์กำหนดค่าใน / etc

IMO วิธีที่ง่ายที่สุดในการรักษาความปลอดภัยของผู้ใช้คือการใช้ apparmor

คุณทำลิงค์ยาก

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

คุณเพิ่ม jailbash ใน / etc / shells

จากนั้นคุณกำหนด jailbash ให้กับเชลล์ผู้ใช้แล้วเขียนโปรไฟล์ apparmor สำหรับ jailbash ที่อนุญาตให้เข้าถึงได้น้อยที่สุด

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

คุณจะต้องเขียนโปรไฟล์ apparmor ด้วยตัวเอง แต่ฉันมีโปรไฟล์ที่คุณสามารถเริ่มต้นได้

http://bodhizazen.com/aa-profiles/bodhizazen/ubuntu-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 /etcไม่มีอะไรหยุดคุณจากการเชื่อมโยง / คัดลอกไฟล์ที่คุณรู้สึกว่าพวกเขาต้องการ
606723

1
ใช่คุณ "สามารถ" ทำตามที่ผู้ใช้แนะนำ 606723 แต่มันไม่ง่ายนักและ IMO ของวิธีแก้ปัญหาที่เป็นไปได้ทั้งหมดจะใช้งานได้จริงหรือง่ายที่สุด อาจสร้าง chroot หรือใช้ lxc เช่นกัน คุณคัดลอกไบนารีแล้ว libs บ่อยครั้งที่คุณจะต้องระบุ libs ด้วย ldd ด้วยตนเอง วิธีนี้ใช้เวลาหลายตันในการตั้งค่า และจากนั้นคุณต้องรักษาความทันสมัยอยู่เสมอคุณจะต้องอัพเดท (คัดลอก) ไบนารี / libs ด้วยตนเอง ลิงก์อาจทำงานได้ดีขึ้นในแง่ของการอัปเดต แต่คุณยังต้องตั้งค่าทั้งหมด อย่างใดฉันไม่คิดว่านี่เป็นสิ่งที่ OP มีอยู่ในใจ แล้วจะทำให้พวกเขาถูกคุมขังได้อย่างไร?
Panther

1
ฉันคิดว่าประเด็นทั้งหมดของคำถามคือชี้ให้เห็นเครื่องมือในการทำให้กระบวนการนี้เป็นไปโดยอัตโนมัติ ... เช่นjailkitเครื่องมือที่กล่าวถึง OP
606723

@ bodhi.zazen สิ่งที่คุณคิดเกี่ยวกับเรื่องนี้ .. debootstrap (oneiric) จากนั้นทำภาชนะโดยใช้ lxc การใช้ชุดคุก> ผู้ใช้กับคอนเทนเนอร์> สิ่งที่ฉันทำจนถึงตอนนี้คือฉันมี debbootstrap ขั้นต่ำหนึ่งขั้นตอนแล้วใช้ jailkit> ทำงานได้ดี
One Zero

คุณสามารถใช้ LXC สำหรับงานนี้ระวังว่าการแยกบางครั้งไม่สมบูรณ์ด้วย LXC ตราบใดที่ผู้ใช้ไม่มีสิทธิ์เข้าถึงรูทในคอนเทนเนอร์คุณควรตกลงและคุณอาจต้องการสมัครสมาชิกรายการส่งจดหมายของ LXC
Panther

1

เป็นการยากที่จะเดาว่าคุณต้องการบรรลุเป้าหมายอะไร หากเป็นการปฏิเสธ ssh / sftp ในขณะที่ให้การเข้าถึงที่ถูกคุมขังผ่านทาง FTP ... ง่าย:

เพิ่มไปยัง / etc / shells เชลล์ใหม่:

sudo -e /etc/shells

เพิ่มหนึ่งบรรทัด:

/bin/false

บันทึก สำหรับผู้ใช้แต่ละคนที่คุณต้องการปฏิเสธ ssh / sftp เปลี่ยนเชลล์ของผู้ใช้:

sudo chsh -s /bin/false userx

ตอนนี้ userx ไม่สามารถเข้าสู่ระบบผ่านทาง ssh / sftp

ติดตั้ง vsftpd:

sudo apt-get install vsftpd

แก้ไขไฟล์ปรับแต่ง:

sudo -e /etc/vsftpd.conf

และการเปลี่ยนแปลงบางอย่าง ....

anonymous_enable=NO
local_enable=YES
chroot_local_user=YES

บันทึก รีสตาร์ท vsftpd:

sudo /etc/init.d/vsftpd restart

ดีฉันต้องการให้พวกเขา ssh + sftp (เชื่อมต่อผ่าน filezilla)
One Zero

0

คุณสามารถตรวจสอบrbashเป็นเปลือกสำหรับผู้ใช้ของคุณ

man bash

ค้นหาRESTRICTED SHELLหัวข้อ

หรือดูที่หน้านี้http://linux.die.net/man/1/bash


3
เพียงระวังให้มากกับ rbash มันง่ายมากที่จะแยกตัวออกและพิจารณาว่าล้าสมัย ดูblog.bodhizazen.net/linux/how-to-restrict-access-with-rbash
Panther

@ bodhi.zazen คุณหมายถึงrbashอะไร
Karlson

ใช่ฉันขอโทษที่แก้ไข มีบล็อกเมื่อหลายปีก่อนที่มีคนทำลายคุก rbash ของเราที่ฉันตั้งขึ้นและฉันถึงแม้ว่ามันจะแน่นและคุกน้อยที่สุด ใช้เวลาน้อยกว่า 5 นาที ไม่มีใครแหกคุกเลย
Panther

โปรดบอกฉันด้วยว่าฉันจะกำหนดค่าได้อย่างไร .... jailbash
One Zero

ใช่ man bash ช่วยด้วยการใช้ความสามารถของเชลล์ที่ใช้ restrited shell ได้ง่ายขึ้น
c4f4t0r
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.