SELinux httpd เขียนเข้าถึงไดเรกทอรี


9

ฉันยังใหม่กับ SELinux มาจาก debian ฉันต้องการให้httpdสิทธิ์การเข้าถึงไดเรกทอรี

เบราว์เซอร์ SELinux Alertแนะนำ:

# grep httpd /var/log/audit/audit.log | audit2allow -M mypol
# semodule -i mypol.pp 

ฉันไม่เข้าใจว่าคำสั่งนี้ทำงานอย่างไร ฉันไม่ได้ระบุเส้นทางไดเรกทอรีใด ๆ จะทราบไดเรคทอรีที่อนุญาตให้ httpd ได้อย่างไร

ก่อนหน้านี้ฉันใช้ grep เพื่อแยกข้อความจากเอาต์พุตหรือไฟล์ แต่ที่นี่ grep กำลังถูกใช้ในกระบวนการ ที่ฉันไม่ได้รับ

ยังเป็นทางออกที่แท้จริงคืออะไร หากฉันต้องการให้สิทธิ์การเข้าถึงการเขียน httpd ในไดเรกทอรี


4
และเพื่อตอบคำถามอื่นของคุณ audit2allow จะอ่านไฟล์บันทึกของ SELinux และเขียนนโยบายที่อนุญาตสิ่งใดก็ตามที่ถูกบล็อก ชื่อไดเรกทอรีจะอยู่ในข้อความบันทึก โดย grepping สำหรับ httpd คุณจะ จำกัด เพียงเล็กน้อย แต่วิธีการยังคงกว้างกว่าที่ควรจะเป็น
miken32

คำตอบที่เกี่ยวข้อง: unix.stackexchange.com/questions/511929/…
Salah-1

คำตอบ:


17

นี่คือวิธีการเปลี่ยนบริบทของไดเรกทอรีอย่างถาวร:

# install semanage if you don't already have it:
yum install policycoreutils-python

# give the directory a new default context. The part at the end is a regex.
semanage fcontext -a -t httpd_sys_rw_content_t "/path/to/directory(/.*)?"

# apply the default context to the directory
restorecon -R /path/to/directory

ต่อไปนี้เป็นเอกสารเพิ่มเติมเกี่ยวกับบริบทที่แตกต่างกันสำหรับ httpd:

RHEL 7: https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/SELinux_Users_and_Administrator_Guide/sect-Managing_Confined_Services-The_Apache_HTTP_Server-Types.html

RHEL 6: https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Managing_Confined_Services/sect-Managing_Confined_Services-The_Apache_HTTP_Server-Types.html


สมบูรณ์แบบ !! ทำงานกับฉันใน Fedora 26, policycoreutils-python ได้รับการติดตั้งโดยค่าเริ่มต้นแล้ว
Sir_Faenor

5

SELinux ใช้ประโยชน์จากคุณสมบัติเพิ่มเติมที่สามารถผนวกเข้ากับโครงสร้างไดเรกทอรีบนดิสก์ คิดว่านี่เป็นข้อมูลเมตา รายการควบคุมการเข้าถึง (ACL) เป็นอีกรายการหนึ่ง

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

$ sudo ls -Z /var/www
drwxr-xr-x. root root system_u:object_r:httpd_sys_script_exec_t:s0 cgi-bin
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 html

ที่นี่คุณจะเห็นว่าไดเรกทอรีเหล่านี้มีบริบทhttpd_sys_script_exec_t:s0บนcgi-bindir และhtmlผบ. httpd_sys_content_t:s0มี

คุณสามารถเพิ่มสิ่งเหล่านี้โดยใช้chconคำสั่ง:

$ sudo chcon -t httpd_sys_content_t public_html

คำสั่งที่คุณถามจะเพียงแค่โหลดโมดูลที่mypoll.ppฉันไม่เชื่อว่ามันจะให้สิทธิ์ใด ๆ กับสิ่งใดก็ตามมีแนวโน้มว่าจะมีข้อความมากขึ้นในสิ่งaudit.logที่คุณขาดหายไปจากคำสั่งของคุณซึ่งจะบอกรายละเอียดเพิ่มเติมสิ่งที่คุณต้องการ ทำเพื่ออนุญาตการเข้าถึง

ฉันขอแนะนำให้คุณสละเวลาและทำความคุ้นเคยกับ SELinux มันสับสนในตอนแรก แต่โดยทั่วไปแล้วตรงไปตรงมาหลังจากใช้เวลากับมันเล็กน้อย ดูแหล่งข้อมูลด้านล่างเพื่อให้คุณเริ่มต้น

อ้างอิง


ขอบคุณ ฉันจะผ่านพวกเขาไป แต่คุณสามารถบอกฉันตอนนี้สิ่งที่ฉันต้องทำเพื่อให้การเข้าถึงการเขียนไปยังไดเรกทอรีนี้?
Neel Basu

หากเป็นเนื้อหาที่คุณต้องการให้ Apache อ่านคุณน่าจะต้องเพิ่มบริบทนี้ใน dir:chcon -R -t httpd_sys_content_t <dir>
slm
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.