การใช้งาน ipfilter มีรายละเอียดดังนี้
วิธีการติดตั้ง ipfilter
ipfilter หรือ ipf เป็น firewall ที่ติดตั้งมาพร้อมกับ NetBSD เรียบร้อยแล้วดังนั้นการเรียกใช้จึงไม่มีขั้นตอนอะไรมากเพียงแค่แก้ไขไฟล์ /etc/rc.conf โดยเพิ่มคำว่า ipfilter=YES ซึ่งจะเป็นการกำหนดให้ ipfilter เริ่มทำงานตอนบูตเครื่อง ส่วนกฎการทำงานนั้นระบบจะทำการอ่านจากไฟล์ /etc/ipf.conf รายละเอียดจะกล่าวในหัวข้อถัดไป เมื่อทุกอย่างพร้อมแล้ว เมื่อบูตเครื่องใหม่ ipfilter จะเริ่มทำงานทั้นที
กฎการทำงานของ ipfilter
1. ipfilter จะอ่านกฎทีละกฎโดยเริ่มจากบรรทัดบนสุดแล้วค่อย ๆ อ่านทีละบรรทัดไล่ลงมา
2. กฎที่อยู่บนจะมีความสำคัญน้อยกว่ากฎที่อยู่รองลงมา
วิธีการเขียนกฎ ipfilter
1. การกำหนดให้ข้อมูลผ่านจะใช้คำว่า pass และกำหนดไม่ให้ข้อมูลผ่านจะใช้คำว่า block
2. การ กำหนดทิศทางของข้อมูลของกฎจะใช้คำว่า in และ out โดยจะยึดหลักในการพิจารณาจากตัวเครื่องเป็นหลักเช่น in จะหมายถึงข้อมูลที่ส่งมาจากเครื่องใด ๆ ก็ตามมายังเครื่องที่เราติดตั้ง ipf และ out จะหมายถึงข้อมูลที่ส่งออกจากเครื่องที่ติดตั้ง ipf ไปยังเครื่องอื่น ๆ
3. ใช้คำว่า all เพื่อแทนทุกๆ interface ทุกๆ ip และ ทุกๆ โพรโทคอล เช่น
block in all pass in all
จาก ตัวอย่างนี้ในบรรทัดแรกจะห้ามไม่ให้ข้อมูลใดๆ ก็ตามผ่านเข้ามา และในบรรทัดทีสองจะอนุญาติให้ข้อมูลใดๆ ก็ตามสามารถผ่านเข้ามาได้ เมื่อเราพิจารณาจากกฎที่ได้กล่าวไปแล้วที่ว่ากฎที่อยู่บรรทัดบนจะมีความ สำคัญน้อยกว่า ดังนั้นจากตัวอย่างนี้จะเป็นการอนุญาติให้ข้อมูลจากแหล่งใดๆ ก็ตามสามารถผ่านเข้ามายัง interface ใด ๆ ก็ได้โดยไม่จำกัดโพรโทคอลที่เข้ามา
4. หากต้องการให้กฎนั้นมีผลทั้นทีโดยไม่ต้องทำการตรวจสอบกฎที่เหลือให้ใช้ keyword “quick” เช่น
block in quick all
pass in all
จาก ตัวอย่างนี้เมื่อเริ่มต้น ipf จะอ่านกฎ block in quick all ซึ่งจะห้ามไม่ให้รับข้อมูลและกำหนดให้มีผลทันที (จาก keyword quick) จึงทำให้กฎที่เหลือไม่มีผล
5. การกำหนดโดยระบุ interface จะทำได้โดยใช้คำว่า on <interfaces> เช่น
block in on rtk0 all
ตัวอย่างนี้มีความหมายว่า ห้ามไม่ให้ข้อมูลจากทุกๆ แหล่งเข้ามายัง interface rtk0
6. การกำหนดแหล่งข้อมูลโดยใช้หมายเลข network id จะใช้คำว่า from <network id> เพื่อแทนแหล่งข้อมูลต้นทาง และคำว่า to <network id> แทนแหล่งข้อมูลปลายทาง นอกจากนั้นสามารถคำว่า any แทน network id เมื่อไม่ต้องการระบุแหล่งข้อมูล เช่น
block in from any to 192.168.132.0/24
จากตัวอย่างนี้มีความหมายว่า ไม่อนุญาตให้ข้อมูลขาเข้าจาก แหล่งใดๆ ก็ตามไปยัง 192.168.132.0/24
หากต้องการใช้งานร่วมกับ interface ก็สามารถทำได้ เช่น
pass out on rtk0 from 192.168.131.0/24 to 192.168.132.0/24
จากตัวอย่างนี้จะมีความหมายว่า อนุญาตข้อมูลบน interface rtk0 ที่มีแหล่งข้อมูลจาก 192.168.131.0/24 ส่งออกไปยัง 192.168.132.0/24
7. หากต้องการบันทึกเหตุการณ์ที่เกิดขึ้นลง log ไฟล์ให้เพิ่มคำว่า log ลงในกฎ เช่น
block in log on rtk0 from 192.168.131.0/24 to 192.168.132.0/24
8. การควบคุมโดยระบุโพรโทคอลที่ต้องการทำโดยใช้คำว่า proto พร้อมกับชื่อโพรโทคอลที่ต้องการซึ่งจะมีรายละเอียดดังนี้
– โพรโทคอล icmp ให้ใช้คำว่า proto icmp ซึ่งอาจจะระบุชนิดของ icmp เพิ่มเติมได้ ตัวอย่างเช่น
pass in quick on rtk0 proto icmp from any to 192.168.131.0/24 icmp-type 0
จาก ตัวอย่างจะมีความหมายว่าโพรโทคอล icmp type 0 ที่มีต้นทางจากแหล่งใดก็ตามสามารถผ่านไปยัง network 192.168.131.0/24 บน interface rtk0
– โพรโทคอล tcp หรือ upd ให้ใช้คำว่า proto tcp เพื่อควบคุมโพรโทคอล tcp ใช้คำว่า proto udp เพื่อควบคุมโพรโทคอล udp และใช้คำว่า proto tcp/udp เพื่อควบคุมโพรโทคอลทั้ง tcp และ udp หากต้องการระบุ port ที่ต้องการควบคุมสามารถใช้ร่วมกับคำว่า port ดังตัวอย่างต่อไปนี้
pass in quick on rtk0 proto tcp from any to 192.168.131.0/24 port = 80
จาก ตัวอย่างนี้มีความหมายว่า โพรโทคอล tcp port 80 บน interface rtk0 ที่มีต้นทางจากที่ใดก็ตามสามารถ ผ่านไปยัง network 192.168.131.0/24
นอกจากนี่เรายังสามารถกำหนดช่วงของ port ที่ต้องการโดยใช้เครื่องหมาย “<“, “>”, “><” เช่น
pass out on rtk0 proto udp from any to any port 33434><33690
จากตัวอย่างนี้มีความหมายว่า โพรโทคอล udp port ระหว่าง 33434 กับ 33690 จากต้นทางใดๆ ไปยัง network ใดๆ ผ่าน interface rtk0
<<==== ยังมีอีกครับ ค่อยกลับมาเขียนใหม่ ======>
Ref: http://www.obfuscation.org/ipf/ipf-howto.html
http://gotoknow.org/blog/unixusing/69355