Score:0

อนุญาตเฉพาะแพ็กเก็ต SYN เท่านั้นที่พอร์ต 80 ที่ตรงกับ ipset

ธง in

ฉันมี ipset ชื่อ รายการที่อนุญาต.

ฉันต้องการอนุญาตให้ทุกการเชื่อมต่อกับเครื่องของฉันในทุกพอร์ตยกเว้นพอร์ต 80ซึ่งฉันต้องการอนุญาตการเชื่อมต่อกับ ipset เท่านั้น: รายการที่อนุญาต.

ฉันต้องการกำหนดเป้าหมายเฉพาะ ซิน แพ็คเก็ตจากพอร์ต 80 เพื่อประสิทธิภาพ, ดังนั้น:

  1. ถ้าธง tcp = ซิน
  2. ถ้าพอร์ตเป็น 80
  3. ถ้ามันตรงกับ ipset ที่ชื่อ รายการที่อนุญาต

จากนั้นอนุญาตการเชื่อมต่อ มิฉะนั้นให้ปล่อยแพ็กเก็ต (หากแพ็กเก็ตคือ ซิน 80 และไม่ตรงกับ รายการที่อนุญาต).

ลำดับมีความสำคัญต่อประสิทธิภาพ เนื่องจากฉันไม่ต้องการกรองหรือทำให้การเชื่อมต่อที่สร้างไว้ช้าลง

ฉันกำลังพยายามเขียนกฎ iptables สำหรับมัน

Nikita Kipriyanov avatar
za flag
คุณมีกรณีจริงหรือคุณเพียงแค่หลอกลวงด้วยการคาดเดาทางทฤษฎี? หากคุณมีกรณีจริง แสดงการวัดของคุณให้เราเห็นว่าการประมวลผลของ iptables นั้นช้า (ด้วยกฎปกติ โดยไม่มีลักษณะพิเศษ) ในขณะที่ไม่มี iptables การประมวลผลนั้นเร็วมาก มิฉะนั้นคำถามของคุณจะไม่เกี่ยวกับ ServerFault เนื่องจากเราพูดถึงกรณีธุรกิจจริงที่นี่ ไม่เกี่ยวกับการคาดเดาทางทฤษฎี ในกรณีนั้นจะปิด
Score:0
ธง za

การจับคู่ตามลำดับดังกล่าวสามารถนำไปใช้ได้โดยใช้เชนแบบกำหนดเอง:

iptables -N c1
iptables -N c2
iptables -A INPUT -p TCP --syn -j c1
iptables -A c1 -p tcp --dport 80 -j c2
iptables -A c2 -m set --match-set allowList src -j ยอมรับ
iptables -A c2 -j DROP

อย่างไรก็ตาม ฉันสงสัยว่าคุณจะประสบความสำเร็จ ใดๆ ประสิทธิภาพที่เห็นได้ชัดเจนจากสิ่งนี้ นอกจากนี้ ผู้ดูแลระบบคนต่อไปที่จะรับผิดชอบการสนับสนุนนี้ต่อจากคุณอย่างแน่นอน อย่างน้อยก็ต้องสาปแช่งคุณ

อย่าพยายามเพิ่มประสิทธิภาพก่อนเวลาอันควรและรวมการแข่งขันทั้งหมดไว้ในกฎเดียว ฉันแน่ใจว่ามีบางจุดในระบบของคุณที่สามารถปรับปรุงได้ด้วยการได้รับที่เห็นได้ชัดเจนมากขึ้น

