IST · บทที่ 1 Switching Concepts, MAC Address Table และ Port Security

หัวข้อ 5 · 18 นาที

MAC flooding และ Port Security

นึกภาพก่อน

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

นี่คือ MAC flooding และทางแก้คือกำหนดว่า "ห้องนี้ฝากเอกสารได้ไม่เกินสองชื่อ" ซึ่งคือ Port Security

MAC flooding attack

  1. ผู้โจมตีส่ง frame จำนวนมากที่มี Source MAC ปลอม ไม่ซ้ำกัน
  2. switch เรียน MAC ปลอมทุกตัวจน CAM table เต็ม
  3. MAC ของเครื่องจริงไม่มีที่ให้เรียน (หรือถูก age out แล้วเรียนกลับไม่ได้)
  4. switch เข้าสภาวะ fail-open: flood ทุก frame ที่ไม่รู้ปลายทางออกทุกพอร์ต เหมือน hub
  5. ผู้โจมตี ดักฟัง (sniff) traffic ของเครื่องอื่นได้

ป้องกันด้วย Port Security

ความเสี่ยง Layer 2 อื่น ๆ (พรีวิว)

การโจมตีวิธีเรียนใน
VLAN hoppingเจรจา DTP ให้เป็น trunk หรือ double taggingบทที่ 2
BPDU / STP attackส่ง BPDU ปลอมเพื่อเป็น root bridgeบทที่ 3
ARP spoofingปลอม ARP เพื่อเป็นคนกลาง (MITM)–

Port Security

จำกัดว่า MAC address ใด และกี่ตัว ที่ใช้พอร์ตหนึ่งได้ มีสามองค์ประกอบ:

องค์ประกอบความหมาย
Maximumจำนวน MAC address สูงสุดที่อนุญาตต่อพอร์ต (default = 1)
MAC address learningStatic (พิมพ์เอง) / Dynamic (เรียนรู้ชั่วคราว) / Sticky (เรียนรู้แล้วบันทึกถาวรใน config)
Violation modeพฤติกรรมเมื่อมี MAC เกินจำนวน: Protect / Restrict / Shutdown

Violation mode

Modetraffic เดิมtraffic ใหม่ (ผิดปกติ)Log / Counterพอร์ตถูกปิด
Protectผ่านทิ้ง เงียบไม่มีไม่
Restrictผ่านทิ้ง + แจ้งเตือนมี (SNMP / Syslog)ไม่
Shutdown (default)ผ่าน (ก่อนเกิด violation)ทิ้งมี (SNMP / Syslog)ใช่ (err-disabled)

วิธีจำ: เรียงตามความรุนแรง Protect < Restrict < Shutdown — แต่ละขั้นเพิ่มหนึ่งอย่าง: Restrict เพิ่ม log Shutdown เพิ่ม ปิดพอร์ต

การตั้งค่า

cisco
interface fastEthernet 0/1
 switchport mode access
 switchport port-security
 switchport port-security maximum 2
 switchport port-security mac-address sticky
 switchport port-security violation restrict
บรรทัดทำอะไร
switchport mode accessต้องเป็น access port ก่อน (Port Security ใช้กับพอร์ตที่ต่อ end device)
switchport port-securityเปิด Port Security — ถ้าขาดบรรทัดนี้ บรรทัดอื่นไม่มีผล
... maximum 2รับได้สูงสุด 2 MAC
... mac-address stickyเรียนรู้แล้วบันทึกลง config อัตโนมัติ
... violation restrictMAC เกิน → ทิ้ง + log แต่ไม่ปิดพอร์ต
ขั้นที่ 1 / 7เริ่มต้น

MAC แบบย่อ คั่นด้วย , เช่น AA, BB, AA

violation mode
maximum
2
การเรียน MAC
  1. AA
  2. BB
  3. AA
  4. CC
  5. BB
  6. DD
Fa0/1: upviolation count: 0frame ที่ถูกทิ้ง: 0

Secure MAC (สูงสุด 2)

ว่าง––

running-config

interface fastEthernet 0/1
switchport mode access
switchport port-security
switchport port-security maximum 2
switchport port-security mac-address sticky
switchport port-security violation restrict
default: maximum 1, violation shutdown
1.0×

คำอธิบายทีละขั้น

Port Security: maximum 2, violation restrict

พอร์ตรับได้สูงสุด 2 MAC address เรียนแบบ Sticky (เรียนแล้วบันทึกลง config อัตโนมัติ) และเมื่อมี MAC เกินจำนวนจะทำตาม violation mode

ลองใน simulation:

  • preset แรกตรงกับ config ข้างบน: ดูบรรทัด sticky ที่เพิ่มขึ้นใน running-config
  • เปลี่ยน violation mode เป็น Shutdown แล้วสังเกตว่า MAC ที่ถูกต้อง (AA, BB) ก็ใช้พอร์ตไม่ได้หลังเกิด violation
  • preset "MAC flooding" กับ "MAC flooding + Port Security" ใช้ frame ชุดเดียวกัน เทียบผล

กู้คืนพอร์ตที่ err-disabled

ด้วยตนเอง — เหมาะเมื่อต้องการตรวจสาเหตุก่อนเปิดพอร์ตกลับ

cisco
interface fastEthernet 0/3
 shutdown
 no shutdown

Auto-recovery — เหมาะกับ production ที่ต้องการลด downtime โดยไม่ต้องรอผู้ดูแล

cisco
errdisable recovery cause psecure-violation
errdisable recovery interval 60

พอร์ตจะเปิดกลับเองหลัง 60 วินาที (ถ้าอุปกรณ์ที่ผิดยังต่ออยู่ ก็จะเกิด violation และปิดอีก)

Checklist ของ Layer 2 security

  • เปิด Port Security บน ทุกพอร์ตที่ต่อ end device (ไม่ใช่พอร์ต switch-to-switch)
  • ใช้ Sticky แทนการพิมพ์ MAC ทีละพอร์ต
  • ตั้ง violation เป็น Restrict หรือ Shutdown ไม่ใช่ Protect เพียงอย่างเดียว
  • เปิด errdisable recovery เพื่อลด downtime
  • ปรับ aging time ให้เหมาะกับการใช้งานจริงของแต่ละพอร์ต

ตัวอย่างไล่ทีละขั้น

โจทย์: พอร์ตตั้ง maximum 2, sticky, violation restrict มี frame เข้ามาด้วย Source MAC ตามลำดับ AA, BB, AA, CC, BB, DD

#MACsecure MAC ก่อนผลviolation count
1AA–เรียน (1/2) ผ่าน0
2BBAAเรียน (2/2) ผ่าน0
3AAAA, BBรู้จักแล้ว ผ่าน0
4CCAA, BBเกิน maximum → ทิ้ง + log1
5BBAA, BBรู้จักแล้ว ยังผ่าน (พอร์ตไม่ปิด)1
6DDAA, BBทิ้ง + log2

ถ้าเป็น Protect: ผลเหมือนกันแต่ violation count เป็น 0 ตลอดและไม่มี log ถ้าเป็น Shutdown: ที่ frame 4 พอร์ตเป็น err-disabled → frame 5 (BB ที่ถูกต้อง) และ frame 6 ถูกทิ้งทั้งหมด

จุดที่มักพลาด

1. สลับ Protect กับ Restrict

Protect เงียบ ไม่มี log · Restrict มี log และ counter ทั้งคู่ไม่ปิดพอร์ต

2. จำ default ผิด

maximum default = 1 และ violation default = Shutdown

3. คิดว่า Sticky กับ Static เหมือนกัน

Static พิมพ์เอง · Sticky switch เรียนเองแล้วเขียนลง config ให้

4. ลืมบรรทัด switchport port-security

ตั้ง maximum หรือ violation โดยไม่เปิดด้วยบรรทัดนี้ จะไม่มีผล

5. คิดว่า err-disabled หายเอง

ไม่หาย ถ้าไม่ได้ตั้ง errdisable recovery ต้อง shutdown แล้ว no shutdown เอง

6. คิดว่า MAC flooding โจมตีที่ Destination MAC

ใช้ Source MAC ปลอม เพราะ switch เรียนจาก Source

ที่มา: chapter1_lecture (2).pdf หน้า 26–34