ฉันจะบล็อกทั้งหมดยกเว้นสามพอร์ตใน Ubuntu ได้อย่างไร


22

ฉันจะบล็อกพอร์ตทั้งหมดยกเว้นปี 1962, 999, 12020 ได้อย่างไร

หนึ่งพอร์ตสำหรับ SSH และอีกสองพอร์ตสำหรับสคริปต์ชนิดหนึ่ง ดังนั้นจำเป็นต้องอนุญาตให้ใช้พอร์ตเหล่านี้ใช่ไหม

iptables ของฉัน:

# Generated by iptables-save v1.4.4 on Sat Feb 25 17:25:21 2012
*mangle
:PREROUTING ACCEPT [643521:136954367]
:INPUT ACCEPT [643521:136954367]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [645723:99904505]
:POSTROUTING ACCEPT [645723:99904505]
COMMIT
# Completed on Sat Feb 25 17:25:21 2012
# Generated by iptables-save v1.4.4 on Sat Feb 25 17:25:21 2012
*filter
:INPUT ACCEPT [643490:136950781]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [645723:99904505]
-A INPUT -p tcp -m tcp --dport 1962 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 999 -j ACCEPT 
COMMIT
# Completed on Sat Feb 25 17:25:21 2012
# Generated by iptables-save v1.4.4 on Sat Feb 25 17:25:21 2012
*nat
:PREROUTING ACCEPT [5673:734891]
:POSTROUTING ACCEPT [2816:179474]
:OUTPUT ACCEPT [2816:179474]
COMMIT
# Completed on Sat Feb 25 17:25:21 2012

ขออภัยฉันเป็นมือใหม่จริงเมื่อพูดถึงสิ่งนี้และฉันต้องการให้เซิร์ฟเวอร์ของฉันปลอดภัยยิ่งขึ้น


ทำไมไม่ใช้ UFW
Soviero

คำตอบ:


25

ในตอนแรกคุณควรล้างข้อมูลเพื่อให้แน่ใจว่ามีอะไรที่กำหนดไว้แล้ว…ไม่มีอะไร

iptables -F

จากนั้นตั้งค่านโยบายเริ่มต้นของห่วงโซ่ INPUT เป็น DROP หากถึงจุดสิ้นสุดและไม่มีกฎที่ตรงกัน:

iptables -P INPUT DROP

เพื่อให้แน่ใจว่าลูปแบ็คจะไม่ได้รับการติดต่อคุณควรเพิ่ม

iptables -A INPUT -i lo -p all -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

เพื่ออนุญาตทราฟฟิกทั้งหมดบนโลถ้าและปริมาณการรับส่งข้อมูลทั้งหมดสำหรับการเชื่อมต่อที่คุณสร้างขึ้น หลังจากนั้นเพิ่มกฎที่คุณต้องการสำหรับการบริการของคุณทุกคน(ไม่ลืมที่จะเปิด SSH ถ้าคุณต้องการมันอื่น ๆ ที่คุณกำลังออก!) :

iptables -A INPUT -p tcp -m tcp --dport 1962 -j ACCEPT 
iptables -A INPUT -p tcp -m tcp --dport 999 -j ACCEPT 
iptables -A INPUT -p tcp -m tcp --dport 12020 -j ACCEPT 

เคล็ดลับเล็ก ๆ น้อย ๆ ที่ฉันทำเพื่อป้องกันตัวเองและคนอื่น ๆ จากการเจาะรูเข้าไปในระบบรักษาความปลอดภัยโดยไม่ได้ตั้งใจฉันก็เพิ่ม:

iptables -A INPUT -j DROP

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

สำหรับคำถามของคุณสรุปทั้งหมดนี้เป็นดังนี้:

iptables -F
iptables -P INPUT DROP
iptables -A INPUT -i lo -p all -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 1962 -j ACCEPT 
iptables -A INPUT -p tcp -m tcp --dport 999 -j ACCEPT 
iptables -A INPUT -p tcp -m tcp --dport 12020 -j ACCEPT 
iptables -A INPUT -j DROP

