Score:1

อัตรา hashlimit ของ iptables ไม่ทำงานตามที่คาดไว้

ธง in

ฉันเขียนกฎไฟร์วอลล์ต่อไปนี้:

iptables -A INPUT -m hashlimit --hashlimit 1/hour --hashlimit-burst 3 --hashlimit-mode srcip,dstport --hashlimit-name ssh -j ACCEPT

ฉันคาดหวังว่าการระเบิดจะชาร์จได้ 1 ครั้งหลังจากผ่านไปหนึ่งชั่วโมง แต่จริงๆ แล้วมีการชาร์จหนึ่งครั้งเร็วกว่าหนึ่งนาทีด้วยซ้ำ ฉันกำลังส่งข้อความจาก IP ต้นทางเดียวกันและพอร์ตปลายทางเดียวกัน ดังนั้นฉันจึงคาดหวังให้ยอมรับการเชื่อมต่อ 3 ครั้งและ 1 ครั้งต่อชั่วโมง แต่ยอมรับมากขึ้น (หนึ่งรายการทุกๆ 20-30 วินาที) ถ้าฉันใช้ --จำกัด 1 ชม./ชม ฉันสามารถสังเกตพฤติกรรมที่คาดหวังได้ แต่ฉันต้องใช้ hashlimit เพราะฉันต้องกรองตาม srcip และ dstport ผมทำอะไรผิดหรือเปล่า? ขอขอบคุณ!

it flag
ลองเพิ่ม `-p tcp --syn --dport 22` ในกฎ - ในขณะนี้ คุณกำลังจับคู่ทุกอย่างโดยที่คุณอาจต้องการจับคู่แพ็กเก็ต TCP SYN ที่ปลายทางเป็นพอร์ต 22 เท่านั้น หากนี่เป็นความตั้งใจของคุณ วาง `dstport` ใน `hashlimit-mode` เพราะมันไม่จำเป็น
Score:0
ธง kz

ฉันคิดว่าคุณกำลังพบรายการที่หมดอายุ การยกเว้นจาก manpage:

  --hashlimit-จำนวนระเบิด
         จำนวนแพ็กเก็ตเริ่มต้นสูงสุดที่จะจับคู่: จำนวนนี้จะถูกชาร์จใหม่โดย
         หนึ่งครั้งทุกครั้งที่ไม่ถึงขีดจำกัดที่ระบุไว้ข้างต้น ไม่เกินจำนวนนี้
         ค่าเริ่มต้นคือ 5 เมื่อมีการร้องขอการจับคู่อัตราแบบไบต์ สิ่งนี้
         ตัวเลือกระบุจำนวนไบต์ที่สามารถเกินอัตราที่กำหนด
         ควรใช้ตัวเลือกนี้ด้วยความระมัดระวัง หากรายการหมดอายุ รายการจะระเบิด
         ค่าจะถูกรีเซ็ตด้วย

และจำนวนเวลาที่บันทึกรายการแฮชใด ๆ จะถูกระบุด้วยตัวเลือก --hashlimit-htable-หมดอายุ. ฉันไม่รู้ว่าค่าเริ่มต้นสำหรับรายการนี้คืออะไร แต่ฉันคิดว่ามันสั้นกว่าหนึ่งชั่วโมงมาก ซึ่งจะอธิบายได้ว่าทำไมคุณถึงเชื่อมต่อได้เร็วกว่าจำนวนที่คาดไว้

คุณควรพิจารณาปรับแต่งค่าเหล่านั้นเพิ่มเติม โดยอนุญาตหนึ่งค่าต่อนาที เช่น ในกรณีนี้ เซิร์ฟเวอร์ของคุณจะต้องจดจำ IP ของนาทีสุดท้ายเท่านั้น ไม่ใช่ค่า IP ของชั่วโมงสุดท้าย

Harry avatar
in flag
ขอบคุณมากสำหรับการตอบกลับของคุณ ฉันเพิ่งพยายามใส่ `--hashlimit-htable-expire 999999999` เพื่อให้เวลาหมดอายุควรเป็น 16 นาที แต่ก็ยังยอมรับการเชื่อมต่อทุกๆ 20-30 วินาที
Martin avatar
kz flag
ฉันทดสอบสิ่งนี้ด้วย ```--hashlimit-above 1/minute --hashlimit-burst 3 --hashlimit-htable-expire 300000``` และทำงานได้ตามที่คาดไว้ ดังนั้นเคอร์เนลของคุณมีปัญหาหรือฉันไม่รู้ว่าทำไมตัวอย่างของคุณไม่ทำงาน ... โปรดลองใช้ 1/นาทีแทน 1/ชั่วโมง และดูว่ายังคงเหมือนเดิมหรือไม่
Harry avatar
in flag
ฉันลองใช้สิ่งที่คุณแนะนำ แต่ก็ยังใช้งานไม่ได้ตามที่คาดไว้ (ยังคงยอมรับการเชื่อมต่อ 1 ครั้งทุกๆ ~30 วินาที) อย่างไรก็ตาม ฉันต้องจำกัดการเชื่อมต่อให้มากกว่า 1/นาที ดังนั้นฉันจึงต้องใช้ตัวเลขที่สูงมากเป็นค่าหมดอายุเนื่องจากเป็นมิลลิวินาที
Martin avatar
kz flag
มีเหตุผลอะไรที่คุณชอบที่จะ จำกัด hashlimit ? หากวิธีหลังใช้งานได้ตามที่คาดไว้ ฉันขอแนะนำให้ใช้สิ่งนี้แทน ค่อนข้างยากที่จะเข้าใจว่าเหตุใดจึงไม่ทำงาน ฉันคิดว่าเราได้ตัดข้อผิดพลาดการใช้งานออกไปแล้ว - วิธีที่คุณใช้ควรได้ผล เนื่องจากใช้ไม่ได้ - ให้ใช้สิ่งอื่นแทน
Score:0
ธง cn

ปัญหาหนึ่งคือ --แฮชลิมิต 1/ชม ควรจะเป็น --hashlimit-ไม่เกิน 1/ชั่วโมง ถ้าใช้ -j ยอมรับ

ดู ส่วนขยาย iptables ของมนุษย์

โพสต์คำตอบ

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