Apache vulnerable configuration
Apache vulnerable configuration
Apache มี configuration file คือ apache2.conf (ใน Ubuntu/Debien) และ httpd.conf (RedHat/CentOS)ซึ่งการตั้งค่าต่อไปนี้ไม่เหมาะสม อาจเป็นช่องโหว่ของระบบได้ (กรุณาอ่านข้อมูลจาก Apache Core Features)
- Timeout
จำนวนวินาที (Second) ที่ Apache รอเหตุการณ์ ได้แก่ GET Request, TCP Packet หรือ ACKs on transmission
หากตั้งค่าไม่เหมาะสม กล่าวคือสูงเกินไป อาจเป็นเหตุให้ดูโจมตีแบบ Denial of Service Attacks ได้ค่าที่เหมาะสมคือ Timeout 300
- KeepAlive
ตั้งค่าให้ Apache คง HTTP Session เอาไว้เป็นระยะเวลา KeepAliveTimeout วินาที ซึ่งการตั้งค่า KeepAlive ON
จะทำให้ความเร็วการเรียกข้อมูล HTTL ที่มีรูปภาพมากๆได้ดียิ่งขึ้น, แต่จะไม่มีผลต่อ CGI หรือ Dynamic Contents
ค่าที่ควรเป็น คือ KeepAlive On
- KeepAliveTimeout
จำนวนวินาที (Second) ที่ Apache จะคง Connection เอาไว้ก่อนจะปิดลงเมื่อไม่มีการตอบสนองจาก client
หากตั้งค่าไว้สูงเกินไปจะกระทบกับสมรรถนะของระบบได้ อาจเป็นเหตุให้ดูโจมตีแบบ Denial of Service Attacks ได้
ค่าที่ควรเป็น <= 15
- StartServers
จำนวน Child Server Process ที่สร้างขึ้นเมื่อระบบเริ่มต้น
หากตั้งค่าไว้สูงเกินไปจะกระทบกับสมรรถนะของระบบได้ อาจเป็นเหตุให้ดูโจมตีแบบ Denial of Service Attacks ได้
ค่าที่ควรเป็น อยู่ระหว่าง 5 ถึง 15
- MinSpareServers
จำนวนขั้นต่ำของ Process ที่ว่าง (idle) รอการใช้งาน, การที่ Server ต้องสร้าง Process ใหม่ต้องใช้เวลาดังนั้นการสร้างเผื่อเอาไว้
ทำให้การทำงานเร็วขึ้น
หากตั้งค่าไว้สูงเกินไปจะกระทบกับสมรรถนะของระบบได้ อาจเป็นเหตุให้ดูโจมตีแบบ Denial of Service Attacks ได้
ค่าที่ควรเป็น อยู่ระหว่าง 5 ถึง 15
- MaxSpareServers
จำนวนขั้นสูงของ Process ที่ว่าง (idle) รอการใช้งาน, การที่ Server ต้องสร้าง Process ใหม่ต้องใช้เวลาดังนั้นการสร้างเผื่อเอาไว้
ทำให้การทำงานเร็วขึ้น
หากตั้งค่าไว้สูงเกินไปจะกระทบกับสมรรถนะของระบบได้ อาจเป็นเหตุให้ดูโจมตีแบบ Denial of Service Attacks ได้
ค่าที่ควรเป็น ควรมากกว่า MinSpareServers อยู่ 1 แต่ไม่ควรเกิน 10
- MaxClients
จำนวน Clients สูงสุดที่จะให้บริการพร้อมๆกัน หากการ Request ใดที่เกินกว่า MaxClients จะถูกเข้าคิว โดยคิวจะไม่ยาวเกิน
ListenBackLog Directive
หากตั้งค่าไว้สูงเกินไปจะกระทบกับสมรรถนะของระบบได้ อาจเป็นเหตุให้ดูโจมตีแบบ Denial of Service Attacks ได้
ค่าที่ควรเป็น <=256
- ExecCGI
การกำหนดให้ Directory ใดสามารถทำงานแบบ CGI ได้ และสามารถ Execute ได้
หากมีการกำหนด Directive ดังกล่าวใน Directory ที่มีความเสี่ยงเช่น ผู้ใช้ทั่วไปสามารถนำ Script มาวางได้
โดยไม่ได้รับการตรวจสอบ อาจเป็นช่องโหว่ได้
ค่าที่ควรเป็น : หากเป็น Directory ที่ไม่อนุญาตให้ใช้ CGI ต้องใส่ Option -ExecCGI เพื่อป้องกันการใช้ CGI
- FollowSymLinks
เป็นการกำหนดให้สามารถตาม Symbolic Links ไปได้ใน Directory ที่กำหนด
ซึ่งอาจเป็นช่องโหว่ให้เข้าถึงไฟล์ในที่ที่ไม่ต้องการได้ เช่นทำ Symbolic Link ไปยัง / ได้
ค่าที่ควรเป็น : หากเป็น Directory ที่ไม่อนุญาตให้ใช้ Symbolic Links ต้องใส่ Option -FollowSymLinks
- IncludesNOEXEC
การใช้งาน Server Side Include (SSI) ทำให้สามารถ Include ไฟล์ได้ แต่ไม่สามารถ Execute ได้
หากไม่ควบคุม Directory ที่เปิดให้ Include โดยไม่ห้ามการ Execute อาจเป็นช่องโหว่ให้เข้าถึงไฟล์ในที่ที่ไม่ต้องการได้
ค่าที่ควรเป็น :
- หากกำหนดใน Option เป็น -IncludesNOEXEC หรือ None จะเป็นการปิดการใช้งาน SSI โดยสิ้นเชิง
- หากกำหนดใน Directory ที่ให้ Include ได้ (Options Includes) ต้องกำหนดเพิ่มเติมด้วย Options Includes -IncludesNOEXEC
- นอกจากนั้น ต้องกำหนดเป็น AllowOverride None ทั้งหมด เพื่อป้องกันการ Override
- MultiViews
หากมีการ request มาที่ /some/dir/foo และที่ Directory /some/dir กำหนดให้ใช้ Multiviews (Options Multivitews), Apache จะค้นหา
/some/dir/foo.* โดยจะได้การทำงานเหมือนดังที่ผู้ใช้ร้องขอ เช่น ขอ /some/dir/index.php มา แต่มี index.txt อยู่แต่ไม่มี index.php
ก็จะเอา index.txt ไปทำงานเหมือนเป็น index.php ซึ่งเป็นอันตรายอย่างยิ่ง
ค่าที่ควรเป็นคือ : ไม่ควรใช้ MultiViews หากไม่เข้าใจความเสี่ยง ดังนั้นควรตั้งค่าเป็น Options None
- Indexes
การเรียก URL มาที่ Directory หนึ่ง หากไม่มีการกำหนด DirectoryIndex Directive (เช่น index.html), Apache จะแสดงไฟล์ใน Directory นั้น
ซึ่งเป็นสิ่งที่ไม่ควรเกิดขึ้น
ค่าที่ควรเป็น : ควรกำหนด Options None หรือ Options -Indexes
- LimitRequestBody
ขนาดของ Request Body หน่วยเป็น Byte ซึ่งต้องเพียงพอต่อการส่งข้อมูลของผู้ใช้ ขึ้นกับความต้องการแต่ละที่
หากกำหนดเป็น 0 หมายถึงส่งได้ไม่จำกัด (สูงสุดคือ 2 GB) ซึ่งอาจนำมาซึ่ง Buffer Overflow Attack ได้
ค่าที่ควรเป็น : >=1 และต้องมีการกำหนด เพราะมีค่า Default เป็น 0 (Unlimited)
- LimitRequestFields
จำนวน Fields ของ Request Form ซึ่งต้องเพียงพอต่อการส่งข้อมูลของผู้ใช้ ขึ้นกับความต้องการแต่ละที่
หากกำหนดเป็น 0 หมายถึงส่งได้ไม่จำกัด (สูงสุดคือ 32,767) ซึ่งอาจนำมาซึ่ง Buffer Overflow Attack ได้
ค่าที่ควรเป็น : >=1, ค่า Default เป็น 100
- LimitRequestFieldsize
ขนาดของ Request Fields หน่วยเป็น Byte ซึ่งต้องเพียงพอต่อการส่งข้อมูลของผู้ใช้ ขึ้นกับความต้องการแต่ละที่
หากกำหนดมากเกินไป อาจนำมาซึ่ง Buffer Overflow Attack ได้
ค่าที่ควรเป็น : 8190, ค่า Default เป็น 4094
- LimitRequestLine
จำนวนบรรทัดของ Request Fields ซึ่งต้องเพียงพอต่อการส่งข้อมูลของผู้ใช้ ขึ้นกับความต้องการแต่ละที่
หากกำหนดมากเกินไป อาจนำมาซึ่ง Buffer Overflow Attack ได้
ค่าที่ควรเป็น : 8190, ค่า Default เป็น 4094
ขอบคุณคุณ คณกรณ์ หอศิริธรรม
Was this answer helpful?
Also Read
Powered by WHMCompleteSolution