เซิร์ฟเวอร์ LAMP ที่ปลอดภัยสำหรับการใช้งานจริง


10

ขั้นตอนการรักษาความปลอดภัยสำหรับ Linux, Apache, MySQL, PHP Server (หรือแม้แต่ Perl) สำหรับการใช้งานจริงคืออะไร?

นอกเหนือจากการตั้งค่ารหัสผ่าน MySQL และรหัสผ่านรูทสำหรับลีนุกซ์ขั้นตอนอื่น ๆ (อาจไม่ชัดเจน) ควรทำอย่างไร?

นอกจากนี้ฉันสามารถทำตามขั้นตอนใดได้บ้างหากฉันเป็นโรคหวาดระแวงพิเศษซึ่งอาจไม่จำเป็นต้องทำตามปกติ?

สิ่งนี้มีไว้สำหรับการใช้งานไซต์พื้นฐานเพียงอย่างเดียว แต่ต้องปลอดภัย


Apache Hardeningในเว็บไซต์น้องสาว
Marcin

คำตอบ:


13

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

ลองใช้ Bastille มันเป็นชุดของสคริปต์ที่ใช้แนวทางปฏิบัติที่ดีที่สุดใน Linux

อย่าส่งข้อมูลการตรวจสอบสิทธิ์ผ่านโปรโตคอลธรรมดา ตัวอย่างเช่นปิดการใช้งาน FTP หากคุณส่งข้อมูลการตรวจสอบสิทธิ์ผ่าน Apache ให้ใช้ SSL

ปิดการใช้งานและลบซอฟต์แวร์ที่ไม่จำเป็นรวมถึงส่วนต่อประสาน GUI

ตรวจสอบไฟล์ใด ๆ ด้วยบิต SUID ที่ตั้งค่าและลบ (สิ่งนี้จะจำกัดความสามารถที่ไม่ใช่รูทอย่างรุนแรงเข้าใจความหมายของการเปลี่ยนแปลงแต่ละอย่าง)

ตรวจสอบไดเรกทอรีสาธารณะที่เขียนได้และลบบิตที่เขียนได้ (ปล่อย / tmp เพียงอย่างเดียว)

หลีกเลี่ยงการรัน daemon ใด ๆ ในฐานะรูท

วิจัยซอฟต์แวร์หลายผู้ใช้ทั้งหมดที่ฟังซ็อกเก็ตอย่างละเอียดเพื่อความปลอดภัย

การหลีกเลี่ยงการเพิ่มผู้ใช้ในระบบเป็นหนึ่งในแนวทางที่ดีที่สุด ระบบผู้ใช้หลายคนต้องการความใส่ใจในรายละเอียด

บังคับใช้มาตรฐานรหัสผ่าน ตัวอย่างเช่น: อักขระขั้นต่ำ 10 ตัวอักขระที่ไม่ใช่ตัวอักษรและตัวเลขโดยใช้ตัวอักษรและตัวเลข นี่คือการทำให้เดรัจฉานบังคับให้ยากขึ้นในกรณีของการประนีประนอมไฟล์รหัสผ่าน บังคับใช้สิ่งนี้ผ่านระบบ

ล็อคผู้ใช้หลังจากพยายามรับรองความถูกต้องล้มเหลว 5 ครั้งด้วยการล็อคขั้นต่ำ 10 นาที รักษาประวัติรหัสผ่านเพื่อให้ผู้ใช้ไม่สามารถใช้รหัสผ่าน 5 ที่ผ่านมา

หากคุณมีสภาพแวดล้อมที่ใหญ่กว่าการใช้การแยกเครือข่ายด้วยซับเน็ตหลายเครือข่ายเพื่อแยกความเสี่ยงเป็นข้อกำหนดที่แน่นอน หากสภาพแวดล้อมขนาดเล็กแนะนำให้ใช้ไฟร์วอลล์บนระบบภายในเพื่อ จำกัด การเปิดรับแสง ตัวอย่างเช่นอนุญาต SSH กับ IP ของคุณเท่านั้น tcpwrappers สามารถใช้กับเลเยอร์พิเศษได้อีกด้วย (/etc/hosts.allow, /etc/hosts.deny)

