Mini Howto
Subject : การทำ Network security(Firewall)
By : Dome Potikanond <dome@ds90.intanon.nectec.or.th>
Date : Apr 6, 1998
Update from : -
License: สงวนลิขสิทธิ์เอกสารนี้ โดย โดม โพธิกานนท์ <dome@ds90.intanon.nectec.or.th> การเผยแพร่เอกสารนี้จะต้องอยู่ภายไต้ เงื่อนไขของ GNU General Public License เวอร์ชั่น 2.0 ที่ออกโดย Free Sofware Foundation กรุฒาอ่านรายละเอียดของ GPL ที่ <http://linux.thai.net/gpl.html>

Introduction :
    สำหรับ Linux นั้นมีความสามารถในการทำ network security ได้ในระดับที่ค่อนข้างดี โดยที่ไม่จำเป็นต้องหา software มาเพิ่มเติมเลย
ซึ่งในการทำ network security นั้นจะอาศัย Firewall ซึ่งจะทำได้โดยการใช้ความสามารถของ ipfwadm(ip firewall admin) ซึ่งมีมากับ
package ของ linux อยู่แล้ว
    ในการทำงานของ ipfwadm นั้นสามารถทำงานได้ 4 รูปแบบได้แก่
        IP packets
        IP input firewall
        IP output firewall
        IP forwarding firewall
    สำหรับ ipfwadm สามารถกำหนดได้ว่าจะทำ firewall ในส่วนของข้อมูลขาเข้า ออก หรือ ทั้งสองทาง นอกจากนี้แล้วสำหรับเครื่องที่เป็น
gateway นั้นยังสามารถทำ forwarding firewall ได้เพราะตังเองทำหน้าที่เป็น gatewaying/forwarding gateway อยู่แล้ว

Prerequire :
    ต้อง make kernel ให้สนับสนุนการทำงานของ Network Firewall ,IP Firewall และถ้าเครื่องที่ใช้นั้นต้องทำหน้าที่เป็น gateway
ให้ make kernel ให้สนับสนุนการทำงานของ IP forwarding/gatewaying ด้วย

การใช้งาน firewall (ipfwadm) :
    1. ให้พิจารณาจากรูปแบบการเชื่่อมต่อของ network นั้นๆว่าเป็นไปในลักษณะใด เช่นดูว่าในระบบมี gateway กี่ตัวอยู่ที่ในบ้าง มี network
กี่วง วงใดต่อกับวงใด ผู้ใช้งานหลักสำหรับ network แต่ละวงเป็นใคร
    2. พิจารณาว่าต้องการให้ network วงใดถูกกันออกจากการเข้าถึงของเครื่องใน network อื่นๆ เช่น network ของผู้บริหาร ไม่ควรที่จะถูก
พนักงานธรรมดา หรือเครื่องจาก internet เข้าถึงได้
    3. ให้ใช้เครื่อง linux เครื่องหนึ่งเป็น gateway สำหรับ network ที่ต้องการ security แล้วสร้าง firewall โดยใช้ ipfwadm
    4. กำหนด policy ต่างๆที่เห็นสมควรเช่น เครื่องของผู้บริหารสามารถเข้าถึงเครื่องของพนักงาน และ internet ได้ แต่เครื่องจาก
internet และพนักงานจะไม่สามารถเข้าถึงข้อมูลในเครื่องผู้บริหารได้ โดยใช้ ipfwadm ซึ่งจะได้อธิบายดังต่อไปนี้

Syntax :

Firewall Categories :
ipfwadm -I command parameters [options] --> ใช้เมื่อต้องการกำหนด IP input firewall rules สำหรับเครื่องๆนั้น
ipfwadm -O command parameters [options] --> ใช้เมื่อต้องการกำหนด IP output firewall rules สำหรับเครื่่องๆนั้น
ipfwadm -F command parameters [options] --> ใช้สำหรับการกำหนด IP forwarding firewall rules สำหรับเครื่องที่ใช้เป็น
                                            gateway/forwarding
[option] :
-a --> ใช้เมื่อต้องการเพิ่ม policy ใหม่เข้าไปใน list
-d --> ใช้เมื่อต้องการลบ policy เดิมที่มีอยู่ใน list ออกไป
-l --> ใช้เมื่อต้องการดู policy ทั้งหมดที่มีอยู่ใน list
-P --> ใช้เมื่อต้องการกำหนด policy ในระดับ port (application)ว่าให้บริการใช้ได้บ้าง หรือบริการใดใช้ไม่ได้บ้าง
-S --> ตามด้วยหมายเลข ip address/netmask ของเครื่องต้นทางในการส่งข้อมูล
-D --> ตามด้วยหมายเลข ip address/netmask ของเคร่่ื่องปลายทางที่จะส่งข้อมูลไปถึง

Example :

    bash# ipfwadm -I -l

เป็นการ list policy เกี่ยวกับ IP input firewall ทั้งหมดที่มีการกำหนดไว้ ซึ่งถ้ายังไม่เคยมีการกำหนดมาก่อนจะได้ผลลัพธ์คือ

    IP firewall input rules, default policy: accept

แต่ถ้ามีการกำหนด policy ใหม่ดังตัวอย่าง

    ipfwadm -O -a deny -P tcp -S 202.44.248.93/32 -D 202.44.248.67/32 80

จะหมายถึงว่า จะไม่ยอมให้เครื่องที่มี ip address 202.44.248.93(ตัวเอง) ส่งข้อมูลที่ใช้ protocal TCP ไปยังเครื่่องที่มี
ip address 202.44.248.67 ที่ port 80 (แต่ยังส่งไปยัง port อื่นๆได้อยู่ หรือยังส่งข้อมูลที่เป็น UDP ไปที่ port 80 ของ
เครื่่อง 202.44.248.67 ได้อยู่)

    bash# ipfwadm -I -a deny -P tcp -S 0.0.0.0/0 -D 202.44.248.93/32 157
    bash# ipfwadm -I -a deny -P udp -S 0.0.0.0/0 -D 202.44.248.93/32 157

เป็นการกำหนดว่าไม่อนุญาติให้มีการส่งข้อมูลทีใช้ protocal TCP และ UDP จากเครื่องใดๆก็ตามมายังเครื่องที่มี ip address
202.44.248.93(เครื่องตัวเอง) ที่ port 157 (แต่ยังสามารถรับข้อมูลที่เข้ามาที่ port อื่นๆได้)

    bash# ipfwadm -O -l
    IP firewall output rules, default policy: accept
    type  prot source               destination          ports
    deny  tcp  mimi.mptc.eng.cmu.ac.th ows.doc.eng.cmu.ac.th any -> www

    bash# ipfwadm -I -l
    IP firewall input rules, default policy: accept
    type  prot source               destination          ports
    deny  tcp  anywhere             mimi.mptc.eng.cmu.ac.th any -> 157
    deny  udp  anywhere             mimi.mptc.eng.cmu.ac.th any -> 157

เมื่อมีทดลอง list รายละเอียดของ policy ทั้งหมดที่มีสำหรับ IP output firewall และ IP input firewall ตามลำดับจะ
ปรากฎรายละเอียดตามลำดับดังตัวอย่าง

สำหรับเครื่องที่ทำหน้าที่เป็น gateway/forwarding นั้นยังสามารถใช้ command ใน category ของ -F ได้ดังตัวอย่าง

    bash# ipfwadm -F -a deny -S 200.0.2.0/24 -D 202.44.248.67/32

จะเป็นการกำหนดว่า จะไม่ยอมให้เครื่องในเครื่อข่าย 200.0.2.0 ส่งข้อมูลใดๆไปยังเครื่อง 202.44.248.67(ไม่ใช่เครื่องตัวเอง)ได้