Score:0

ฉันจะจำกัดการส่งต่อพอร์ตของไฟร์วอลล์ไปยังที่อยู่ต้นทางได้อย่างไร

ธง jp

ก่อนอื่น ฉันต้องขออภัยหากมีการถามเรื่องนี้มาก่อนแล้ว แต่ฉันไม่พบคำตอบใด ๆ เมื่อดูจากข้อมูลที่มีใน SE

สถานการณ์ของฉันเป็นดังนี้: ฉันมีเซิร์ฟเวอร์ CentOS 7 หนึ่งเครื่องที่อยู่ในระดับแนวหน้าที่ให้บริการต่างๆ มากมาย มันเชื่อมต่อกับหนึ่งพอร์ตอีเธอร์เน็ตสาธารณะ (eno1) และหนึ่งพอร์ตอีเธอร์เน็ต LAN (eno2) เชื่อมต่อกับ LAN เป็นเซิร์ฟเวอร์ที่สองที่ฉันต้องการส่งต่อทราฟฟิกไปที่พอร์ตใดพอร์ตหนึ่ง

FirewallD ให้การส่งต่อพอร์ตและใช้งานได้ จนถึงตอนนี้ดีมาก! อย่างไรก็ตาม มีปัญหาสำคัญที่ฉันพบ: ฉันต้องการจำกัดว่าใครสามารถเข้าถึงบริการที่ส่งต่อนั้นด้วย IP สาธารณะ และฉันไม่สามารถคิดออกได้เนื่องจาก FirewallD ดูเหมือนจะง่ายเกินไปในสิ่งที่ สามารถทำได้ด้วย ดีมากถ้าคุณต้องการเปิดบริการถึง 'เน็ตสำหรับทุกคน แต่ไม่มากเมื่อคุณต้องการเปิดเฉพาะขอบเขตที่กำหนด ปัญหาเพิ่มเติมคือบนเซิร์ฟเวอร์เป้าหมายบน LAN IP ต้นทางทั้งหมดสำหรับทราฟฟิกที่ส่งต่อคือที่อยู่ LAN ของเซิร์ฟเวอร์เกตเวย์ (10.0.0.1) ซึ่งหมายความว่าฉันยังไม่สามารถกรองทราฟฟิกบนเซิร์ฟเวอร์เป้าหมายตาม IP ปล่อยให้บริการเปิดสู่โลก (ซึ่งฉันไม่ต้องการ)

มีวิธีการทำเช่นนี้กับ firewalld หรือไม่? ฉันพยายามทำด้วยตนเองด้วย iptables แต่ต้องยอมรับความพ่ายแพ้ ติดตามข้อมูลทั้งหมดพบว่าไม่เคยได้รับการส่งต่องาน...

ชี้แจง:

อินเทอร์เน็ต -> (eno1, IP สาธารณะ) -> Centos -> (eno2, 10.0.0.1) -> เซิร์ฟเวอร์เป้าหมาย (10.0.0.2)

Michael Hampton avatar
cz flag
ดูเหมือนง่ายเล็กน้อย ดู https://serverfault.com/a/684739/126632
Mark Straver avatar
jp flag
ขอบคุณที่ทำให้ฉันมาถูกทาง! ด้วยข้อแม้ที่ว่าโซนต่างๆ เป็นเอกสิทธิ์และจำเป็นต้องทำซ้ำกฎทั้งหมด... เกือบทำให้การเข้าถึงของฉันหยุดชะงักเพราะเหตุนั้น :พี
Score:1
ธง jp

ด้วยความช่วยเหลือจาก Michael Hampton (ขอบคุณ!) ฉันคิดออกและกำลังตอบคำถามของฉันเอง

สิ่งที่จำเป็นคือโซนแยกต่างหากที่คุณกำหนดโดยการเพิ่มขอบเขตเข้าไป:

ไฟร์วอลล์ cmd --new-zone = พิเศษ --permanent
ไฟร์วอลล์ cmd --reload
ไฟร์วอลล์ cmd --zone = พิเศษ --add-source = 12.34.56.78/32 --ถาวร
ไฟร์วอลล์ cmd --zone = พิเศษ --add-source = 12.34.56.88/32 --ถาวร
ไฟร์วอลล์-cmd --zone=พิเศษ --add-source=12.34.99.0/24 --ถาวร

จากนั้นเพิ่ม ทั้งหมด บริการ/พอร์ตปกติที่คุณมี สาธารณะ โซนไปยังโซนใหม่นี้ (โดยทั่วไปจะทำซ้ำการกำหนดค่า) และสุดท้ายเพิ่มกฎพอร์ตที่ส่งต่อ ไปยังโซนใหม่เท่านั้น ด้วย (ตัวอย่างพร็อกซี http):

ไฟร์วอลล์ cmd --zone = พิเศษ --add-forward-port = port = 8080:proto = tcp:toaddr = 10.0.0.2 -- ถาวร

จากนั้นทำการโหลดซ้ำครั้งสุดท้ายเพื่อใช้:

ไฟร์วอลล์ cmd --reload

และ voila: ขอบเขต 12.34.56.78/32 12.34.56.88/32 และ 12.34.99.0/24 สามารถเข้าถึงบริการพร็อกซีตัวอย่างได้แล้ว แต่ไม่มีใครอื่น

อัปเดต

หมายเหตุสำคัญ: ขั้นตอนเหล่านี้ใช้ได้ดีสำหรับ การจราจรขาเข้า แต่การทำให้ไฟร์วอลล์ทำงานเป็นเราเตอร์ NAT รวมถึงขาออกต้องใช้งานมากขึ้น (ซึ่งฉันไม่สามารถทำงานได้ ... ) ถ้าใครมีโซลูชันที่สมบูรณ์กว่านี้ที่อนุญาตให้ขาเข้าและขาออกทำงานผ่านเซิร์ฟเวอร์ที่มีไฟร์วอลล์ ฉันจะทำเครื่องหมายว่าเป็นคำตอบที่ยอมรับอย่างมีความสุข!

OT: ในที่สุดฉันก็ใช้ IPTables ซึ่งฉันได้ทำงานเพื่อส่งต่อพอร์ต และ NAT โดยไม่มีปัญหามากเกินไปเมื่อฉันรู้ว่าฉันทำอะไรผิด (ฉันไม่มีกฎขาออกในห่วงโซ่ FORWARD... >.> <.<) และช่วยให้สามารถควบคุมขอบเขตอย่างละเอียดในทุกกฎ (ด้วย โบนัส ฉันสามารถทำทุกอย่างได้จาก Webmin :P) เนื่องจากไม่อยู่ในหัวข้อฉันจึงออกจากคำตอบนี้ตามที่เป็นอยู่

Michael Hampton avatar
cz flag
แค่เปิดหน้ากาก?!
Mark Straver avatar
jp flag
แน่นอนฉันทำ มันไม่ได้ผล

โพสต์คำตอบ

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