Wednesday, October 3, 2012

ทำความเข้าใจกับ IEEE 802.1x and EAP

ที่จริงมีอีกหลายเรื่องมากที่ผมอยากเขียนถึงทั้งที่ตัวเองพอรู้และอยากรู้ เพิ่มเติม แต่ดูเหมือนว่าตอนนี้คงไม่มีเรื่องไหน hot เท่าเรื่องเกี่ยวกับ security ผมก็เลยไปค้นๆดูว่าเรื่องไหนที่น่าสนใจดี ก็เลยเลือกเอาเรื่องของ IEEE 802.1x กับ EAP มาเล่าให้ฟังเพราะดูเป็นเรื่องที่มีคนพูดถึงมากทีเดียวโดยเฉพาะผู้ที่ต้อง ยุ่งเกี่ยวกับ security ใน wireless network โดยเฉพาะ security feature ที่ทุกคนกำลังรอคอยเช่น WPA, 802.11i ก็อาศัย 802.1x กับ EAP เป็นพื้นฐานของการทำ authentication ด้วย ในตอนท้ายของบทความนี้ ผมเอาตัวอย่างการ config มาให้ดูด้วย

เข้าใจที่มาของ IEEE 802.1x

ความ คิดของการพัฒนา IEEE 802.1x ก็เพื่อการป้องกัน network ด้วยการที่เราสามารถระบุ(authenticate)ได้ว่าใครกำลังพยายามเข้ามาใช้ network หรือที่เรียกว่า Identity-based networking โดยรูปแบบที่ง่ายที่สุดก็คือการใช้ user ID (username + password) แต่ 802.1x ได้พัฒนาต่อยอดโดยเพิ่มความสามารถในการควบคุม access ในระดับ network และสามารถทำงานร่วมกับ authentication server ในการจำกัดความสามารถที่แต่ละคนได้รับ เช่น ถ้าเห็นว่า user เป็นวิศวกรก็ให้สามารถใช้ bandwidth ได้ 100 Mbps แต่ถ้า user เป็นนักบัญชีก็อาจให้ใช้ได้แค่ 10 Mbps

แล้วอะไรคือ IEEE 802.1x
802.1x เป็นมาตรฐานรับรองโดย IEEE สำหรับ port-based network access control หรือมาตรฐานที่ใช้ในการควบคุมการใช้งาน (access control) ทั้งการระบุผู้ที่สามารถเข้าใช้networkได้ (authentication) และระบุสิ่งหรือ resource ที่ผู้ใช้งานได้รับอนุญาติให้ใช้ได้ (authorization) ในระดับ port

port ในที่นี้ ถ้าเป็น wired LAN ก็จะหมายถึง physical port ของ switch ถ้าเป็น wireless LAN ก็คือการ association (ก็คือความสามารถในการติดต่อสื่อสาร) ระหว่าง client กับ access point ใน network แบบ …ไม่ใช่ TCP/IP port นะครับ


สัง เกตุนิดนึงนะครับว่า 802.1X จะทำงานที่ layer 2 จึงทำให้อุปกรณ์networkจำเป็นต้องเป็น switch และเน้นการคุยกันแบบ point-to-pointเพราะฉะนั้นถ้ามี PCs หลายๆตัวต่อกับ Hub แล้วต่อกับ switch อีกที อย่างนี้ 802.1X ไม่work ครับ

Terminology
ก่อนจะลง details กัน เราต้องมารู้จักคำศัพท์ต่างๆที่ใช้ในโลกของ 802.1x ดูรูปประกอบนะครับ

(ถ้ารูปไม่ขึ้น ให้ไปที่ http://tnet.50megs.com/image002.jpg )




Supplicant คือ end-device ที่จะต้องถูก authenticate โดยส่วนใหญ่ก็คือ PC หรือ laptops ที่ users ใช้
Authenticator คือ อุปกรณ์ที่ทำหน้าที่ authenticate โดยจะคุยกับ Authentication server ว่าจะดำเนินการอย่างไรกับ supplicant ที่ต่อเข้ามา
Authentication Server คือ server ที่เก็บ database ของสิทธิ์ของ end-device หรือ users ต่างๆ ส่วนใหญ่ก็จะใช้ RADIUS server

อีก คำศัพท์ที่ควรรู้คือ PAE หรือ Port Access Entity ซึ่งหมายถึงส่วนที่ฝังอยู่ในอุปกรณ์ทั้ง 3 ตัวด้านบนที่ใช้ในกระบวนการที่เกี่ยวข้องกับ 802.1x เช่น software agent ที่ลงที่ supplicant หรือ service ใน authenticator (เช่น switch) เพราะฉะนั้น PAE จะไม่ได้เฉพาะเจาะจงถึง software หรืออุปกรณ์ใด

สุดท้ายก็คือ EAP หรือ Extensible Authentication Protocol ซึ่งเป็นหัวใจของ 802.1x ที่เราจะพูดถึงต่อไป


แล้ว 802.1x ทำงานอย่างไร

เริ่ม ต้นด้วยภาพการ authenticate ทั้ง flow คือตั้งแต่ supplicant (PC/ User) ผ่าน Authenticator (Switch หรือ Access point) จนถึง Authentication server (เช่น RADIUS server)

802.1x จะเน้น “วิธีการส่ง” “ข้อมูลการของการ authenticate” ระหว่าง supplicant (PC/User) กับ Authenticator (Switch/ Access point) ทีนี้คงพอเดาออกใช้ไม๊ครับว่า “ข้อมูลของการ authenticate” ก็คือ EAP นั่นเอง และ “การส่ง” ข้อมูล EAP นี้ 802.1x ใช้ protocol ที่เรียกว่า EAPOL หรือ EAP encapsulation over LAN

ทีนี้ระหว่าง Authenticator (Switch/ Access point) กับ Authentication server (เช่น RADIUS server) ก็จะคุยกันด้วย authentication protocol เช่น Radius โดย EAP จะถูก encapsulate ใน Radius อีกที

ดูรูปดีกว่านะครับ
(ถ้ารูปไม่ขึ้น ให้ไปที่ http://tnet.50megs.com/image003.gif )



ที นี้มาดูกันใน details ว่า EAP ทำงานอย่างไรบ้างจากรูปนะครับ จะเห็นว่าเป็น 2-way challenge และ Authenticator จะเป็นคล้ายๆตัว relay message โดย supplicant จะถูก challenge ให้บอกข้อมูลว่าเป็นใคร (Identity) ซึ่งอาจเป็นได้ตั้งแต่ MAC address, ID, หรือ Certificate ต่างๆ แล้ว authenticator จะส่งข้อมูลนี้ผ่านไปยัง Authentication server (เส้นประสีเขียวในรูป)เพื่อตรวจสอบว่าจะอนุญาติให้ supplicant นี้ใช้งาน network ได้หรือไม่อย่างไร ถ้าถูกต้อง authenticator ก็จะเปิดให้ใช้ได้

OTP คือ One Time Password นะครับ

(ถ้ารูปไม่ขึ้น ให้ไปที่ http://tnet.50megs.com/image005.jpg)




การ configuration
เป็น ตัวอย่างการ config ที่ Cisco switch นะครับ โดยเราต้อง enable AAA ซะก่อน และระบุว่าเราจะใช้ authentication แบบ 802.1x (“dot1x” ในชุดคำสั่ง) และใช้ Radius ( “group radius” ในชุดคำสั่ง)

Switch(config)# aaa new-model

Switch(config)# aaa authentication dot1x default group radius

หลังจากนั้นก็เข้าไปที่ระดับ interface เพื่อใช้งาน 802.1x

Switch(config)# interface fastethernet0/1

Switch(config-if)# dot1x port-control auto

ส่วนสุดท้ายก็ต้องระบุว่า Radius server ของเรา IP address อะไร และ encryption key คืออะไร

Switch(config)# radius-server host 172.l20.39.46 auth-port 1612 key rad123

ใน ตัวอย่างนี้ IP address ของ Radius server คือ 172.120.39.46 และ encryption key คือ rad123 ในตัวอย่างเราบอกว่าให้ใช้ port 1612 ในการคุยกับ Radius server

ถ้าเป็น Aironet ก็ง่ายมากเลยเพราะใช้ Web เข้าไป config ได้ครับ


ที่เหลือคือการ config ตัว supplicant (PC) กับ Radius server ซึ่งก็แตกต่างกันไป ขึ้นอยู่กับ software หรือ OS ที่ใช้ครับ

0 comments:

Post a Comment