Iptables: วิธีการอนุญาต IP เดียวผ่านพอร์ตเฉพาะได้อย่างไร


25

ฉันจะทำบนเซิร์ฟเวอร์อูบุนตูของฉันใน Iptables อนุญาตให้ใช้ที่อยู่ IP หนึ่งพอร์ตบนพอร์ตที่ระบุเท่านั้น

ขอบคุณ

คำตอบ:


48

หนึ่งในสายการบิน:

iptables -I INPUT \! --src 1.2.3.4 -m tcp -p tcp --dport 777 -j DROP  # if it's not 1.2.3.4, drop it

ทางออกที่ดีกว่า:

iptables -N xxx # create a new chain
iptables -A xxx --src 1.2.3.4 -j ACCEPT  # allow 1.2.3.4
iptables -A xxx --src 1.2.3.5 -j ACCEPT  # allow 1.2.3.5
iptables -A xxx --src 1.2.3.6 -j ACCEPT  # allow 1.2.3.6
iptables -A xxx -j DROP  # drop everyone else
iptables -I INPUT -m tcp -p tcp --dport 777 -j xxx  # use chain xxx for packets coming to TCP port 777

คุณรู้หรือไม่ว่าฉันควรเพิ่มสิ่งนี้ลงใน OUTPUT ด้วยหรือไม่
Anonymous12345

@ Camran: คุณต้องเฉพาะเจาะจงมากขึ้น ในกรณีนี้โดยเฉพาะอย่างยิ่งถ้าคุณแทนที่INPUTด้วยOUTPUTคุณจะปิดกั้นแพ็คเก็ตบางส่งโดยใช้ที่อยู่ของเซิร์ฟเวอร์เองบางส่วน (และไม่ได้ส่ง / ส่ง) ฉันสงสัยว่าสิ่งนี้เหมาะสมแล้วหากคุณไม่ต้องการบล็อกโปรแกรมที่เชื่อมโยงกับอินเทอร์เฟซบางตัว
Cristian Ciupitu

1
อย่าลืมว่าคุณสามารถระบุแหล่งที่มาของคุณในห่วงโซ่เช่น:--src 1.2.3.4/30
deed02392

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

2
@Matthias:iptables -I xxx --src 7.8.9.10 -j ACCEPT
Cristian Ciupitu

0

นี่คือตัวอย่างจากหนึ่งในระบบ CentOS ของฉัน (ที่อยู่ได้รับความสับสน):

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp -s 1.2.3.4 -d 5.6.7.8 --dport 22 -j ACCEPT

บน centos จะทำการตั้งค่านี้แบบถาวรที่ไหน? (ใน Ubuntu เราสามารถใช้
/etc/network/if-up.d/anyfile

บน CentOS คือ: service iptables save.
Martin Zeitler

0

ฉันใช้ shorewall เพื่อกำหนดค่าตาราง IP ใช้กฎที่ต้องการยอมรับจากโฮสต์หนึ่งไปยังพอร์ต 123

ACCEPT net: 192.0.2.1 $ FW tcp 1234

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