Friday, February 23, 2007

Configuring IP Access Lists in Cisco Router

การคอนฟิก Access Lists ใน Cisco Router
1. การสร้าง Access-list ขึ้นใหม่แต่ละครั้งควรจะเริ่มต้นด้วยคำสั่ง no access-list xxx (เมื่อ xxx แทนตัวเลขใดๆ เช่น 123) ก่อนเสมอ เพื่อลบค่าเดิมในกรณีมีการใช้งานอยู่ก่อนหน้า

       Cisco_Router1 (config) # no access-list 50
       Cisco_Router1 (config) # access-list 50 permit host 192.168.10.9
       Cisco_Router1 (config) # access-list 50 deny any log

2. กำหนดหมายเลขพอร์ตที่ต้องการควบคุมสำหรับในแต่ละ Access list ซึ่งจะช่วยเพิ่มประสิทธิภาพการทำงานของ IOS เนื่องจากทำให้ไม่ต้องทำการตรวจสอบข้อมูลในส่วน Header ทั้งหมดของแพ็กเก็ตโดยไม่จำเป็น

นอกจากนี้ ยังช่วยให้แน่ใจว่าข้อมูลการใช้งานที่เก็บในล็อกมีข้อมูลของหมายเลขพอร์ตที่ถูกต้อง โดยการกำหนดหมายเลขพอร์ตในช่วงที่ต้องการเป็นอาร์กิวเมนต์หนึ่งของ Access list ที่สร้างขึ้น ดังตัวอย่าง

       no access-list 101
       access-list 101 deny udp any range 1 65535 any range 1 65535 log
       access-list 101 deny tcp any range 1 65535 any range 1 65535 log
       access-list 101 deny ip any any log

คำสั่งในบรรทัดสุดท้ายใส่เพื่อให้แน่ใจว่า Router จะปฏิเสธแพ็กเก็ตที่ใช้งานโพรโตคอลอื่นๆ นอกเหนือจาก TCP และ UDP รวมทั้งเก็บค่าลงในล็อก

3. อนุญาต ให้เฉพาะแอดเดรสของเครือข่ายภายในส่งข้อมูลเข้าสู่ router ผ่านทางอินเทอร์เฟซภายใน โดยการบังคับที่ Access list รวมทั้งการปิดไม่ให้แอดเดรสที่ไม่ถูกต้องออกจากเครือข่ายที่อินเทอร์เฟซที่ เชื่อมต่อกับเครือข่ายภายนอก เพื่อป้องกันผู้บุกรุกไม่ให้ใช้ Router เป็นเครื่องมือในการโจมตีที่อื่น วิธีการนี้อาจจะไม่สามารถนำไปใช้งานได้จริงกับเครือข่ายที่มีความซับซ้อน

       Cisco_Router1 (config) # no access-list 101
       Cisco_Router1 (config) # access-list 101 permit ip 192.168.10.0 0.0.0.255 any
       Cisco_Router1 (config) # access-list 101 deny udp any range 1 65535 any log
       Cisco_Router1 (config) # access-list 101 deny tcp any range 1 65535 any log
       Cisco_Router1 (config) # access-list 101 deny ip any any log
       Cisco_Router1 (config) # interface eth 1
       Cisco_Router1 (config-if) # ip access-group 101 in
       Cisco_Router1 (config-if) # exit
       Cisco_Router1 (config) # interface eth 0
       Cisco_Router1 (config-if) # ip access-group 101 out

4. ไม่ควรให้แพ็กเก็ตที่มาจากภายนอก (จากเครือข่ายที่ไม่น่าเชื่อถือ) ผ่านเข้ามาในเครือข่าย เนื่องจากอาจจะเป็นแพ็กเก็ตที่มีการปลอมแปลง หรือส่งมาเพื่อโจมตีเครือข่าย สามารถทำได้โดยการแบ่งส่วนของเครือข่ายทั้งหมดตามแต่ละอินเทอร์เฟซของ Router และออกแบบว่าจะเลือกให้มีการส่งผ่านข้อมูล ที่มาจากเครือข่ายภายนอกและเครือข่ายที่ไม่น่าเชื่อถือจากที่ใดได้บ้าง

5. แพ็กเก็ตที่ส่งมาจากภายนอกที่มีแอดเดรสต้นทางเหมือนกับแอดเดรสของเครือข่ายภายในใดๆ (เครือข่ายที่เชื่อถือ) จัดว่าเป็นแพ็กเก็ตที่ส่งเข้ามาเพื่อโจมตีระบบโดยวิธีการ TCP sequence number guessing หรือวิธีอื่นๆ ในทำนองเดียวกัน จึงไม่ควรให้ผ่านเข้ามาในเครือข่าย ป้องกันได้โดยการสร้าง access list ขึ้นมาใช้งานที่แต่ละอินเทอร์เฟซที่ต้องติดต่อกับเครือข่ายที่ไม่น่าเชื่อถือ

6. สกัดกั้นแพ็กเก็ตชนิด Loopback (มาจากเครือข่าย 127.0.0.0) เนื่องจากแพ็กเก็ตเหล่านี้ไม่มีทางเกิดขึ้นได้จริง นอกจากนั้น ให้ดร็อปแพ็กเก็ตขาเข้า (Inbound) ที่มาจาก IP address ที่ถูกสำรองไว้ (ได้แก่ 10.0.0.0, 172.16.0.0 - 172.31.0.0 และ 192.168.0.0) [ตาม RFC 1918]

7. หากเครือข่ายไม่มีความจำเป็นต้องใช้ IP Multicast ก็ควรจะกั้นแพ็กเก็ตชนิด Multicast ด้วย

8. สกัดกั้นแพ็กเก็ตชนิด Broadcast

หมายเหตุ: การปิดแพ็กเก็ตชนิด Broadcast อาจจะทำให้บริการ DHCP และ BOOTP ไม่สามารถใช้งานได้ด้วย อย่างไรก็ตาม บริการทั้งสองอันนี้ไม่ควรนำมาใช้ที่อินเทอร์เฟซที่ต่อกับเครือข่ายภายนอกอยู่แล้ว

9. การโจมตีเครือข่ายจากภายนอกส่วนมากจะใช้วิธีการส่ง ICMP Redirect จึงควรปิดบริการนี้ (วิธีการที่ดีกว่านี้แต่มีความยุ่งยากมากขึ้นคือการอนุญาตให้แพ็กเก็ตชนิด ICMP ที่จำเป็นเพียงบางชนิดผ่านเข้าออก)

ตัวอย่างที่แสดงดังต่อไปนี้ เป็นวิธีการหนึ่งที่จะนำเอาคำแนะนำด้านบนไปใช้งานจริง

       Cisco_Router2 (config) # no access-list 103
       Cisco_Router2 (config) # ! block internal addresses
       Cisco_Router2 (config) # access-list 103 deny ip 14.2.0.0 0.0.255.255 any log
       Cisco_Router2 (config) # access-list 103 deny ip 14.1.0.0 0.0.255.255 any log
       Cisco_Router2 (config) # ! block loopback/reserved addresses
       Cisco_Router2 (config) # access-list 103 deny ip 127.0.0.0 0.255.255.255 any log
       Cisco_Router2 (config) # access-list 103 deny ip 10.0.0.0 0.255.255.255 any log
       Cisco_Router2 (config) # access-list 103 deny ip 172.16.0.0 0.15.255.255 any log
       Cisco_Router2 (config) # access-list 103 deny ip 192.168.0.0 0.0.255.255 any log
       Cisco_Router2 (config) # ! block multicast (if not used)
       Cisco_Router2 (config) # access-list 103 deny ip 224.0.0.0 0.0.255.255 any
       Cisco_Router2 (config) # ! block broadcast
       Cisco_Router2 (config) # access-list 103 deny ip host 0.0.0.0 any log
       Cisco_Router2 (config) # ! block ICMP redirects
       Cisco_Router2 (config) # access-list 103 deny icmp any any redirect log
       Cisco_Router2 (config) # interface eth 0/0
       Cisco_Router2 (config-if) # ip access-group 103 in

10. ทำการสกัดกั้นแพ็กเก็ตที่มีแอดเดรสต้นทาง (Source Address) และแอดเดรสปลายทาง (Destination Address) เหมือนกันไม่ให้เข้ามาในเครือข่าย (แพ็กเก็ตลักษณะนี้จัดเป็นวิธีการบุกรุกเครือข่ายที่เรียกว่า "Land") โดยการสร้าง Access list ในลักษณะตามตัวอย่างด้านล่าง

      Cisco_Router2 (config) # no access-list 101
      Cisco_Router2 (config) # access-list 101 deny ip host 10.2.6.250 host 10.2.6.250 log
      Cisco_Router2 (config) # access-list 101 permit ip any any
      Cisco_Router2 (config) # interface Eth 0/0
      Cisco_Router2 (config-if) # ip address 10.2.6.250 255.255.255.0
      Cisco_Router2 (config-if) # ip access-group 101 in

11. กำหนดค่า Access list ให้กับ Virtual terminal line เพื่อควบคุมการ telnet เข้า Router ในลักษณะตามตัวอย่างด้านล่าง

       Cisco_Router1 (config) # line vty 0 4
       Cisco_Router1 (config-line) # access-class 93 in
       Cisco_Router1 (config-line) # exit
       Cisco_Router1 (config) # no access-list 93
       Cisco_Router1 (config) # access-list 93 permit 10.1.1.1
       Cisco_Router1 (config) # access-list 93 permit 10.1.1.2

ลิงก์ที่เกี่ยวข้อง
Cisco Router Security Configuration Guide Part 1

ที่มา
• http://www.thaicert.nectec.or.th/paper/basic/router_guide.php

0 Comment: