คงเส้นทางพอร์ตจาก 80 เป็น 8080


23

ฉันใช้อินสแตนซ์ amazon EC2 ซึ่งทำงานผ่าน ubuntu ตามค่าเริ่มต้นตามข้อ จำกัด ด้านความปลอดภัยฉันไม่สามารถทิ้งแอปพลิเคชันของฉันไปที่พอร์ต 80 ดังนั้นฉันเพิ่งผูกมันพอร์ต 8080 แล้วตั้งค่าการเปลี่ยนเส้นทางจากพอร์ต 80 เป็น 8080 ผ่านคำสั่งต่อไปนี้:

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to 8080

แต่ฉันพบว่าเมื่อฉันรีบูตเซิร์ฟเวอร์การตั้งค่านี้ไม่ทำงานอีกต่อไปจนกว่าฉันจะเรียกใช้คำสั่งนี้อีกครั้ง

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

คำตอบ:


18

คุณสามารถเพิ่มคำสั่งนี้ใน/etc/rc.localดังนั้นมันจะถูกดำเนินการโดยอัตโนมัติหลังจากรีบูต


ทำไปแล้ว แต่ก็ยังขอบคุณสำหรับคำตอบ
Ph0en1x

ยินดีต้อนรับเพื่อนของฉัน, thats เคล็ดลับดี
Nux

2
ใช้งานได้ แต่คำตอบที่แท้จริงคือคำตอบของ @ MeOMy ด้านล่าง
Dirk Groeneveld

15

ใช้คำสั่ง iptables-save แทน กฎของไฟร์วอลล์ไม่ควรเป็นสคริปต์ rc.local rc.local เป็นสิ่งสุดท้ายที่จะถูกดำเนินการ หากกฎของบล็อกถูกวางลงใน rc.local จะมีกรอบเวลาขนาดเล็กที่ผู้โจมตีสามารถใช้ประโยชน์จากกฎที่ไม่ได้อยู่ในสถานที่ แม้ว่ามันอาจไม่สำคัญกับสถานการณ์นี้ แต่ก็ยังดีที่สุดที่จะไม่เข้ากับนิสัยที่ไม่ดีที่อาจกัดคุณในภายหลัง


1
วิ่ง "sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT - ไปที่ 8080" และ "sudo iptables-save" แต่การกำหนดเส้นทางถูกรีเซ็ตเมื่อรีบูต ฉันเข้าใจผิดว่าจะทำอย่างไร?
gromit190

2
คำตอบไม่สมบูรณ์ iptables-save > some-file-pathบันทึกกฎและแล้วคุณจะเรียกคืนพวกเขาผ่านทางในiptables-restore < some-file-path rc.localหรือติดตั้งiptables-persistentสิ่งนี้ในระหว่างการบู๊ตเป็นบริการ
โธมัสวอร์ด

ฉันต้องการที่จะเข้าใจวิธีการทำเช่นนี้ โปรดเจาะจงยิ่งขึ้น
gromit190

4

นี่คือวิธีที่เอกสารทางการของ ipttable สอนเรา ดูที่นี่

เพิ่มสองบรรทัดเหล่านี้ใน / etc / network / interfaces:
pre-up iptables-restore < /etc/iptables.rules post-down iptables-save > /etc/iptables.rules

บรรทัด "post-down iptables-save> /etc/iptables.rules" จะบันทึกกฎที่จะใช้ในการบูตครั้งถัดไป


ความรุ่งโรจน์สำหรับการใช้วิธีการที่แนะนำอย่างเป็นทางการและในกรณีนี้เป็นวิธีที่ง่ายที่สุดเพื่อให้งานนี้สำเร็จ ฉันจะ +1 ถ้าฉันสามารถใช้วิธี KISS
DeeJayh

0

ฉันค้นพบชุดไดเรกทอรีใน Ubuntu 16.04 /etc/networkซึ่งจะใช้งานสคริปต์หลาย ๆ ครั้งระหว่างการเริ่มต้นและปิดเครือข่าย:

if-down.d
if-post-down.d  
if-pre-up.d  
if-up.d
interfaces.d

ดังนั้นฉันจึงพบว่าฉันสามารถทิ้งการกำหนดค่าตามปกติ:

$ sudo sh -c "iptables-save > /etc/iptables.rules"

จากนั้นฉันจะสร้างไฟล์ `/etc/network/if-pre-up.d/restore:

#!/bin/sh

iptables-restore < /etc/iptables.rules

... และตั้งค่าสถานะให้เรียกทำงานได้

$ sudo chmod 755 /etc/network/if-pre-up.d/restore
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.