Introduction to IPSec VPN (Theory)
ในสมัยก่อนการที่จะติดต่อสื่อสารระหว่างเครือข่ายภายในสองที่ ที่มีที่ตั้งอยู่ในระยะไกลกันนั้นจะต้องใช้การเชื่อมต่อเครือข่ายส่วนตัวในรูปแบบต่าง ๆ เช่น ใช้ Leased Line หรือ frame-relay เป็นต้น ซึ่งเป็นวิธีการที่มีค่าใช้จ่ายค่อนข้างสูง แต่ในปัจจุบันนี้ได้มีการใช้เทคโนโลยีที่เรียกว่า VPN (Virtual Private Network) มาเป็นอีกทางเลือกหนึ่ง ที่สามารถเชื่อมต่อเครือข่ายภายในขององค์กรผ่านเครือข่ายสาธารณะได้ โดยอาจจะใช้วิธีการสร้าง Tunnel ขึ้นมาระหว่างต้นทางและปลายทาง เพื่อให้สามารถส่งข้อมูลต่าง ๆ ขององค์กรได้เสมือนว่าอยู่บนเครือข่ายเดียวกัน และใช้วิธีการในการรักษาความปลอดภัยที่หลากหลาย เช่น SSL หรือ IPSec เป็นต้น เพื่อให้ข้อมูลมีความปลอดภัยมากขึ้น และมีค่าใช้จ่ายที่ต่ำกว่าการใช้งาน Leased Line มาก
สำหรับในวันนี้ผมจะขอแนะนำให้เพื่อน ๆ รู้จักกับ IPSec VPN ที่เป็นวิธีการใช้งาน VPN ที่แพร่หลายมากที่สุดกันก่อนนะครับ IPSec ย่อมาจากคำว่า Internet Protocol Security เป็นชุดของโปรโตคอลที่ใช้ในการรักษาความปลอดภัยของข้อมูล โดยมีความสามารถในการรักษาความลับของข้อมูล, มีการตรวจสอบความถูกต้องในการรับ - ส่งข้อมูล, มีการพิสูจน์ตัวตน, การเข้ารหัสข้อมูล เป็นต้น ทำงานในระดับ Network Layer โดยจะทำการเข้ารหัสและสร้าง Header ขึ้นมาใหม่ไปใช้แทน Header เดิมที่ถูกเข้ารหัสเอาไว้
ก่อนที่จะรู้จักวิธีการในการทำงานของ IPSec VPN ก็ควรที่จะมาทำความรู้จักกับค่าต่าง ๆ ที่จะเกี่ยวข้องกับการทำงานของ IPSec VPN กันก่อนนะครับ
- SA (Security Associations) เป็นข้อตกลงระหว่างอุปกรณ์ที่ใช้ในการทำ IPSec VPN กัน ว่าจะใช้รูปแบบในการรักษาความปลอดภัยของข้อมูลในรูปแบบใด เช่น จะใช้วิธีการใดในการเข้ารหัส เพื่อที่ว่าเมื่อส่งข้อมูลไปถึงปลายทางแล้วจะได้ใช้วิธีการในการถอดรหัสที่ถูกต้อง หรือจะใช้วิธีการตรวจสอบความถูกต้องของข้อมูลแบบใด เป็นต้น
- ESP (Encapsulating Security Payload) เป็นโปรโตคอลที่ใช้ในการรักษาความปลอดภัยของข้อมูล สามารถทำการเข้ารหัสข้อมูล, การพิสูจน์ตัวตน, การตรวจสอบความถูกต้องของการส่งข้อมูลได้ โดยในปัจจุบันอุปกรณ์ของ Cisco จะใช้โปรโตคอลนี้ในการทำ IPSec VPN
- AH (Authentication Header) เป็นโปรโตคอลแบบ Connectionless รองรับเฉพาะการพิสูจน์ตัวตน แต่ไม่มีการเข้ารหัสข้อมูลที่ส่งออกไป ซึ่งในปัจจุบันบนอุปกรณ์รุ่นใหม่ ๆ ของ Cisco จะไม่รองรับการใช้งานโปรโตคอลนี้แล้ว
- IKE (Internet Key Exchange) เป็นโปรโตคอลที่ใช้ในในระหว่างขั้นตอนการสร้าง SA เพื่อการรักษาความปลอดภัยให้แก่ข้อมูลที่อุปกรณ์ที่ใช้ทำ IPSec VPN ส่งแลกเปลี่ยนกัน เพื่อตกลงกันว่าจะใช้รูปแบบในการรักษาความปลอดภัยแบบใด เช่นใช้ algorithm แบบใด หรือใช้การเข้ารหัสแบบใด เป็นต้น
- ISAKMP (Internet Security Association and Key Management Protocol) ทำหน้าที่ในการรักษาความปลอดภัยในการแลกเปลี่ยน IPSec SA, ทำการพิสูจน์ตัวตนของอุปกรณ์ที่ใช้ในการทำ IPSec VPN ด้วยวิธีการต่าง ๆ ดังนี้ RSA signature, RSA encrypted nonces, Pre-Shared keys ซึ่งในการตั้งค่าจะต้องทำการกำหนดรูปแบบที่ใช้ในการรักษาความปลอดภัยต่าง ๆ โดยจะเรียกรูปแบบที่ทำการกำหนดนี้ว่า ISAKMP Policy Set
- IPSec (Internet Protocol Security) เป็นชุดของโปรโตคอลที่ใช้ในการรักษาความปลอดภัยของข้อมูล ซึ่งในการตั้งค่าจะต้องทำการกำหนดรูปแบบของอัลกอรึทึมที่จะใช้ในการเข้ารหัสและตรวจสอบความถูกต้องของข้อมูลโดยจะเรียกรูปแบบนี้ว่า IPSec Transform Set ในการทำงานของ IPSec จะมีอยู่สองโหมดคือ Transport Mode และ Tunnel Mode โดยจะแตกต่างกันในเรื่องของรูปแบบที่ใช้ในการห่อหุ้ม Packet ดังนี้
- Tunnel Mode อุปกรณ์ที่ใช้ในการทำ IPSec VPN จะเป็นทางผ่านของเครื่องโฮสต์ภายในสู่เครือข่ายปลายทาง เครืองโฮสต์ภายในเครือข่ายจะสามารถใช้ IP Address ของตนเองในการติดต่อกับเครือข่ายปลายทางได้ โดยอุปกรณ์ที่ทำงานในโหมดนี้จะทำการเข้ารหัส Packet เดิมของผู้ใช้ทั้งหมดก่อนทำการส่งออกไป และจะมีการสร้าง IP Header ขึ้นมาใหม่โดยใช้ IP Address ของอุปกรณ์ที่ใช้ในการทำ IPSec VPN มาใช้แทน IP Header เดิมที่ถูกเข้ารหัสไปแล้ว ซึ่งโดย Default ของอุปกรณ์ Cisco จะทำงานในโหมดนี้
- Transport Mode ใช้โหมดนี้ในกรณีที่ปลายทางของการติดต่อสื่อสารเป็นอุปกรณ์ที่ใช้ในการทำ IPSec VPN หรือใช้ในกรณีที่เครื่องโฮสต์ภายในเครือข่ายใช้ IP Address ของอุปกรณ์ที่ใช้ในการทำ IPSec VPN เป็นต้วแทนในการติดต่อสื่อสารกับเครือข่ายปลายทาง โดยอุปกรณ์ที่ทำงานในโหมดนี้จะทำการเข้ารหัสเฉพาะส่วนของข้อมูล ในส่วนของ IP Header ของ Packet เดิมจะไม่ถูกเข้ารหัสและจะไม่มีการสร้าง IP Header ขึ้นมาใหม่(ทำให้ไม่สามารถใช้ IP Address ของเครื่องโฮสต์ในการติดต่อกับเครือข่ายปลายทางได้) จะมีขนาดของ Packet ที่เล็กกว่าการใช้ Tunnel Mode ทำให้ทำงานได้เร็วกว่า
การทำงานของ IPSec VPN
เอาล่ะครับ เมื่อทำความรู้จักกับค่าต่าง ๆ ที่เกี่ยวข้องเรียบร้อยแล้ว เราก็จะมาดูขั้นตอนในการทำงานของ IPSec VPN กันครับ
- ขั้นที่ 1 Interesting Traffic เป็นการคัดเลือกทราฟิกที่ต้องการใช้งาน IPSec VPN หรือเลือกทราฟิกที่ต้องการส่งเข้าไปใน Tunnel ไปยังเครือข่ายปลายทาง เนื่องจากในการใช้งานจริงนั้นอาจจะมีทราฟิกที่ต้องการใช้งานระหว่างเครือข่ายภายในที่ต้องการใช้งาน IPSec VPN กับทราฟิกทั่วไปที่ใช้งานปกติ เช่น เปิดอินเทอร์เน็ตหรือ E-mail ต่าง ๆ ที่ไม่ต้องการใช้งาน IPSec VPN ครับ ซึ่งในขั้นตอนการตั้งค่าในขั้นตอนนี้เราจะใช้ access-list ในการคัดเลือกทราฟิกครับ
- ขั้นที่ 2 IKE Phase 1 เป็นขั้นตอนในการเริ่มทำการติดต่อสื่อสารกันระหว่างอุปกรณ์ที่ใช้ในการทำ IPSec VPN โดยจะมีการแลกเปลี่ยน ISAKMP Policy Set ซึ่งเป็นรูปแบบที่ใช้ในการรักษาความปลอดภัยของข้อมูล ระหว่างอุปกรณ์ เพื่อจะนำมาสร้าง ISAKMP SA อีกทั้งยังมีการพิสูจน์ตัวตนระหว่างอุปกรณ์ที่ใช้ทำ IPSec VPN ตามรูปแบบที่กำหนดไว้ เช่น การตรวจสอบ Preshared key ที่กำหนดไว้บนอุปกรณ์ทั้งสองฝั่ง ว่าตรงกันหรือไม่อีกด้วย
- ขั้นที่ 2.5 IKE Phase 1.5 (ทางเลือก) เป็นขั้นตอนในการพิสูจน์ตัวตนของผู้ใช้เช่น การถาม username และ password ของผู้ใช้ โดยจะต่างจาก IKE Phase 1 ที่จะทำการพิสูจน์ตัวตนของอุปกรณ์ที่ใช้ในการทำ IPSec VPN ซึ่งในขั้นตอนนี้อาจจะไม่ถูกใช้งานเสมอไป โดยจะใช้งานเฉพาะการใช้ IPSec VPN แบบ Client to Site หรือ Easy VPN เท่านั้น
- ขั้นที่ 3 IKE Phase 2 เป็นขั้นตอนในการแลกเปลี่ยน IPSec Transform Set เพื่อนำมาสร้าง IPSec SA โดยข้อมูลที่รับ-ส่งกันในขั้นตอนนี้จะถูกรักษาความปลอดภัยตามรูปแบบที่ได้กำหนดไว้ใน ISAKMP SA เช่นการเข้ารหัสในรูปแบบต่าง ๆ เป็นต้น
- ขั้นที่ 4 Data Transfer เมื่อทำการสร้าง IPSec SA เสร็จเรียบร้อยแล้ว ก็จะสามารถที่จะรับ-ส่งข้อมูลกันระหว่างอุปกรณ์ที่ใช้ในการทำ IPSec VPN ได้ โดยข้อมูลที่รับ-ส่งกันนี้จะถูกรักษาความปลอดภัยโดยการเข้ารหัสและการตรวจสอบความถูกต้องตามที่ได้กำหนดไว้ใน IPSec SA ที่สร้างขึ้นมา
- ขั้นที่ 5 IPSec Termination เป็นขั้นตอนในการยุติการใช้งาน IPSec VPN เนื่องจากการยกเลิก Tunnel หรือ หมดเวลา lifetime ที่ได้กำหนดเอาไว้
สำหรับขั้นตอนในการทำงานของ IPSec VPN ก็มีเพียงเท่านี้ครับ แต่ในส่วนของรายละเอียดในการตั้งค่านั้น เราจะต้องทำการตั้งค่า ISAKMP Policy Set และ IPSec Transform Set กันอีก ซึ่งมีหลักการในการกำหนดค่า ดังนี้ครับ
การออกแบบ ISAKMP Policy Set
เป็นการกำหนดถึงวิธีการหรือรูปแบบที่จะนำมาใช้ในการสร้าง ISAKMP SA เพื่อรักษาความปลอดภัยในขั้นตอน IKE Phase 1 มีขั้นตอนในการออกแบบ ดังนี้
- กำหนดวิธีที่จะใช้ในการพิสูจน์ตัวตนของอุปกรณ์ (Authentication) ทำการเลือกวิธีการที่จะใช้ในการพิสูจน์ตัวตนของอุปกรณ์ ซึ่งมีรูปแบบดังนี้ Pre-shared keys, RSA-signature, RSA-encrypted nonces ซึ่งแบบ Pre-shared keys นั้นจะใช้ key ที่เป็นเสมือนกับ password โดยทั้งสองฝั่งจะต้องมี key ที่ตรงกัน ส่วนแบบ RSA นั้นจะใช้ Digital Certificate ในการพิสูจน์ตัวตน ซึ่งจะต้องมี CA (Certificate Authority) ร่วมด้วย
- กำหนดรูปแบบของอัลกอรึทึมที่จะใช้ในการเข้ารหัสข้อมูล (Encryption) โดยจะมี 3 ตัวเลือกคือ des,3des และ aes ซึ่งแบบที่มีความปลอดภัยมากที่สุดได้แก่ aes แต่ก็จะทำงานช้าที่สุดด้วย
- กำหนดรูปแบบของ Hash algorithm (Hash) ที่จะใช้งาน มี 2 ตัวเลือกคือ MD5 และ SHA ใช้ในการตรวจสอบความถูกต้องของข้อมูลที่รับ-ส่งกัน โดยทั้งสองแบบนี้มีหลักการในการทำงานที่คล้ายกัน คือจะนำข้อมูลที่จะส่งไปยังปลายทางมาคำนวนด้วย algorithm ในแต่ละแบบ เพื่อที่จะได้ค่าตัวเลขมาหนึ่งค่า จากนั้นจะทำการส่งข้อมูลออกไปพร้อมกับค่าตัวเลขนี้ เมื่อถึงปลายทาง อุปกรณ์ในฝั่งปลายทางก็จะนำข้อมูลที่ได้รับมาคำนวนด้วยอัลกอรึทึมเดิมอีกครั้ง ซึ่งจะได้ค่าตัวเลขมาค่าหนึ่งเช่นกัน จากนั้นจึงนำค่าตัวเลขทั้งสองมาเปรียบเทียบกันว่าตรงกันหรือไม่ ถ้าตรงกันแสดงว่าข้อมูลนั้นไม่มีการเปลี่ยนแปลง แต่ถ้าไม่ตรงแสดงว่าข้อมูลนั้นมีการเปลี่ยนแปลงหรือสูญหายไป เป็นต้น
- กำหนดขนาดของจำนวนเฉพาะที่จะใช้ในการแลกเปลี่ยน Key (Group) โดยจะใช้วิธีการที่เรียกว่า Diffie-Hellman group ซึ่งจะมีให้เลือก 4 ระดับ ดังนี้ group 1(768 bit), group 2 (1024 bit), group 5 (1536 bit) และ group 7 (Eliptical Curve field size:163 bit)
- กำหนดค่า Lifetime ของ ISAKMP SA เป็นการกำหนดเวลาที่จะใช้งาน ISAKMP SA นี้ โดยเมื่อหมดเวลาลงไปจะต้องทำการสร้าง ISAKMP SA อันใหม่ขึ้นมาแทน
การออกแบบ IPSec Transform Set
เป็นการกำหนดรูปแบบของ IPSec Parameter ที่จะใช้ในสร้าง IPSec SA เพื่อรักษาความปลอดภัยในขั้นตอน IKE Phase 2 มีขั้นตอนในการออกแบบ ดังนี้
- กำหนดรูปแบบของอัลกอรึทึมที่จะใช้ในการเข้ารหัสข้อมูลก่อนที่จะส่งไปยังเครือข่ายปลายทาง โดยจะมี 3 ตัวเลือกคือ des, 3des และ aes ซึ่งจะต้องเลือกระหว่างการที่จะให้ระบบมีความปลอดภัยสูงสุดแต่ทำงานได้ช้าและใช้ทรัพยากรสูง (aes) กับเลือกที่จะทำการส่งได้อย่างรวดเร็วแต่มีระดับความปลอดภัยที่ต่ำกว่า (des)
- กำหนดรูปแบบของอัลกอรึทึมที่จะใช้ในการตรวจสอบความถูกต้องในการรับ-ส่งข้อมูล โดยมี 2 ตัวเลือกคือ MD5 และ SHA ซึ่งมีวิธีการทำงานที่เหมือนกับขั้นตอนที่แล้ว
- เลือกโหมดการทำงานของ IPSec ว่าจะใช้ Tunnel mode หรือ Transport mode ซึ่งโดย Default บนอุปกรณ์ Cisco จะทำงานใน Tunnel mode
การสร้าง Crypto map
เมื่อทำการกำหนดค่า ISAKMP Policy Set กับ IPSec Transform Set เรียบร้อยแล้ว จะต้องทำการสร้าง Crypto map เพื่อที่จะรวบรวมค่าต่าง ๆ ที่เราได้ทำการกำหนดเข้าไว้ด้วยกันเป็นชุด ๆ โดยในการตั้งค่า Crypto map นี้จะมีการกำหนดค่าดังนี้
- เลือก IPSec Transform Set ที่จะใช้งาน ซึ่งก็คือการกำหนดค่า IPSec Transform Set ที่ได้ตั้งค่าไว้ในขั้นตอนที่ผ่านมา
- กำหนด IP Address ของอุปกรณ์ที่ทำ IPSec VPN ปลายทาง
- เลือกทราฟิกที่ต้องการอนุญาตให้ใช้งาน IPSec VPN โดยจะเลือกทราฟิกที่อนุญาตด้วยการใช้ access-list
- นำ Crypto map ที่สร้างขี้นมานี้ไปประกาศใช้งานบนอินเทอร์เฟสที่ต้องการ
สำหรับบทความนี้ ก็เป็นบททฤษฏีเท่านั้น ในส่วนของตัวอย่างการตั้งค่านั้น ก็โปรดติดตามบทความอื่น ๆ ต่อไปนะครับ ถ้าไม่เข้าใจในส่วนไหนหรือคิดว่าในส่วนใดที่ผิดก็ฝาก Comment ไว้ได้เลยนะครับ ขอบคุณครับ
มีประโชยน์มากๆ ครับผม ยังไง ก็หาบทความดีๆ อย่างนี้มาลงเรื่อยนะครับ
ReplyDeleteขอคุณครับ
ReplyDeleteน้ำตาจะไหลรินครับ
ReplyDeleteขอบคุณครับ