Score:0

สามารถเพิ่มกฎการปฏิเสธใน nginx แทนการใช้ iptables ได้

ธง de

ฉันมีเซิร์ฟเวอร์หนึ่งเครื่อง ซึ่งอยู่เบื้องหลัง reverse proxy ซึ่งฉันไม่ได้ควบคุม ฉันต้องการใช้ fail2ban เพื่อบล็อกทราฟฟิก nginx ภายใต้เงื่อนไขบางประการ

โดยปกติแล้ว fail2ban จะใช้ iptables เพื่อบล็อกทราฟฟิกที่มาจาก IP ของผู้บุกรุก

อย่างไรก็ตาม เซิร์ฟเวอร์ของฉันอยู่เบื้องหลัง reverse proxy และจากมุมมองของเซิร์ฟเวอร์ของฉัน การรับส่งข้อมูลทั้งหมดมาจาก reverse proxy:

ฉันพบ URL ต่อไปนี้ https://forums.freebsd.org/threads/fail2ban-behind-a-proxy.55041/ ที่แนะนำให้ใช้ tu iptables ด้วยวิปัสสนาแพ็คเกจเช่น:

actionban = iptables -I fail2ban-<name> 1 -p tcp --dport 80 -m string --algo bm --string 'X-Forwarded-For: <ip>' -j DROP

อย่างไรก็ตาม reverse proxy ที่ฉันไม่สามารถควบคุมได้ส่งต่อทราฟฟิกเป็น https ทราฟฟิก หมายความว่าฉันไม่สามารถตรวจสอบทราฟฟิกสำหรับ X-ส่งต่อ-สำหรับ ส่วนหัวเนื่องจากจะถูกเข้ารหัส

ดังนั้นคำถามของฉัน

คนอื่นมีสถานการณ์ที่คล้ายกันหรือไม่และมีอยู่หรือไม่ แอคชั่นแบน = ที่เพิ่ม ปฏิเสธกฎ เพื่อ nginx ?

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

มีวิธีแก้ปัญหาอื่นใดที่ช่วยให้ฉันสามารถบอก nginx ไดนามิกได้ว่าคำขอใด (มีเฉพาะ X-ส่งต่อ-สำหรับ: ส่วนหัว) เพื่อบล็อก

Score:2
ธง il

คุณสามารถใช้การกระทำที่ล้มเหลว 2 แบน แผนที่บล็อก nginx, ดู nginx-block-map.conf สำหรับรายละเอียด

โปรดทราบว่าโดยการกรองของ X-ส่งต่อ-สำหรับ ส่วนหัว มันค่อนข้างง่ายสำหรับผู้บุกรุกที่จะจัดการกับคำขอเพื่อหลีกเลี่ยงการแบน (ด้วยการตั้งค่าที่แตกต่างกันในแต่ละคำขอใหม่ในส่วนหัวนี้) คำถามว่าผู้บุกรุกอยู่หลัง proxy หรือแค่จำลอง proxy แล้วกำหนด header X-ส่งต่อ-สำหรับ โดยตัวมันเองไม่สามารถตอบได้ง่ายๆ

cn flag
ควรตั้งค่า `X-Forwarded-For` โดย Nginx เป็นพร็อกซีไปยังระบบแบ็กเอนด์ (เช่น ระบบที่ไคลเอนต์โดยตรงไม่สามารถเข้าถึงได้) ดังนั้น เว้นแต่ว่าการตั้งค่าของคุณจะไม่ถูกต้อง ก็ควรจะใช้ได้ดี
sebres avatar
il flag
ไม่ มันไม่ใช่หัวนี้...จะได้รับส่วนหัว `X-Forwarded-For` ซึ่งหมายถึงหัวข้อเริ่มต้นจากลูกค้า ดังนั้นที่ฝั่ง nginx จึงไม่ชัดเจนว่าตั้งค่าไว้ที่ฝั่งไคลเอ็นต์อย่างไร ดังนั้น nginx ที่ได้รับคำขอนี้จึงไม่สามารถ เพื่อแยกแยะไคลเอนต์ (พร็อกซีจริงหรือเพียงแค่ผู้บุกรุกที่สวมรอยเป็นพร็อกซี) ตรงกันข้ามกับส่วนหัวที่คุณหมายถึง ซึ่งเปรียบได้กับการป้องกัน nginx ของคุณกับแบ็กเอนด์ของคุณ มันไม่สมเหตุสมผลเลย (ทำไมคุณถึงต้อง fail2ban สำหรับสิ่งนั้น)
cn flag
แน่นอนว่าถ้า Nginx ได้รับส่วนหัว 'X-Forwarded-For' ก็จะถูกละเว้น เนื่องจาก Nginx เป็นพร็อกซี จึงคาดว่าจะ **ตั้งค่า** แล้วส่งต่อคำขอไปยังคอมพิวเตอร์ส่วนหลัง จากนั้นคอมพิวเตอร์ส่วนหลังสามารถส่งข้อความ "บล็อก _that_ IP" และนั่นจะเป็น IP ของไคลเอนต์ (ตามที่พบในซ็อกเก็ต) และฉันเห็นว่า OP บอกว่ายังมีพร็อกซีเซิร์ฟเวอร์อีกตัวในการกำหนดเส้นทาง ดังนั้นฉันเดาว่าเขาไม่สามารถรู้ได้ว่าควรบล็อก IP ใด
Score:2
ธง cn

ล้มเหลว 2 แบน สามารถใช้เพื่อเรียกใช้สคริปต์ สคริปต์นั้นสามารถทำอะไรก็ได้ที่คุณต้องการ


การแก้ไขกฎการปฏิเสธ

ฉันไม่แน่ใจเหมือนกันว่าสิ่งทั้งหมดจะทำงานเต็มความเร็วได้อย่างไร แต่คุณสามารถเพิ่มกฎการปฏิเสธในไฟล์ได้อย่างง่ายดาย

ไฟล์การกำหนดค่า Nginx สามารถรวม:

รวม /etc/nginx/deny-rules.conf

และสคริปต์ของคุณสร้างสิ่งนั้น ปฏิเสธกฎ.confอย่างใด... คุณต้องการเพิ่ม IP ให้กับไฟล์แล้วใช้ไฟล์นั้นเพื่อสร้าง ปฏิเสธกฎ.conf ไฟล์โดยใช้ลูปหรืออะไรซักอย่าง

จากนั้นคุณต้องรีสตาร์ท Nginx เพื่อให้กฎใหม่ได้รับการพิจารณา นั่นเป็นส่วนที่แย่ในโครงการนี้ การเริ่มต้นใหม่ด้วยวิธีนี้จะช้า


การปฏิเสธรายการ

อีกวิธีหนึ่งคือการใช้ตัวกรองต่อไปนี้:

การปฏิเสธแบบไดนามิกของที่อยู่ IP

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

gelonida avatar
de flag
ขอบคุณสำหรับคำตอบ. จะรอดูว่าผู้ใช้บางคนรู้เกี่ยวกับสคริปต์ actionbab ที่มีอยู่หรือไม่ ถ้าไม่ฉันจะยอมรับเป็นคำตอบ

โพสต์คำตอบ

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