สร้างไฟร์วอลล์ของคุณเองด้วย iptables โดยใช้สคริปต์ง่ายๆตอนที่ 2

Firewall_ (เครือข่าย)

สวัสดีทุกคนวันนี้ฉันนำเสนอบทแนะนำเกี่ยวกับไฟร์วอลล์ที่มี iptables เป็นส่วนที่สองซึ่งง่ายมากเพื่อให้คุณสามารถคัดลอกและวางได้ฉันคิดว่าในตอนท้ายของวันมันเป็นสิ่งที่ผู้เริ่มต้นทุกคนมองหาหรือแม้แต่มากที่สุด มีประสบการณ์ทำไมเราต้องสร้างล้อใหม่ 100 ครั้งใช่ไหม?

คราวนี้ฉันบอกให้พวกเขาพยายามมุ่งเน้นไปที่กรณีที่เฉพาะเจาะจงว่าเราต้องการให้ไฟร์วอลล์ของเรามีความก้าวร้าวมากขึ้นด้วยนโยบาย OUTPUT DROP หรือไม่ โพสต์นี้เป็นคำขอของผู้อ่านหน้านี้และโพสต์ของฉัน (ในใจของฉัน wiiiiiiiiiiiii)

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

เพื่อไม่ให้เดินเตร่หรือหลุดหัวข้อฉันจะอธิบายให้คุณฟังอย่างรวดเร็วพร้อมกับตัวอย่างว่ากฎของคุณควรมีมากหรือน้อยเพียงใด

iptables -A OUTPUT -o eth0 -p tcp –sport 80 -m state -state ESTABLISHED -j ACCEPT
-A เพราะเราเพิ่มกฎ
-o หมายถึงการรับส่งข้อมูลขาออกจากนั้นอินเทอร์เฟซจะถูกวางไว้หากไม่ได้ระบุไว้เนื่องจากตรงกับทั้งหมด
-กีฬา พอร์ตต้นทางมีบทบาทสำคัญเพราะในกรณีส่วนใหญ่เราไม่ทราบว่าพอร์ตใดที่พวกเขากำลังจะส่งคำขอถ้าเป็นเช่นนั้นเราสามารถใช้ dport
–Dport พอร์ตปลายทางเมื่อเราทราบล่วงหน้าโดยเฉพาะว่าการเชื่อมต่อขาออกจะต้องไปที่พอร์ตเฉพาะเท่านั้น มันจะต้องมีบางอย่างที่ตรงเวลามากเช่นเซิร์ฟเวอร์ mysql ระยะไกลเช่น
-m รัฐ - รัฐที่จัดตั้งขึ้น นี่เป็นเครื่องประดับของการรักษาการเชื่อมต่อที่กำหนดไว้แล้วเราสามารถเจาะลึกได้ในโพสต์ในอนาคต
-d เพื่อพูดถึงปลายทางหากสามารถระบุได้ตัวอย่างเช่น ssh ไปยังเครื่องใดเครื่องหนึ่งโดย ip ของมัน

#!/bin/bash

# เราทำความสะอาดตาราง iptables -F iptables -X # เราทำความสะอาด NAT iptables -t nat -F iptables -t nat -X # mangle table สำหรับสิ่งต่างๆเช่น PPPoE, PPP และ ATM iptables -t mangle -F iptables -t mangle -X # นโยบายฉันคิดว่านี่เป็นวิธีที่ดีที่สุดสำหรับผู้เริ่มต้นและ # ก็ยังไม่แย่ฉันจะอธิบายเอาต์พุต (เอาต์พุต) ทั้งหมดเนื่องจากเป็นการเชื่อมต่อขาออก # อินพุตเราทิ้งทุกอย่างและไม่ควรส่งต่อเซิร์ฟเวอร์ iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP #Intranet LAN intranet = eth0 #Extranet wan extranet = eth1 # Keep state. ทุกสิ่งที่เชื่อมต่อแล้ว (สร้างขึ้น) เราปล่อยไว้เช่นนี้ iptables -A INPUT -m state --state ESTABLISHED, RELATED -j ACCEPT
iptables -A เอาท์พุท -m state - รัฐจัดตั้งขึ้น, ที่เกี่ยวข้อง -j ยอมรับ
# อุปกรณ์ห่วง. iptables -A INPUT -i lo -j ACCEPT
# Iptables ลูปแบ็คเอาท์พุท -A เอาท์พุท -o lo -j ยอมรับ

# http, https เราไม่ได้ระบุอินเทอร์เฟซเนื่องจาก # เราต้องการให้เป็น iptables ทั้งหมด -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# ออกเดินทาง
# http, https เราไม่ระบุอินเทอร์เฟซเนื่องจาก
# เราต้องการให้ทุกคน แต่ถ้าเราระบุพอร์ตเอาต์พุต
iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT iptables -A OUTPUT -p tcp --sport 443 -j ยอมรับ

# ssh เฉพาะภายในและจากช่วงของ iptables ของ ip -A INPUT -p tcp -s 192.168.xx / 24 -i $ intranet --dport 7659 -j ยอมรับ
# output # ssh เฉพาะภายในและจากช่วงของ ip นี้
iptables -A OUTPUT -p tcp -d 192.168.xx / 24 -o $ intranet --sport 7659 -j ยอมรับ
# การตรวจสอบเช่นหากมี zabbix หรือ iptables บริการ snmp อื่น ๆ -A INPUT -p tcp -s 192.168.1.1 -i $ intranet --dport 10050 -j ACCEPT
# ออกเดินทาง
# การตรวจสอบเช่นหากมี zabbix หรือบริการ snmp อื่น ๆ
iptables -A OUTPUT -p tcp -d 192.168.1.1 -o $ intranet --dport 10050 -j ยอมรับ

# icmp, ping ที่ดีคือการตัดสินใจของคุณ iptables -A INPUT -p icmp -s 192.168.xx / 24 -i $ intranet -j ACCEPT
# ออกเดินทาง
# icmp ปิงที่ดีคือการตัดสินใจของคุณ
iptables -A OUTPUT -p icmp -d 192.168.xx / 24 -o $ อินทราเน็ต -j ยอมรับ

#mysql พร้อม postgres คือพอร์ต 5432 iptables -A INPUT -p tcp -s 192.168.xx --sport 3306 -i $ intranet -j ACCEPT
# output - คำถามที่ถามโดยผู้ใช้เพื่อสร้างเซิร์ฟเวอร์ # rule ที่เฉพาะเจาะจงมาก: 192.168.1.2 mysql: 192.168.1.3
#mysql พร้อม postgres คือพอร์ต 5432
iptables -A เอาท์พุท -p tcp -s 192.168.1.2 -d 192.168.1.3 --dport 3306 -o $ อินทราเน็ต -j ยอมรับ

#sendmail bueeeh ถ้าคุณต้องการส่งเมล #iptables -A OUTPUT -p tcp --dport 25 -j ACCEPT # Anti-SPOOFING 09/07/2014 # SERVER_IP = "190.xxx" # เซิร์ฟเวอร์ IP - wan ip จริง ของเซิร์ฟเวอร์ LAN_RANGE = "192.168.xx / 21" # ช่วง LAN ของเครือข่ายของคุณหรือ vlan # IP ของคุณที่ไม่ควรเข้าสู่เอกซ์ทราเน็ตโดยจะต้องใช้ตรรกะ # เล็กน้อยหากเรามีอินเทอร์เฟซ WAN ล้วนๆก็ไม่ควร ป้อน # ประเภทการรับส่งข้อมูล LAN ผ่านอินเทอร์เฟซนั้น SPOOF_IPS = "0.0.0.0/8 127.0.0.0/8 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16" # การดำเนินการเริ่มต้น - จะดำเนินการเมื่อกฎใด ๆ ตรงกับ ACTION = "DROP" # แพ็คเก็ตที่มี ip เดียวกันกับเซิร์ฟเวอร์ของฉันผ่าน wan iptables -A INPUT -i $ extranet -s $ SERVER_IP -j $ ACTION
iptables -A OUTPUT -o $ เอกซ์ทราเน็ต -s $ SERVER_IP -j $ ACTION

# แพ็คเก็ตที่มีช่วง LAN สำหรับ wan ฉันวางไว้แบบนี้ในกรณีที่คุณมี # เครือข่ายเฉพาะใด ๆ แต่สิ่งนี้ซ้ำซ้อนกับ # กฎต่อไปนี้ภายใน "for" loop iptables -A INPUT -i $ extranet -s $ LAN_RANGE -j $ ACTION
iptables -A OUTPUT -o $ extranet -s $ LAN_RANGE -j $ ACTION

## เครือข่าย SPOOF ทั้งหมดไม่อนุญาตโดย wan for ip ใน $ SPOOF_IPS do iptables -A INPUT -i $ extranet -s $ ip -j $ ACTION
iptables -A OUTPUT -o $ เอกซ์ทราเน็ต -s $ ip -j $ ACTION
ทำ

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


แสดงความคิดเห็นของคุณ

อีเมล์ของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องการถูกทำเครื่องหมายด้วย *

*

*

  1. ผู้รับผิดชอบข้อมูล: Miguel ÁngelGatón
  2. วัตถุประสงค์ของข้อมูล: ควบคุมสแปมการจัดการความคิดเห็น
  3. ถูกต้องตามกฎหมาย: ความยินยอมของคุณ
  4. การสื่อสารข้อมูล: ข้อมูลจะไม่ถูกสื่อสารไปยังบุคคลที่สามยกเว้นตามข้อผูกพันทางกฎหมาย
  5. การจัดเก็บข้อมูล: ฐานข้อมูลที่โฮสต์โดย Occentus Networks (EU)
  6. สิทธิ์: คุณสามารถ จำกัด กู้คืนและลบข้อมูลของคุณได้ตลอดเวลา