สิ่งหนึ่งที่ต้องจำไว้เมื่อวางพาร์ติชันของคุณคือโหมดความล้มเหลว โดยทั่วไปแล้วคำถามนั้นอยู่ในรูปแบบ: "จะเกิดอะไรขึ้นเมื่อพาร์ติชันxเติมเต็ม" voretaq7 ที่รักนำสถานการณ์ขึ้นมาอย่างเต็มที่/
ทำให้เกิดปัญหาในการวินิจฉัยปัญหาได้ยาก ลองดูสถานการณ์ที่เฉพาะเจาะจงมากขึ้น
จะเกิดอะไรขึ้นถ้าพาร์ติชันของคุณจัดเก็บบันทึกเต็ม? คุณสูญเสียข้อมูลการตรวจสอบ / การรายงานและบางครั้งผู้โจมตีใช้เพื่อซ่อนกิจกรรมของพวกเขา ในบางกรณีระบบของคุณจะไม่ตรวจสอบผู้ใช้ใหม่หากไม่สามารถบันทึกเหตุการณ์การเข้าสู่ระบบได้
จะเกิดอะไรขึ้นกับระบบที่ใช้ RPM เมื่อ/var
เต็ม? ผู้จัดการแพ็คเกจจะไม่ติดตั้งหรืออัปเดตแพ็คเกจและอาจล้มเหลวอย่างเงียบ ๆ ทั้งนี้ขึ้นอยู่กับการกำหนดค่าของคุณ
การเติมพาร์ติชันนั้นง่ายมากโดยเฉพาะเมื่อผู้ใช้สามารถเขียนลงไปได้ เพื่อความสนุกให้เรียกใช้คำสั่งนี้และดูว่าคุณสามารถสร้างไฟล์ขนาดใหญ่cat /dev/zero > zerofile
ได้เร็วเพียงใด:
มันเกินกว่าจะเติมพาร์ติชั่นด้วยเช่นกันเมื่อคุณวางตำแหน่งบนจุดเมานท์ที่แตกต่างกันคุณสามารถปรับแต่งตัวเลือกเมานท์ได้
เกิดอะไรขึ้นเมื่อ/dev/
ไม่ได้รับการติดตั้งที่มีnoexec
? เนื่องจาก/dev
โดยทั่วไปแล้วสันนิษฐานว่าจะได้รับการดูแลโดยระบบปฏิบัติการและมีเพียงอุปกรณ์ที่ใช้เป็นประจำ (และบางครั้งยังคงเป็น) ใช้เพื่อซ่อนโปรแกรมที่เป็นอันตราย การปล่อยทิ้งไว้noexec
อนุญาตให้คุณเปิดไบนารีที่เก็บไว้ที่นั่น
ด้วยเหตุผลทั้งหมดเหล่านี้และอื่น ๆ คำแนะนำในการชุบแข็งจำนวนมากจะกล่าวถึงการแบ่งพาร์ติชันเป็นหนึ่งในขั้นตอนแรกที่ต้องดำเนินการ ในความเป็นจริงหากคุณกำลังสร้างเซิร์ฟเวอร์ใหม่วิธีแบ่งพาร์ติชันดิสก์นั้นเกือบจะเป็นสิ่งแรกที่คุณต้องตัดสินใจและบ่อยครั้งที่ยากที่สุดที่จะเปลี่ยนแปลงในภายหลัง มีกลุ่มหนึ่งที่เรียกว่าศูนย์การรักษาความปลอดภัยอินเทอร์เน็ตที่ให้คำแนะนำการกำหนดค่าที่อ่านง่าย คุณอาจพบคำแนะนำสำหรับระบบปฏิบัติการเฉพาะของคุณและดูข้อมูลเฉพาะที่อาจกล่าวได้
หากเราดูที่ RedHat Enterprise Linux 6 รูปแบบการแบ่งพาร์ติชันที่แนะนำคือ:
# Mount point Mount options
/tmp nodev,nosuid,noexec
/var
/var/tmp bind (/tmp)
/var/log
/var/log/audit
/home nodev
/dev/shm nodev,nosuid,noexec
หลักการที่อยู่เบื้องหลังการเปลี่ยนแปลงเหล่านี้คือการป้องกันไม่ให้ส่งผลกระทบต่อกันและกันและ / หรือ จำกัด สิ่งที่สามารถทำได้ในพาร์ติชันเฉพาะ ใช้ตัวเลือกสำหรับการ/tmp
ยกตัวอย่างเช่น สิ่งที่กล่าวคือไม่มีโหนดอุปกรณ์ที่สามารถสร้างขึ้นได้ไม่มีโปรแกรมไม่สามารถดำเนินการจากที่นั่นและบิต set-uid ไม่สามารถตั้งค่าได้ โดยธรรมชาติแล้ว/tmp
มักจะเขียนได้ทั่วโลกและมักเป็นระบบไฟล์ชนิดพิเศษที่มีอยู่ในหน่วยความจำเท่านั้น ซึ่งหมายความว่าผู้โจมตีสามารถใช้เป็นจุด staging ง่าย ๆ ในการปล่อยและเรียกใช้รหัสที่เป็นอันตรายจากนั้น crashing (หรือเพียงแค่เริ่มระบบใหม่) ระบบจะล้างข้อมูลหลักฐานทั้งหมด เนื่องจากฟังก์ชั่นของ/tmp
ไม่ต้องการฟังก์ชั่นใด ๆ เราจึงสามารถปิดการใช้งานคุณสมบัติและป้องกันสถานการณ์นั้นได้อย่างง่ายดาย
ตำแหน่งที่เก็บบันทึก/var/log
และ/var/log/audit
ถูกแกะสลักออกเพื่อช่วยบัฟเฟอร์จากทรัพยากรหมด นอกจากนี้ auditd สามารถทำสิ่งพิเศษบางอย่าง (โดยทั่วไปจะอยู่ในสภาพแวดล้อมการรักษาความปลอดภัยที่สูงขึ้น) เมื่อที่เก็บข้อมูลบันทึกเริ่มเต็ม โดยการวางไว้บนพาร์ติชั่นการตรวจจับทรัพยากรนี้จะทำงานได้ดีขึ้น
หากต้องการเป็น verbose ที่มากขึ้นและเสนอราคาmount(8)
นี่คือสิ่งที่ตัวเลือกที่ใช้ข้างต้นคือ:
noexecไม่อนุญาตให้เรียกใช้งานไบนารีโดยตรงบนระบบไฟล์ที่เมาท์ (จนกระทั่งเมื่อไม่นานมานี้มีความเป็นไปได้ที่จะรันไบนารีโดยใช้คำสั่งเช่น /lib/ld*.so / mnt / binary เคล็ดลับนี้ล้มเหลวตั้งแต่ Linux 2.4.25 / 2.6.0)
nodev อย่าตีความอักขระหรือบล็อกอุปกรณ์พิเศษในระบบไฟล์
nosuidไม่อนุญาตให้บิต set-user-identifier หรือ set-group-identifier มีผล (ดูเหมือนว่าจะปลอดภัย แต่จริงๆแล้วค่อนข้างไม่ปลอดภัยหากคุณติดตั้ง suidperl (1))
จากมุมมองด้านความปลอดภัยนี่เป็นตัวเลือกที่ดีที่ควรทราบเนื่องจากมันจะช่วยให้คุณสามารถป้องกันระบบไฟล์ได้ ในสภาพแวดล้อมที่มีความปลอดภัยสูงคุณอาจจะเพิ่มตัวเลือกในการnoexec
/home
มันจะทำให้ผู้ใช้มาตรฐานของคุณยากที่จะเขียนเชลล์สคริปเพื่อประมวลผลข้อมูลพูดวิเคราะห์ไฟล์บันทึก แต่มันจะป้องกันไม่ให้พวกเขาเรียกใช้ไบนารี่ที่จะยกระดับสิทธิ์
/root
นอกจากนี้ยังเก็บไว้ในใจว่าไดเรกทอรีแรกเริ่มต้นผู้ใช้รากคือ ซึ่งหมายความว่ามันจะอยู่ใน/
ระบบแฟ้มไม่ได้/home
ใน
จำนวนเงินที่คุณมอบให้แต่ละพาร์ติชันอาจแตกต่างกันมากขึ้นอยู่กับปริมาณงานของระบบ เซิร์ฟเวอร์ทั่วไปที่ฉันจัดการมักไม่ค่อยต้องการการมีปฏิสัมพันธ์กับบุคคลและ/home
พาร์ติชั่นดังกล่าวไม่จำเป็นต้องมีขนาดใหญ่มากเลย เช่นเดียวกับ/var
เนื่องจากมันมีแนวโน้มที่จะเก็บข้อมูลชั่วคราวที่ได้รับการสร้างและลบบ่อยครั้ง อย่างไรก็ตามเว็บเซิร์ฟเวอร์มักใช้/var/www
เป็นสนามเด็กเล่นซึ่งหมายความว่าอาจต้องอยู่ในพาร์ติชันแยกต่างหากเช่นกันหรือ/var/
ต้องมีขนาดใหญ่
ในอดีตที่ผ่านมาฉันแนะนำดังต่อไปนี้เป็นพื้นฐาน
# Mount Point Min Size (MB) Max Size (MB)
/ 4000 8000
/home 1000 4000
/tmp 1000 2000
/var 2000 4000
swap 1000 2000
/var/log/audit 250
จำเป็นต้องได้รับการตรวจสอบและปรับเปลี่ยนตามวัตถุประสงค์ของระบบและสภาพแวดล้อมของคุณทำงาน ฉันจะแนะนำให้ใช้ LVM และไม่ให้จัดสรรดิสก์ทั้งหมด สิ่งนี้จะช่วยให้คุณเติบโตหรือเพิ่มพาร์ติชันได้ง่ายหากจำเป็นต้องใช้สิ่งเหล่านี้