วิธีการลบเซิร์ฟเวอร์: ส่วนหัวจากการตอบสนอง HTTP กับ Apache?


20

ฉันต้องการลบบรรทัด:

Server: Apache/2.2.8 (Ubuntu) PHP/5.2.4-2ubuntu5.6 with Suhosin-Patch mod_ssl/2.2.8 OpenSSL/0.9.8g

จากการตอบกลับ HTTP ของเซิร์ฟเวอร์ของฉัน แต่ฉันไม่พบสิ่งใดนอกจากการแก้ไขinclude/ap_release.hและคอมไพล์ Apache ด้วยตนเอง ฉันสงสัยว่ามีวิธีที่ฉันไม่รู้หรือไม่?

คำตอบ:


16

คุณสามารถลบหรือหน้ากากประจำตัวเซิร์ฟเวอร์จาก Http หัวโดยใช้โอเพนซอร์สไฟร์วอลล์โปรแกรมเว็บ ModSecurity

การปิดบังตัวตนของเซิร์ฟเวอร์

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

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

SecServerSignature คำสั่ง:

SecServerSignature "Microsoft-IIS/5.0"

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

หากคุณเปลี่ยนลายเซ็น Apache แต่คุณรู้สึกรำคาญกับข้อความแปลก ๆ ในบันทึกข้อผิดพลาด (บางโมดูลยังคงมองเห็นได้ - นี่จะมีผลเฉพาะกับบันทึกข้อผิดพลาดเท่านั้นจากภายนอกก็ยังทำงานได้ตามปกติ):

[Fri Jun 11 04:02:28 2004] [notice] Microsoft-IIS/5.0 mod_ssl/2.8.12 OpenSSL/0.9.6b \ configured -- resuming normal operations

จากนั้นคุณควรจัดเรียงลำดับการโหลดโมดูลใหม่เพื่อให้ mod_security สามารถทำงานได้ครั้งสุดท้ายตามที่อธิบายไว้สำหรับ chrooting

บันทึก

เพื่อให้คำสั่งนี้ทำงานคุณต้องออกจาก / ตั้ง ServerTokens เป็นเต็ม

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

ที่มา: คู่มืออ้างอิง ModSecurity


มันกำลังทำงานอยู่ในขณะนี้ แต่ฉันคิดว่ามันไม่ฉลาดที่จะใช้ชื่อเซิร์ฟเวอร์อื่นที่มีอยู่เพราะคุณสามารถกระตุ้นการโจมตีได้
Codebeat

27

หากคุณตั้งค่าServerTokensเป็น " Prod" คุณสามารถลดส่วนหัวเป็น " Server: Apache" ดูเอกสารประกอบสำหรับรายการตัวเลือกทั้งหมด:

เอกสารประกอบสำหรับ Apache 2.2

เอกสารประกอบสำหรับ Apache 2.4

หมายเหตุ:การตั้งค่าเหมือนกันในทั้งสองเวอร์ชันอย่างไรก็ตามเอกสาร 2.4 เพิ่มหมายเหตุนี้:

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

หากคุณต้องการลบคำว่า "Apache" ทั้งหมดคุณจะต้องแก้ไขแหล่งที่มา


+1 tnx สำหรับการตอบกลับฉันลืมที่จะพูดถึงคำถามที่ฉันรู้เรื่องนี้ แต่ฉันต้องการให้มันพูดว่า Microsoft IIS หรือบางสิ่งบางอย่าง ฉันควรทำให้ชัดเจน
Neo
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.