Score:0

สร้างตัวกรองของตัวเองสำหรับความล้มเหลว 2 แบน

ธง kr

ฉันกำลังเล่นกับ fail2ban ใน kubernetes ด้วยเหตุนี้ฉันจึงสร้างพ็อดที่สร้างข้อความบันทึกปลอม: 2021-08-04 18:33:13 การตรวจสอบสิทธิ์ล้มเหลว 15.15.15.15 ฉันสร้างตัวกรองแบบกำหนดเอง เพื่อทดสอบว่า fail2ban ทำงานหรือไม่ ฉันลองใช้งาน fail2ban-regex ครั้งแรกกับไฟล์ที่มีข้อความบันทึกเหล่านี้ 10 บรรทัดและได้ผลลัพธ์นี้:

การทดสอบการทำงาน
=============

ใช้ไฟล์ตัวกรอง failregex : test, basedir: /etc/fail2ban
ใช้ไฟล์บันทึก: /logs.txt
ใช้การเข้ารหัส : UTF-8


ผล
=======

Failregex: ทั้งหมด 10 รายการ
|- #) [# ของการเข้าชม] นิพจน์ทั่วไป
| 1) [10] \sการตรวจสอบสิทธิ์ล้มเหลว\s<โฮสต์>
`-

Ignoreregex: 0 ทั้งหมด

เทมเพลตวันที่เข้าชม:
|- [# ของการเข้าชม] รูปแบบวันที่
| [10] อดีตปี(?P<_sep>[-/.])เดือน(?P=_sep)วัน(?:T| ?)24ชั่วโมง:นาที:วินาที(?:[.,]ไมโครวินาที)?(?:\ s*โซนออฟเซ็ต)?
`-

บรรทัด: 10 บรรทัด 0 ละเว้น 10 ตรงกัน 0 พลาด
[ประมวลผลใน 0.12 วินาที]

แต่เมื่อฉันลองใช้ตัวกรองเดียวกันกับไฟล์ที่มีบันทึกอย่างต่อเนื่อง ฉันได้รับข้อผิดพลาดนี้:

การทดสอบการทำงาน
=============

ใช้ไฟล์ตัวกรอง failregex : test, basedir: /etc/fail2ban
ใช้ไฟล์บันทึก : /logs/kubernetes.logs
ใช้การเข้ารหัส : UTF-8

Traceback (การโทรครั้งล่าสุดล่าสุด):
 ไฟล์ "/usr/bin/fail2ban-regex" บรรทัดที่ 34 ใน <โมดูล>
   exec_command_line()
 ไฟล์ "/usr/lib/python3.8/site-packages/fail2ban/client/fail2banregex.py", บรรทัด 836 ใน exec_command_line
   ถ้าไม่ใช่ fail2banRegex.start(args):
 ไฟล์ "/usr/lib/python3.8/site-packages/fail2ban/client/fail2banregex.py", บรรทัด 776 ในตอนเริ่มต้น
   self.process(test_lines)
 ไฟล์ "/usr/lib/python3.8/site-packages/fail2ban/client/fail2banregex.py", บรรทัด 584 อยู่ระหว่างดำเนินการ
   line_datetimestripped, ret, is_ignored = self.testRegex(บรรทัด)
 ไฟล์ "/usr/lib/python3.8/site-packages/fail2ban/client/fail2banregex.py", บรรทัด 456 ใน testRegex
   พบ = self._filter.processLine (บรรทัด, วันที่)
 ไฟล์ "/usr/lib/python3.8/site-packages/fail2ban/server/filter.py", บรรทัด 613 ใน processLine
   timeMatch = self.dateDetector.matchTime(บรรทัด)
 ไฟล์ "/usr/lib/python3.8/site-packages/fail2ban/server/datedetector.py", บรรทัด 368 ใน matchTime
   (บรรทัด[ระยะทาง] == self.__lastPos[2] และไม่ใช่ self.__lastPos[2].isalnum())
IndexError: ดัชนีสตริงอยู่นอกช่วง

และเมื่อฉันเปิดใช้งานตัวกรองสำหรับ fail2ban ฉันไม่มี ip ที่ถูกแบน ดังนั้นฉันคิดว่าตัวกรองของฉันใช้งานไม่ได้ แต่ฉันไม่พบข้อผิดพลาด

filter.conf:

[คำนิยาม]

failregex = \sการตรวจสอบสิทธิ์ล้มเหลว\s<โฮสต์>
djdomi avatar
za flag
ฉันคิดว่ามันได้รับคำตอบแล้วโดย [Stackoverflow](https://stackoverflow.com/questions/56158596/how-to-use-fail2ban-under-kubernetes)
Score:0
ธง il

นี่เป็นข้อผิดพลาดที่ทราบแล้ว (แก้ไขแล้วระหว่างนั้น) ดู https://github.com/fail2ban/fail2ban/issues/3020

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

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา