เปลี่ยนสิทธิ์สำหรับผู้ใช้ SSH


1

ใน Synology NAS ของฉันฉันได้สร้างผู้ใช้ SSH ซึ่งมีโฮมไดเรกทอรีอยู่ /volume1/USERNAME. อย่างไรก็ตามผู้ใช้นี้สามารถเข้าถึงไดเรกทอรีอื่น ๆ

มีวิธี จำกัด เขาที่จะไม่สามารถเข้าถึงสิ่งใดนอกไดเรกทอรีบ้านของเขาหรือไม่?


ถ้า synology ใช้ openssh คุณสามารถกำหนดได้ ChrootDirectory
Jakuje

ฉันจะทำอย่างไร
Bijan

คำตอบ:


1

ดังนั้นการตั้งค่า chroot สำหรับ SSH ต้องเปิดใช้ SFTP (SSH File Transfer Protocol) ซึ่งเป็นส่วนหนึ่งของ OpenSSH อ่านด้านล่างสำหรับขั้นตอนที่แน่นอน

BTW ถ้าคุณเห็น USERNAME ในตัวพิมพ์ใหญ่ทั้งหมดให้แทนที่ USERNAME ด้วยชื่อผู้ใช้ที่คุณพยายามจะ chroot

เปิดใช้งาน Chrooted SFTP

การเปิดใช้งาน SFTP นั้นง่ายมาก เปิด / etc / ssh / sshd_config ...

vi /etc/ssh/sshd_config

และตรวจสอบให้แน่ใจว่าคุณมีบรรทัดต่อไปนี้:

Subsystem sftp /usr/lib/openssh/sftp-server

จากนั้นเพิ่ม stanza ต่อไปนี้ที่ท้ายไฟล์ (เพิ่ม stanza ดังกล่าวสำหรับผู้ใช้แต่ละคนที่คุณต้องการ chroot):

Match User USERNAME
    ChrootDirectory /home
    AllowTCPForwarding no
    X11Forwarding no
    ForceCommand /usr/lib/openssh/sftp-server

แทนที่จะเพิ่ม stanza สำหรับผู้ใช้แต่ละคนคุณสามารถ chroot กลุ่มเช่น ดังต่อไปนี้:

Match Group users
    ChrootDirectory /home
    AllowTCPForwarding no
    X11Forwarding no
    ForceCommand /usr/lib/openssh/sftp-server

สิ่งนี้จะทำให้สมาชิกกลุ่มผู้ใช้ทั้งหมดไปยังไดเร็กทอรี / home รีสตาร์ท OpenSSH:

/etc/init.d/ssh restart

หากคุณ chroot ผู้ใช้หลายคนไปยังไดเรกทอรีเดียวกัน แต่ไม่ต้องการให้ผู้ใช้เรียกดูโฮมไดเร็กตอรี่ของผู้ใช้รายอื่นคุณสามารถเปลี่ยนการอนุญาตของแต่ละโฮมไดเร็กตอรี่ได้ดังนี้:

chmod 700 /home/USERNAME

หลังจากนั้นคุณสามารถเข้าสู่ระบบด้วยไคลเอนต์ SFTP เช่น FileZilla หรือ WinSCP

เปิดใช้งาน Chrooted SSH

การเปิดใช้ chrooted SSH นั้นซับซ้อนกว่าเล็กน้อยเนื่องจากเราต้องตั้งค่าสภาพแวดล้อม chroot ด้วยโปรแกรม / เครื่องมือทั้งหมด (เช่น / bin / bash, / bin / cp ฯลฯ ) ที่ผู้ใช้ควรจะสามารถใช้ ซึ่งหมายความว่าเราจะต้องคัดลอกไลบรารีทั้งหมดที่โปรแกรมเหล่านี้ต้องการไปยังคุก chroot คุณสามารถทำได้ด้วยตนเองด้วยคำสั่ง cp และคุณสามารถค้นหาว่าห้องสมุดต้องการเครื่องมือใดโดยใช้คำสั่ง ldd เช่น

ldd /bin/bash

เราต้องสร้างอุปกรณ์บางอย่างเช่น / dev / null, / dev / zero, / dev / tty และ / dev / urandom ภายในคุก chroot ด้วยคำสั่ง mknod อย่างไรก็ตามนี่อาจเป็นงานที่น่าเบื่อ โชคดีที่มีสคริปต์ที่สามารถทำได้สำหรับเรา ก่อนอื่นเราต้องติดตั้งข้อกำหนดเบื้องต้นบางอย่าง:

apt-get install sudo debianutils coreutils

