เปิด /etc/selinux/config.php
เปลี่ยน selinux=enforcing หรือ permissive เป็นปิดการใช้งาน
อย่าลืมรีสตาร์ทเซิร์ฟเวอร์!
แน่นอนว่าคุณต้องพิจารณาคำถามต่อไปนี้ด้วย:
1. ผู้ใช้ถูกจำกัดไม่ให้เข้าสู่ระบบโดย vsftpd หรือไม่ ตัวอย่างเช่น ชื่อผู้ใช้อยู่ใน /etc/ftpusers และถูกบล็อกไม่ให้เข้าสู่ระบบ
2. ตัวเลือกการตรวจสอบสิทธิ์ pam เปิดอยู่ใน vsftpd.conf หรือไม่ (ฉันมักจะทำผิดพลาดเมื่อคอมไพล์และติดตั้งด้วยตัวเอง) (ดูว่ามี pam_service_name=ftp หรือ vsftpd ใน vsftpd.conf หรือไม่ ขึ้นอยู่กับอันไหน
ใครอยู่ภายใต้ไฟล์บริการ /etc/pam.d ของโมดูล PAM? Mine คือ ftp และการกำหนดค่าเป็นดังนี้:
#%แพม-1.0
ต้องการการรับรองความถูกต้อง /lib/security/pam_listfile.so item=user Sense=deny file=/etc/ftpusers onerr=succeed
ต้องการการรับรองความถูกต้อง /lib/security/pam_unix.so เงา nullok
ต้องมีการรับรองความถูกต้อง /lib/security/pam_shells.so
ต้องใช้บัญชี /lib/security/pam_unix.so
เซสชันที่ต้องการ /lib/security/pam_unix.so
หากผู้ใช้บางรายใน /etc/ftpusers จะถูกปฏิเสธ
3. การอนุญาตของโฟลเดอร์ที่เกี่ยวข้องถูกต้องหรือไม่?
เกี่ยวกับปัญหา "ผู้ใช้ภายในบางรายไม่สามารถเข้าสู่ระบบ vsftpd ได้ แต่บางรายสามารถ",
ไม่มีบัญชีท้องถิ่นที่มีอยู่ในระบบที่สามารถเข้าสู่ระบบได้ การกำหนดค่าไฟล์ /etc/vsftpd/vsftpd.conf ของฉันเป็นดังนี้:
local_enable=ใช่
write_enable=ใช่
chroot_local_user=ใช่
pam_service_name=vsftpd
/etc/pam.d/vsftpd มีอยู่และเป็นเรื่องปกติ
ข้อความแสดงข้อผิดพลาดเมื่อเข้าสู่ระบบเหมือนกัน:
500 OOPS: ไม่สามารถเปลี่ยนไดเรกทอรี:/home/xxxx
การเข้าสู่ระบบล้มเหลว
421 บริการไม่พร้อมใช้งาน เซิร์ฟเวอร์ระยะไกลปิดการเชื่อมต่อ
โฮมไดเร็กตอรี่ของพวกเขาคือ /home/xxxx ทั้งหมด การอนุญาตของ /home และ /home/xxxx มีทั้ง 755
ไม่สามารถเข้าสู่ระบบบัญชีใด ๆ ข้างต้นผ่าน ftp ได้ บัญชีเหล่านี้มักใช้และสามารถเข้าสู่ระบบได้โดยใช้เชลล์
ฉันได้สร้างบัญชี usr1 ใหม่แล้ว
# useradd -G ทดสอบ -d /tmp/usr1 usr1
สามารถเข้าสู่ระบบผ่าน ftp และบ้านของเขาคือ /tmp/usr1 ซึ่งอยู่ในพาร์ติชัน / ฉันเมานต์ /home ไปที่ /dev/hda9
#เมานต์
/dev/hdb1 เปิด/พิมพ์ ext3 (rw)
/dev/hda9 บน /home ประเภท ext2 (rw)
ฉันเดาว่าเป็นเพราะพาร์ติชัน /home ที่ "บัญชีที่มีโฮมไดเร็กทอรีอยู่ในพาร์ติชัน /home" ไม่สามารถเข้าสู่ระบบได้ใช่หรือไม่
เพื่อตรวจสอบสมมติฐานข้างต้น ฉันพยายามสร้างบัญชีอื่น
useradd -G ทดสอบ -d /home/usr3 usr3
การอนุญาตของ /home และ /home/usr3 อยู่ที่ 755 ทั้งหมด
การเข้าสู่ระบบ usr3 ftp ล้มเหลว
500 OOPS: ไม่สามารถเปลี่ยนไดเร็กทอรี:/home/usr3
การเข้าสู่ระบบล้มเหลว
421 บริการไม่พร้อมใช้งาน เซิร์ฟเวอร์ระยะไกลปิดการเชื่อมต่อ
ณ จุดนี้ ฉันคิดว่าเป็นไปได้อย่างแน่นอนว่าเป็นเพราะพาร์ติชัน /home ที่ "บัญชีที่มีโฮมไดเร็กทอรีอยู่ในพาร์ติชัน /home" ไม่สามารถเข้าสู่ระบบได้
บทความอ้างอิง:
ฉันอัปเกรดเป็น Fedora Core 4 ครั้งที่สองเสร็จแล้ว แน่นอนว่ายังไม่หมดทุกอย่างด้วยโครงสร้างนี้ แต่สิ่งหนึ่งที่แน่นอนคือมีหลายสิ่งเกิดขึ้นกับ RedHat ที่ฉันเคยรู้จักมาก่อน
ฉันต้องพูดถึงการเปลี่ยนแปลงทั้งหมด สำหรับฉัน สิ่งที่เพิ่มเติมที่ดีที่สุดคือส่วนขยาย SELinux ใหม่ สำหรับพื้นฐานเชิงลึกเกี่ยวกับเหตุผลและทฤษฎีของ SELinux อ่านว่า The Inevitability of Failure: The Flawed Assumption of Security in Modern Computing Environments
ยิ่งฉันทำงานกับ SELinux มากเท่าไร ฉันก็ยิ่งรู้ว่าฉันต้องรู้เกี่ยวกับมันมากขึ้นเท่านั้น และแน่นอนว่ามันเปลี่ยนแปลงสิ่งต่าง ๆ ที่เกี่ยวข้องกับผู้ใช้ ไดเร็กทอรี และการเข้าถึงอย่างแน่นอน ฉันกำลังทำสิ่งที่ยาก :)
ความแตกต่างที่สำคัญสำหรับฉันใน SELinux ของ Red Hat คือวิธีจัดการ ftp ยังคงเป็นเซิร์ฟเวอร์ที่ยอดเยี่ยม อย่างไรก็ตาม ดูเหมือนว่าจะได้รับการออกแบบให้ทำงานเป็น daemon แทนที่จะเรียกใช้ผ่าน xinet.d คุณคว้าสำเนาที่ใช้งานได้ของไฟล์ xinet.d สำหรับ vsftpd คุณสามารถเรียกใช้มันผ่าน xinet.d wrapper ได้ ฉันอัปเกรดเซิร์ฟเวอร์ครั้งแรกด้วยวิธีนี้ ของคุณสมบัติที่ wrapper xinet.d นำมาและอาจกลับมาใช้งานได้อีก
ปัญหาทั้งหมดที่ฉันเห็นที่น่าสังเกตมากที่สุดคือถ้าคุณต้องการเปิดใช้งานไดเรกทอรี chroot นอก /home/xxx vsftpd ปกติ สิ่งเหล่านี้จะล้มเหลวด้วย
500 OOPS: ไม่สามารถเปลี่ยนไดเร็กทอรี: /mnt/xxxxx
ฉันสามารถใช้ ftp ได้หากฉันเข้าสู่ระบบด้วยบัญชีที่มีไดเร็กทอรีใน /home แต่เมื่อฉันตั้งค่าบัญชีผู้ใช้ให้มีโฮมไดรฟ์ภายนอก /home (ในกรณีนี้บนดิสก์รองที่เมาท์) vsftpd barfs ข้างต้น .
ฉันพบข้อมูลที่ NSA ที่ระบุว่าคุณสามารถปิดการใช้งานการป้องกัน SELinux ของ ftp daemon ได้
setsebool -P ftpd_disable_trans 1
ดูเหมือนว่าจะรุนแรงไปหน่อย
ฉันคิดว่าท้ายที่สุดแล้วปัญหาอยู่ที่นโยบาย แต่เนื่องจากนโยบาย SELinux เป็นนโยบายใหม่สำหรับฉัน จึงต้องใช้เวลาก่อนที่ทุกอย่างจะได้รับการแก้ไข ในขณะที่ฉันใช้เวลากับส่วนขยาย SELinux ใหม่ใน Fedora Core 4 ฉันจะแจ้งให้คุณทราบเกี่ยวกับความคิดของฉัน และบทเรียนการกำหนดค่า
สารละลาย:
# setebool ftpd_disable_trans 1
# บริการ vsftpd รีสตาร์ท
ฉันใช้ FC4 และลองใช้วิธีการในโพสต์ก่อนหน้าของคุณ และก็แก้ไขได้ทันที ดังนั้นจึงระบุได้ว่าสาเหตุอยู่ที่ SELinux