การสร้างผู้ใช้ SFTP และการเข้าคุกเพื่อ chroot บน CentOS - ข้อผิดพลาดการตรวจสอบผู้ใช้


18

ฉันได้รับ CentO ที่วางจำหน่าย 6.4 ด้วย Digital Ocean และต้องการสร้างผู้ใช้ SFTP ให้สำเร็จและขังพวกเขาไว้ในไดเรกทอรีบ้าน chroot ของผู้ใช้ แต่ฉันกลัวว่าฉันจะทำสิ่งนี้

ฉันลองหลายสิ่งหลายอย่างมากเกินกว่าที่จะแสดงรายการที่นี่จริง ๆ เพราะส่วนใหญ่อาจไม่ถูกต้องหรือไม่สมเหตุสมผล แต่สิ่งที่ฉันรู้สึกควรเป็นกระบวนการที่ถูกต้องและสิ่งที่ฉันได้ลองคือ: -

สร้างกลุ่มสำหรับsftp: -

groupadd sftp

สร้างผู้ใช้และตั้งค่าโฮมไดเรกทอรีของพวกเขา: -

useradd -d /var/www/vhosts/domain.com dummyuser

ตั้งรหัสผ่านสำหรับผู้ใช้: -

passwd dummyuser

เปลี่ยนกลุ่มผู้ใช้เป็น 'sftp': -

usermod -g sftp dummyuser

ตั้งค่าเชลล์ของผู้ใช้เป็น/bin/false: -

usermod -s /bin/false dummyuser

แก้ไขระบบย่อยในsshd_config( /etc/ssh/): -

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

เพิ่มสิ่งต่อไปนี้ที่ด้านล่างของsshd_configไฟล์: -

Match group sftp
    X11Forwarding no
    ChrootDirectory %h
    AllowTcpForwarding no
    ForceCommand internal-sftp

ฉันแน่ใจว่าไดเรกทอรีต่อไปนี้ทั้งหมดroot:root: -

/var
/var/www
/var/www/vhosts
/var/www/vhosts/domain.com

หากฉันพยายามเข้าสู่เซิร์ฟเวอร์ผ่าน SFTP กับผู้ใช้dummyuser(ใน WinSCP) ฉันจะได้รับสิ่งต่อไปนี้: -

Authentication log (see session log for details):
Using username "dummyuser".

Authentication failed.

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

แก้ไข

ลืมพูดถึงฉันก็เริ่มต้นใหม่sshdด้วย: -

service sshd restart

เมื่อข้อผิดพลาดที่ผลิตใน WinSCP, หน้าช่วยเหลือของพวกเขาเกี่ยวกับเรื่องนี้เป็นที่นี่

บันทึกผลลัพธ์

/var/log/secure

server_nameฉันแทนที่ชื่อเซิร์ฟเวอร์จริงกับ

 Apr 28 14:20:56 server_name sshd[9944]: Accepted password for dummyuser from 80.194.255.4 port 44402 ssh2
 Apr 28 14:20:56 server_name sshd[9944]: pam_unix(sshd:session): session opened for user dummyuser by (uid=0)
 Apr 28 14:20:56 server_name sshd[9946]: fatal: bad ownership or modes for chroot directory component "/var/www/vhosts/"
 Apr 28 14:20:56 server_name sshd[9944]: pam_unix(sshd:session): session closed for user dummyuser

คุณเริ่มต้นใหม่sshdหรือไม่ มีอะไรในไฟล์บันทึกบนเซิร์ฟเวอร์?
ขนม

ใช่ฉันขอโทษฉันลืมที่จะเพิ่มที่ท้ายคำถามของฉัน (จะรวมตอนนี้) ไฟล์บันทึกใด (และสถานที่) ที่ฉันควรจะดูเพราะฉันไม่พบไฟล์ 'session log' จนถึงตอนนี้ ขอบคุณ
zigojacko

/var/log/secureคุณจะต้องการที่จะดูที่
ขนม

ดีมากขอบคุณ - สิ่งนี้ช่วยได้ (อัปเดตคำถามด้วยรายการบันทึก)
zigojacko

ร้ายแรง: ความเป็นเจ้าของที่ไม่ดีหรือโหมดสำหรับองค์ประกอบไดเรกทอรี chroot "/ var / www / vhosts /" บางสิ่งบางอย่างเช่นนี้ผมสงสัยว่า แต่เป็นvhosts root:root
zigojacko

คำตอบ:


14

เป็นข้อผิดพลาดทั่วไป:
โฟลเดอร์ทั้งหมดจนถึง chroot home ต้องเป็นเจ้าของและสามารถเขียนได้โดยrootผู้ใช้เท่านั้น
โฟลเดอร์ไม่สามารถเขียนเป็นกลุ่มได้แม้ว่าจะเป็นกลุ่มrootก็ตาม


4
ฉันเพิ่งเรียนรู้เคล็ดลับในการตรวจสอบสิ่งนี้อย่างสะดวกสบาย:namei -l /var/www/vhosts
clockworkgeek

5

ฉันพบและกำหนดค่า sftp บน CentOS 6.5 สำเร็จแล้ว: http://www.thegeekstuff.com/2012/03/chroot-sftp-setup/

แก้ไขการกำหนดค่า sshd:

เป็นกลุ่ม / etc / ssh / sshd_config

#Subsystem      sftp    /usr/libexec/openssh/sftp-server (comment out the default with "#")

add:

Subsystem sftp internal-sftp
Match Group sftp-only
ChrootDirectory /var/www/%u
    AllowTCPForwarding no
    X11Forwarding no
    ForceCommand internal-sftp

ออกและบันทึก

แล้ว:

mkdir /etc/skel2
groupadd sftp-only
getent group |grep sftp-only  (take note the GID (Group ID).  Here, in my example it's 500)

สำหรับผู้ใช้ใหม่ชื่อ "testuser" (สมาชิกของกลุ่ม sftp-only ที่มี GID 500):

useradd --base-dir /var/www --gid 500 --skel /etc/skel2 --create-home --shell /sbin/nologin testuser

(ฉันใช้เปล่า / etc / skel2 ดังนั้นไม่มี. bashrc ฯลฯ จะถูกคัดลอกโดย CentOS เป็นค่าเริ่มต้น)

mkdir -p /var/www/testuser/home/testuser

chown root:sftp-only /var/www/testuser
chmod 750 /var/www/testuser

chown root:root /var/www/testuser/home
chmod 755 /var/www/testuser/home

chown testuser:sftp-only /var/www/testuser/home/testuser
chmod 770 /var/www/testuser/home/testuser

ดังนั้นในตัวอย่างนี้ฉันได้ให้การเข้าถึงที่ปลอดภัยกับ บริษัท ที่ปรึกษาภายนอกที่จัดการเว็บไซต์ คุณสามารถสร้างสิ่งนี้ได้หลังจาก:

mkdir /var/www/testuser/home/testuser/www.somesite.com
chown testuser:apache /var/www/testuser/home/testuser/www.somesite.com
chmod xxx (permissions to the website as needed, usually 750 so apache would get read access)

เราสามารถปรับจูนทั้งหมดนี้ได้ตามต้องการ

หวังว่านี่จะช่วยได้!

Guy Boisvert IngTegration inc http://www.ingtegration.com


ยินดีต้อนรับสู่ Server Fault! ในขณะที่สิ่งนี้อาจตอบคำถามในทางทฤษฎีมันก็ควรที่จะรวมส่วนสำคัญของคำตอบที่นี่และให้ลิงค์สำหรับการอ้างอิง
masegaloeh

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