Score:0

ช่วยทำตัวกรองfail2ban

ธง mx

ฉันได้ทำการกรองบางอย่างสำหรับ fail2ban ของฉันแล้ว แต่เป็นเพียงสิ่งง่ายๆ เช่น:

[คำนิยาม]
failregex = ^ .* "รับ .*/wp-login.php
ละเว้นregex =

ฉันไม่ได้ใช้ wordpress บนเซิร์ฟเวอร์ของฉัน ดังนั้นฉันจึงบล็อกความพยายามที่เป็นอันตรายได้มากมาย และฉันได้สร้างสิ่งที่คล้ายกันสำหรับ: phpmyadmin, wp-admin, wp-include เป็นต้น

แต่ฉันพบสิ่งแปลก ๆ ใน access.log เช่น:

167.172.145.56 - - [22/Sep/2021:06:44:50 -0700] "GET /wp-login.php HTTP/1.1" 403 9901 "http://cpanel.alebalweb-blog.com/wp-login .php" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"
167.172.145.56 - - [22/Sep/2021:06:44:50 -0700] "GET /wp-login.php HTTP/1.1" 403 9901 "http://mail.alebalweb-blog.com/wp-login .php" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"


61.135.15.175 - - [22/Sep/2021:05:45:24 -0700] "GET / HTTP/1.1" 200 26210 "http://webdisk.alebalweb-blog.com/" "Mozilla/5.0 (Linux; Android 10.0; MI 2 Build/O012) AppleWebKit/537.36 (KHTML เช่น Gecko) Chrome/88.0.4472.114 Mobile Safari/537.36"    
61.135.15.175 - - [22/Sep/2021:05:45:24 -0700] "GET / HTTP/1.1" 200 26210 "http://webmail.alebalweb-blog.com/" "Mozilla/5.0 (Linux; Android 10.0; MI 2 Build/O012) AppleWebKit/537.36 (KHTML เช่น Gecko) Chrome/88.0.4472.114 Mobile Safari/537.36"    
61.135.15.175 - - [22/Sep/2021:05:45:24 -0700] "GET / HTTP/1.1" 200 26210 "http://cpcalendars.alebalweb-blog.com/" "Mozilla/5.0 (Linux; Android 10.0; MI 2 Build/O012) AppleWebKit/537.36 (KHTML เช่น Gecko) Chrome/88.0.4472.114 Mobile Safari/537.36"

ไม่มีโดเมนย่อยเหล่านั้น

ฉันพยายามสร้างตัวกรองใหม่โดยได้รับแรงบันดาลใจจาก apache-badbots แต่ฉันไม่แน่ใจว่าถูกต้อง:

[คำนิยาม]

varietytoblock = cpanel\.|store\.|webdisk\.|autodiscover\.|app\.|cpcalendars\.|cpcontacts\.|webmail\.|mail\.|fulaifushi\.|surf11818\.|asg\.| owa\.|แลกเปลี่ยน\.\$

failregex = ^<HOST> -.*"(GET|POST).*HTTP.*".*(?:%(varioustoblock)s).*"$
ละเว้นregex =

รูปแบบวันที่ = ^[^\[]

โดยเฉพาะอย่างยิ่งสำหรับ (.) ในอดีตฉันมีปัญหากับ (.) ในตัวกรองของ fail2ban และวิธีแก้ไขคือลบออกทั้งหมด...

แต่ในกรณีนี้ ไม่สามารถลบออกได้ ฉันไม่สามารถบล็อกใครก็ตามที่มีคำว่า "เมล" ใน url ของฉัน... ฉันต้องแน่ใจว่าได้บล็อก "เมล"

และฉันต้องการสร้างตัวกรองขนาดใหญ่ตัวเดียวที่ระบุทั้งโดเมนย่อยที่ไม่มีอยู่จริงและความพยายามในการเข้าถึง wordpress หรือ phpmyadmin แต่ pyton regex นั้นน่ากลัวมากหากคุณไม่เคยใช้มาก่อน...

ใครสามารถช่วยฉันได้บ้าง

(ฉันเคยคิดที่จะลบ * .alebalweb-blog.com ออกจากการกำหนดค่า DNS แต่ฉันไม่แน่ใจว่าเป็นความคิดที่ดีไหม เพราะฉันใช้โดเมนย่อยบางโดเมนด้วย)

ปล. ฉันควรกังวลแค่ไหนหากมีคนพยายามเข้าถึงโดเมนย่อยที่ไม่มีอยู่ในไซต์ของฉัน

ru flag
ดังนั้น ต่อไปนี้เป็นสิ่งที่ควรพิจารณา: มีระเบียน DNS ที่ไม่อัปเดตจำนวนมากสำหรับสิ่งต่างๆ ฉันยังคงโดนโจมตีจากไซต์ที่ถูกลบไปเมื่อ 6 ปีที่แล้วบนเซิร์ฟเวอร์เดียว โดเมนและ DNS และทุกอย่าง แต่สไปเดอร์ยังคงพยายามโจมตี - คุณอาจต้องพิจารณาตั้งค่า 'ไซต์' เริ่มต้นใน Apache หรือ nginx สำหรับไซต์ใด ๆ รายการโฮสต์ที่ไม่ตรงกันในระบบของคุณที่เพิ่งได้รับ 403 หรือ 404 ในทุกกรณี คุณควรกังวลน้อยลงหากมีคนเข้าชมไซต์และโดเมนย่อยที่ไม่มีอยู่จริง และกังวลมากขึ้นว่าคุณให้บริการเนื้อหาสำหรับโฮสต์ที่ถูกต้องในระบบของคุณเท่านั้น และเพียง 403 หรือ 404 สำหรับโฮสต์ที่ไม่ถูกต้อง
alebal avatar
mx flag
ฉันอยากจะบล็อกพวกเขามากกว่า เพราะเช่น วันนี้พวกเขามาถึงแล้ว: 3721, a-pistefto, zarxar, progylka, tuya, bnksb ... ซึ่งแน่นอนว่าไม่มีอะไรเกี่ยวข้องกับเซิร์ฟเวอร์ปัจจุบันหรือเซิร์ฟเวอร์ที่ผ่านมา ดูเหมือนว่าพวกเขาจะ มองหาประตูที่เปิดอยู่เพื่อเข้าไป ... และฉันตรวจสอบ ip บางตัวซึ่งมักจะเป็นตัวเดียวกันที่กำลังมองหา wp-login หรือ wp-admin ... แต่ตัวกรองของฉันต้องได้รับการขัดเกลาเพราะเช่นวันนี้ฉันบล็อก mail.ru ซึ่งคนจนไม่ได้ทำอะไรผิด ...
ru flag
นี่คือข้อเท็จจริงที่ควรพิจารณา: ส่วนใหญ่อาจเป็นผู้ตรวจสอบบริการ ไม่ใช่สิ่งที่คุณกังวลจริงๆ คำแนะนำของฉันคือเพียงใช้ตัวกรอง Fail2Ban แบบเก่าธรรมดาเพื่อดู 404 และ 403 จากนั้นขยายบล็อกเป็นเวลาลามกอนาจารแทนการกรองตัวกรองของคุณให้แคบลง ในกรณีนี้ ฉันมี 60,000 ครั้งในวันนี้สำหรับสตริงชื่อโฮสต์ 5 อักขระแบบสุ่มสำหรับโดเมนย่อยที่ทำงานที่นี่ พวกมันสุ่มอย่างสมบูรณ์และน่าจะเป็นเครื่องสแกนบริการ ความพยายามที่จะบล็อกพวกเขาทั้งหมดนั้นไร้ผล
Score:0
ธง co

ตัวกรองที่เป็นไปได้อาจมีลักษณะดังนี้:

[คำนิยาม]

รูปแบบวันที่ = ^\S+ \S+ \S+( \[{DATE}\])

errcode = (?!401)[45]\d\d
อนุญาตโดเมนย่อย = www|mail|cpannel
โดเมนผิด = (?!(?:%(allowedsubdomains)s)?\.)(?:[^\."]+\.){2,}[^\."]+
failregex = ^<ADDR> \S+ \S+ "[A-Z]+ /[^"]*" (?:(?P<err>%(errcode)s)|\d+)(?(err)| \d+ " https?://%(ผิดโดเมน)s")

สิ่งนี้จะตรงกับรหัสใด ๆ ที่ "ไม่ดี" ที่ระบุโดย รหัสข้อผิดพลาด หรือโดเมนที่ไม่ถูกต้อง เนื่องจากการจับคู่แบบมีเงื่อนไข e. กรัม ในกรณีของรหัส 200.

ที่ไหน:

  • (?:(?P<err>%(errcode)s)|\d+) - จับคู่รหัสข้อผิดพลาดที่ระบุ (เช่น 403 และจัดเก็บเป็นกลุ่มที่มีชื่อ ผิดพลาด) หรือรหัสอื่น ๆ (เช่น 200);
  • (?(ผิดพลาด)...ก...|...ข...) - นิพจน์เงื่อนไขจับคู่นิพจน์ย่อย A ถ้า ผิดพลาด ตรงกับนิพจน์ด้านบน (รหัสข้อผิดพลาดเท่านั้น เนื่องจาก A ว่างเปล่าที่นี่) มิฉะนั้นจะตรงกับนิพจน์ย่อย B (โดเมนย่อยไม่ถูกต้อง)
  • (?!(?:%(allowedsubdomains)s)?\.)(?:[^\."]+\.){2,}[^\."]+ - จับคู่อะไรก็ได้ยกเว้นสตริงที่ขึ้นต้นด้วยโดเมนย่อยที่อนุญาตเนื่องจาก lookahead เชิงลบ (?!...) และ (?:[^\."]+\.){2,}[^\."]+ สำหรับการแสดงความคิดเห็นเช่น zzz.xxx.yyy

แต่จะเป็นการดีกว่าที่จะจำกัดโดเมนในฝั่งเว็บเซิร์ฟเวอร์และห้ามคำขอใด ๆ ต่อโดเมนที่ผิดกฎหมายที่นั่น

ในกรณีนี้ตัวกรองอาจเป็นดังนี้:

[คำนิยาม]

รูปแบบวันที่ = ^\S+ \S+ \S+( \[{DATE}\])

errcode = (?!401)[45]\d\d
failregex = ^<ADDR> \S+ \S+ "[A-Z]+ /[^"]*" %(errcode)s\b
alebal avatar
mx flag
คุณช่วยอธิบายให้ฉันฟังได้ไหม
sebres avatar
co flag
แน่นอน ฉันอัปเดตคำตอบแล้ว
alebal avatar
mx flag
ขอบคุณมาก ตอนนี้ลองดู ... และพยายามทำความเข้าใจ ... ขอบคุณ

โพสต์คำตอบ

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