คู่มือ Apache Security Configurations สำหรับ PHP
คู่มือนี้เรียบเรียงสำหรับ Ruk-Com PaaS หน้าจอและตัวเลือกอาจแตกต่างตามเวอร์ชันและสิทธิ์ของบัญชี
ตรวจสอบ Environment, Region, สิทธิ์บัญชี และสำรองค่าปัจจุบันก่อนดำเนินการกับระบบจริง
คำสั่ง ชื่อเมนู พารามิเตอร์ และค่าตัวอย่างในกรอบ Code คงรูปแบบตามระบบเพื่อให้คัดลอกและตรวจสอบได้ถูกต้อง
ในบทช่วยสอนนี้เราจะแสดงวิธีตั้งค่าการกำหนดค่าความปลอดภัยเพิ่มเติมสำหรับแอปพลิเคชัน PHP ของคุณที่โฮสต์กับแอปพลิเคชันเซิร์ฟเวอร์ Apache
มีสองวิธีในการตั้งค่าการกำหนดค่าความปลอดภัยหลักของคุณ:
- ทำการเปลี่ยนแปลงในไฟล์กำหนดค่าหลักของ Apache (httpd.conf)
- สร้างความพิเศษ.htaccessซึ่งมีคำสั่งการกำหนดค่าตั้งแต่หนึ่งคำสั่งขึ้นไปและวางไว้ภายในไดเร็กทอรีแอปพลิเคชันของคุณ
คำสั่งสามารถแทนที่ชุดย่อยของการกำหนดค่าส่วนกลางของเซิร์ฟเวอร์สำหรับไดเร็กทอรีนั้นและไดเร็กทอรีย่อยทั้งหมดได้สิ่งที่คุณสามารถใส่ลงในไฟล์นี้ได้ถูกกำหนดโดยคำสั่ง AllowOverride
อนุญาตแทนที่ใช้ได้เฉพาะใน < directory > ส่วนที่ระบุโดยไม่มีนิพจน์ทั่วไปเมื่อคำสั่งนี้ถูกตั้งค่าเป็นไม่มี -.htaccessไฟล์จะถูกละเว้นโดยสิ้นเชิงเมื่อคำสั่งนี้ถูกตั้งค่าเป็นทั้งหมดดังนั้นคำสั่งใดๆที่มี.htaccessอนุญาตให้ใช้บริบทใน.htaccessไฟล์.
มาตรวจสอบการกำหนดค่าความปลอดภัยทุกประเภทที่คุณสามารถใช้ได้เพื่อปกป้องแอปพลิเคชันของคุณ:
- การรับรองความถูกต้อง
- การกำหนดเกณฑ์การเข้าถึง
- การกำหนดค่าโมดูล mod_security
- การซ่อนเวอร์ชันเซิร์ฟเวอร์
การตั้งค่าคำขอการรับรองความถูกต้อง
เพื่อตั้งค่าการรับรองความถูกต้องให้กับ Apache ของคุณแอปพลิเคชันหรือเพียงแค่แยกกไดเรกทอรีใน Application ของคุณให้ทำตามขั้นตอนต่อไปนี้
-
สร้างแฮชจากรหัสผ่านของคุณเพื่อที่คุณสามารถใช้อะไรก็ได้เครื่องมือ htpasswdหรือบริการออนไลน์ (เช่นhttps://www.web2generators.com/apache-tools/htpasswd-generator).
-
สร้างไฟล์ข้อความอย่างง่ายด้วยแฮชที่สร้างไว้ก่อนหน้านี้
-
คลิกการกำหนดค่าปุ่มสำหรับเซิร์ฟเวอร์ของคุณ
-
อัพโหลดไฟล์ที่สร้างขึ้นไปที่/var/www/webroot/ROOTโฟลเดอร์
-
ใน/etc/httpd/confโฟลเดอร์เปิดอยู่httpd.confไฟล์ (หรือ.htaccessหากคุณใช้) ให้ดำเนินการกำหนดค่าต่อไปนี้:
- การรับรองความถูกต้องสำหรับแอปพลิเคชันทั้งหมด- เพิ่มสตริงต่อไปนี้ในไดเรกทอรีดังแสดงในภาพด้านล่าง:
สำเนา
AuthName "Restricted area"
AuthType Basic
AuthBasicProvider file
AuthUserFile /var/www/webroot/ROOT/.htpasswd
Require valid-user
*การรับรองความถูกต้องสำหรับไดเร็กทอรีแยกต่างหาก- เพิ่มสิ่งต่อไปนี้ที่ตั้งสตริงที่ระบุเส้นทางไปยังไดเร็กทอรีที่ต้องการ:
สำเนา
<Location /directory_path>
AuthName "Restricted area"
AuthType Basic
AuthBasicProvider file
AuthUserFile /var/www/webroot/ROOT/.htpasswd
Require valid-user
</Location>
6. บันทึกการเปลี่ยนแปลงและรีสตาร์ทเซิร์ฟเวอร์อาปาเช่
บันทึก:ถ้าคุณใช้httpd.confไฟล์สำหรับตั้งค่าการกำหนดค่าความปลอดภัยคุณจะต้องรีสตาร์ท Apache หลังจากทำการเปลี่ยนแปลงการกำหนดค่าทุกครั้งในกรณีของ.htaccessการใช้ไฟล์การเปลี่ยนแปลงที่ทำในไฟล์เหล่านี้จะมีผลทันทีเนื่องจากไฟล์เหล่านี้จะถูกอ่านในทุกคำขอ
ด้วยเหตุนี้ขณะเข้าถึงแอปพลิเคชันหรือไดเร็กทอรีที่ได้รับการป้องกันผู้ใช้จะถูกขอให้ตรวจสอบสิทธิ์
การรักษาความปลอดภัยผ่านการกำหนดเกณฑ์
คุณสามารถรักษาความปลอดภัยให้กับแอปพลิเคชันของคุณผ่านการตั้งค่าการควบคุมการเข้าถึงส่วนใดส่วนหนึ่งของเซิร์ฟเวอร์ของคุณตามเกณฑ์เฉพาะ (เช่นชื่อโฮสต์ของไคลเอ็นต์หรือที่อยู่ IP)
การกำหนดค่าที่จำเป็นสามารถนำไปใช้ได้ด้วยความช่วยเหลือของจำเป็นต้องคำสั่งและเพื่อกำหนดนโยบายการเข้าถึงที่ซับซ้อนมากขึ้นสามารถใช้ร่วมกับ:
- ต้องการทั้งหมด- ชุดคำสั่งการอนุญาตซึ่งต้องไม่มีสิ่งใดล้มเหลวและอย่างน้อยก็มีหนึ่งคำสั่งที่จะสำเร็จ
- ต้องการใดๆ- ชุดคำสั่งการอนุญาตโดยที่ต้องมีอย่างน้อยหนึ่งรายการสำเร็จ
- จำเป็นต้องมีไม่มี- ชุดคำสั่งการอนุญาตโดยที่ไม่มีใครต้องสำเร็จ
นำทางไปยัง/etc/httpd/confโฟลเดอร์และเปิดไฟล์httpd.confไฟล์ (หรือ.htaccessหนึ่งรายการโดยตรงในไดเร็กทอรีเป้าหมาย)
- ในการตั้งค่าเกณฑ์การเข้าถึงตาม IP เพียงเพิ่มคำสั่งที่จำเป็นลงในไดเรกทอรีส่วน.
2. ตามตัวอย่างที่ซับซ้อนมากขึ้นคุณสามารถกำหนดค่านโยบายการเข้าถึงได้หลายเงื่อนไข (เช่นผ่านต้องการทั้งหมดdirective) และสำหรับโฟลเดอร์เซิร์ฟเวอร์เฉพาะ (เพียงเปลี่ยนส่วนที่ขีดเส้นใต้ในภาพด้านล่าง)
3. อย่าลืมบันทึกการเปลี่ยนแปลงและรีสตาร์ทเซิร์ฟเวอร์ Apache ของคุณเพื่อใช้การเปลี่ยนแปลง
บันทึก:การปฏิเสธการเข้าถึงผ่าน IP จะสมเหตุสมผลก็ต่อเมื่อคุณใช้ไอพีสาธารณะคุณสมบัติ.
การกำหนดค่าโมดูล mod_security
mod_securityเป็นโมดูล Apache ที่มีประโยชน์อย่างยิ่งซึ่งมีความสามารถต่างๆเช่นการกรองอย่างง่าย, การตรวจสอบการเข้ารหัส URL และ Unicode, การตรวจสอบ, การป้องกันการโจมตีด้วยไบต์ null, การจำกัดหน่วยความจำในการอัปโหลด, การปกปิดข้อมูลระบุตัวตนของเซิร์ฟเวอร์, การรองรับ chroot ในตัวและอื่นๆอีกมากมาย
โมดูลนี้มีอยู่ในแพลตฟอร์มตามค่าเริ่มต้นและสามารถกำหนดค่าได้ผ่านทาง/etc/httpd/conf.d/mod_security.confไฟล์.
ที่นี่คุณสามารถแก้ไขการกำหนดค่าเริ่มต้นหรือเพิ่มการกำหนดค่าของคุณเองได้
ตัวอย่างเช่นคุณสามารถเพิ่มบางอย่างพิเศษได้กฎความปลอดภัยของ Modโดยการอัพโหลดไปที่/etc/httpd/modsecurity.dโฟลเดอร์ (เช่นmodsecurity_crs_11_brute_force.conf).
กฎเกณฑ์ที่อัปโหลดไปที่modsecurity.dหรือเพื่อเปิดใช้งาน_กฎโฟลเดอร์จะถูกเปิดใช้งานโดยอัตโนมัติโดยไม่มีการตั้งค่าเพิ่มเติมใดๆสิ่งนี้ได้รับการกำหนดค่าโดยพารามิเตอร์เริ่มต้นต่อไปนี้ใน/etc/httpd/conf.d/mod_security.confไฟล์:
สำเนา
Include modsecurity.d/*.conf
Include modsecurity.d/activated_rules/*.conf
ซ่อนเวอร์ชันเซิร์ฟเวอร์ Apache
โดยปกติแล้วด้วยการกำหนดค่าเริ่มต้นเวอร์ชันเซิร์ฟเวอร์ Apache จะแสดงต่อสาธารณะด้วยเหตุนี้ข้อมูลเกี่ยวกับเวอร์ชันของ Apache และระบบปฏิบัติการ/เวอร์ชันหรือแม้แต่รายละเอียดเกี่ยวกับโมดูล Apache ที่ติดตั้งไว้ก็สามารถนำมาใช้ในการโจมตีได้
เพื่อหลีกเลี่ยงปัญหานี้แพลตฟอร์มจะเพิ่มการกำหนดค่าต่อไปนี้ให้กับคุณโดยอัตโนมัติhttpd.confไฟล์:
- ปิดลายเซ็นเซิร์ฟเวอร์- แสดงหน้า 404 แทนรายการไดเรกทอรีและหน้าอื่นๆที่สร้างโดย Apache
- ผลิตภัณฑ์ ServerTokens- กำหนดส่วนหัวการตอบสนอง Apache Server HTTP กับแยงค่าส่วนหัวการตอบสนอง HTTP จะเป็นดังนี้ -เซิร์ฟเวอร์: อาปาเช่
