วันเสาร์, กุมภาพันธ์ 18, 2549

iptables for newbie

สมมุติว่าเราอยากจะปิดเครื่องเราโดยสมบูรณ์แบบ แบบว่าชาตินี้ข้าไม่ต้องการคุยกะชาวบ้าน ชาวช่องอีกเลย ก็ให้สั่งว่า
> iptables -A INPUT -i eth0 -j DROP
ถ้าสั่งแบบนี้ แปลว่าเราไม่รับ package ใดๆ ที่เข้ามาทาง eth0 เลย (ก็ไม่ฟังชาวบ้านหน่ะละ)

note: eth0 ก็คือ LAN Card ตัวที่ 1 ของเรา ถ้ามีตัวอื่นๆ อีกก็ไล่ไปเรื่อย
note2: ถ้าไม่ได้อยู่หน้า console อย่าไปสั่ง command นี้เชียว เดี๋ยวจะเป็นเรื่อง

ทีนี้มันเป็นไปได้หรือ? ที่จะไม่คุยกะชาวบ้านชาวช่องเลย คำตอบคือ เป็นไปไม่ได้ครับ แล้วทีนี้จะทำไงละ? ก็ต้องปิดเป็นจุดๆ ไป เช่น สมมุติว่า เราไม่อยากให้ชาวบ้านเค้า ping เราเจอ เราก็จะสั่งว่า

> iptables -A INPUT -p icmp -j DROP

มันแปลว่า ถ้ามีอะไรก็ตามที่เป็น icmp เข้ามา ก็ให้ drop ทิ้งไป ไม่ต้องสนใจ ที่นี้ ถ้าสมมุติว่าเรามี LAN Card หลายตัว เกิดอยากปิดแค่บางตัวจะทำยังไง เราก็ต้องผสมคำสั่งเข้าไปซิครับ ย้อนกลับไปดูอันบนกันหน่อย ผมมี -i eth0 อยู่ใช่ม่ะ? เราก็เอาไอ้ -i eth0 นี่ละ มาใส่เข้าไปเลย กลายเป็น

> iptables -A INPUT -i eth0 -p icmp -j DROP

คราวนี้มันก็จะแปลได้ว่า ถ้ามี icmp เข้ามาทาง eth0 เมื่อไหรให้ drop ทิ้งไป แต่ถ้ามาทางอื่นๆ ก็ไม่ต้องทำอะไร (คือปล่อยไปตามปกติ)

คราวนี้มาดูความหมายกันมั่งว่าไอ้ parameter แต่ละตัวเนี่ย มันคืออะไรกันบ้าง? เริ่มจาก

: -A INPUT ไอ้เข้า -A INPUT เนี่ย มันหมายถึงขาเข้า ทีนี้มีขาเข้ามันก็ต้องมีขาออก ก็เปลี่ยนจาก -A INPUT เป็น -A OUTPUT เท่านั้นเองครับ ถ้าเราใช้ -A ต่อๆ กันหลายๆ คำสั่ง มันก็จะเอา rule ไปต่อท้ายเรื่อยๆ ถ้าหากต้องการแทรก ให้ใช้ -I INPUT 1 แทน ซึ่งถ้าใส่ 1 มันจะเติมเข้าไปเป็นตัวแรกสุดเลย

: -i eth0 ใช้ได้กะ -A INPUT เท่านั้น เอาไว้ระบุว่าจะให้ดู package ที่ LAN Card ตัวไหน อีกตัวที่เป็นไปได้คือ -o eth0 ก็จะใช้ได้กะ -A OUTPUT เท่านั้นเหมือนกัน

: -p icmp ไอ้ตัวนี้ละที่จะเป็นตัวกำหนดเลยว่าเราจะ monitor protocal ประเภทไหน เช่น icmp (ping), tcp, udp หรือว่าอื่นๆ ถ้าเป็น tcp หรือว่า udp เราสามารถกำหนด port เพิ่มเติมได้ด้วย parameter -dport 80 หรือ -sport 80 สองตัวนี้ต่างกันตรงที่ว่า ตัวนึงไว้ใช้กะ -A INPUT (-dport 80) ส่วนอีกตัวไว้ใช้กะ -A OUTPUT (-sport 80)

: -J DROP ไอ้เจ้าตัวนี้ละสำคัญที่สุด มันจะเป็นตัวที่บอกว่า ถ้ามี package เข้ามาตามเงื่อนไขที่ระบุไว้ในบรรทัดนี้แล้ว จะให้ทำยังไง เป็นไปได้คือ DROP, ACCEPT, REJECT, REDIRECT ซึ่งที่เราสนใจจะมีสองตัวคือ DROP กะ ACCEPT ความหมายก็ตามชื่อมันเลย DROPACCEPT ก็รับมาเข้ามาแล้วจะจัดการยังไงต่อเป็นอีกเรื่องนึง

: -F อันนี้รุนแรงสุดละ มันคือคำสั่งที่จะลบ rule ทั้งหมดที่เคยทำไว้ ถ้าเกิดทำๆ ไปแล้วเจ๊งก็สามารถ reset ได้ด้วยวิธีนี้ครับ
ก็ช่างหัวมัน ทิ้งไปโล้ด ส่วน

ไม่มีความคิดเห็น: