เกิดอะไรขึ้นถ้าเราปิดใช้งาน selinux


9

เราสืบทอดเซิร์ฟเวอร์ที่ใช้แล้วจำนวนมากจากทีมอื่น บางคนเปิดใช้งาน SELinux แล้วบางตัวไม่เปิดใช้งาน เนื่องจาก SELinux เรากำลังประสบปัญหาในการตั้งค่ารหัสผ่าน ssh แบบไม่ใช้เว็บเซิร์ฟเวอร์ของเรา ฯลฯ เราพบว่ามีการแก้ไขในไซต์ stackexchange นี้ซึ่งจะทำงาน:

restorecon -R -v ~/.ssh

อย่างไรก็ตามเนื่องจากเราไม่ต้องการให้ SELinux ทำงานในสิ่งที่เราทำมันอาจจะเป็นการง่ายกว่าที่เราจะจำไว้ว่าให้ทุกคนใช้คำสั่ง cmd ข้างต้นกับสิ่งที่ dir ต้องการการอนุญาต

เราสามารถปิด SELinux โดยไม่มีผลกระทบใด ๆ ตามถนนหรือดีกว่าเพียงแค่ทำการอิมเมจเซิร์ฟเวอร์อีกครั้งหรือไม่ สิ่งหนึ่งที่ควรทราบ; กลุ่มไอทีของเรายุ่งมากดังนั้นการถ่ายภาพเซิร์ฟเวอร์ไม่สูงในรายการเว้นแต่ว่าจำเป็นจริงๆ (ต้องใช้กรณีธุรกิจที่ดีมาก) ... หรือใครบางคนติดสินบนเจ้านายด้วยขวดสก๊อตหรือวิสกี้

อัปเดต: ขอบคุณสำหรับคำแนะนำและคำแนะนำของทุกคน เซิร์ฟเวอร์เหล่านี้ทั้งหมดจะถูกใช้เป็นเซิร์ฟเวอร์ dev ภายใน จะไม่มีการเข้าถึงเครื่องเหล่านี้จากภายนอกดังนั้นการรักษาความปลอดภัยจึงไม่เป็นปัญหาสำหรับเรา เซิร์ฟเวอร์ปัจจุบันของเราที่เราใช้ทั้งหมด (อย่างสุดความรู้) ไม่ได้เปิดใช้งาน SELinux บางส่วนที่ผู้จัดการของฉันเพิ่งได้รับทำได้และสิ่งเหล่านี้คือสิ่งที่เรากำลังมองหาเพื่อปิดการใช้งาน


1
ฉันตอบคำถามที่คล้ายกันใน Android.se: ความจริงที่ว่า SELinux อยู่ในโหมด "อนุญาต" หรือไม่? ฉันควรระวังอะไร . ข้อแตกต่างที่สำคัญระหว่างโหมด "อนุญาต" และการปิดใช้งาน SELinux คือคุณจะไม่ได้รับข้อความบันทึก AVC อีกต่อไปและ SELinux จะไม่ทำให้ไฟล์ติดฉลากเป็นปัจจุบันดังนั้นคุณจะต้องติดตั้งไฟล์ใหม่ก่อนเปิดใช้งานอีกครั้ง
WhiteWinterWolf

"สิ่งที่อาจจะผิดไป?"
scai

3
@ scai นั่นเป็นคำถามที่ดี เมื่อSato Katsuraชี้ให้เห็นว่า SELinux นั้นใช้งานได้ยากอย่างมีประสิทธิภาพ ความปลอดภัยที่ผิดพลาดเป็นอันตรายต่อความปลอดภัย
Rhymoid

คำตอบ:


14

SELinux เป็นคุณสมบัติความปลอดภัยของระบบปฏิบัติการ มันถูกออกแบบมาเพื่อช่วยปกป้องบางส่วนของเซิร์ฟเวอร์จากส่วนอื่น ๆ

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

ตอนนี้คุณสามารถปิดการใช้งาน SELinux และไม่ควรทำลายอะไรเลย เซิร์ฟเวอร์จะทำงานต่อไปตามปกติ

แต่คุณจะต้องปิดการใช้งานหนึ่งในคุณสมบัติด้านความปลอดภัย


10
SELinux ทำงานได้ดีเมื่อกำหนดค่าอย่างเหมาะสมเท่านั้น อย่างไรก็ตาม SELinux นั้นซับซ้อนมากจนไม่มีใครมีเวลาและ / หรือความรู้ในการกำหนดค่าอย่างถูกต้องและทำให้มันปิดการใช้งานอย่างใดอย่างหนึ่งหรือเป็นความเจ็บปวดถาวรที่ด้านหลังสำหรับผู้ดูแลระบบ แต่พวกคุณให้ความเชื่อมั่นการลงทุนในมันเป็นความปลอดภัยคุณลักษณะ
Satō Katsura

3
ฉันยอมรับว่า selinux เป็น PITA ที่ดูแลระบบ แต่ก็ยังคงยุติธรรมและถูกต้องทั้งหมดเพื่อเรียกว่าคุณลักษณะด้านความปลอดภัย สำหรับผู้ที่ต้องการหรือต้องการลงทุนเวลาในการเรียนรู้และบริหารจัดการ (ไม่ใช่ฉัน) มันมีค่ามาก - เช่น sysadmins สำหรับเว็บไซต์ขนาดใหญ่ที่มีชื่อเสียงสูงรู้จักเป้าหมายที่น่าสนใจสำหรับสคริปต์เด็กทั่วโลก
cas

2
@SatoKatsura เพียงเพราะมันยากที่จะกำหนดค่าหรือยากที่จะเข้าใจไม่ได้ปรับการปิดใช้งานกลไกความปลอดภัย โดยมีเงื่อนไขว่ากลไกความปลอดภัยนี้เป็นสิ่งจำเป็นจริง ๆ ซึ่งไม่ใช่เรื่องง่ายที่จะตัดสินใจ
scai

@scai ฉันไม่ได้บอกว่าควรปิดใช้งาน (หรือไม่ควร) สิ่งที่ฉันพูดคือรุ่นพื้นฐานของ SELinux มีข้อบกพร่อง บางคนยืนยันว่ากลไกความปลอดภัยทั้งหมดที่สามารถปิดการใช้งานนั้นมีข้อบกพร่อง
Satō Katsura

@SatoKatsura ใช่นั่นเป็นเหตุผลที่มีรหัสผ่านที่สมบูรณ์และไม่มีจุดหมายอย่างเต็มที่เพราะพวกเขาสามารถปิดการใช้งาน (เช่นกับ pam หรือ nss หรือเพียงแค่มีรหัสผ่านที่ว่างเปล่า) BTW ฉันไม่เคยอ้างว่าคุณบอกว่าควรจะปิดใช้งาน selinux ฉันเพิ่งโต้แย้งการยืนยันของคุณว่ามันไม่ใช่คุณสมบัติความปลอดภัยที่แท้จริง
cas

8

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

ในบทบาทก่อนหน้าของฉันในฐานะผู้ดูแลระบบของ บริษัท ขนาดใหญ่ ... ฉันปิดใช้งาน SELinux โดยทั่วไปแล้ว ฉันไม่มีเวลาติดตามข้อผิดพลาด SELinux ทั้งหมดในระบบทั้งหมดที่ผู้ใช้นักพัฒนาและผู้จัดการใช้

ก่อนที่จะปิดการใช้งานสิ่งต่าง ๆ คุณอาจต้องการเริ่มต้นด้วยการติดตั้งไฟล์ในระบบกลับไปเป็นสิ่งที่ควรเป็น วิธีที่ง่ายที่สุดที่ฉันค้นพบคือการป้อนคำสั่ง:

 # /sbin/fixfiles onboot

หรือ

 # touch /.autorelabel

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

อย่างไรก็ตามหากไม่เป็นเช่นนั้นระบบจะไม่ได้รับอันตรายจากการไม่มี SELinux ในโหมดบังคับใช้ มันเป็นเพียงชั้นป้องกันเพิ่มเติม


3
moot ไม่ใช่ใบ้ แต่ถูกต้องสมบูรณ์ ไม่ใช่ทุกระบบที่ต้องการ selinux
phyrfox

+1 สำหรับการแนะนำให้ลองติดตั้งไฟล์ใหม่อีกครั้งก่อนปิดการใช้งาน SELinux เป็นทางเลือก SELinux มีไว้เพื่อป้องกันซอฟต์แวร์และพฤติกรรมของผู้ใช้ที่ไม่คาดคิด บนระบบที่ไม่มีพฤติกรรมที่คาดหวังไว้อย่างชัดเจน SELinux อาจก่อให้เกิดอันตรายมากกว่าการใช้นโยบายที่ดี (นโยบายที่ใช้กับระบบปฏิบัติการของ OS พยายามให้เป็นเรื่องทั่วไปที่สุดเท่าที่จะทำได้ แต่บางครั้งก็ไม่เพียงพอ)
WhiteWinterWolf

ขอบคุณ! /sbin/fixfiles onbootทำงานสำหรับฉันใน CentOS touch /.autorelabelไม่เช่นนั้นด้วย กำลังsealert -a /var/log/audit/audit.logแสดงการแจ้งเตือน 0 ตอนนี้ @mdpc ความแตกต่างระหว่างสองคำสั่งคืออะไร
Joseph K.

5

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

ถ้าเป็นฉันฉันจะทำอะไรบางอย่าง

semanage fcontext -a -t ssh_home_t ~/.ssh # Adding the policy
restorecon -R -v ~/.ssh # Applying the policy

เพื่อความมั่นใจเป็นพิเศษเกี่ยวกับประเภทของป้ายกำกับที่กำหนดซ้ำ~/.ssh


1
มันมีสไตล์ "SELinux" Linux ไม่ใช่ตัวย่อและส่วน "SE" เป็นข้อมูลเริ่มต้น
Rhymoid

@ Rhymoid: นั่นเป็นบันทึกที่ดีแน่นอน .. อันที่จริงสิ่งที่ฉันเขียนนั้นไม่ได้ตั้งใจ
sjsam

2

โดยทั่วไปคุณไม่ควรปิดการใช้งาน SELinux มีเครื่องมือที่อาจช่วยให้คุณเข้าใจสิ่งที่ผิดพลาด สิ่งที่ฉันชอบคือการใช้งานตัวอย่าง sealert:

sealert -a /var/log/audit/audit.log

OFC คุณสามารถตั้งค่า SELinux ในโหมดอนุญาตสำหรับการดีบักได้ตลอดเวลา แต่การสอนให้ SELinux ถูกปิดการใช้งานหรือได้รับอนุญาตนั้นเป็นข้อบกพร่องด้านความปลอดภัยที่ร้ายแรงโดย Red Hat

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