iTaMaR avatar
in flag
ฉันไม่ได้ใช้พอร์ต 80 สำหรับ `HTTP` ผู้ที่เชื่อมต่อยังคงเชื่อมต่ออยู่และอยู่ในการเชื่อมต่อ 'สร้าง' แล้ว ฉันไม่ต้องการ 'ค้นหา' สำหรับแพ็กเก็ตเหล่านั้น ..
iTaMaR avatar
in flag
มีวิธีใดบ้างที่จะบรรลุโดยไม่ต้องเปลี่ยน? สิ่งนี้จะทำงาน: `iptables -A INPUT -p tcp --syn --dport 80 -m set --match-set alowList src -j ACCEPT` `iptables -A INPUT -p tcp --dport 80 -j DROP`
Ginnungagap avatar
gu flag
@iTaMaR คุณได้ทำการเปรียบเทียบหรือรวบรวมเมตริกแบบใดเพื่อวัดผลกระทบของกฎปกติ (เช่น "ฉันปรับให้เหมาะสม") หรือไม่ เรากำลังพูดถึงปัจจัยประเภทใด
Nikita Kipriyanov avatar
za flag
กฎแบบนี้ดีกว่าอย่างเห็นได้ชัดเพราะเข้าใจง่ายกว่ามาก งานคนมีค่าใช้จ่ายสูงกว่างานคอมพิวเตอร์มาก ฉันไม่แน่ใจว่าจะตรวจสอบโมดูลทั้งหมด "ตามลำดับ" หรือไม่ แต่ฉันคิดว่ามันหยุดจับคู่เมื่อตรงตามเงื่อนไขที่เป็นเท็จ เช่น. อาจตรวจสอบพอร์ต 80 ก่อนหรือซิงค์ก่อนหรือตั้งค่าก่อน แต่เมื่อบางสิ่งส่งคืน "ไม่ตรงกัน" ก็จะไม่รบกวนการตรวจสอบอื่น ๆ ผมขอพูดอีกครั้งว่าคุณกำลังเพิ่มประสิทธิภาพก่อนเวลาอันควรและมีแนวโน้มสูงว่าจะอยู่ผิดที่ (ซึ่งมักจะเกิดขึ้นเสมอกับการเพิ่มประสิทธิภาพก่อนเวลาอันควร)
iTaMaR avatar
in flag
@NikitaKipriyanov จะเกิดอะไรขึ้นถ้าชุดมี ip นับล้าน .. คุณไม่สามารถคาดหวังว่าประสิทธิภาพจะเหมือนกันหากการแวะผ่านจะเริ่มต้นจากการจับคู่ชุดและตกลงกับชุดอื่น ๆ
Nikita Kipriyanov avatar
za flag
การตั้งค่าในไฟร์วอลล์ Linux สามารถมีได้สูงสุด 65536 ระเบียนประสิทธิภาพการทำงานไม่ขึ้นกับจำนวนรายการที่อยู่ในนั้น เนื่องจากเป็นบล็อกที่อยู่ติดกันหรือแฮช กล่าวคือ มันมีความซับซ้อนของอัลกอริทึม O(1) เสมอ
iTaMaR avatar
in flag
@NikitaKipriyanov ทุกอย่างเกี่ยวกับประสิทธิภาพ ไม่ว่าจะเป็น "Manwork" หรืออย่างอื่น.. ตอนนี้เป็นเรื่องของการนำ iptables ไปใช้งาน คำสั่งอาจนำมาซึ่งการปรับปรุงที่สำคัญในเงื่อนไขตามที่เราเห็นในทุกภาษาโปรแกรม โดยบอกว่ามันไม่สำคัญ มันหยิ่งเกินไป .. จะเกิดอะไรขึ้นถ้ามีพันล้าน ip อยู่ในชุดและ `rule` อาจถูกปฏิเสธก่อนหน้านี้ในเงื่อนไขที่ง่ายกว่ามาก ??
iTaMaR avatar
in flag
@NikitaKipriyanov `set` เป็น 'โมดูล' และโมดูลเปิดอยู่และสามารถเปลี่ยนความซับซ้อนได้ คำสั่งสามารถเพิ่มประสิทธิภาพ 'กฎ' ได้เสมอ!

โพสต์คำตอบ

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