Score:2

SELinux - บล็อกอีเมล postfix ที่ส่งออกจากเว็บแอปพลิเคชัน

ธง cn

สภาพแวดล้อมระบบของฉันคือ Centos-7.9, Apache2.4, Php-fpm, PHP-7.4

ฉันมีการตั้งค่า postfix เพื่อส่งอีเมลจากเว็บไซต์ ซึ่งทำงานในอีเมลทดสอบแบบสแตนด์อโลน และเมื่อฉันปิด SELinux

อย่างไรก็ตาม หากเปิดใช้งาน SELinux จะบล็อกการส่งอีเมลออกจากเซิร์ฟเวอร์โดยมีข้อผิดพลาดด้านล่างใน /var/log/maillog

 postfix/sendmail[10883]: ร้ายแรง: execv /usr/libexec/postfix/smtpd: ปฏิเสธการอนุญาต

เมื่อฉันทำ

  sudo setenforce 0

มันส่งอีเมล แต่ฉันไม่ต้องการปิด SELinux แต่ฉันต้องการให้เว็บแอปพลิเคชันของฉันอนุญาตการส่งอีเมล ฉันพยายามด้านล่าง แต่ไม่ได้ผล

sudo setsebool -P httpd_can_sendmail 1

มีความคิดเกี่ยวกับวิธีแก้ปัญหานี้หรือไม่?

Score:0
ธง cn

สิ่งที่ฉันจะทำนี่คือ

ตั้ง SELinux ในโหมดอนุญาต

เซเทนฟอร์ซ 0

หมุนบันทึกการตรวจสอบเพื่อให้ฉันได้รับรายการการปฏิเสธ AVC ที่สะอาด (เอ้อ)

ฆ่า -USR1 $(cat /run/auditd.pid) 

ทำให้ปัญหาเกิดขึ้นและสร้างข้อความการตรวจสอบ

สร้างโมดูลนโยบายท้องถิ่น

grep ถูกปฏิเสธ /var/log/audit/audit.log | audit2allow -m mypolicy >mypolicy.te 

ตรวจสอบว่าไฟล์นโยบายที่สร้างขึ้นดูเหมือนที่ฉันคาดไว้ และไม่ 'แจก' สิ่งที่ฉันไม่ต้องการ และแก้ไขตามต้องการ

สร้างและติดตั้งนโยบาย

ตรวจสอบโมดูล -M -m -o mypolicy.mod mypolicy.te
semodule_package -o mypolicy.pp -m mypolicy.mod
โมดูล -i mypolicy.pp 

คุณอาจพบว่าการใส่ AVC denials ทั้งหมดลงในไฟล์แยกต่างหากนั้นง่ายกว่า แล้วลบอันที่ไม่เกี่ยวข้องกับปัญหาที่คุณกำลังพยายามแก้ไข ก่อนที่จะใช้ audit2alow ในไฟล์ หากวิธีนี้ใช้ได้ผลดีกว่าสำหรับคุณ คุณสามารถข้ามขั้นตอนระหว่างกลางและไปที่ไฟล์ .pp ได้เลย

แมว myavcs.log | audit2allow -M นโยบายของฉัน
Score:0
ธง vn

นี่เป็นข้อผิดพลาดที่ทราบแล้วกับ RHEL 7.7 ขึ้นไปเมื่อใช้งาน php-fpm แทนที่จะเป็นของ Apache mod_php. เนื่องจากคุณใช้ CentOS 7.9 จึงมีผล

คุณสามารถอ่านเพิ่มเติมเกี่ยวกับปัญหาเกี่ยวกับ Bugzilla ของ Red Hat: http://bugzilla.redhat.com/show_bug.cgi?id=1754622

สำหรับวิธีแก้ปัญหาของคุณ วิธีแรกและชัดเจนที่สุดคือการปิดใช้งาน SELinux แต่เป็นตัวเลือกที่สอง ฉันขอแนะนำดังต่อไปนี้:

  1. ติดตั้งแพ็คเกจ นโยบาย coreutils-python
  2. ใช้ ตรวจสอบ2ทำไม และ การตรวจสอบ2อนุญาต เพื่อสร้างกฎที่กำหนดเองเพื่อเปิดใช้งาน php-fpm เพื่อทำงานกับ SELinux ที่เปิดใช้งาน
  3. หาง -f บน /var/log/audit/audit.log และพยายามส่งข้อความอีเมลจาก httpd. รับผลผลิตและเพาะผ่าน ตรวจสอบ2ทำไม และ การตรวจสอบ2อนุญาต. มันจะอธิบายตนเอง
  4. ใช้กฎที่แนะนำโดยทั้งสองโปรแกรม

ทางออกที่สามจะถูกวางไว้ httpd_t หรือ system_mail_t (ขึ้นอยู่กับผลผลิตของ การตรวจสอบ2อนุญาต) ในโหมดอนุญาต หากคุณไม่ต้องการสร้างกฎที่กำหนดเองสำหรับเครื่องนี้โดยเฉพาะ แต่โปรดจำไว้ว่าการทำเช่นนี้คุณจะปิดการใช้งาน SELinux ในบริบททั้งหมด

ซึ่งจะทำได้ด้วยคำสั่งต่อไปนี้: semanage อนุญาต -a httpd_t หรือ อนุญาต semanage -a system_mail_t. หากต้องการเลิกทำการเปลี่ยนแปลงเพียงแค่เปลี่ยน -ก ถึง -d.

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา