เครื่องมือทั้งสองอ่านล็อกและแบนที่อยู่ และเมื่อมองแวบแรก CrowdSec ก็เหมือน Fail2ban ที่มีโค้ดใหม่กว่า ความต่างของพวกมันเป็นเรื่องพื้นฐานกว่านั้น และมันไม่ได้อยู่ที่อายุของโค้ดแต่อยู่ที่ว่าการตัดสินใจบล็อกมาจากไหน
พวกมันสร้างมาอย่างไร
Fail2ban เป็นกระบวนการเดียวที่อ่านล็อก นับการตรงกันของนิพจน์ทั่วไป และเรียกคำสั่งของไฟร์วอลล์ ทุกการตัดสินใจเกิดขึ้นบนเครื่องของคุณจากตัวนับของคุณเอง ไม่มีอะไรถูกส่งไปที่ไหน ไม่มีการพึ่งพา และการตั้งค่าก็คือไฟล์ข้อความ
CrowdSec แยกเป็นสองส่วน และนั่นคือสิ่งสำคัญที่ต้องเข้าใจก่อนติดตั้ง ตัวเอเจนต์เองตรวจจับเท่านั้น: วิเคราะห์ล็อก ใช้สถานการณ์ และเขียนการตัดสินใจลงฐานข้อมูลของตัวเอง การตัดสินใจถูกบังคับใช้โดยโปรแกรมแยกต่างหากคือ bouncer และหากไม่ติดตั้ง bouncer CrowdSec ก็ทำงาน แสดง alert เก็บรายการการตัดสินใจ — และไม่บล็อกอะไรเลย
นี่คือความผิดหวังที่พบบ่อยที่สุดในการเจอกันครั้งแรก: เครื่องมือติดตั้งแล้ว เห็นการโจมตี และทราฟฟิกก็ไหลเหมือนเดิมทุกประการ
sudo apt install crowdsec
sudo apt install crowdsec-firewall-bouncer-iptables
sudo cscli bouncers list
คำสั่งสุดท้ายต้องแสดงรายการที่ลงทะเบียนอย่างน้อยหนึ่งรายการ รายการว่างเปล่าแปลว่าไม่มีการบล็อก
ความต่างข้อที่สอง: ชื่อเสียงร่วม
Fail2ban รู้เพียงว่าเกิดอะไรขึ้นที่ของคุณ ที่อยู่ที่เมื่อวานใช้เวลาเจาะเซิร์ฟเวอร์คนอื่นเป็นร้อยเครื่องยังสะอาดในสายตามันจนกว่าจะมาเคาะประตูคุณ — และห้าครั้งแรกของมันก็ฟรี
CrowdSec ส่งสัญญาณเกี่ยวกับสิ่งที่ทำงานไปยังเครือข่ายร่วมและได้รับรายการที่อยู่ที่พบบนเซิร์ฟเวอร์ของคนอื่นกลับมา ผลในทางปฏิบัติ: การเดารหัสผ่านส่วนที่เห็นได้ชัดถูกตัดไปก่อนความพยายามครั้งแรกด้วยซ้ำ และนั่นสำคัญเป็นพิเศษเมื่อเจอการโจมตีแบบกระจาย — ที่อยู่นับพันที่ลองคนละครั้ง ซึ่งตัวนับในเครื่องไร้พลังโดยนิยาม
และนี่คือสิ่งที่ต้องรู้ล่วงหน้า: การแลกเปลี่ยนเกิดขึ้นทั้งสองทาง สิ่งที่ออกจากเซิร์ฟเวอร์ของคุณคือที่อยู่ที่ละเมิดและประเภทของสถานการณ์ที่ทำงาน การทำงานแบบในเครื่องล้วน ๆ เป็นไปได้ — โดยไม่ลงทะเบียนกับคอนโซลคลาวด์ — แต่เมื่อนั้นรายการร่วมก็ไม่มีให้คุณเช่นกัน และข้อได้เปรียบหลักก็หายไป นั่นคือทางเลือกที่ต้องตัดสินใจอย่างมีสติ ไม่ใช่รายละเอียดการตั้งค่า
คำสั่งประจำวัน
sudo cscli metrics
sudo cscli alerts list
sudo cscli decisions list
sudo cscli decisions delete --ip 203.0.113.25
metrics ตอบคำถามว่าล็อกถูกอ่านอยู่หรือไม่: ถ้าจำนวนบรรทัดที่วิเคราะห์เป็นศูนย์ แปลว่ายังไม่ได้ติดตั้ง collection สำหรับเว็บเซิร์ฟเวอร์ของคุณหรือเส้นทางล็อกผิด นั่นคือกรณี «ติดตั้งแล้วและไม่ทำงาน» ที่พบบ่อยเป็นอันดับสอง
sudo cscli collections list
sudo cscli collections install crowdsecurity/nginx
ทรัพยากร
CrowdSec เขียนด้วย Go และเก็บสถานะของมันไว้ในฐานข้อมูล การใช้หน่วยความจำอยู่ราวหนึ่งร้อยเมกะไบต์ บวกกับ bouncer บนเซิร์ฟเวอร์ที่มีหน่วยความจำหนึ่งกิกะไบต์นั่นรู้สึกได้ ตั้งแต่สองขึ้นไปไม่รู้สึก Fail2ban เบากว่า และทำน้อยกว่า
ควรใช้ทั้งคู่หรือไม่
พวกมันไม่ขัดกัน: ตัวหนึ่งเขียนกฎของมันลงไฟร์วอลล์และอีกตัวเขียนของมัน และการแบนที่อยู่เดียวกันสองครั้งก็ไม่ทำร้ายใคร การแบ่งงานที่สมเหตุสมผลเป็นแบบนี้
CrowdSec รับผิดชอบทราฟฟิกมวลชน: การเดารหัสผ่าน SSH การสแกนเว็บเซิร์ฟเวอร์ และที่อยู่ที่รู้ว่าไม่ดีจากรายการร่วม ส่วน Fail2ban อยู่ตรงที่คุณมีล็อกของตัวเองในรูปแบบของตัวเอง ซึ่งเขียนนิพจน์ทั่วไปง่ายกว่าเขียนสถานการณ์ — แอปพลิเคชันที่ทำเอง บริการหายาก ฟอร์มเข้าสู่ระบบเฉพาะทาง
และถ้าต้องเลือกอย่างเดียว เกณฑ์คือ: บนเซิร์ฟเวอร์ที่มีเว็บไซต์ซึ่งถูกงมหาตลอดเวลา CrowdSec ให้มากกว่าเพราะรายการร่วม แต่บนเซิร์ฟเวอร์ที่มีเพียงคุณเข้าถึงผ่าน SSH ด้วยคีย์ ความต่างของพวกมันน้อย — งานส่วนใหญ่ที่นั่นทำไปแล้วด้วยการปิดรหัสผ่าน
ข้อจำกัดร่วม
ไม่มีตัวใดป้องกันข้อบกพร่องของแอปพลิเคชันได้ ทั้งคู่ทำงานกับความถี่ของคำขอและชื่อเสียงของที่อยู่ และคำขอที่ใช้ช่องโหว่ของปลั๊กอินตั้งแต่ครั้งแรกจากที่อยู่สะอาดจะผ่านทั้งคู่ไปได้ นั่นเป็นงานของเครื่องมืออื่น — WAF ที่ระดับคำขอและการอัปเดตที่ทันเวลา การบล็อกที่อยู่ขจัดพื้นหลัง ไม่ใช่สาเหตุ
และคุณค่าในทางปฏิบัติของทั้งคู่ขึ้นอยู่กับว่ามีใครเห็นผลลัพธ์หรือไม่ จำนวนการตัดสินใจที่เพิ่มขึ้น สถานการณ์ที่ทำงานเป็นครั้งแรก การเปลี่ยนของประเทศที่ความพยายามมาจาก — นั่นคือข้อมูลที่เป็นเหตุให้ติดตั้งเครื่องมือนี้ ภาพบนหน้าเดียวเป็นอย่างไรดูได้ที่เดโมด้านล่าง