ยินดีต้อนรับสู่ show running-config ครับ

บล็อก show running-config นี้สร้างไว้เพื่อเป็นแหล่งรวบรวมเทคนิคการตั้งค่าอุปกรณ์เครือข่าย Cisco ไม่ว่าจะเป็น Cisco IOS Router, Cisco Catalyst Swtich, Cisco ASA Firewall, Cisco Mars เป็นต้น รวมทั้งอาจจะมีเทคนิคการตั้งค่าอุปกรณ์ในยี่ห้ออื่น ๆ บ้างเล็กน้อยครับ

ซึ่งบทความในบล็อกนี้ก็จะรวบรวมมาจากประสบการณ์ส่วนตัวของกระผมเองครับ (หากมีข้อผิดพลาดก็ขออภัยไว้ล่วงหน้าเลยละกันนะครับ) และก็อยากใช้พื้นที่แห่งนี้เป็นแหล่งในการแลกเปลี่ยนความรู้ รวมไปถึงวิธีการหรือเทคนิคการตั้งค่าอุปกรณ์เครือข่าย กับทุก ๆ คนครับ

Sunday, November 14, 2010

การตั้งค่า Cisco ASA Firewall ขั้นพื้นฐาน(Basic Configuration Cisco ASA Firewall)

basic asa config           สวัสดีครับเพื่อน ๆ ในวันนี้ผมจะมาแนะนำการใช้งาน Cisco ASA Firewall เบื้องต้นกันครับ สำหรับใครที่ยังไม่รู้จักว่า Cisco ASA คืออะไรนะครับ Cisco ASA ก็คือ Firewall ของ Cisco ที่ทำงานในลักษณะ Stateful Packet Filtering คือจะมีการเก็บค่าสถานะของแต่ละ Connection เก็บเอาไว้ เพื่อที่จะนำไปใช้ในการตรวจสอบการทำงานในแต่ละ Connection ว่าตรงตามขั้นตอนหรือไม่ เช่น TCP Connection นั้นมีการรับ-ส่งข้อมูลถุกต้องตามหลัก Three-way handshake หรือไม่ เป็นต้น และจะนำข้อมูลใน Connection ที่เก็บไว้นี้ไปใช้ในการอนุญาตทราฟิกในฝั่งขากลับให้โดยอัตโนมัติโดยไม่ต้องมีการสร้าง ACL ในฝั่งขากลับอีกด้วย

          ในการส่งทราฟิกข้ามระหว่างแต่ละอินเทอร์เฟสของ ASA นั้นจะต้องมีการทำ NAT (Network Address Translation) โดยมีจุดประสงค์เพื่อที่จะซ่อน ip address ของเครือข่ายภายในไว้จากเครือข่ายภายนอก และเพื่อเป็นการประหยัดการใช้งาน ip address เพราะภายในเครือข่ายจะใช้งาน ip address แบบไม่ลงทะเบียน (Private ip address) จากนั้นจึงใช้การทำ NAT เพื่อแปลง ip address แบบไม่ลงทะเบียน (Private ip address) เหล่านี้ไปเป็น ip address แบบลงทะเบียน (Public ip address) ในฝั่งภายนอกได้

ค่าต่าง ๆ ที่ควรทำความรู้จักก่อนการตั้งค่า ASA

  • Security level : คือค่าความน่าเชื่อถือของแต่ละ Zone ที่อินเทอร์เฟสนั้น ๆ เชื่อมต่ออยู่ จะมีค่าตั้งแต่ 0-100 โดย Zone ที่มีความน่าเชื่อถือสูงก็จะมี Security level ที่สูง ส่วน Zone ที่มีความน่าเชื่อถือต่ำก็จะมี Security level ที่ต่ำ (โดยทั่วไป Zone inside จะมี security เท่ากับ 100 ส่วน Zone outside จะมี Security level เท่ากับ 0)
  • การติดต่อสื่อสารจะมี 2 ทิศทาง คือ inbound และ outbound โดยมีรายละเอียด ดังนี้
    • inbound : คือการติดต่อสื่อสารจาก Zone ที่มี Security level ต่ำไปยัง Zone ที่มี Security level สูง
    • outbound : คือการติดต่อสื่อสารจาก Zone ที่มี Security level สูงไปยัง Zone ที่มี Security level ต่ำ
  • DMZ (Demilitarized Zone) เป็น Zone ที่มีการใช้งานจากทั้งเครือข่ายภายในและเครือข่ายภายนอก คือ หลักในการใช้งาน Firewall นั้น ต้องการที่จะป้องกันเครือข่ายภายในเอาไว้ โดยไม่ต้องการให้มีการติดต่อสื่อสาร ที่มีต้นทางมาจากเครือข่ายภายนอกนั้น สามารถที่จะติดต่อสื่อสารกับเครือข่ายภายในโดยตรงได้ จึงมีการทำ DMZ ขึ้นมาเพื่อใช้สำหรับโฮสต์ที่ต้องมีการติดต่อสื่อสารจากต้นทางทั้งเครือข่ายภายในและเครือข่ายภายนอก เช่น Web Server หรือ Mail Server เป็นต้น ซึ่งถ้าในเครือข่ายของเพื่อน ๆ ไม่มีการใช้งาน Server ประเภทนี้ หรือมีเหตุผลอื่น ๆ ก็ไม่จำเป็นที่จะต้องสร้าง Zone นี้ก็ได้ครับ

          การสร้าง policy เพื่อควบคุมทราฟิกที่ต้องการอนุญาตหรือไม่อนุญาตให้ใช้งานในแต่ละ Zone นั้น สามารถทำได้โดยการใช้ access-list ซึ่งจะทำการระบุถึงรูปแบบของทราฟิกเอาไว้ และเมื่อมี่ทราฟิกเข้ามา ASA จะนำ header ของทราฟิกนั้นมาเปรียบเทียบกับ access-list ที่ได้กำหนดไว้ในแต่ละอินเทอร์เฟส เพื่อทำการควบคุมการเข้าใช้งานต่าง ๆ อีกทั้งยังสามารถเฝ้าดูกิจกรรมต่าง ๆ ที่เกิดขึ้นบนระบบเครือข่ายได้

          ในการสร้าง access-list เพื่อที่จะนำไปใช้กับแต่ละอินเทอร์เฟสนั้น จะต้องทำการระบุทิศทางของทราฟิกที่ต้องการตรวจสอบสำหรับแต่ละอินเทอร์เฟสด้วย โดยจะมีอยู่ 2 ทิศทางคือ in และ out ซึ่งจะมีการตรวจสอบทราฟิกที่แตกต่างกันคือ

  • in : ทำการตรวจสอบ เมื่อทราฟิกเดินทางเข้ามายังอินเทอร์เฟสนั้น ๆ โดยที่ยังไม่ผ่านการ Route
  • out : ทำการตรวจสอบ เมื่อทราฟิกเดินทางออกจากอินเทอร์เฟสนั้น ๆ โดยที่ผ่านการ Route มาแล้ว

ในการใช้งานนั้นสามารถที่จะระบุได้เพียง access-list เดียวต่อทิศทางเท่านั้น และโดยทั่วไปจะใช้เฉพาะ in เท่านั้น

asa policy direction

ข้อกำหนดของการตั้งค่า ASA

  1. ในแต่ละอินเทอร์เฟสที่เชื่อมต่อไปยังในแต่ละ Zone จะต้องทำการตั้งชื่อของอินเทอร์เฟสนั้น ๆ เช่น inside, outside, dmz เพราะในการตั้งค่าต่าง ๆ บน ASA จะไม่มีการอ้างถึง physical interface แต่จะอ้างตามชื่อที่ได้กำหนดไว้เหล่านี้  
  2. โดย default ถ้ายังไม่มีการสร้าง policy ใด ๆ ในแต่ละอินเทอร์เฟส จะสามารถที่ทำการติดต่อสื่อสารจาก Zone ต้นทางที่มี Security-level สูงกว่าไปยัง Zone ปลายทางที่มี Security ต่ำกว่าได้ (outbound permit by default) แต่จะไม่สามารถที่จะทำการติดต่อสื่อสารจาก Zone  ต้นทางที่มีค่า Security-level ต่ำกว่าไปยัง Zone ปลายทางที่มี Security level สูงกว่าได้ (inbound deny by default)
  3. ในการสร้าง policy บนอินเทอร์เฟสใด ๆ จะมีข้อกำหนด ดังนี้
    • ถ้าทำการอนุญาตทราฟิกประเภท TCP หรือ UDP ในอินเทอร์เฟสฝั่งขาไปแล้ว ก็ไม่จำเป็นที่จะต้องอนุญาตทราฟิกในอินเทอร์เฟสฝั่งขากลับ เนื่องจาก ASA สามารถทำงานเป็น Stateful Firewall โดยจะมีการเก็บค่า Session ของ TCP และ UDP เอาไว้
    • ถ้าทำการอนุญาตทราฟิกประเภท ICMP (เช่น ping) ในอินเทอร์เฟสฝั่งขาไปแล้ว จะต้องทำการอนุญาตทราฟิกในอินเทอร์เฟสฝั่งขากลับด้วย
    • สำหรับ ASA Version 7.0 ถึง 8.2 การสร้าง access-list สำหรับนำไปใช้ในแต่ละ Zone จะต้องใช้ ip address ที่แปลงค่าแล้วใน Zone นั้น ๆ เช่น มีการทำ static nat จาก 10.0.0.10 ในฝั่ง dmz มาเป็น 2.2.2.10 ในฝั่ง outside และเมื่อมีการสร้าง access-list ที่จะนำไปใช้ในฝั่ง outside ก็จะต้องอ้างถึง ip address 2.2.2.10 แต่ถ้ามีการสร้าง acces-list ที่จะนำไปใช้ในฝั่ง dmz ก็จะต้องอ้างถึง ip address 10.0.0.10 เป็นต้น
    • สำหรับ ASA Version 8.3 เป็นต้นมา การสร้าง access-list สามารถใช้ ip address จริง ๆ ของโฮสต์นั้น ๆ ได้เลยไม่ว่าจะใช้ใน Zone ใด เช่น มีการทำ static nat จาก 10.0.0.10 ในฝั่ง dmz มาเป็น 2.2.2.10 ในฝั่ง outside และเมื่อมีการสร้าง access-list ที่จะนำไปใช้ในฝั่ง outside จะสามารถอ้างถึง ip address 10.0.0.10 ได้เลย และถ้ามีการสร้าง acces-list ที่จะนำไปใช้ในฝั่ง dmz ก็สามารถอ้างถึง ip address 10.0.0.10 ได้เช่นเดิม และใน Version นี้ยังมีการเพิ่มคำสั่ง global ขึ้นมา โดย access-list ที่นำมาใช้กับ global นี้จะนำไปใช้กับทุก ๆ อินเทอร์เฟสของ ASA

สำหรับขั้นตอนในการตั้งค่า ASA Firewall ในขั้นพื้นฐาน(Basic Configuration Cisco ASA Firewall)ก็มีดังนี้ครับ

  1. ทำการกำหนดชื่อของไฟร์วอลล์
  2. ทำการกำหนดค่าพารามิเตอร์ต่าง ๆ ให้กับแต่ละอินเทอร์เฟส
    • กำหนด nameif
    • กำหนด security-level
    • กำหนด ip address
    • เปิดใช้งานอินเทอร์เฟสนั้น ๆ
  3. ทำการตั้งค่าการ NAT ระหว่าง Zone ต่าง ๆ ของ Firewall
    • จาก inside ไป outside
    • จาก inside ไป dmz
    • จาก dmz ไป outside
  4. ทำการตั้งค่า Routing
  5. ทำการตั้งค่าการ management ต่าง ๆ
    • การสร้าง user
    • กำหนดการเข้าถึงอุปกรณ์ด้วยวิธีการต่าง ๆ เช่น http, telnet, ssh
    • การตั้งค่าวันและเวลา
    • การตั้งค่า management อื่น ๆ
  6. ทำการตั้งค่า Policy สำหรับ Zone ต่าง ๆ

Basic ASA

          สำหรับตัวอย่างในวันนี้จะทำการแบ่งระบบเครือข่ายออกเป็น 3 Zone คือ inside, outside, dmz โดยจะมีการใช้งาน ip address ในแต่ละ Zone ตามภาพเลยครับ คือในฝั่ง outside นั้นผมสมมุติว่าได้รับ public ip address จาก ISP มาเป็น 2.2.2.0/28 ซึ่งสามารถใช้งานได้ตั้งแต่ 2.2.2.1-2.2.2.14 ก็คือ 14 หมายเลข ip address นะครับ และในฝั่ง dmz จะมีการใช้งาน mail server อยู่ โดยมี ip address เป็น 10.10.10.10. ครับ ส่วนในฝั่ง inside นั้นจะใช้ private ip address ใน subnet 192.168.10.0/24 ครับ สำหรับโซน dmz นั้น ไม่จำเป็นที่จะต้องมีก็ได้ครับ

          เอาล่ะครับ เรามาเริ่มดูตัวอย่างการตั้งค่ากันเลยดีกว่านะครับ สำหรับการตั้งค่า Cisco ASA นั้นก็จะมีรูปแบบของคำสั่งที่คล้ายกับการตั้งค่า Cisco IOS Router ทั่วไปครับ แต่ก็จะมีบางคำสั่งที่แตกต่างกันบ้างครับ ในการเริ่มต้นการตั้งค่านั้น ก็ควรที่จะทำการตั้งชื่อให้กับ ASA ของเราซะก่อนครับ ในตัวอย่างนี้ผมจะใช้ชื่อว่า Running-config-FW นะครับ

ตัวอย่าง
ciscoasa(config)# hostname Running-config-FW

          จากนั้นก็เข้าไปทำการตั้งค่าในแต่ละอินเทอร์เฟสกันครับ ในตัวอย่างนี้ผมจะให้อินเทอร์เฟส Gi0/0 เป็น outside, Gi0/1 เป็น inside, Gi0/2 เป็น dmz ครับ และการกำหนด Security level นั้นผมจะให้ inside = 100. outside = 0 และ dmz = 50 ครับ สำหรับการใช้งาน ip address ก็ตามภาพด้านบนเลยครับ

ตัวอย่าง
Running-config-FW(config)# interface GigabitEthernet 0/0
Running-config-FW(config-if)# nameif outside
INFO: Security level for "outside" set to 0 by default.
Running-config-FW(config-if)# ip address 2.2.2.1 255.255.255.240
Running-config-FW(config-if)# no shut
Running-config-FW(config-if)# exit

Running-config-FW(config)# interface GigabitEthernet 0/1
Running-config-FW(config-if)# nameif inside
INFO: Security level for "inside" set to 100 by default.
Running-config-FW(config-if)# ip address 192.168.10.1 255.255.255.0
Running-config-FW(config-if)# no shut
Running-config-FW(config-if)# exit

*ในส่วนนี้ถ้าไม่มีการใช้งาน dmz ก็ข้ามไปก่อนก็ได้ครับ
Running-config-FW(config)# interface GigabitEthernet 0/2
Running-config-FW(config-if)# nameif dmz
INFO: Security level for "dmz" set to 0 by default.
Running-config-FW(config-if)# security-level 50
Running-config-FW(config-if)# ip address 10.10.10.1 255.255.255.0
Running-config-FW(config-if)# no shut
Running-config-FW(config-if)# exit

จากนั้นเราก็จะมาทำการตั้งค่าการ NAT กันครับ โดยในการติดต่อสื่อสารระหว่าง Zone จะมีการทำ NAT ดังนี้ครับ

  • จาก inside ไปยัง outside จะใช้ PAT(port address translation) โดยจะใช้ ip address ของอินเทอร์เฟส outside ของ ASA ในการติดต่อสื่อสารกับเครือข่ายภายนอกครับ
  • จาก inside ไปยัง dmz จะไม่ทำการ NAT โดยจะใช้ ip address จริงของเครือข่ายภายใน ในการติดต่อสื่อสารกับเครือข่าย dmz ครับ
  • จาก dmz ไปยัง outside ในส่วนนี้ Server ที่อยู่ใน Zone dmz จะต้องมีการเข้าใช้จากเครือข่ายภายนอกด้วย เพราะฉนั้นจึงต้องทำ Static NAT ให้กับแต่ละ Server ของเครือข่าย dmz ครับ

ตัวอย่าง
สำหรับ ASA Version 7.0 ถึง 8.2
Running-config-FW(config)# nat (inside) 1 192.168.10.0 255.255.255.0
Running-config-FW(config)# global (outside) 1 interface
INFO: outside interface address added to PAT pool

*ในส่วนนี้ถ้าไม่มีการใช้งาน dmz ก็ข้ามไปก่อนก็ได้ครับ
Running-config-FW(config)# access-list no-nat permit ip 192.168.10.0 255.255.255.0 10.10.10.0 255.255.255.0
Running-config-FW(config)# nat (inside) 0 access-list no-nat
Running-config-FW(config)# static (dmz,outside) 2.2.2.10 10.10.10.10

และสำหรับ ASA Version 8.3
Running-config-FW(config)# object network inside-obj
Running-config-FW(config-network-object)# subnet 192.168.10.0 255.255.255.0
Running-config-FW(config-network-object)# nat (inside,outside) dynamic interface
Running-config-FW(config-network-object)# exit

*ในส่วนนี้ถ้าไม่มีการใช้งาน dmz ก็ข้ามไปก่อนก็ได้ครับ
Running-config-FW(config)# object network dmz-obj
Running-config-FW(config-network-object)# subnet 10.10.10.0 255.255.255.0
Running-config-FW(config-network-object)# exit
Running-config-FW(config)# nat (inside,dmz) source static inside-obj inside-obj destination static dmz-obj dmz-obj
Running-config-FW(config)# object network mail-server
Running-config-FW(config-network-object)# host 10.10.10.10
Running-config-FW(config-network-object)# nat (dmz,outside) static 2.2.2.10
Running-config-FW(config-network-object)# exit

          เมื่อทำการตั้งค่าการ NAT เสร็จแล้ว เราก็จะมาทำการตั้งค่า Routing กันครับ ซึ่งในตัวอย่างนี้ก็ไม่มีอะไรมากครับ ใช้แค่เพียง default route ชี้ไปยังเราเตอร์ที่ใช้สำหรับเชื่อมต่ออินเทอร์เน็ตก็เรียบร้อยแล้วครับ แต่ถ้าในเครือข่ายของเพื่อน ๆ มีการใช้งานที่ซับซ้อนกว่านี้ก็สามารถทำการตั้งค่าในแบบอื่น ๆ ได้ครับ ซึ่ง ASA นี้สามารถรองรับ Dynamic Routing Protocol ที่หลากหลายอยู่ครับ

ตัวอย่าง
Running-config-FW(config)# route outside 0.0.0.0 0.0.0.0 2.2.2.2

          เมื่อเสร็จในขั้นตอนนี้ ASA ของเราก็สามารถที่จะใช้งานได้แล้วครับ โดยจะสามารถทำการติดต่อสื่อสารจากต้นทางเครือข่ายภายในไปยังปลายทางเครือข่ายภายนอกได้แล้ว แต่จะยังไม่สามารถทำการติดต่อสื่อสารจากต้นทางเครือข่ายภายนอกเข้ามาได้ ตามกฎ outbound permit by default และ inbound deny by default ครับ

          ถึงแม้ว่า ASA ของเราจะสามารถใช้งานได้แล้ว แต่เรายังไม่ได้ทำการตั้งค่าการ Management ต่าง ๆ กันเลยใช่มั้ยครับ ในตัวอย่างต่อไปนี้จะเป็นการตั้งค่าที่เกี่ยวข้องกับการ Management ต่าง ๆ ซึ่งตามตัวอย่างนี้ก็จะเป็นการตั้งค่า enable password, การตั้งค่า username, การอนุญาตโปรโตคอลรวมถึงเครือข่ายที่ใช้ในการ management ในรูปแบบต่าง ๆ , การอนุญาตให้สามารถทำการ ping มาที่ ASA Firewall ได้ และการตั้งค่าวันและเวลาครับ

ตัวอย่าง
Running-config-FW(config)# enable password cisco
Running-config-FW(config)# username cisco password cisco privilege 15

Running-config-FW(config)# http server enable
Running-config-FW(config)# http 192.168.10.0 255.255.255.0 inside
Running-config-FW(config)# http 192.168.1.0 255.255.255.0 management

Running-config-FW(config)# telnet 192.168.10.0 255.255.255.0 inside
Running-config-FW(config)# telnet 192.168.1.0 255.255.255.0 management

Running-config-FW(config)# crypto key generate rsa
INFO: The name for the keys will be: <Default-RSA-Key>
Keypair generation process begin. Please wait...
Running-config-FW(config)# ssh version 2
Running-config-FW(config)# ssh 192.168.10.0 255.255.255.0 inside
Running-config-FW(config)# ssh 192.168.1.0 255.255.255.0 management  

Running-config-FW(config)# aaa authentication http console LOCAL
Running-config-FW(config)# aaa authentication telnet console LOCAL   
Running-config-FW(config)# aaa authentication ssh console LOCAL

Running-config-FW(config)# icmp permit any inside
Running-config-FW(config)# icmp permit any outside
Running-config-FW(config)# icmp permit any dmz

Running-config-FW(config)# ntp server 192.168.10.2 prefer
Running-config-FW(config)# clock timezone ICT +7
Running-config-FW(config)# show clock
17:05:05.578 ICT Sat Nov 13 2010

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

          ในการสร้าง access-list เพื่อนำไปใช้ควบคุมทราฟิกในแต่ละเครือข่ายนั้นผมก็ขอแนะนำว่า ควรที่จะวางกฎข้อที่เฉพาะเจาะจงมากที่สุดไว้บรรทัดบนสุด และวางกฎข้อที่เฉพาะเจาะจงน้อยกว่าไว้บรรทัดล่างลงมาตามลำดับ เนื่องจาก access-list นั้นจะถูกพิจารณาจากบรรทัดบนลงมา ซึ่งถ้านำกฎที่ระบุแบบกว้าง ๆ ไว้บรรทัดบน กฎที่เฉพาะเจาะจงในบรรทัดล่างก็อาจจะไม่ได้นำมาพิจารณา

ตัวอย่างการใช้ access-litst ที่ผิดลำดับนะครับ
access-list policy01 permit ip 192.168.10.0 255.255.255.0 any
access-list policy01 deny tcp 192.168.10.0 255.255.255.0 host 2.2.2.2 eq telnet

          ถ้าเขียน access-list ตามตัวอย่างด้านบนนี้ เมื่อมีแพ็กเก็ตที่ตรงกับเงื่อนไขในบรรทัดที่ 2 เข้ามา ซึ่งเราต้องการที่จะ deny แพ็กเก็ตนี้ไป แต่เนื่องจาก access-list ในบรรทัดบนนั้นได้อนุญาตแพ็กเก็ตนี้ไปแล้ว ทำให้เงื่อนไขในบรรทัดที่ 2 นั้นไม่ได้รับการพิจารณา และจะไม่สามารถ deny ทราฟิกในบรรทัดที่ 2 ได้

ด้านล่างนี้ จะเป็นการตั้งค่า access-list เพื่อที่จะนำไปใช้กับแต่ละอินเทอร์เฟส โดยผมจะทำการสร้าง access-list ที่จะนำไปใช้งานในแต่ละอินเทอร์เฟสให้ดูเป็นตัวอย่างนะครับ

  1. สร้าง access-list สำหรับอินเทอร์เฟส inside ชื่อว่า inside-acl โดยมีรายละเอียดดังนี้
    • ทำการอนุญาตให้ต้นทางจาก subnet ของเครือข่ายภายในสามารถติดต่อไปยัง mail server โดยใช้ TCP พอร์ต 110(pop3) กับ 25(smtp) ได้
    • ทำการอนุญาตให้ต้นทางจาก subnet ของเครือข่ายภายในสามารถติดต่อไปที่ใดก็ได้(any) โดยใช้ TCP พอร์ต 80(http) เท่านั้น
    • ทำการอนุญาตให้ใช้งาน icmp ได้จากทุกเครือข่าย
  2. สร้าง access-list สำหรับอินเทอร์เฟส outside ชื่อว่า outside-acl โดยมีรายละเอียดดังนี้
    • ทำการอนุญาตให้ต้นทางจากที่ใดก็ได้สามารถติดต่อมายัง Mail Server โดยใช้ TCP พอร์ต 110(pop3) กับ 25(smtp) ได้ ซึ่งถ้าใช้ ASA version 7.0 ถึง 8.2 นั้นจะต้องอ้างถึง ip address ของ Mail Server ที่ทำการ NAT แล้ว แต่ถ้าใช้งาน ASA Version 8.3 นั้นจะสามารถอ้างถึง ip address จริงของ Mail Server ได้โดยตรง
    • ทำการอนุญาตให้ใช้งาน icmp ได้จากทุกเครือข่าย
  3. สร้าง access-list สำหรับอินเทอร์เฟส dmz ชื่อว่า dmz-acl โดยมีรายละเอียดดังนี้
    • ทำการอนุญาตให้ใช้งาน icmp ได้จากทุกเครือข่าย

ตัวอย่าง
สำหรับ ASA Version 7.0 ถึง 8.2
Running-config-FW(config)#access-list inside-acl permit tcp 192.168.10.0 255.255.255.0 host 10.10.10.10 eq 110
Running-config-FW(config)#access-list inside-acl permit tcp 192.168.10.0 255.255.255.0 host 10.10.10.10 eq 25
Running-config-FW(config)#access-list inside-acl permit tcp 192.168.10.0 255.255.255.0 any eq 80
Running-config-FW(config)#access-list inside-acl permit icmp any any

Running-config-FW(config)#access-list outside-acl extended permit tcp any host 2.2.2.10 eq 110
Running-config-FW(config)#access-list outside-acl extended permit tcp any host 2.2.2.10 eq 25
Running-config-FW(config)#access-list outside-acl extended permit icmp any any

Running-config-FW(config)#access-list dmz-acl extended permit icmp any any

Running-config-FW(config)# access-group inside-acl in interface inside
Running-config-FW(config)# access-group outside-acl in interface outside
Running-config-FW(config)# access-group dmz-acl in interface dmz

สำหรับ ASA Version 8.3
Running-config-FW(config)#access-list inside-acl permit tcp 192.168.10.0 255.255.255.0 host 10.10.10.10 eq 110
Running-config-FW(config)#access-list inside-acl permit tcp 192.168.10.0 255.255.255.0 host 10.10.10.10 eq 25
Running-config-FW(config)#access-list inside-acl permit tcp 192.168.10.0 255.255.255.0 any eq 80

Running-config-FW(config)#access-list outside-acl extended permit tcp any host 10.10.10.10 eq 110
Running-config-FW(config)#access-list outside-acl extended permit tcp any host 10.10.10.10 eq 25

Running-config-FW(config)#access-list global-acl extended permit icmp any any

Running-config-FW(config)# access-group inside-acl in interface inside
Running-config-FW(config)# access-group outside-acl in interface outside
Running-config-FW(config)# access-group global-acl global

           จากตัวอย่างด้านบนจะเห็นว่า ใน ASA Version 7.0 ถึง 8.2 นั้น access-list ที่นำไปใช้กับแต่ละอินเทอร์เฟส ในบรรทัดสุดท้ายจะทำการอนุญาต icmp any any เหมือนกัน ซึ่งถ้าใช้งาน ASA Version 8.3 จะสามารถนำ access-list นี้ไปใช้กับ global เลย ไม่ต้องแยกเขียน access-list แยกแต่ละอินเทอร์เฟส

         นี่ก็เป็นเพียงตัวอย่างการเขียน access-list เพื่อนำไปใช้งานกับแต่ละอินเทอร์เฟสเท่านั้นนะครับ สำหรับในการใช้งานจริงนั้น การตั้งค่า policy ต่าง ๆ ก็อาจที่จะมีความละเอียดซับซ้อนมากกว่านี้ ก็อยากจะแนะนำให้เพื่อน ๆ ลองเส่นลองทดสอบกันดูเองนะครับ เพื่อความเข้าใจที่มากขึ้น

          บทความนี้อาจจะยาวไปหน่อยนะครับ แต่ก็เป็นเรื่องที่ควรทราบเมื่อทำการตั้งค่า ASA ทั้งสิ้น เหมาะสำหรับเพื่อน ๆ ที่กำลังเริ่มต้นทำการตั้งค่า ASA นะครับ สำหรับเพื่อน ๆ ที่อยากจะทดสองทำ lab ดู สามารถที่จะใช้ GNS3 ในการ simulation ได้ครับ สำหรับเทคนิคการตั้งค่า Cisco ASA Firewall ในเรื่องอื่น ๆ นั้น ก็สามารถติดตามได้ในบทความด่อ ๆ ไปครับ

8 comments :

  1. ขอบคุณนะครับ

    ReplyDelete
  2. ขอบคุณมากครับ มีประโยชน์มากๆเลยครับ

    ReplyDelete
  3. ใช้เร้าเตอร์แทนไฟวอลล์ได้ไหมคับ

    ReplyDelete
  4. ลองเล่นบน GNS3 ก็ได้ครับ ^_^

    ReplyDelete
  5. ลองเล่นบน GNS3 ก็ได้ครับ ^_^

    ReplyDelete
  6. แล้วตัว inside จะแจก เป็น DHCP รึป่าวคับ

    ReplyDelete
  7. ขอบคุณ ผมนี้งมทั้งวัน มีประโยชน์มาก

    ReplyDelete
  8. ขอบคุณคับ ผมนี้งมทั้งวัน มีประโยชน์มาก

    ReplyDelete