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

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

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

Thursday, January 20, 2011

ทำความรู้จักกับ Port Security บน Cisco Catalyst Switch

Configuration Port Security on Cisco Catalyst Switch

Port Security on Cisco Catalyst Switch

          ในการทำงานของเพื่อน ๆ เคยประสบปัญหา เช่น มีผู้ใช้นำเครื่องส่วนตัวมาแอบใช้งาน(หรือมาแอบโหลดบิต) หรือบางรายอาจจะนำ wireless router มาแอบเชื่อมต่อเข้าระบบเพื่อต้องการใช้ wifi ซึ่งผิดต่อนโยบายขององค์กรกันบ้างมั้ยครับ ในวันนี้ผมจะมาแนะนำวิธีการในการป้องกันปัญหาเหล่านี้กันครับ ซึ่งก็คือการใช้งาน Port Security ที่มีความสามารถในการป้องกันการโจมตีหรือลักลอบใช้งานในรูปแบบต่าง ๆ ได้ เช่น การ Flood Mac Address, การป้องกันไม่ให้ผู้ใช้นำเครื่อง PC หรือ Notebook ที่มี Mac Address ที่ไม่ได้รับอนุญาตมาเชื่อมต่อเข้าระบบ เป็นต้น

          ในการทำงานของ Cisco Catalyst Switch โดยทั่วไปนั้น จะมีตารางที่ใช้ในการเก็บค่ารายละเอียดต่าง ๆ ของเครื่องโฮสต์ที่เชื่อมต่ออยู่ในระบบ เช่น mac address, port ที่แต่ละเครื่องเชื่อมต่ออยู่, Vlan ที่เป็นสมาชิก เป็นต้น ซึ่งตารางนี้จะเรียกว่า CAM(Content Addressable Memory) Table ซึ่งเป็นจุดอ่อนหรือข้อจำกัดทางฮาร์ดแวร์ของอุปกรณ์สวิตซ์ เนื่องจากในสวิตซ์แต่ละรุ่นนั้นก็มีขนาดของ CAM Table และขีดความสามารถในการรองรับจำนวน Mac Address ได้ไม่เท่ากัน โดย CAM Table นี้ อาจจะถูกโจมตีจากผู้ไม่หวังดีโดยการใช้เครื่องมือ เช่น “Macof” ในการ Flooding Mac มายังสวิตซ์เป็นจำนวนมาก จนทำให้ CAM Table ของสวิตซ์นั้นเต็ม และทำให้ไม่สามารถใช้งานสวิตซ์ได้ ซึ่งเราสามารถป้องกันการเกิดเหตุการณ์นี้ได้โดยการใช้คุณสมบัติ Port Security บนอุปกรณ์ Cisco Catalyst Switch ของเราครับ

          การใช้งาน Port Security นั้น จะทำให้สามารถจำกัดจำนวนและหมายเลขของ Mac Address ที่ได้รับอนุญาตให้ใช้งานในแต่ละ Port ได้ ซึ่งในการทำงาน เมื่อแต่ละ port นั้นได้รับเฟรมข้อมูลมา มันจะนำมาเปรียบเทียบกับรายการของ Mac Address ที่ได้รับอนุญาตให้ใช้งาน หากพบว่า Mac Address ที่เข้ามาทาง port นั้น ไม่ตรงกับรายการที่มีอยู่ มันก็จะทำตามนโยบายที่กำหนดไว้ เช่น ไม่อนุญาตให้ทำการส่งต่อข้อมูลจากต้นทาง Mac Address นั้น หรือทำการ Shutdown Port นั้นไป เป็นต้น

          ในการใช้งาน Port Security นั้น เราสามารถที่จะทำการกำหนดจำนวนของ Mac Address ที่อนุญาตให้ใช้งานในแต่ละ Port ได้ เช่นพอร์ตที่เชื่อมต่อไปยัง Hub หรือ Access Point ที่มีเครื่องผู้ใช้เชื่อมต่ออยู่หลายเครื่องก็สามารถกำหนดจำนวนของ Mac Address ตามจำนวนของเครื่องผู้ใช้ที่เชื่อมต่ออยู่ได้ และเมื่อทำการกำหนดจำนวนเรียบร้อยแล้ว เราก็จะมาทำการกำหนดรายการของ Mac Address ที่ได้รับอนุญาตกันครับ

          การกำหนดรายการของ Mac Address ที่อนุญาตให้ใช้งานในแต่ละ Port นั้น สามารถทำการกำหนดได้โดยการระบุหมายเลข Mac Address ด้วยตนเอง หรือให้สวิตซ์เรียนรู้ค่า Mac Address มาโดยอัตโนมัติก็ได้ ซึ่งจะมีรูปแบบในการกำหนดอยู่ 3 วิธี คือ Static, Dynamic, Sticky โดยมีรายละเอียด ดังนี้ครับ

  • Static เป็นการกำหนด Mac Address ต้นทางที่อนุญาตให้ใช้งานในแต่ละ Port ด้วยตนเอง ซึ่งหมายเลข Mac Address นี้จะถูกเก็บไว้บน Address Table และอยู่ใน running-config ด้วย ซึ่งเมื่อมีการ write ไปยัง startup-config แล้ว ก็จะทำให้หมายเลข Mac Address นี้จะยังคงอยู่ถึงแม้จะมีการรีบูตสวิตซ์ก็ตาม
  • Dynamic เป็นการกำหนด Mac Address ต้นทางที่อนุญาตให้ใช้งานในแต่ละ Port โดยให้สวิตซ์เรียนรู้หมายเลข Mac Address จากเครื่องที่เชื่อมต่ออยู่ในแต่ละ Port มาโดยอัตโนมัติตามลำดับของ Packet ที่ได้รับมา จนกว่าจะครบตามจำนวนที่กำหนด ซึ่งหมายเลข Mac Address นี้จะถูกเก็บไว้บน Address Table เท่านั้น ไม่มีการเก็บไว้บนค่า configuration ซึ่งเมื่อมีการรีบูตสวิตซ์ จะทำให้ค่า Mac Address ต้นทางที่เก็บไว้หายไป และจะทำการเรียนรู้ใหม่อีกครั้ง
  • Sticky เป็นการกำหนด Mac Address ต้นทางที่อนุญาตให้ใช้งานในแต่ละ Port โดยให้สวิตซ์เรียนรู้หมายเลข Mac Address จากเครื่องที่เชื่อมต่ออยู่ในแต่ละ Port มาโดยอัตโนมัติตามลำดับของ Packet ที่ได้รับมา จนกว่าจะครบตามจำนวนที่กำหนด  เหมือนกับแบบ Dynamic แต่จะต่างกันที่วิธีนี้จะทำการเก็บหมายเลข Mac Address ไว้ทั้งบน Address Table และบน running-config ซึ่งเมื่อมีการ write ไปยัง startup-config แล้ว ก็จะทำให้หมายเลข Mac Address นี้จะยังคงอยู่ถึงแม้จะมีการรีบูตสวิตซ์ก็ตาม
    • หมายเหตุ : ในแต่ละ Port สามารถกำหนดหมายเลข MAC Address ต้นทางที่ได้รับอนุญาตได้ตั้งแต่ 1 - 132 หมายเลข และจำนวนหมายเลข MAC Address ต้นทางที่ได้รับอนุญาตทั้งหมดของสวิตซ์แต่ละตัวต้องไม่เกิน 1024 หมายเลข

          เมื่อทำการกำหนดรูปแบบรายการของ Mac Address เรียบร้อยแล้ว ขั้นต่อมาก็จะเป็นการกำหนดวิธีการที่จะใช้ตอบโต้กับเครื่องที่ละเมิดนโยบายของเรา เช่น Mac Address ไม่อยู่ในรายการที่อนุญาต หรือจำนวนของ Mac Address เกินกว่าที่อนุญาตเอาไว้ การตอบโต้นี้ก็อาจจะทำโดยการ shutdown port นั้นไป หรืออาจจะ block เฉพาะทราฟิก ที่ละเมิดเท่านั้นก็ได้ครับ ซึ่งนโยบายที่กำหนดไว้เพื่อการตอบโต้การละเมิดนี้จะเรียกว่า Security Violations ครับ

Security Violations คือการละเมิดนโยบายที่ได้กำหนดไว้ ในข้อใดข้อหนึ่งต่อไปนี้

  • มี Mac Address นอกเหนือจาก MAC Address ที่ได้อนุญาตไว้ ผ่านเข้ามายังแต่ละ Port
  • มีจำนวนของ Mac Address เข้ามาใช้งานเกินจำนวนกว่าค่าที่ได้กำหนดไว้ในแต่ละ Port
  • Mac Address ที่ได้ทำการกำหนดหรือที่สวิตซ์เรียนรู้มา ได้ถูกกำหนดไว้เป็น MAC Address ต้นทางที่ได้รับอนุญาตบนสวิตซ์ตัวอื่นๆ

และเมื่อมีการละเมิดนโยบายหรือ Security Violations ที่ได้กำหนดไว้เกิดขึ้น ก็จะมีการตอบโต้โดยมี 3 รูปแบบ ดังนี้

  • Protect เมื่อมีการเกิด Security Violations ข้อใดข้อหนึ่งตามหัวข้อด้านบนเกิดขึ้น Packet ที่ไม่ได้รับอนุญาตให้ใช้งานใน Port นั้น ๆ จะถูก Drop ทิ้ง แต่ Packet ของเครื่องที่ได้รับอนุญาตจะสามารถใช้งานได้ต่อไป โดยจะไม่มีการส่งการแจ้งเตือนมาว่าเกิดการละเมิดขึ้น
  • Restrict เมื่อมีการเกิด Security Violations ข้อใดข้อหนึ่งตามหัวข้อด้านบนเกิดขึ้น Packet ที่ไม่ได้รับอนุญาตให้ใช้งานใน Port นั้น ๆ จะถูก Drop ทิ้ง แต่ Packet ของเครื่องที่ได้รับอนุญาตจะสามารถใช้งานได้ต่อไป และจะมีการแจ้งเตือนว่ามีการละเมิดเกิดขึ้น ผ่านทาง SNMP หรือ Syslog และจะมีการนับจำนวนครั้งของการละเมิดเก็บเป็นข้อมูลเอาไว้
  • Shutdown (เป็นค่าที่กำหนดไว้โดย default) เมื่อมีการเกิด Security Violations ข้อใดข้อหนึ่งตามหัวข้อด้านบนเกิดขึ้น จะทำการ Shutdown Port นั้นทันที และจะมีสถานะว่า "error-disabled" ทำให้ Packet ของเครื่องทุก ๆ เครื่องที่เชื่อมต่ออยู่กับ Port นั้นจะไม่สามารถใช้งานได้ โดยจะมีการแจ้งเตือนว่ามีการละเมิดเกิดขึ้น ผ่านทาง SNMP หรือ Syslog และจะมีการนับจำนวนครั้งของการละเมิดเก็บเป็นข้อมูลเอาไว้ สามารถใช้คำสั่ง shutdown และ no shutdown ให้ interface configuration mode เพื่อให้ Port นั้นกลับมาทำงานเป็นปกติได้

Untitled-1

การกำหนดเวลา Port Security Aging
          การกำหนดค่า Aging เป็นการตั้งช่วงเวลาที่จะให้สวิตซ์จำค่า Static หรือ Dynamic MAC Address ของแต่ละพอร์ตไว้ เพื่อให้สวิตซ์สามารถลบและเพิ่ม MAC Address ใหม่ ๆ เข้าไปได้โดยอัตโนมัติ โดยมี 2 ชนิดคือ

  • Absolute ค่า MAC Address ที่กำหนดจะถูกลบออกหลังจากครบช่วงเวลาที่กำหนดไว้
  • Inactivity ค่า MAC Address ที่กำหนดจะถูกลบหลังจากที่ MAC Address นั้นๆไม่มีกิจกรรมใดๆในช่วงเวลาที่กำหนดไว้

          เอาล่ะครับ เมื่อเรียนรู้เกี่ยวกับวิธีการทำงานของ Port Security กันแล้ว เราก็จะมาเริ่มดูตัวอย่างการตั้งค่ากันนะครับ แต่ก่อนที่จะดูตัวอย่างการตั้งค่า ผมอยากให้ทุกท่านดูค่า default ของ Port Security บนอุปกรณ์ Cisco Catalyst Switch กันก่อนนะครับ ซึ่งการกำหนดค่าโดย Default ของ Port Security บนอุปกรณ์ Cisco Catalyst Switch มีดังนี้ครับ

  • Ports security is disabled.
  • Maximum MAC addresses setting is 1.
  • Violation mode is shutdown.
  • Sticky address learning is disabled.
  • Port security aging is disabled. Aging time is 0 and the default type is absolute.

          เมื่อทำความรู้จักกับค่าต่าง ๆ ที่เกี่ยวข้องกับการใช้งาน Port Security กันไปเรียบร้อยแล้ว เราก็มาเริ่มดูตัวอย่างการตั้งค่า Port Security กันเลยดีกว่า ซึ่งการตั้งค่า Port Security จะมีขั้นตอน ทั้งหมดดังนี้ครับ

  1. เข้าสู่โหมด Interface configuration โดยเข้าไปยัง Port ที่ต้องการใช้งาน Port Security
  2. ทำการตั้งค่า Port นั้นให้ทำงานในโหมด access
  3. ทำการเปิดใช้งาน (enable) Port Security บน Port นั้นๆ
  4. กำหนดจำนวน MAC Address สูงสุดที่อนุญาตให้ใช้งานบน Port นั้นๆได้
  5. ทำการกำหนดรายการ MAC Address ที่ได้รับอนุญาตด้วยตนเองหรือตั้งค่าให้สวิตซ์เรียนรู้โดยอัตโนมัติ ซึ่งมีอยู่ 3 รูปแบบ ดังนี้
    • Static
    • Dynamic
    • Sticky
  6. ตั้งค่าการโต้ตอบเมื่อเกิดการละเมิดเกิดขึ้น ซึ่งโดยปกติจะมีค่าเป็น shutdown แต่สามารถกำหนดเป็นค่าอื่น ๆ ได้ ดังนี้
    • shutdown
    • restrict
    • protect
  7. ตรวจสอบการตั้งค่า

          เอาล่ะครับ เรามาดูตัวอย่างการตั้งค่าในขั้นตอนแรกกันเลยดีกว่านะครับ ในขั้นตอนแรกนี้ก็ให้เราเข้าไปยัง interface configuration mode ของอินเทอร์เฟสที่เราต้องการตั้งค่า Port Security กันนะครับ จากนั้นก็ไปกำหนดให้อินเทอร์เฟสนั้นทำงานในโหมด access ก่อนครับ จึงจะสามารถใช้งาน Port Security ได้

ตัวอย่าง
Switch(config)#interface FastEthernet 0/1
Switch(config-if)#switchport mode access

          จากนั้นก็ให้ทำการเปิดการทำงานหรือ enable คุณสมบัติ Port Security บนอินเทอร์เฟสนั้นขึ้นมาครับ โดยการใช้คำสั่ง “switchport port-security” ครับผม(ในขั้นตอนนี้ห้ามลืมนะครับ)

ตัวอย่าง
Switch(config-if)#switchport port-security

          จากนั้นก็ให้ทำการกำหนดจำนวนของ Mac Address ที่อนุญาตให้ใช้งานบนอินเทอร์เฟสนั้นครับ ซึ่งในกรณีที่อินเทอร์เฟสที่เราทำการตั้งค่าอยู่นี้เชื่อมต่อกับเครื่องผู้ใช้โดยตรง ก็ควรกำหนดจำนวนของ Mac Address ที่อนุญาตให้ใช้งานเป็น 1 หมายเลขนะครับ แต่ในกรณีที่อินเทอร์เฟสนี้ไม่ได้เชื่อมต่ออยู่กับเครื่องผู้ใช้โดยตรง เช่น เครื่องผู้ใช้อาจจะเชื่อมต่ออยู่กับ hub หรือ access point อีกที ก่อนที่จะนำ hub มาเชื่อมต่อเข้ากับอินเทอร์เฟสนี้ เราก็สามารถที่จะกำหนดจำนวนของ Mac Address ให้ตรงกับจำนวนของเครื่องที่อนุญาตให้ใช้งานผ่านอินเทอร์เฟสนั้นได้ครับ

ตัวอย่าง
Switch(config-if)#switchport port-security maximum 2

          ในตัวอย่างด้านบน เป็นการกำหนดจำนวนของ Mac Adress ที่อนุญาตให้ใช้งานผ่านอินเทอร์เฟสนี้ไว้เท่ากับ 2 หมายเลขครับ แสดงว่าอินเทอร์เฟสนี้อาจจะไม่ได้เชื่อมต่ออยู่กับเครื่องโฮสต์โดยตรง แต่อาจจะมี hub หรือ access point มาขั้นอยู่อีกทีก็เป็นได้ครับ

          เมื่อทำการกำหนดจำนวนของ Mac Address ที่อนุญาตให้ใช้งานผ่านอินเทอร์เฟสนี้เรียบร้อยแล้ว ขั้นต่อมาก็จะเป็นการกำหนดรายการของ Mac Address ที่อนุญาตให้ใช้งานกันครับ ซึ่งสามารถทำการกำหนดได้ 3 รูปแบบ คือ Static, Dynamic, Sticky ตามที่เขียนไว้ด้านบนเลยครับ ซึ่งในกรณีที่ใช้ Static ก็ให้ใช้คำสั่ง “switchport port-security mac-address <mac address>” ในกรณีที่ใช้ Dynamic ก็ไม่ต้องใช้คำสั่งใด ๆ ในขั้นตอนนี้ ส่วนถ้าจะใช้ Sticky ก็ให้ใช้คำสั่ง “switchport port-security mac-address sticky” ครับ

ตัวอย่าง
Switch(config-if)#switchport port-security mac-address sticky

         จากตัวอย่างด้านบน เป็นการตั้งค่าให้สวิตซ์เรียนรู้ Mac Address มาโดยอัตโนมัติ โดยมันจะเรียนรู้ Mac Address มาโดยเรียงตามลำดับจนกว่าจะครบตามจำนวนที่ได้กำหนดไว้ในขั้นตอนที่แล้ว และยังทำการเก็บค่า Mac Address ไว้บน Configuration ด้วย ทำให้เมื่อมีการรีบูตสวิตซ์ ค่า Mac Address นี้ก็ยังจะคงอยู่

          เมื่อกำหนดจำนวนและรายการของ Mac Address ที่ได้รับอนุญาตให้ใช้งานเรียบร้อยแล้ว ในขั้นตอนต่อมาจะเป็นการกำหนดนโยบายที่จะใช้ตอบโต้กับทราฟิกที่ละเมิดเงื่อนไขที่ได้กำหนดไว้ ซึ่งการกำหนดนโยบายนี้จะเรียกว่า Security Violation ซึ่งมี 3 รูปแบบ คือ protect, restrict และ shutdown ตามบทความด้านบนเลยครับ

ตัวอย่าง
Switch(config-if)#switchport port-security violation restrict

          จากตัวอย่างด้านบนนี้ เป็นการกำหนดค่า security violation ไว้เป็น restict ซึ่งเมื่อมีการละเมิด เช่น มี Mac Address ที่นอกเหนือจากรายการที่อนุญาตไว้มาใช้งาน ทราฟิกนั้นจะไม่อนุญาตให้ส่งต่อไปได้ และก็จะมีการแจ้งเตือนโดยใช้ snmp หรือ syslog ได้อีกด้วย

          ในขั้นตอนต่อมานี้ เป็นการกำหนดระยะเวลาที่จะให้สวิตซ์จำค่า Mac Address เอาไว้ เพื่อที่จะให้สวิตซ์สามารถเรียนรู้ Mac Address ใหม่ ๆ ได้เมื่อถึงเวลาที่กำหนด ซึ่งเป็นขั้นตอนที่ไม่จำเป็นที่จะต้องทำการตั้งค่าเสมอไป (โดย default ค่า aging นั้นจะอยู่ในสถานะ disable ซึ่งก็คือไม่มีการกำหนดระยะเวลาเอาไว้ หรือให้สวิตซ์จำค่า Mac Address เอาไว้ตลอดไปนั่นเอง)

ตัวอย่าง
Switch(config-if)#switchport port-security aging time 60

          เพียงเท่านี้ก็สามารถใช้งาน Port Security บนสวิตซ์ของเราได้แล้วนะครับ ซึ่งการตั้งค่าตามตัวอย่างนี้ก็จะเป็นการกำหนดให้อินเทอร์เฟส Fa0/1 ให้เครื่องโฮสต์สามารถใช้งานผ่านอินเทอร์เฟสนี้ได้สูงสุด 2 หมายเลข และจะเรียนรู้ Mac Address มาโดยอัตโนมัตและทำการเก็บค่า Mac Address นี้ไว้บนค่า configuration และถ้ามีการละเมิดนโยบายที่ได้กำหนดไว้ก็จะไม่อนุญาตให้ทราฟิกที่ละเมิดนั้นผ่านไปได้ และจะทำการส่งการแจ้งเตือนโดยการใช้ snmp หรือ syslog ครับ

          เมื่อทำการตั้งค่าเรียบร้อยแล้วในขั้นตอนต่อมาจะเป็นการตรวจสอบการตั้งค่าครับ ซึ่งสามารถทำได้โดยการใช้คำสั่ง ดังนี้ครับ

  • show port-security
  • show port-security address
  • show port-security interface <type> <number>

ตัวอย่าง
Switch#show port-security
Secure Port MaxSecureAddr CurrentAddr SecurityViolation Security Action
               (Count)       (Count)        (Count)
--------------------------------------------------------------------
        Fa0/1        2          2                 3         Restrict
----------------------------------------------------------------------

 

Switch#show port-security address
            Secure Mac Address Table
-------------------------------------------------------------------------------
Vlan    Mac Address    Type            Ports        Remaining Age
                                (mins)
----    -----------    ----            -----        -------------
1    0001.1111.1111    SecureSticky        FastEthernet0/1        -
1    0002.2222.2222    SecureSticky        FastEthernet0/1        -
------------------------------------------------------------------------------
Total Addresses in System (excluding one mac per port)     : 1
Max Addresses limit in System (excluding one mac per port) : 1024

 

Switch#show port-security interface FastEthernet 0/1
Port Security              : Enabled
Port Status                : Secure-up
Violation Mode             : Restrict
Aging Time                 : 0 mins
Aging Type                 : Absolute
SecureStatic Address Aging : Disabled
Maximum MAC Addresses      : 2
Total MAC Addresses        : 2
Configured MAC Addresses   : 0
Sticky MAC Addresses       : 2
Last Source Address:Vlan   : 0001.1111.1111:1
Security Violation Count   : 3

สรุปตัวอย่างการตั้งค่าที่ใช้งานครับ
Switch(config)#interface FastEthernet 0/1
Switch(config-if)#switchport mode access
Switch(config-if)#switchport port-security
Switch(config-if)#switchport port-security maximum 2
Switch(config-if)#switchport port-security mac-address sticky
Switch(config-if)#switchport port-security violation restrict
Switch(config-if)#switchport port-security aging time 60

สำหรับใครที่อยากจะทดสอบการตั้งค่าดู ก็สามารถดาวน์โหลด Lab Packet Tracer ไปลองทำกันได้นะครับ

Packet Tracer Lab : การตั้งค่า Port Security บน Cisco Catalyst Switch

7 comments :

  1. ขอบคุุณครับ แจ่มแจ้งเลย

    ReplyDelete
  2. ยอดเยี่ยมเลยครับ สกัดพวกยูสเซอร์รู้มากเอาไวเลสมาต่อแลน ปล่อยสัญญาณเองได้ดีทีเดียว 555

    ReplyDelete
  3. ขอบใจหลายๆ กำลังสืกสา cisco อยู่

    ReplyDelete
    Replies
    1. ศึกษาครับไม่ใช่สึกสา

      Delete
  4. ศึกษาครับ

    ReplyDelete
  5. ขอบคุณคับ เข้าใจง่ายดีครับผม

    ReplyDelete
  6. ขอบคุณครับ

    ReplyDelete