ฉันกำลังเล่นกับ 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<โฮสต์>