ตัวอย่างการทำ Access List เพื่อป้องกันไวรัสบน Cisco Router
โดย....เสษวิสวะ

บทนำ
ตัวอย่างที่จะกล่าวถึงในที่นี้  เป็นตัวอย่างที่ต้องการห้ามการใช้คำสั่ง
ping (echo) และต้องการปิดกั้นพอร์ตต่าง ๆ เพื่อป้องกันไวรัสคอมพิวเตอร์ที่มีชื่อดังรายการข้างล่างนี้ :

  • W32.Blaster.Worm

  • W32.Sasser.Worm และ W32.Sasser.B.Worm

โดยวิธีการป้องการไวรัส W.32.Blaster.Worm นั้นเราควรจะทำการปิดกั้นการติดต่อไปยังพอร์ตต่างๆ ในระดับของเราเตอร์ ดังต่อไปนี้ :

  • พอร์ต 135/TCP และ 135/UDP ของ DCOM RPC

  • พอร์ต 69/UDP ของ TFTP

  • พอร์ต 139/TCP และ 139/UDP ของ NetBIOS

  • พอร์ต 445/TCP และ 445/UDP

  • พอร์ต 4444/TCP

ส่วนวิธีการป้องการไวรัส W32.Sasser.Worm และ W32.Sasser.B.Worm นั้นก็ควรจะทำการปิดกั้นการติดต่อไปยังพอร์ตต่างๆ ในระดับของเราเตอร์ ดังนี้ :

  • พอร์ต 445/TCP เพราะเป็นพอร์ตที่หนอนใช้ในการโจมตี

  • พอร์ต 5554/TCP เป็นพอร์ตที่ใช้ในการดาวน์โหลดไฟล์ของหนอนด้วยโปรแกรม FTP

  • พอร์ต 9996/TCP เป็น Remote shell ที่ถูกเปิดโดยโปรแกรมประเภท Exploit ที่โจมตีช่องโหว่ Windows LSASS

สมมุติฐาน
ในที่นี้สมมุติว่าเราเตอร์ของเราเป็นด้านลูกค้า  มี 2 อินเตอร์เฟสคือ Serial 0 กับ FastEthnet 0 โดย Serial 0 เชื่อมต่อกับ ISP และ FastEthernet 0 เชื่อมต่อกับ Hub/Switch ภายในสำนักงานตัวเอง

การปิดกั้นพอร์ตด้วยการทำ
Access List

Router#conf t
Router(config)#access-list 100 deny tcp any any range 135 139
Router(config)#access-list 100 deny udp any any range 135 netbios-ss
Router(config)#access-list 100 deny udp any any eq 69
Router(config)#access-list 100 deny tcp any any eq 445
Router(config)#access-list 100 deny udp any any eq 445
Router(config)#access-list 100 deny tcp any any eq 5554
Router(config)#access-list 100 deny tcp any any eq 9996
Router(config)#access-list 100 deny icmp any any echo
Router(config)#access-list 100 permit ip any any

Router(config)int f0
Router(config-if)#ip access-group 100 in
Router(config-if)#ip access-group 100 out
Router(config-if)#exit
Router(config)#int s0
Router(config-if)#ip access-group 100 in
Router(config-if)#ip access-group 100 out

หมายเหตุ เนื่องจาก NetBIOS จะอยู่ในช่วงพอร์ต 139-139 ของทั้ง TCP และ UDP ในที่นี้จึงได้กำหนดพอร์ต์เป็นช่วงคือ range 135-139 ส่วนที่เป็น 135 netbios-ss เนื่องจาก netbios-ss จะตรงกับพอร์ต 139 ดังนั้น range 135 netbios-ss จึงมีค่าเท่ากับ range 135 139  

สรุปขั้นตอนการทำ Access List
1. สร้างกฎขึ้นมาก่อนว่าจะอนุญาตหรือไม่อนุญาตโปรโตคอลอะไรที่พอร์ตไหน
2. เลือกชนิดของ
 Access List ให้สัมพันธ์กับกฎที่ต้องการ  ซึ่งแบ่งตามหมายเลขที่ Cisco จัดให้มา มีหลายชนิดดังนี้ :

  • <1-99> IP standard access list

  • <100-199> IP extended access list

  • <1100-1199> Extended 48-bit MAC address access list

  • <1300-1999> IP standard access list (expanded range)

  • <200-299> Protocol type-code access list

  • <2000-2699> IP extended access list (expanded range)

  • <700-799> 48-bit MAC address access list

  • dynamic-extended Extend the dynamic ACL abolute timer

  • rate-limit Simple rate-limit specific access list

ที่ใช้กันบ่อยก็เป็น Access List หมายเลข 1-99 (IP standard access list)  และ 100-199 ( IP extended access list)

โดยชนิด 1-99 จะเป็นแบบพื้นฐานที่มีความสามารถแค่จะอนุญาตหรือไม่อนุญาตแพ็กเกตที่มาจาก
Source Address ไหนเท่านั้น ไม่สามารถระบุโปรโตคอลและพอร์ตได้

ส่วนชนิด 100-199 เป็นแบบที่มีความสามารถมากขึ้นคือสามารถระบุโปรโตคอลและพอร์ตได้

ส่วนชนิดอื่นไม่ขอกล่าวในที่นี้ครับ

จากตัวอย่างข้างบนใช้เป็นชนิด
IP extended access list  ซึ่งจะเห็นว่าในส่วนแรกของ access list จะเป็นการ deny ก่อน และบรรทัดสุดท้ายก็จบด้วยการ permit  ตรงนี้สำคัญมากครับ  เพราะถ้าเรา deny มาก่อนแล้วแต่สุดท้ายไม่มีการ permit ก็จะทำให้ router เกิดการ deny ทั้งหมดเลย เราไม่สามารถติดต่อใช้งานได้

3. จะนำกฎดังกล่าวไปใช้กับอินเตอร์เฟสไหนของเราเตอร์  เมื่อเราได้สร้างกฎที่ต้องการขึ้นมาแล้ว  กฎต่าง ๆ ยังคงไม่มีผลต่อระบบนะครับ ต้องมีการระบุอีกด้วยว่าจะให้กฎที่สร้างขึ้นมานั้นมีผลกับอินเตอร์เฟสไหนของเราเตอร์  นั่นคือการคอนฟิกต้องเข้าไปที่อินเตอร์เฟสที่ต้องการแล้วใช้คำสั่ง ip access-group ซึ่งมีรูปแบบของคำสั่งดังนี้ :

Router(config-if)#ip access-group {number | name [in | out]}

   number  หมายถึง หมายเลขของ access-list ตรงนี้ต้องตรงกับหมายเลข access list ที่ได้ทำไว้นะครับ
   in | out     หมายถึง ทิศทางของแพ็กเกตข้อมูล ซึ่งตรงนี้ต้องมีการนึกภาพ (จินตนาการ) นิดหนึ่ง  ตัวอย่างเช่น  :

  • ถ้าเราเอากฎไป apply กับ FastEthernet 0 ก็ต้องนึกภาพของจริงว่า FastEthnet 0 นั้นมีการเชื่อมต่อกับ Hub/Switch ดังนั้น คำว่า input ก็หมายถึงแพ็กเกตข้อมูลที่วิ่งจาก hub/switch มายัง FastEthnet 0 ส่วนคำว่า output ก็หมายถึงแพ็กเกตข้อมูลที่วิ่งจาก FastEthernet 0 ไปยัง hub/switch

  • ถ้าเอากฎไป apply กับ Serial Port ซึ่งถ้า Serial ต่ออยู่กับ Serial ฝั่งตรงข้ามในที่นี้คือเราเตอร์ของ ISP คำว่า input ก็หมายถึงแพ็ตเกตข้อมูลที่วิ่งจาก Serial ของเราเตอร์ฝั่งตรงข้าม (ISP)  เข้ามายัง Serial ของเราเอง ส่วนคำว่า output ก็หมายถึงแพ็กเกตข้อมูลที่วิ่งจาก Serial 0 ของเราไปยัง Serial ของเราเตอร์ของ ISP

----จบ----