1
เพียงเพื่อชี้แจง: -Pกำหนดนโยบายในห่วงโซ่ มันไม่ได้เพิ่มกฎจริงๆ นโยบายของลูกโซ่หมายถึงการกระทำที่จะดำเนินการบนแพ็กเก็ตหากถึงจุดสิ้นสุดของลูกโซ่ ด้วยเหตุนี้จึงเป็นการดีที่จะเพิ่มกฎของคุณก่อนกำหนดDROPนโยบาย
Belmin Fernandez

ถ้าฉันจำได้ถูกต้องปกติมันไม่สำคัญว่าจะตั้งนโยบายที่ไหน ... บางทีฉันควรตอบคำถามเล็กน้อย
โมเซ่

3
หมายเหตุหนึ่ง: โปรดใช้ความระมัดระวังเป็นอย่างยิ่งการตั้งค่านโยบายเริ่มต้นจะปฏิเสธและล้างออกเมื่อตั้งค่าไฟร์วอลล์ผ่าน ssh คุณจะล็อคตัวเองออก ใช่ฉันได้ทำสิ่งนี้แล้ว :-) ตอนนี้ฉันมักจะทำกฎสุดท้ายiptables -A INPUT -j DROPแทนด้วยเหตุผลอย่างนั้น
Sirex

ผมไฮไลต์ SSH ของฉันเตือนบิต ;-)
โมเซ่

@Mose: แก้ไขให้ถูกต้องโดยไม่เกี่ยวกับเรื่องทั่วไป ฉันพยายามเน้นว่า แต่มันอาจทำให้คุณถูกล็อคเนื่องจากถูกกล่าวถึงแล้ว
Belmin Fernandez

20

คำตอบจากมือใหม่เช่นเดียวกับคุณ :-) ฉันจำเป็นต้องรักษาความปลอดภัยให้กับเซิร์ฟเวอร์ Ubuntu ของฉันเช่นกันการเรียนรู้ iptables เป็นความเจ็บปวดที่ฉันไม่สามารถผ่านได้ UFW (Uncomplicated Firewall) เป็นโปรแกรมที่ทำให้การกำหนดค่าไฟร์วอลล์ง่ายที่สุดเท่าที่จะทำได้

  • ติดตั้ง ufw:

    sudo apt-get install ufw
    
  • ปิดการใช้งานทันที (ฉันต้องช่วยเหลือบูตเพราะฉันถูกล็อคออกจากการเข้าสู่ระบบ SSH ของฉันเอง):

    sudo ufw disable
    
  • ตั้งค่า "ปฏิเสธ" เป็นกฎเริ่มต้น (บล็อกพอร์ตทั้งหมด):

    sudo ufw default deny
    
  • อนุญาตพอร์ตที่คุณต้องการ:

    sudo ufw allow to 1962
    sudo ufw allow to 999
    sudo ufw allow to 12020
    
    sudo ufw allow from 1962
    sudo ufw allow from 999
    sudo ufw allow from 12020
    
  • หากคุณแน่ใจว่ากฎด้านบนไม่ทำลายการเชื่อมต่อ ssh ของคุณให้เปิดใช้งาน ufw:

    sudo ufw enable
    

เอกสารเขียนได้ดีและให้ตัวอย่างเพิ่มเติม: https://help.ubuntu.com/community/UFW


1
เมื่อทำงานกับการกำหนดค่าไฟร์วอลล์คุณควรสร้างงาน cron ที่ปิดใช้งานไฟร์วอลล์อีกครั้ง ในกรณีที่คุณถูกล็อค
pymkin

โปรดทราบว่าสิ่งนี้ไม่สามารถใช้ได้กับ ufw 0.35 การโยนข้อผิดพลาดเช่นERROR: Bad destination addressและERROR: Bad source address
เดฟ

และวิธีอนุญาตพอร์ตทั้งหมดยกเว้นหนึ่งพอร์ตสำหรับอินเทอร์เฟซเฉพาะ ฉันใช้กฎการปฏิเสธเริ่มต้นและต้องการบล็อก DNS พอร์ต 53 บนอินเทอร์เฟซอีเธอร์เน็ตเพื่อป้องกันการรั่วไหลของ DNS เมื่อใช้ VPN ขณะนี้ฉันต้องอนุญาตพอร์ตทั้งหมดที่ฉันต้องการใช้สำหรับช่วง IP ส่วนตัวซึ่งไม่สะดวกมาก
baptx
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.