แก้ไข SELinux บน vsftpd FTP Server ให้ user สามารถ FTP เข้าได้

ช่วงหลัง หันมาศึกษาและใช้ SELinux อย่างจริงจัง พยายามจะไม่ปิดการใช้ SELinux แต่จะแก้ไขคอนฟิก อนุญาตเป็นรายโปรแกรมไป

บทความนี้ขอแปะวิธีแก้ไข SELinux บนเครื่องที่รัน vsftpd FTP Server เพื่อให้ผู้ใช้สามารถล็อกอิน ftp เข้ามา home ของผู้ใช้เองได้

หมายเหตุ ในที่นี้ทดลองบน CentOS 6.2 ในลีนุกซ์เวอร์ชั่นอื่นๆ คอนฟิก SELinux อาจแตกต่างไป

ทดลองใช้ ftp ด้วย user1

[root@cent6 ~]# ftp 127.0.0.1
Connected to 127.0.0.1 (127.0.0.1).
220 (vsFTPd 2.2.2)
Name (127.0.0.1:root): user1
331 Please specify the password.
Password:
500 OOPS: cannot change directory:/home/user1
Login failed.
ftp>

ผู้ใช้ user1 สามารถ login เข้า ftp ได้ (password ถูกต้อง) แต่ไม่สามารถเข้าไดเร็คทอรี home ของตัวเองได้

สาเหตุเนื่องจากดีฟอลต์คอนฟิก SELinux ของ CentOS 6 ไม่อนุญาตให้ ftp เข้าไปใช้ไดเร็คทอรี home ได้

หากดูไฟล์ /var/log/audit/audit.log ไปด้วย จะเห็นข้อความฟ้องแบบนี้

[root@cent6 ~]# tail -f /var/log/audit/audit.log
type=AVC msg=audit(1342860489.387:8445): avc:  denied  { search } for  pid=1806 comm="vsftpd" name="home" dev=sda3 ino=393217 scontext=unconfined_u:system_r:ftpd_t:s0-s0:c0.c1023 tcontext=system_u:object_r:home_root_t:s0 tclass=dir

ใช้คำสั่ง getsebool เพื่อดูคอนฟิก SELinux ค่า “ftp_home_dir” ว่า ftp สามารถเข้า home ของผู้ใช้ได้หรือไม่

ถ้า off คือไม่สามารถใช้ได้

[root@cent6 ~]# getsebool ftp_home_dir
ftp_home_dir --> off

ถ้าต้องการเปลี่ยนแปลงคืออนุญาตให้ user ใช้ ftp แล้วเข้า home ได้ ต้องใช้คำสั่ง setsebool เพื่อเปลี่ยน  “ftp_home_dir” เป็น “on”

[root@cent6 ~]# setsebool ftp_home_dir on

หลังการแก้ไข

[root@cent6 ~]# getsebool ftp_home_dir
ftp_home_dir --> on

ถ้าต้องการแก้ไขค่าคอนฟิก SELinux นี้อย่างถาวร (persistant)  คือมีผลหลังการรีบู๊ตเครื่องด้วย  ต้องเพิ่มออปชั่น ‘-P’ เข้าไป  ตัวอย่างเช่น

[root@cent6 ~]# setsebool -P ftp_home_dir on

ทดลอง ftp ด้วย user อีกครั้ง หลังการแก้ไข

[root@cent6 ~]# ftp 127.0.0.1
Connected to 127.0.0.1 (127.0.0.1).
220 (vsFTPd 2.2.2)
Name (127.0.0.1:root): user1
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

 

ข้อมูลอ้างอิง

Leave a Reply

Your email address will not be published.