มีคำขอบันทึก Apache เมื่อเข้ามาแทนที่เมื่อเสร็จสิ้น


9

ฉันพยายามวินิจฉัยปัญหาเซิร์ฟเวอร์ล่ม ( เซิร์ฟเวอร์ตอบสนองต่อการปิง แต่จะไม่ยอมรับการเชื่อมต่อ SSH จนกว่าจะรีบูต 0% CPU ) ซึ่งการรีบูตเซิร์ฟเวอร์ทำให้ทุกอย่างกลับมาเป็นปกติ ฉันต้องการให้บันทึกการเข้าถึง Apache ของฉัน (หรือบันทึกอื่น ๆ ) รวมคำขอทั้งหมดที่ได้ทำไว้เนื่องจากความผิดพลาดเกิดขึ้น แต่น่าเสียดายที่ Apache ไม่ได้บันทึกคำขอจนกว่าจะเสร็จสมบูรณ์ หมายความว่าหากคำขอขัดข้องเซิร์ฟเวอร์คำขอนั้นจะไม่เสร็จสิ้นดังนั้นจึงไม่แสดงในบันทึก

มีวิธีการกำหนดค่า Apache เพื่อสร้างล็อกไฟล์ที่เขียนไปเมื่อคำขอมาถึงหรือไม่?


ลองดูที่การกำหนดค่า DNS ของคุณเช่นกันเซิร์ฟเวอร์ DNS ที่หยุดทำงานหรือหยุดทำงานอาจทำให้เกิดปัญหาทุกอย่างกับ SSH และไม่สามารถเข้าสู่ระบบได้ [ใครจะรู้ว่าต้องทำอะไรกับ apache - ตรวจสอบให้แน่ใจว่าชื่อโฮสต์ปิดอยู่]
ฌอนคิมบอลล์

คำตอบ:


15

ฉันคิดว่าสิ่งที่คุณต้องการสำหรับการบันทึกทางนิติเวชดูลิงค์นี้: http://httpd.apache.org/docs/current/mod/mod_log_forensic.html

ข้อมูลโค้ด:

รูปแบบบันทึกทางนิติวิทยาศาสตร์:

คำขอแต่ละรายการจะถูกบันทึกสองครั้ง ครั้งแรกก่อนที่จะดำเนินการต่อไป (นั่นคือหลังจากได้รับส่วนหัว) รายการบันทึกที่สองจะถูกเขียนหลังจากการประมวลผลคำขอในเวลาเดียวกันที่เกิดการบันทึกปกติ

เพื่อระบุแต่ละคำขอจะมีการกำหนด ID คำขอที่ไม่ซ้ำกัน ID นิติวิทยาศาสตร์นี้สามารถข้ามได้ในบันทึกการถ่ายโอนปกติโดยใช้สตริงรูปแบบ% {forensic-id} n n หากคุณใช้ mod_unique_id ระบบจะใช้ ID ที่สร้างขึ้น

บรรทัดแรกจะบันทึก ID ทางนิติเวชบรรทัดคำขอและส่วนหัวที่ได้รับทั้งหมดคั่นด้วยอักขระไพพ์ (|) บรรทัดตัวอย่างมีลักษณะดังต่อไปนี้ (ทั้งหมดในหนึ่งบรรทัด):

+ yQtJf8CoAB4AAFNXBIEAAAAA | GET / manual/de/images/down.gif HTTP / 1.1 | โฮสต์: localhost% 3a8080 | ตัวแทนผู้ใช้: Mozilla / 5.0 (X11; U; Linux i686; en-US; rv% 3a1.6) / 20040216 Firefox / 0.8 | ยอมรับ: รูปภาพ / png, ฯลฯ ...

อักขระเครื่องหมายบวกที่จุดเริ่มต้นบ่งชี้ว่านี่เป็นบรรทัดบันทึกแรกของคำขอนี้ บรรทัดที่สองมีอักขระลบและ ID อีกครั้ง:

-yQtJf8CoAB4AAFNXBIEAAAAA

สคริปต์ check_forensic ใช้เป็นอาร์กิวเมนต์ชื่อของ logfile มันจะค้นหาคู่ +/- ID เหล่านั้นและบ่นว่าคำขอไม่เสร็จสมบูรณ์


นี่คือสิ่งที่ฉันกำลังมองหา แต่มันดูไม่เหมือนฉันสามารถลบบันทึกนี้เป็นระยะ ๆ (rm /var/log/apache2/forensic.log ทุกชั่วโมง) หรือการบันทึกทางนิติเวชจะหยุดจนกว่าฉันจะเริ่มต้น apache ใหม่ ไอเดีย?
เบ็นดิลต์

แน่นอนถ้าคุณ rm บันทึก apache ใด ๆ ที่จะเกิดขึ้น ลองใช้ logrotate หรือสิ่งที่เทียบเท่าในสภาพแวดล้อมของคุณเพื่อย้อนบันทึกเป็นระยะ (เวลาหรือขนาดฉลาด) หากไม่ใช่แทนที่จะลบให้ลองย้ายไฟล์จากนั้นแตะ /var/log/apache2/forensic.log (ตรวจสอบการอนุญาตแม้ว่า)
sandroid

2

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

หากคุณมั่นใจได้ว่าเครื่องที่รันการจับภาพนั้นมีฮาร์ดแวร์เครือข่ายและ / หรือไดรเวอร์ที่แตกต่างจากที่อื่น จะดูดเพื่อชนสองสำหรับราคาหนึ่ง ;-)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.