ฉันมีเซิร์ฟเวอร์ที่มี apache และฉันเพิ่งติดตั้ง mod_security2 เพราะฉันถูกโจมตีมากจากสิ่งนี้:
รุ่น apache ของฉันคือ apache v2.2.3 และฉันใช้ mod_security2.c
นี่คือรายการจากบันทึกข้อผิดพลาด:
[Wed Mar 24 02:35:41 2010] [error]
[client 88.191.109.38] client sent HTTP/1.1 request without hostname
(see RFC2616 section 14.23): /w00tw00t.at.ISC.SANS.DFind:)
[Wed Mar 24 02:47:31 2010] [error]
[client 202.75.211.90] client sent HTTP/1.1 request without hostname
(see RFC2616 section 14.23): /w00tw00t.at.ISC.SANS.DFind:)
[Wed Mar 24 02:47:49 2010] [error]
[client 95.228.153.177] client sent HTTP/1.1 request without hostname
(see RFC2616 section 14.23): /w00tw00t.at.ISC.SANS.DFind:)
[Wed Mar 24 02:48:03 2010] [error]
[client 88.191.109.38] client sent HTTP/1.1 request without hostname
(see RFC2616 section 14.23): /w00tw00t.at.ISC.SANS.DFind:)
นี่คือข้อผิดพลาดจาก access_log:
202.75.211.90 - -
[29/Mar/2010:10:43:15 +0200]
"GET /w00tw00t.at.ISC.SANS.DFind:) HTTP/1.1" 400 392 "-" "-"
211.155.228.169 - -
[29/Mar/2010:11:40:41 +0200]
"GET /w00tw00t.at.ISC.SANS.DFind:) HTTP/1.1" 400 392 "-" "-"
211.155.228.169 - -
[29/Mar/2010:12:37:19 +0200]
"GET /w00tw00t.at.ISC.SANS.DFind:) HTTP/1.1" 400 392 "-" "-"
ฉันพยายามกำหนดค่า mod_security2 เช่นนี้:
SecFilterSelective REQUEST_URI "w00tw00t\.at\.ISC\.SANS\.DFind"
SecFilterSelective REQUEST_URI "\w00tw00t\.at\.ISC\.SANS"
SecFilterSelective REQUEST_URI "w00tw00t\.at\.ISC\.SANS"
SecFilterSelective REQUEST_URI "w00tw00t\.at\.ISC\.SANS\.DFind:"
SecFilterSelective REQUEST_URI "w00tw00t\.at\.ISC\.SANS\.DFind:\)"
สิ่งที่อยู่ใน mod_security2 คือ SecFilterSelective ไม่สามารถใช้ได้มันทำให้ฉันมีข้อผิดพลาด แต่ฉันใช้กฎเช่นนี้
SecRule REQUEST_URI "w00tw00t\.at\.ISC\.SANS\.DFind"
SecRule REQUEST_URI "\w00tw00t\.at\.ISC\.SANS"
SecRule REQUEST_URI "w00tw00t\.at\.ISC\.SANS"
SecRule REQUEST_URI "w00tw00t\.at\.ISC\.SANS\.DFind:"
SecRule REQUEST_URI "w00tw00t\.at\.ISC\.SANS\.DFind:\)"
แม้แต่สิ่งนี้ก็ใช้ไม่ได้ ฉันไม่รู้จะทำอะไรอีก ใครมีคำแนะนำบ้าง?
อัปเดต 1
ฉันเห็นว่าไม่มีใครสามารถแก้ปัญหานี้ได้โดยใช้ mod_security ถึงตอนนี้การใช้ ip-tables ดูเหมือนจะเป็นทางเลือกที่ดีที่สุด แต่ฉันคิดว่าไฟล์จะมีขนาดใหญ่มากเพราะ ip เปลี่ยน serveral วันละครั้ง
ฉันคิดหาวิธีแก้ปัญหาอื่นอีก 2 ข้อใครสามารถแสดงความคิดเห็นกับพวกเขาเกี่ยวกับความดีหรือไม่
ทางออกแรกที่อยู่ในใจของฉันคือการยกเว้นการโจมตีเหล่านี้จากบันทึกข้อผิดพลาด apache ของฉัน สิ่งนี้จะทำให้ง่ายขึ้นสำหรับฉันที่จะเห็นข้อผิดพลาดเร่งด่วนอื่น ๆ เมื่อเกิดขึ้นและไม่ต้องถุยบันทึกยาว ๆ
ตัวเลือกที่สองดีกว่าที่ฉันคิดและนั่นคือการปิดกั้นโฮสต์ที่ไม่ได้ส่งไปในทางที่ถูกต้อง ในตัวอย่างนี้การโจมตี w00tw00t ถูกส่งโดยไม่มีชื่อโฮสต์ดังนั้นฉันคิดว่าฉันสามารถบล็อกโฮสต์ที่ไม่ได้อยู่ในรูปแบบที่ถูกต้อง
อัปเดต 2
หลังจากไปรับคำตอบฉันมาถึงบทสรุปต่อไปนี้
การมีการบันทึกแบบกำหนดเองสำหรับ apache จะใช้การกู้คืนที่ไม่จำเป็นและหากมีปัญหาจริงๆคุณอาจต้องการดูบันทึกแบบเต็มโดยไม่มีสิ่งใดขาดหายไป
มันเป็นการดีกว่าที่จะเพิกเฉยต่อเพลงฮิตและจดจ่อกับวิธีที่ดีกว่าในการวิเคราะห์บันทึกข้อผิดพลาดของคุณ การใช้ตัวกรองสำหรับบันทึกของคุณเป็นวิธีที่ดีสำหรับสิ่งนี้
ความคิดสุดท้ายเกี่ยวกับเรื่อง
การโจมตีดังกล่าวข้างต้นจะไม่สามารถเข้าถึงเครื่องของคุณได้หากอย่างน้อยคุณมีระบบที่ทันสมัยดังนั้นจึงไม่ต้องกังวล
อาจเป็นการยากที่จะกรองการโจมตีปลอมทั้งหมดจากของจริงหลังจากผ่านไประยะหนึ่งเนื่องจากทั้งบันทึกข้อผิดพลาดและบันทึกการเข้าถึงมีขนาดใหญ่มาก
การป้องกันสิ่งนี้ไม่ให้เกิดขึ้นในทางใดทางหนึ่งจะทำให้คุณเสียค่าใช้จ่ายและเป็นแนวปฏิบัติที่ดีที่จะไม่ทำให้ทรัพยากรของคุณสูญเสียสิ่งที่ไม่สำคัญ
วิธีการแก้ปัญหาที่ผมใช้ตอนนี้เป็นลินุกซ์ logwatch มันส่งข้อมูลสรุปของบันทึกให้ฉันและมีการกรองและจัดกลุ่ม วิธีนี้คุณสามารถแยกความสำคัญจากสิ่งที่ไม่สำคัญได้อย่างง่ายดาย
ขอบคุณสำหรับความช่วยเหลือและฉันหวังว่าโพสต์นี้จะเป็นประโยชน์กับคนอื่นเช่นกัน