รายการตรวจสอบ / รูทีนของคุณเมื่อตั้งค่าเว็บเซิร์ฟเวอร์ Linux คืออะไร
คุณแนะนำอะไรเพื่อให้ได้ความปลอดภัยสูงสุด
มีวิธีที่ต้องการในการบำรุงรักษาซ้ำ ๆ หรือไม่?
รายการตรวจสอบ / รูทีนของคุณเมื่อตั้งค่าเว็บเซิร์ฟเวอร์ Linux คืออะไร
คุณแนะนำอะไรเพื่อให้ได้ความปลอดภัยสูงสุด
มีวิธีที่ต้องการในการบำรุงรักษาซ้ำ ๆ หรือไม่?
คำตอบ:
ก่อนอื่นให้ระวังว่าความสามารถในการเขียนสคริปต์ใน Apache (php, cgi, ruby, ... ) นั้นเทียบเท่ากับบัญชีเชลล์ที่มีสิทธิ์ของผู้ใช้ที่เรียกใช้สคริปต์
หากเซิร์ฟเวอร์ถูกแชร์กับผู้ใช้หลายคนคุณอาจต้องการใช้ suexec (- หรือITK MPM - แนะนำโดยDavid Schmitt ) ดังนั้นไม่ใช่ทุกสคริปต์ที่ทำงานในฐานะผู้ใช้ apache เดียวกัน
จำลองเสมือนหรือ chroot apache เพื่อให้มีการประนีประนอมอย่างน้อยในชั้นความปลอดภัยเพิ่มเติม โปรดระวังว่าเมื่อคุณ chroot apache การบำรุงรักษาอาจยากขึ้นเมื่อคุณย้ายห้องสมุดไปที่คุกเป็นต้นหากคุณใช้ FreeBSD คุณสามารถใช้คุกแทนได้ซึ่งง่ายต่อการบำรุงรักษามากเพราะคุณสามารถติดตั้ง apache ได้ จากพอร์ตและเรียกใช้การตรวจสอบพอร์ตจากภายในโดยไม่ต้องกังวลเกี่ยวกับการพึ่งพาไลบรารีและการย้ายไฟล์ด้วยตนเองซึ่งจะกลายเป็นความยุ่งเหยิงที่น่าเกลียด ด้วย BSD jails คุณสามารถใช้ระบบการจัดการแพ็คเกจ (พอร์ต) ต่อไปได้ (บน GNU / Linux คุณสามารถใช้VServerสำหรับการจำลองเสมือน - แนะนำโดยDavid Schmitt )
(ชัด) ติดตามการอัพเดทและแพทช์ไม่เพียง แต่สำหรับ Apache เท่านั้น แต่ยังรวมถึง PHP, ruby, perl และอื่น ๆ ... อย่าเพิ่งเชื่อใจระบบปฏิบัติการของคุณเพื่อให้คุณได้รับการอัปเดตทั้งหมด บาง distro ของช้ามากกับแพทช์ของพวกเขา จำกัด เวลาในการเปิดเผยให้น้อยที่สุด 0 วัน ติดmilw0rmฟีดในเครื่องอ่าน RSS ของคุณสมัครรับจดหมายข่าวinsecure.orgฯลฯ ไม่เพียง แต่มันจะช่วยให้คุณเรียนรู้เกี่ยวกับช่องโหว่ก่อนที่ระบบปฏิบัติการของคุณจะเริ่มปล่อยแพทช์คุณยังจะได้เรียนรู้เกี่ยวกับช่องโหว่ใน php ตัวอย่างการใช้งาน cms ซึ่งอาจไม่ได้รับการจัดการหรือแก้ไขโดยระบบปฏิบัติการของคุณเลย
ใช้บางอย่างเช่น tripwire / aide, audit หรือ mtree (บน BSD) เพื่อติดตามการเปลี่ยนแปลงในระบบไฟล์ของคุณ อันนี้สำคัญมาก มีการเปลี่ยนแปลงใด ๆ ที่ส่งถึงคุณเป็นประจำตรวจสอบด้วยตนเองทุกวัน หากมีการเปลี่ยนแปลงไฟล์ใด ๆ ที่ไม่ควรเปลี่ยนแปลงให้ตรวจสอบสาเหตุ หากจาวาสคริปต์ที่เป็นอันตรายบางส่วนถูกแทรกลงในหน้าของคุณด้วยวิธีใดก็ตามคุณก็จะได้รับวิธีนี้ สิ่งนี้ไม่เพียง แต่ช่วยประหยัดเซิร์ฟเวอร์ของคุณ แต่ยังรวมถึงผู้ใช้ของคุณด้วยเนื่องจากหน้าเว็บของคุณเองอาจถูกนำไปใช้ในทางที่ไม่เหมาะสม (นี่เป็นกลยุทธ์ที่พบบ่อยมากผู้โจมตีมักไม่สนใจเซิร์ฟเวอร์ของคุณพวกเขาแค่ต้องการแพร่เชื้อผู้เยี่ยมชมของคุณให้มากที่สุดเท่าที่จะเป็นไปได้จนกระทั่งค้นพบผู้โจมตีเหล่านี้ก็ไม่รำคาญที่จะซ่อนเส้นทางของพวกเขา การจับประนีประนอมแบบนี้ให้เร็วที่สุดเป็นสิ่งสำคัญมาก)
ใช้สิ่งต่าง ๆ เช่นsuhosinเพื่อป้องกัน php ช่วย แต่ยังเรียนรู้ที่จะเข้าใจปรับแต่งมันเป็นพารามิเตอร์ที่คาดหวังของแอปพลิเคชันของคุณ
การใช้เคอร์เนลแพตช์เช่นPaXอาจช่วยปกป้องคุณจากช่องโหว่หน่วยความจำล้นมากเกินไป แม้ว่าซอฟต์แวร์ของคุณจะมีช่องโหว่ (สิ่งนี้ไม่ทำให้คุณคงกระพันมันเป็นเพียงอีกชั้นหนึ่งรองพื้น)
อย่ามั่นใจเกินไปเมื่อใช้เครื่องมือรักษาความปลอดภัย ทำความเข้าใจกับเครื่องมือที่คุณใช้และใช้สามัญสำนึก อ่านเรียนรู้ติดตามให้มากที่สุด
พิจารณาใช้การควบคุมการเข้าถึงที่จำเป็น (เช่น: SELinux ) อนุญาตให้คุณระบุรายละเอียดที่ได้รับอนุญาตให้ทำในแต่ละแอปพลิเคชัน อนุญาตให้เข้าถึงไฟล์ใด สิ่งที่เรียกว่าเคอร์เนลอนุญาตให้ทำ ฯลฯ เป็นกระบวนการที่เกี่ยวข้องมากและต้องมีความเข้าใจมากมาย Distro บางแห่งมีนโยบาย SELinux ที่ทำไว้ล่วงหน้าสำหรับแพ็คเกจของพวกเขา (เช่น: Gentoo ) ข้อเสนอแนะนี้เป็นสิ่งที่ขัดแย้งกับรายการด้านล่าง แต่ยังคงใช้ได้อย่างไรก็ตาม
ทำสิ่งที่ง่าย กลยุทธ์การรักษาความปลอดภัยที่ซับซ้อนอาจทำงานกับคุณได้
ใน Apache ให้ตั้งค่ากฎเริ่มต้นที่เข้มงวดมาก (ตัวเลือกไม่มีปฏิเสธจากทั้งหมด ฯลฯ ... ) และแทนที่ตามที่จำเป็นสำหรับ VirtualHosts เฉพาะ
ปฏิเสธการเข้าถึง dotfiles ทั้งหมด (ซึ่งครอบคลุมไฟล์. htaccess ทันที)
ใช้ https ทุกที่ที่มีการตรวจสอบรหัสผ่านทุกประเภท
ไฟร์วอลล์ควรเป็นนโยบายที่ปฏิเสธโดยค่าเริ่มต้น สร้างกฎเฉพาะในไฟร์วอลล์ของคุณเพื่อบันทึกปริมาณการใช้งานเฉพาะ
ตั้งค่าสคริปต์แยกวิเคราะห์เพื่อสแกนบันทึกของคุณเพื่อหาสิ่งผิดปกติ (ชุดรหัสโหมโรง IDSสามารถทำสิ่งนี้ได้ แต่โดยสุจริตฉันแนะนำให้คุณสร้างสคริปต์ของคุณเองเมื่อเวลาผ่านไปเพราะจะช่วยให้คุณเข้าใจเครื่องมือและกฎของคุณได้ดีขึ้น)
ให้เซิร์ฟเวอร์ของคุณส่งรายงานรายวันเกี่ยวกับผู้ใช้ที่เข้าสู่ระบบครั้งล่าสุดการเชื่อมต่อที่ใช้งานอยู่แบนด์วิดท์ที่ใช้ ฯลฯ
มี cron scan หา suid ไบนารีไฟล์ที่เขียนได้ทั่วโลกและอะไรทำนองนั้นและส่งให้คุณทางไปรษณีย์
สำหรับสิ่งใดก็ตามที่คุณตั้งค่าซึ่งส่งถึงคุณคุณควรสร้างรายการข้อยกเว้นเมื่อเวลาผ่านไป (โฟลเดอร์ที่จะเพิกเฉยต่อการเปลี่ยนแปลงของระบบไฟล์, 777 ไฟล์ที่จะอนุญาต, suid ไบนารีที่จะอนุญาต) เป็นสิ่งสำคัญที่คุณจะได้รับแจ้งในสิ่งที่ไม่ควรเกิดขึ้นเท่านั้น หากคุณได้รับจดหมายทุกวันด้วยสิ่งเล็ก ๆ น้อย ๆ คุณจะเริ่มไม่สนใจอีเมลเหล่านั้นและพวกเขาจะไร้ประโยชน์
มีกลยุทธ์การสำรองข้อมูลที่ดีแบบซ้ำซ้อน และอย่าเพิ่งคิดว่าการสร้างภาพหรือสำเนาของทุกอย่างใช้งานได้ ตัวอย่างเช่นหาก MySQL อยู่ระหว่างการเขียนลงในตารางระหว่างการสำรองข้อมูลไฟล์ไบนารี MySQL ของคุณอาจเสียหายเมื่อคุณกู้คืนการสำรองข้อมูลของคุณ ดังนั้นคุณจะต้องมี cron ที่ mysqldump เป็นฐานข้อมูลของคุณที่ด้านบนของภาพปกติหรือ tarballs ยามค่ำคืนหรือการควบคุมเวอร์ชันหรืออะไรก็ตามที่คุณตั้งค่าไว้ คิดเกี่ยวกับกลยุทธ์การสำรองข้อมูลของคุณ ฉันหมายความว่าจริงๆคิดเกี่ยวกับมัน
อย่าพึ่งพารายการเช่นนี้เพื่อความปลอดภัย :) อย่างจริงจัง! คุณจะพบสิ่งเหล่านี้มากมายทั่วอินเทอร์เน็ตไปอ่านพวกเขาทั้งหมดค้นคว้าคำแนะนำทั้งหมดและใช้สามัญสำนึกและประสบการณ์เพื่อประกอบความคิดของคุณเอง ในที่สุดประสบการณ์และสามัญสำนึกเป็นเพียงสิ่งเดียวที่จะช่วยคุณได้ ไม่มีรายการหรือเครื่องมือ อ่าน แต่อย่าคัดลอกโดยไม่เข้าใจ
ฉันแนะนำรายการตรวจสอบความปลอดภัย Linuxจาก SAN ฉันใช้สิ่งนั้นบวกกับกระบวนการภายในอื่น รายการตรวจสอบอาจล้าสมัยไปเล็กน้อย แต่ประเด็นสำคัญหลายข้อยังคงเป็นจริง
แก้ไข ~ / .ssh / config ของคุณ
permit_root_login no
สิ่งนี้ทำให้
ssh root@server
ไม่ตอบสนอง แต่
ssh user@server
user$ su
จะทำงานถ้าคุณต้องการเข้าสู่ระบบในฐานะรูท
จะมีสิทธิ์นับไม่ถ้วนในการตรวจสอบรายการตรวจสอบที่นับไม่ถ้วนไม่สิ้นสุดการค้นพบข้อบกพร่อง / ช่องโหว่ใหม่ ความปลอดภัยฉันจะไม่คิดว่าเป็นสิ่งที่คุณเปิดหรือปิดมันเป็นสิ่งที่คุณทำอย่างต่อเนื่อง
เมื่อพิจารณาจากซอฟต์แวร์ "ความล้มเหลวที่หลีกเลี่ยงไม่ได้" SELinux ช่วยขจัดความกังวล (ไม่มี bullet เงินเพื่อความปลอดภัย) สมมติว่าแอปพลิเคชัน userspace นั้นถูกละเมิดนโยบาย SELinux ที่ถูกต้องจะป้องกันไม่ให้มันทำงานตามปกติ (เช่นถ้า SELinux ถูกปิดใช้งานหรือได้รับอนุญาต) หลักสูตรนี้จะให้คุณตรวจสอบบันทึกการตรวจสอบของคุณและวิเคราะห์นโยบายที่ติดตั้งและแก้ไขตามที่จำเป็นเพื่ออนุญาตให้แอปพลิเคชันทำงานได้
การไม่บอกว่านโยบายเริ่มต้นจะไม่ช่วย แต่โดยส่วนตัวแล้วฉันชอบที่จะรู้ว่ามันอนุญาตอะไร