จากนั้นเราดาวน์โหลด make_chroot_jail.sh ไปยัง / usr / local / sbin และทำให้สามารถเรียกใช้งานได้สำหรับผู้ใช้รูท:

cd /usr/local/sbin
wget http://www.fuschlberger.net/programs/ssh-scp-sftp-chroot-jail/make_chroot_jail.sh
chmod 700 /usr/local/sbin/make_chroot_jail.sh

ก่อนที่เราจะใช้สคริปต์คุณอาจต้องการเพิ่มบางโปรแกรม (เช่น / usr / bin / vi) ไปยังบรรทัด APPS ของการกระจายของคุณในสคริปต์นั้นเพื่อให้เครื่องมือเหล่านี้เพิ่มเข้าไปในคุก chroot โดยอัตโนมัติ:

vi /usr/local/sbin/make_chroot_jail.sh


elif [ "$DISTRO" = DEBIAN ]; then
  APPS="/bin/bash /bin/cp /usr/bin/dircolors /bin/ls /bin/mkdir /bin/mv /bin/rm /bin/rmdir /bin/sh /bin/su /usr/bin/groups /usr/bin/id /usr/bin/rsync /usr/bin/ssh /usr/bin/scp /sbin/unix_chkpwd /usr/bin/vi"
else

ต่อไปเราจะเพิ่ม symlink / home / home ที่ชี้ไปที่ / home:

cd /home
ln -s . home

ตอนนี้เราสามารถใช้สคริปต์ได้แล้ว การใช้งานมีดังนี้:

make_chroot_jail.sh username [/path/to/chroot-shell [/path/to/chroot]]

chroot-shell เป็นเปลือกพิเศษที่สร้างขึ้นโดยสคริปต์เพื่อ chroot ผู้ใช้ เนื่องจากตอนนี้ OpenSSH รองรับการ chrooting ตามค่าเริ่มต้นเราไม่ต้องการสคริปต์เพื่อสร้างเชลล์พิเศษ เราสามารถใช้ / bin / bash หรือ / bin / sh แทน ไม่สำคัญว่าผู้ใช้จะมีอยู่แล้วหรือไม่ หากเขามีอยู่เขาจะได้รับการอัปเดต ถ้าไม่เขาจะถูกสร้างขึ้น

make_chroot_jail.sh USERNAME /bin/bash /home

สิ่งนี้จะสร้าง / อัปเดตผู้ใช้ USERNAME ด้วยคุก chroot / home หากต้องการอัพเดตไฟล์ / ไลบรารีทั้งหมดใน chroot jail ให้รัน

make_chroot_jail.sh update /bin/bash /home

ตอนนี้เราต้องกำหนดค่า OpenSSH ซึ่งคล้ายกับการกำหนดค่า SFTP เปิด / etc / ssh / sshd_config ...

vi /etc/ssh/sshd_config

และเพิ่ม stanza ต่อไปนี้ที่ท้ายไฟล์ (เพิ่ม stanza ดังกล่าวสำหรับผู้ใช้แต่ละคนที่คุณต้องการ chroot):

Match User USERNAME
    ChrootDirectory /home
    AllowTCPForwarding no
    X11Forwarding no

แทนที่จะเพิ่ม stanza สำหรับผู้ใช้แต่ละคนคุณสามารถ chroot กลุ่มเช่น ดังต่อไปนี้:

Match Group users
    ChrootDirectory /home
    AllowTCPForwarding no
    X11Forwarding no

สิ่งนี้จะ chroot สมาชิกทั้งหมดของกลุ่มผู้ใช้ไปยังไดเรกทอรี / home ความแตกต่างของการกำหนดค่า SFTP คือตอนนี้เราจะต้องไม่ใช้ Line ForceCommand / usr / lib / openssh / sftp-server ใน Match stanzas! สิ่งนี้ทำให้ผู้ใช้ยังคงสามารถใช้ chrooted SFTP (หากคุณมีระบบย่อยบรรทัด sftp / usr / lib / openssh / sftp-server ใน / etc / ssh / sshd_config) แต่ก็ chrooted SSH

รีสตาร์ท OpenSSH

/etc/init.d/ssh restart

หากคุณ chroot ผู้ใช้หลายคนไปยังไดเรกทอรีเดียวกัน แต่ไม่ต้องการให้ผู้ใช้เรียกดูโฮมไดเร็กตอรี่ของผู้ใช้คนอื่นคุณสามารถเปลี่ยนการอนุญาตของแต่ละโฮมไดเร็กตอรี่ได้ดังนี้:

chmod 700 /home/USERNAME

หลังจากนั้นคุณสามารถลงชื่อเข้าใช้ด้วยไคลเอ็นต์ SSH เช่น PuTTY

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