และแน่นอนทำให้ซอฟต์แวร์ทั้งหมดทันสมัย โดยเฉพาะอย่างยิ่งหันหน้าไปทางสาธารณะ

ด้วย SSH:

  • ปิดใช้งานโปรโตคอล SSH 1
  • อนุญาตการตรวจสอบสิทธิ์รูทwithout-passwordเท่านั้น (คีย์แพร์เท่านั้น)

ด้วย Apache:

  • ปิดการใช้งานโมดูลใด ๆ ที่ไม่จำเป็น
  • ปิดใช้งาน. htaccess และไดเรกทอรีสาธารณะ
  • ปิดใช้งาน FollowSymlink และตัวเลือกที่ไม่จำเป็น
  • อย่าติดตั้ง PHP หากคุณไม่ต้องการ

ด้วย MySQL:

  • ปิดการใช้งานผู้ใช้เริ่มต้น
  • อย่าใช้โฮสต์สัญลักษณ์แทน
  • อย่าลืมตั้งค่าโฮสต์ที่ไม่ซ้ำกันสำหรับผู้ใช้ทุกคน
  • อย่าฟัง tcp เว้นแต่จำเป็น (หลีกเลี่ยงไม่ได้อย่างผิดปกติ)
  • จำกัด สิทธิ์ผู้ใช้แอปพลิเคชันให้มากที่สุด (SELECT, INSERT, UPDATE, DELETE เหมาะสำหรับการเขียนและ SELECT เพื่ออ่าน)

ฉันขอแนะนำให้ทำการค้นคว้า php.ini การปรับแต่งเพื่อความปลอดภัยโดยเฉพาะ เป็นซอฟต์แวร์ที่มีความเสี่ยงตามค่าเริ่มต้น

Bastille


ฉันจะแนะนำให้อ่านcyberciti.biz/tips/php-security-best-practices-tutorial.htmlสำหรับ php tunning
ALex_hha

2

นี่เป็นบทความที่ดีที่คุณสามารถใช้เป็นฐานสำหรับการตั้งค่าของคุณและเปลี่ยนแปลงตามการแจกจ่ายของคุณ: http://it.toolbox.com/blogs/rayheffer/how-to-build-a-secure-lamp-web- เซิร์ฟเวอร์ที่มี CentOS-5-36786


แต่โดยทั่วไปอย่าโหลดโมดูลที่คุณไม่ต้องการอย่างชัดเจนซ่อนหมายเลขรุ่นทั้งหมดและหน้าแก้ไขข้อบกพร่อง / ข้อมูลสร้างผู้ใช้ mysql สำหรับแต่ละแอปพลิเคชันด้วยรหัสผ่านที่แข็งตัวให้คนทำงานบนเซิร์ฟเวอร์ของคุณโดยใช้บัญชีผู้ใช้ปกติ หากพวกเขาต้องการการอนุญาตรูทใช้ไฟร์วอลล์เช่น iptables และเปิดพอร์ตตามสิ่งที่คุณต้องการอย่างแท้จริงที่จะเข้ามาในกล่องของคุณ ... นั่นบวกกับแพทช์ล่าสุดจะให้การตั้งค่าที่ปลอดภัยแล้ว
Alexandre Nizoux

บทความนี้ไม่ดี ปิดการใช้งาน selinux ไม่มีอะไรเกี่ยวกับการชุบแข็ง mysql, การปิดการใช้งานโมดูล Apache ที่ไม่จำเป็น ...
sumar

0

หน่วยงานรักษาความปลอดภัยข้อมูลกลาโหมมีชุดของรายการตรวจสอบการรักษาความปลอดภัยที่มีสถานที่ที่ดีที่จะเริ่มต้น ยิ่งไปกว่านั้นคือการเข้าใจเหตุผลสำหรับแต่ละรายการ แต่นั่นไม่ใช่คำตอบที่รวดเร็ว ฉันอยากจะแนะนำให้คุณดูที่ Enclave, Network, Unix และ Web Server STIG s

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