วิธีกำหนดค่า iptables ให้ถูกต้อง


1

ฉันเพิ่งเริ่มใช้ linux ฉันเพิ่งใช้คำสั่งต่อไปนี้ในiptablesซึ่งฉันพบในเว็บไซต์เพื่อความปลอดภัย (ฉันไม่เข้าใจมากเกี่ยวกับการทำงานของกฎแต่ละข้อ) คำสั่งมีดังนี้:

$IPTABLES -P INPUT DROP
$IPTABLES -P FORWARD DROP
$IPTABLES -P OUTPUT DROP

$IPTABLES -A OUTPUT -m state --state INVALID -j DROP

$IPTABLES -A OUTPUT -p tcp --tcp-flags ALL ACK,RST,SYN,FIN -j DROP
$IPTABLES -A OUTPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
$IPTABLES -A OUTPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP

$IPTABLES -A OUTPUT -p tcp ! --syn -m state --state NEW -j DROP
$IPTABLES -A OUTPUT -f -j DROP
$IPTABLES -A OUTPUT -p tcp --tcp-flags ALL ALL -j DROP
$IPTABLES -A OUTPUT -p tcp --tcp-flags ALL NONE -j DROP  

$IPTABLES -A INPUT -m state --state INVALID -j DROP

$IPTABLES -A INPUT -p tcp --tcp-flags ALL ACK,RST,SYN,FIN -j DROP
$IPTABLES -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
$IPTABLES -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP

$IPTABLES -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
$IPTABLES -A INPUT -f -j DROP
$IPTABLES -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
$IPTABLES -A INPUT -p tcp --tcp-flags ALL NONE -j DROP  

หลังจากนำสิ่งเหล่านี้ไปใช้ฉันไม่สามารถเรียกดูอะไรได้ ฉันจะแก้ไขข้อผิดพลาดที่เป็นไปได้อย่างไร

คำตอบ:


3

คุณต้องเข้าใจว่าบรรทัดแรกที่สามปิดใช้งานการรับส่งข้อมูลทั้งหมดจากไปยังและผ่านคอมพิวเตอร์ของคุณตามค่าเริ่มต้น ( -P DROP)

หากคุณจะใช้ตาราง IP กับกฎเริ่มต้นเหล่านี้กฎที่ตามมาจะหมายถึงการอนุญาตการรับส่งข้อมูล สิ่งนี้ทำได้โดยใช้ACCEPTกฎบางแห่ง

ตัวอย่างเช่นคุณสามารถอนุญาตให้พอร์ต 80 แพ็กเก็ตที่เข้ามา:

-A INPUT -p tcp --dport 80 -j ACCEPT

ในทางกลับกันคุณสามารถดำเนินการต่อในลักษณะตรงกันข้ามกล่าวคืออนุญาตการรับส่งข้อมูลทั้งหมดตามค่าเริ่มต้น-P ACCEPTจากนั้นเขียนสิ่งที่คุณต้องการไม่อนุญาต

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


-1

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

ตัวอย่างเช่น:

:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]

# Drop a persistent nuisance
-A INPUT -s 89.163.185.170 -j DROP

# Accept established connections and loopback traffic

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

# Allow ssh from our IP address 1.2.3.4 (but also use hosts.allow and hosts.deny files)
-A INPUT -s 1.2.3.4 -i eth0 -m tcp -p tcp --dport 22 -j ACCEPT

# Allow web traffic on port 80 and 443 from everywhere
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT

# Block everything else
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited

คุณสามารถสร้างสิ่งนี้ได้อย่างง่ายดาย


1
ไม่เขาไม่สามารถสร้างสิ่งนี้ได้อย่างง่ายดาย การไม่เข้าใจ iptables เลยหมายความว่าเขาแค่เพิ่มกฎแบบสุ่ม การมอบพวงกุญแจให้กับเขารวมถึงที่อยู่ IP สาธารณะเฉพาะนั้นไม่ได้ช่วยอะไรเลย
Gabe

@Gabe - มันเป็นการดึงดูดให้คิดว่าคนอื่นเป็นเหมือนตัวเรา แต่คุณไม่ควรตัดสินความสามารถของคนอื่นถ้าคุณไม่รู้จักพวกเขาเป็นการส่วนตัว; แม้ว่า OP จะเป็นมือใหม่ที่ประกาศตัวเอง แต่เขาอาจเป็นผู้เรียนที่เร็วและมีประสบการณ์ทั่วไปที่ช่วยให้เขาค้นคว้าได้อย่างเพียงพอคาดการณ์และเข้าใจไฟล์ที่จัดรูปแบบและจัดทำเอกสารอย่างเพียงพอ อาจมีคำถามอื่น ๆ ที่ตามมา แต่ตัวอย่างที่เรียบง่ายเป็นจุดเริ่มต้นที่ดีและก้าวย่าง
นิค

-1

คุณพลาดการอนุญาตให้มีESTABLISHEDการเชื่อมต่อ ลองเพิ่มนี่ในตอนท้ายของสคริปต์ของคุณ

iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

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


1
เขาพลาดการอนุญาตอะไรเลยทุกที่ทุกเวลา
Gabe

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