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?

 Print this Article

Also Read

รวบรวมคำสั่งที่จำเป็นสำหรับ Admin ใน CentOS

รวบรวมคำสั่งที่จำเป็นสำหรับ Admin ใน CentOSคำสั่ง ls : : : แสดงรายชื่อแฟ้มในห้องปัจจุบัน...

วิธีตรวจสอบว่า Server โดนโจมตีหรือไม่ ?

การตรวจสอบว่าเราถูกยิงหรือไม่ผ่านคำสั่ง netstat   หลายๆ คนคงรู้วิธีใช้งาน netstat...

ป้องกันการโดนโจมตีเครื่องเซิร์ฟเวอร์ด้วย iptables

ป้องกันการโดนโจมตีเครื่องเซิร์ฟเวอร์ด้วย iptables PTABLES เป็น Firewall พื้นฐานของ Linux...

การตังค่าวันเวลา Date/Time สำหรับ CentOS

การตั้งค่าวันเวลา Date/Time สำหรับ CentOS ได้ด้วยคำสั่งต่อไปนี้ rm /etc/localtimeln -s...

การ Update DirectAdmin แบบ Manual

ใน กรณีที่ท่านไม่สามารถอัพเดต DirectAdmin ผ่านหน้า Control Panel ได้...

Powered by WHMCompleteSolution